Путешествия по просторам интернета, я искал оптимизацию кодов, но наткнулся на это. Думаю вам пригодится!
Описание команды:
- /spcars - респавн ТС с задержкой в 10 секунд.
- /sn - отмена респавна последней машины ( для всех игроков )
Скриншот:
Автор: Umid_Sam
И так приступим!
Ко всем new добавить:
Код
new gLastCar[MAX_PLAYERS];
new allspcarstimeview = 0;
new killallspcarstime;
new killallspcars;
В OnPlayerConnect:
Код
gLastCar[playerid] = -1;
В OnPlayerSpawn или ваш пабликspawn'a
Код
gLastCar[playerid] = -1;
Далее ищем такую строчку:
Код
if(newstate == PLAYER_STATE_DRIVER) //Когда игрок сел в машину
{
И после вставляем:
Код
gLastCar[playerid] = newcar;
В enum pInfo:
Далее ко всем пабликам/стокам добавить сток(Если есть заменить на этот):
Код
stock IsVehicleOccupied(vehicleid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == PLAYER_STATE_DRIVER) return 1;
if (gLastCar[i] == vehicleid && PlayerInfo[i][pNoSpcars] == 1)
{
PlayerInfo[i][pNoSpcars] = 0;
return 1;
}
}
return 0;
}
forward allspcars();
forward allspcarstime();
public allspcars()
{
KillTimer(killallspcarstime);
for(new c=0; c<MAX_VEHICLES; c++)
{
if(!IsVehicleOccupied(c))
{
if (!IsATrailer(c)) SetVehicleToRespawn(c);
}
}
SendClientMessageToAll(COLOR_BLUE, " Сервер: Все не занятые людьми машины обновлены");
return 0;
}
public allspcarstime()
{
new string[20];
if (allspcarstimeview >=0)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
format(string, sizeof(string), "~y~%d", allspcarstimeview);
GameTextForPlayer(i, string, 1000, 6);
}
}
allspcarstimeview --;
}
return 1;
}
Добавлено (26.03.2014, 12:02)
---------------------------------------------
Теперь ко всем командам в OnPlayerCommandText:
Код
else if(strcmp(cmd, "/ns", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gLastCar[playerid] != -1 && PlayerInfo[playerid][pNoSpcars] != 1)
{
PlayerInfo[playerid][pNoSpcars] = 1;
SendClientMessage(playerid, COLOR_WHITE, "Ваш последний транспорт не будет спавниться");
}
}
return true;
}
И команду:
Код
else if(strcmp(cmd, "/spcars", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
KillTimer(killallspcarstime);
KillTimer(killallspcars);
format(string, sizeof(string), " %s: Внимание автореспавн через 10 секунд", sendername);
SendClientMessageToAll(COLOR_BLUE, string);
SendClientMessageToAll(COLOR_BLUE, " *Если хотите чтобы ваш последний транспорт не спавнился введите {FFFFFF}/ns");
killallspcars = SetTimer("allspcars", 11000, 0);
killallspcarstime = SetTimer("allspcarstime",1000,true);
allspcarstimeview = 10;
}
return 1;
}
Kоманды на ZCMD:
Код
CMD:ns(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return true;
{
if(gLastCar[playerid] != -1 && PlayerInfo[playerid][pNoSpcars] != 1)
{
PlayerInfo[playerid][pNoSpcars] = 1;
SendClientMessage(playerid, COLOR_WHITE, "Ваш последний транспорт не будет спавниться");
}
}
return true;
}
CMD:spcars(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return true;
if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
KillTimer(killallspcarstime);
KillTimer(killallspcars);
format(string, sizeof(string), " %s: Внимание автореспавн через 10 секунд", sendername);
SendClientMessageToAll(COLOR_BLUE, string);
SendClientMessageToAll(COLOR_BLUE, " *Если хотите чтобы ваш последний транспорт не спавнился введите {FFFFFF}/ns");
killallspcars = SetTimer("allspcars", 11000, 0);
killallspcarstime = SetTimer("allspcarstime",1000,true);
allspcarstimeview = 10;
}
return true;
}