Просмотр полной версии : [Вопрос] Действия при погоде (Выброс)
Я создал систему автоматической смены погоды. Хочу сделать выбросы. Пока она меняется быстро и её всего 2.
SetTimer("ChangeWeather",1000*60*5, true);//1 раз в 5 минут, будет меняться погода.
ChangeWeather();
forward ChangeWeather();
public ChangeWeather()
{
new weather ;
weather = random(3) ;
SetWeather(weather);
switch(weather)
{
case 0: SetWeather(10);
case 1: SetWeather(11);
case 2: SetWeather(700);
}
return 1;
}
Как сделать следующее:
Если погода = 700, то:
Через 5 минут все кто не находится в интерьере или не в машине умирают и погода становится ID1
Добавил новый таймер
SetTimer("Eject",1000*60*5, 1);
Добавил форвард
forward Eject();
Добавил ниже его паблик
public Eject()
{
if (weatherid == 700) //Если погода = 700, то
{
if(IsPlayerInAnyVehicle(playerid) || GetPlayerInterior(playerid, => 0);) // Если игрок в машине или в интерьере больше нуля, то
{
return; // ничего не происходит
}
else // Если игроки не прошли проверку, то
{
SetPlayerHealth(playerid, 0); //Погибают игроки не прошедшие проверку на интерьер и транспорт
}
}
return 1;
}
всёравно не выходит. Ошибки. Как грамотно составить этот код?
public SetEject()
{
if(weatherid == 700)
{
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerInAnyVehicle(i) || GetPlayerInterior(i) != 0)
continue;
else
SetPlayerHealth(i, 0.0);
}
}
}
Изменил
public SetEject()
на
public Eject()
Создал глобальную переменную и присвоение ей значение "700" в том месте где у меня определяются погоды.
В конец паблика Eject ещё добавлю нормализацию погоды и онулирование значения переменной
Пишет что выброс закончился, однако не убивает если нахожусь на улице и вне транспорта. При нахождении в транспорте также не убивает как и должно быть.
public Eject()
{
if(weatherid == 700)
{
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerInAnyVehicle(i) || GetPlayerInterior(i) != 0)
continue;
else
SetPlayerHealth(i, 0.0);
}
}
SetWeather(19);
SendClientMessageToAll(0xAA3333AA, "Выброс закончился!!!");
weatherid = 1;
}
Проблемма решена! Система Выбросов Завершена!!! Тест окончен. Баги устранены.
public Eject()
{
if(weatherid == 700)
{
for(new i = GetMaxPlayers() - 1; i != -1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerInAnyVehicle(i) || GetPlayerInterior(i) != 0)
continue;
else
SetPlayerHealth(i, 0.0);
SetWeather(1);
SendClientMessageToAll(0xAA3333AA, "Выброс закончился!!!");
weatherid = 1;
}
}
}
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot