Szerző Téma: [piszk.] [Timerbe való bepillantás] Random, Automatikus szerverüzenet.  (Megtekintve 714 alkalommal)

Nem elérhető Olie

  • 892
  • Roleplay Õrült
    • Profil megtekintése
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..:)
« Utoljára szerkesztve: 2012. Szeptember 27. - 11:27:20 írta Olie »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal