[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Урок] Анти повторный подбор пикапов
Дата: 21.04.2011, Четверг, 10:27:39 | Сообщение # $NUMBER
Группа: Гл. Модераторы
Сообщений: 220
Репутация: 253+
FFFUUU
В этом уроке я научу вас как сделать чтобы пикап не подбирался повторно когда игрок долго стоит на нем.
Кому понравилось ставим плюсы.

Итак начнем,создем переменные вначале мода.
Code
new oldpickup[MAX_PLAYERS];  // Запоминает ид старого пикапа  
new Float:PickupX[MAX_PLAYERS],Float:PickupY[MAX_PLAYERS];  // Координаты старого пикапа  
new PickupTimer[MAX_PLAYERS];  // Таймер пикапа

Дальшесоздаем паблик OnPlayerPickupExit(playerid)

Code
forward OnPlayerPickupExit(playerid);  
public OnPlayerPickupExit(playerid)  
{  
     if(oldpickup[playerid] == -1) return 1; // Если старый пикап -1 то завершаем паблик  
     new Float:z; // Создаем переменную для определения z координаты  
     GetPlayerPos(playerid, z, z, z); // Узнаем позицию Z   xD  
     if(!IsPlayerInRangeOfPoint(playerid,1.0,PickupX[playerid],PickupY[playerid],z)) oldpickup[playerid] = -1; // Если игрок не около пикапа присваиваем переменной значение -1  
     return 1;  
}

Дальшеделаем проверку в OnPlayerPickUpPickup,в самый верх паблика суем:

Code
if(pickupid == oldpickup[playerid]) return 1;  
oldpickup[playerid] = pickupid;  
new Float:z;  
GetPlayerPos(playerid, PickupX[playerid], PickupY[playerid], z);

Дальше нужнозапустить и завершить таймер:

Code
public OnPlayerSpawn(playerid)  
{  
     PickupTimer[playerid] = SetTimerEx("OnPlayerPickupExit", 1000, true, "d", playerid); // запускаем при спавне  
     return 1;  
}  
       
public OnPlayerDisconnect(playerid, reason)  
{  
     KillTimer(PickupTimer[playerid]);  // завершаем при выходе  
     return 1;  
}

Автор:DuMBaSS

  • Страница 1 из 1
  • 1
Поиск: