В этом уроке я научу вас как сделать чтобы пикап не подбирался повторно когда игрок долго стоит на нем.
Кому понравилось ставим плюсы.
Итак начнем,создем переменные вначале мода.
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