Wiek: 32 Do³±czy³: 7020 dni temu Posty: 710 Sk±d: jeste¶ ?
Punkty: 265
Wys³any: 2009-03-07, 22:10 <! SetTimer !>
Du¿a liczba osobników homo sapiens sapiens znanych powszechnie jako ludzie, na tym forum jako "u¿ytkownicy" ma problemy z u¿ywaniem bardzo przydatnej funkcji jak± jest timer. Postaram siê przedstawiæ w jaki sposób jej u¿ywaæ.
| Budowa ogólna |
| SetTimer
Kod:
SetTimer("Nazwa funkcji", czas przez/co ile bêdzie wykonywana, bool powtarzalno¶ci, true = 1, false = 0);
| SetTimerEx
Kod:
SetTimerEx("Nazwa funkcji", czas przez/co ile bêdzie wykonywana, bool powtarzalno¶ci, true = 1, false = 0, formatowanie inicjacji danych w funkcji, inicjacja danych w funkcji);
| Zastosowanie |
Zastosowanie timerów jest baaaardzo szerokie, od prostej funkcji sprawdzaj±cej, do streamer'a obiektów.
| Przyk³ady praktyczne |
Nasz timer mo¿e wykonywaæ baaaardzo wiele rzeczy. Podam kilka przyk³adów.
| SetTimer
Funkcje które umieszczamy w SetTimer, odnosz± siê do rzeczy które nie maj± ¿adnego parametru np. gdy tworzymy funkcjê dla wszystkich graczy czy gdy funkcja poprostu nie ma argumentów.
Funkcja dla wszystkich graczy:
Nasza funkcja:
Kod:
forward god();
public god()
{
for(new i=0,j=GetMaxPlayers(); i<j; i++) //pêtla dla wszystkich graczy
{
if(!IsPlayerConnected(i))continue;//Je¶li gracz z pêtli nie jest pod³±czony pêtla przeskakuje o 1 i jedzie dalej
SetPlayerHealth(i,400); //Aby god dzia³a³, muszê ustawiæ pewn± warto¶æ ¿ycia dla graczy
SetPlayerArmour(i,400); // - || -
}
}
T± funkcjê wywo³am w publicu OnGameModeInit, gdy¿ ta funkcja ma pracowaæ od czasu w³±czenia mode.
Kod:
public OnGameModeInit()
{
SetTimer("god",250,1);
return 1;
}
Funkcja sprawdzaj±ca dla wszystkich graczy:
Nasza funkcja:
Kod:
forward WeaponsCheck();
public WeaponsCheck()
{
new slot, ammo, weap; //zmienne
for(new i=0,j=GetMaxPlayers(); i<j; i++)//Pêtla dla wszystkich graczy
{
if(!IsPlayerConnected(i))continue;//Je¶li gracz z pêtli nie jest pod³±czony pêtla przeskakuje o 1 i jedzie dalej
for (slot = 0; slot < 14; slot++) //Pêtla dla sprawdzenia wszystkich slotów.
{
GetPlayerWeaponData(i, slot, weap, ammo); //Pobieranie broni z wszystkich slotów.
if(weap == 16 || weap == 32 || weap == 0 || weap == 1 || weap == 46)// Je¶li broñ ma id to:
{
//W moim przypadku nic
}
else //A je¶li jest inaczej
{
SendClientMessage(i, red, "This isn't a deathmatch gamemode ! Don't use weapons !"); //Wysy³a wiadomo¶æ
ResetPlayerWeapons(i); //Resetuje bronie gracza
}
}
}
return 1;
}
T± funkcjê wywo³am w publicu OnGameModeInit, gdy¿ ta funkcja ma pracowaæ od czasu w³±czenia mode.
Kod:
public OnGameModeInit()
{
SetTimer("WeaponsCheck", 5000, 1);
return 1;
}
Funkcja sprawdzaj±ca:
Nasza funkcja:
Kod:
forward WindaUpped();
public WindaUpped()
{
new Float: x, Float: y, Float: z; //Zmienne floatowe
GetObjectPos(ServerData[gElevator], x, y, z); //Pobranie pozycji obiektu
if(z == 57.413) //Je¶li koordynat "z" wyniesie 57.413 to:
{
MoveObject(ServerData[gDoor1], 958.210, -1187.412, 57.018, 0.5);
MoveObject(ServerData[gDoor2], 958.207, -1185.559, 57.017, 0.5);
SetTimer("CloseUp", 3000, 0);
KillTimer(ServerData[tElevatorTimer]);
}
return 1;
}
T± funkcjê wywo³am w publicu OnPlayerSelectedMenuRow, gdy¿ ta funkcja ma za zadanie sprawdziæ gdzie jest pozycja drzwi od windy i w momencie gdy winda jest na górze, funkcja otworzy drzwi.
Nie mo¿esz pisaæ nowych tematów Nie mo¿esz odpowiadaæ w tematach Nie mo¿esz zmieniaæ swoich postów Nie mo¿esz usuwaæ swoich postów Nie mo¿esz g³osowaæ w ankietach Nie mo¿esz za³±czaæ plików na tym forum Nie mo¿esz ¶ci±gaæ za³±czników na tym forum