Здравствуйте!
Я ищу таймер, что бы когда выходишь из автобуса, оно давало отсчёт в секундах, а по истечению времени - спавнило автобус(как на Ыаmp-Яр)
Вид для печати
Здравствуйте!
Я ищу таймер, что бы когда выходишь из автобуса, оно давало отсчёт в секундах, а по истечению времени - спавнило автобус(как на Ыаmp-Яр)
Эм, что то типо
При начале работы
В OnPlayerStateChangePHP код:
SetPVarInt(playerid, "NaRabote", 1);
В секундный таймер с циклом на игроковPHP код:
if(GetPVarInt(playerid,"NaRabote") == 1)//(Если есть уже у вас переменная отвечающая за то работает ли игрок, замените проверку на свою)Если игрок работает автобусником, вышел на дежурство, то
{
SetPVarInt(playerid,"TimeForPiss", 16);//Задаем пвару значение 16.
SendClientMessage(playerid, -1, "У вас есть 15 секунд, чтобы вернуться в транспорт! Иначе маршрут будет закончен!");
}
PHP код:
if(GetPVarInt(i, "TimeForPiss") > 0)
{
SetPVarInt(i, "TimeForPiss", GetPVarInt(i, "TimeForPiss") - 1);
format(string,32,"~r~%d",GetPVarInt(i, "TimeForPiss"));
GameTextForPlayer(i, string, 2000, 6);
if(GetPVarInt(i, "TimeForPiss") == 0)
{
//Тут удаляем пвар с временем и о, даем ему деньги за работу спавним автобус и т.д.
}
}
PHP код:
new TimerCar[MAX_PLAYERS];
new RespawnTimer[MAX_PLAYERS];
new vehicle[MAX_PLAYERS];
PHP код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
vehicle[playerid] = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vehicle[playerid]) == id автобуса)
{
/*if(RespawnTimer[playerid] > 0) KillTimer(TimerCar[playerid]);*/
TimerCar[playerid] = SetTimerEx("Respawn_",1000,true,"i",playerid);
RespawnTimer[playerid] = 60;
}
return 1;
}
PHP код:
public Respawn_(playerid)
{
if(--RespawnTimer[playerid] == 0)
{
SetVehicleToRespawn(vehicle[playerid]);
KillTimer(TimerCar[playerid]);
}
return 1;
}
Вроде бы так
- - - Добавлено - - -
PHP код:
public Respawn_(playerid)
{
if(--RespawnTimer[playerid] == 0)
{
SetVehicleToRespawn(vehicle[playerid]);
KillTimer(TimerCar[playerid]);
}
else
{
new string[4];
valstr(string, RespawnTimer[playerid]);
GameTextForPlayer(playerid, string, 1000, 4);
}
return 1;
}
Зачем тут KillTimer и запись ID таймера? Для кого придуман третий параметр в SetTimerEx?
А вообще проще сделать как-то так:
Получится замкнутая система, которая не требует каких-либо левых переменных. Правда код не тестировал. Авось допустил где ошибкуPHP код:
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(GetVehicleModel(vehicleid) == /*id модели автобуса*/)
{
SetTimerEx("RespawnBus", 1000, false, "iii", playerid, vehicleid, gettime()+30);
SendClientMessage(playerid, -1, "У вас есть 30 секунд для того, чтоб вернуться в автобус");
}
return 1;
}
forward RespawnBus(playerid, vehicleid, time);
public RespawnBus(playerid, vehicleid, time)
{
if(GetPlayerVehicleID(playerid) == vehicleid) return 1;
new get_time = gettime();
if(time > get_time)
{
new string[56];
format(string, sizeof(string), "У вас есть %d секунд для того, чтоб вернуться в автобус", time-get_time);
SendClientMessage(playerid, -1, string);
SetTimerEx("RespawnBus", 1000, false, "iii", playerid, vehicleid, time-1);
return 1;
}
else return SetVehicleToRespawn(vehicleid);
}
Вопрос решен! Большое спасибо, всем! Тема закрыта!