Здравствуйте уважаемые пользователи форума. Сделав карту Бейсджампинг, решил сделать и все действия для неё. Суть такова: Если игрок заходит на пикап первый раз, то прыжок бесплатный. Если долетел до земли не разу не разбившись, то даётся 100$. Понимаю что это всё простенько, но может кому и пригодится. И так начнём:
Ко всем new
PHP код:
new polet;
new proba[MAX_PLAYERS];
new probabonus[MAX_PLAYERS]
В public OnPlayerConnect(playerid)
PHP код:
proba[playerid] = 0;
probabonus[playerid] = 0;
В public OnGameModeInit()
PHP код:
polet = CreatePickup(1310,23,2107.258056,1001.981140,11.046909,-1);
CreateDynamic3DTextLabel("{00ff00}Бейсджампинг\n{FF6600}Хотите полетать?{FFFFFF}\nЦена прыжка\n50$\n{FF6600}Первый прыжок халявный ",0xFEFEFEFE,-2031.471313,-51.917076,36.471021,40.0);
В public OnPlayerDeath(playerid, killerid, reason)
PHP код:
probabonus[playerid] = 0;//если разбился то бонус обнуляем
В public OnPlayerPickUpPickup(playerid, pickupid)
PHP код:
if(pickupid == polet) {
if(GetPlayerMoney(playerid) < 50) return SendClientMessage(playerid, 0xFF0000AA,"У Вас не достаточно денег для полёта.");//проверяем есть ли деньги
if(proba[playerid] == 0)//если первый прыжок то...
{
SendClientMessage(playerid, 0xFF0000AA,"Первый раз бесплатно.");
SetPlayerPos(playerid, -1996.604858, -162.441543, 1507.211669);//телепорт вверх
proba[playerid] = 1;
probabonus[playerid] = 1;
}else{// иначе
GivePlayerMoney(playerid,-50);//плата за прыжок
probabonus[playerid] = 1;
SetPlayerPos(playerid, -1996.604858, -162.441543, 1507.211669);}
return true;
}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP код:
if (newkeys == KEY_FIRE && GetPlayerWeapon(playerid) == 46 )//если нажата кнопка огонь и у игрока есть парашют
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);//узнаём координаты игрока
if (probabonus[playerid] == 1 && z <= 269.6700) //если не разу не разбился и ниже нижней точти коридора полёта
{
GivePlayerMoney(playerid, 100);//даём денег
SendClientMessage(playerid, 0xFF0000AA,"Поздравляем Вы выиграли 100$");//поздравляем
probabonus[playerid] = 0;//обнуляем бонус
}
return true;
}
ко всем
форвардам
PHP код:
forward Parashut();
ко всем таймерам в
public OnGameModeInit()
PHP код:
SetTimer("Parashut",500,true);
ко всем
public
PHP код:
public Parashut()
{
for(new playerid = 0;playerid<MAX_PLAYERS;playerid++)
{
if(IsApplyAnimation(playerid, "FALL_fall"))
{
GivePlayerWeapon(playerid,46,1);
}
}
return true;
}
stock IsApplyAnimation(playerid, animation[])
{
new bool:IsApply;
if(GetPlayerAnimationIndex(playerid))
{
new animlib[32], animname[32];
GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
if(!strcmp(animname, animation, true)) IsApply=true;
else IsApply=false;
}
return IsApply;
}
Ну вот и всё вроде ни чего не упустил, если будут ошибки то пишите.