Sziasztok!
Ezt a leckét rövidre fogom.
Sok scripter gondolkodott már azon, hogy hogyan lehet valamit bizonyos idõközönként csinálni.
Erre való a timer, azaz az idõzítõ.
Most Random, automatikus szerverüzenetek segítségével mutatom be röviden, a timer mûködési elvét.
Szükségünk van itt is, mint minden scriptben és módban, a függvénykönyvtárunkra.
#include <a_samp>
Innentõl kétféleképpen haladhatunk tovább:
- Vagy Kifejezzük(Definiáljuk) a mód elején az idõt
- Vagy A Késõbbiekben adjuk meg a függvényben.
Az, hogy ki hogy szokta csinálni, emberfüggõ, viszont, a zavarodás elkerülésének érdekében ajánlatos definiálni.
#define FELORA 1800000
És most mindenki néz, hogy Fél Óra az miben Egymillió-Nyolcszázezer?
Milliszekundumban.
Ugyanis a Timereknél az idõt Milliszekundumban kell megadni.
Utána lehet számolni: 1000 Milliszekundum az Egy Másodperc. Ha beszorozzuk hatvannal (Hogy egy perc legyen) Akkor Hatvanezer Milliszekundum egy perc. És ezt ha beszorozzuk 30-al, akkor Egymillió-Nyolcszázezer jön ki.
Egyébként, ha kerek perceket akarsz megadni, akkor mindíg Hatvanezerrel szorozz.
Így például egy óra az ennek a kétszerese, vagyis 60*60*1000 azaz 3600000 Milliszekundum
Szóval, ott tartottunk, hogy definiáltuk a 1800000-et a \"FELORA\"-ra.
Haladjunk tovább.
Létrehozunk egy Tömbváltozót
new SzerverUzenetek[5][] = {
\"Érezd jól magad a sampforum.hu szerverén!\",
\"Sampforum.hu - Carmageddon\",
\"www.sampforum.hu\",
\"Ha Cheatert látsz, jelentsd egy adminnak!\",
\"A Jólneveltek nem Csalnak, a többieknek pedig tilos!\"
};
Fontos, hogy a Tömbváltozónál mindíg Nulláról kezdd a számolást. (0, 1, 2).
Jogosan merül fel a kérdés, hogy az elején tökéletesen látszik az [5], és ott öt szerverüzenet van.
Ha Nulláról kezdtem volna számolni, akkor négynek kellene ott lennie.
Ez azért van, mert saját magát is beleszámoltam, tehát van 5+1, azaz 6 változóm, és mivel a számolás nulláról indul, ezért csak 5 van kiírva.
Szóval, akkor most hozzá kell hogy adjuk a Timert, ami szépen félóránként random üzenetet fog kidobni a fenti öt közül.
forward UziMutat();
Mivel forwardoltunk, ezért nagy valószínûséggel egy funkció következik utána:
public UzikMutat() {
new RandomUzik = random(sizeof(SzerverUzenetek));
SendClientMessageToAll(0xFFFFFFAA, SzerverUzenetek[RandomUzik]);
}
Bõvebben:
public UzikMutat() {
Az elsõ sor megállapítja (deklarálja), hogy az elsõ sor egy funkció.
new RandomUzik = random(sizeof(SzerverUzenetek));
A Második Sorban létrehozunk egy változót, ami véletlenszerûen választ ki a SzerverUzenetek közül.
SendClientMessageToAll(0xFFFFFFAA, SzerverUzenetek[RandomUzik]);
A Harmadik sor elküldi mindenkinek a SendClientMessageToAll függvény segítségével a random kiválasztott üzenetet.
És végül, tegyük az OnGameModeInit alá így:
public OnGameModeInit() {
SetTimer(\"UzikMutat\", FELORA, true);
return 1;
}
Mikor elindul a mód, vele együtt indul a timer is.
Az UzikMutat funkciót, félóránként végrehajtja.
___________________
Megjegyzés: Az Elsõ verzió 2x ilyen hosszú volt..