PDA

Просмотр полной версии : [Вопрос] Действия при погоде (Выброс)



Albert
29.12.2014, 16:16
Я создал систему автоматической смены погоды. Хочу сделать выбросы. Пока она меняется быстро и её всего 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

Albert
29.12.2014, 23:20
Добавил новый таймер


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;
}


всёравно не выходит. Ошибки. Как грамотно составить этот код?

L0ndl3m
29.12.2014, 23:27
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);
}
}
}

Albert
29.12.2014, 23:41
Изменил


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;

}
}

}