new bool:JatekosMegteheti[playerid] = true; // ez az a változó, ami meghatározza, hogy a játékos (már) használhatja-e (újra) a cselekvést.MagaACselekvés(playerid) { // ez a függvény maga a cselekvés, amit a játékos csak adott idõközönként tehet meg. Lehet parancs, pickup felvétele, akármi egyéb if(JatekosMegteheti[playerid]) { // amennyiben a játékos használhatja a cselekvést... // ide jön maga az eredmény JatekosMegteheti[playerid] = false; // beállítjuk a változót hamisra, így mostmár nem teheti meg. SetTimerEx(\"Engedelyez\", 10000, false, \"d\", playerid); // elindítunk egy timert, ami 10 másodperc múlva lefut. return 1; } else { // amennyiben a játékos nem használhatja... SendClientMessage(playerid, -1, \"Ezt a cselekvést még nem ismételheted újra!\"); // kiírjuk, hogy nem használhatja a cselekvést még (várnia kell a timer lefutására) return 0; }}public Engedelyez(playerid) { //ha letelt a 10 másodperc JatekosMegteheti[playerid] = true; //a játékosnak újra megengedjük, hogy használja a cselekvését}
new UtolsoEngedelyezes[MAX_PLAYERS]; //ebben fogjuk tárolni az utolsó engedélyezés tickcountjátMagaACselekvés(playerid) { // ez a függvény maga a cselekvés, amit a játékos csak adott idõközönként tehet meg. Lehet parancs, pickup felvétele, akármi egyéb if(tickcount() - UtolsoEngedelyezes[playerid] > 10000) { //Ez az ág akkor fut le, ha a jelenlegi tickcount és az utolsó ellenõrzés tickcountjának különbsége nagyobb mint 10000. Vagyis a két mérés között több, mint 10 másodperc telt el. //Ide jön a cselekvés UtolsoEngedelyezes[playerid] = tickcount(); // Frissítjük a változót a legfrissebb értékkel. return 1; } else { // ha nem telt el még 10 másodperc SendClientMessage(playerid, -1, \"Ezt a cselekvést még nem ismételheted újra!\"); return 0; }}
new VersenyKezdeteIdo[playerid];VersenyKezdete(playerid) { VersenyKezdeteIdo[playerid] = tickcount(); // elkezdõdött a verseny}VersenyVege(playerid) { // végetért a verseny new versenyido = tickcount() - VersenyKezdeteIdo[playerid]; new str[100]; format(str, 128, \"A versenyt %i ezredmásodperc alatt teljesítetted.\", versenyido); SendClientMessage(playerid, -1, str);}
new mennyiido = 10000 - (tickcount() - UtolsoEngedelyezes[playerid])
Jó leírás. Igazából szerintem a tickcountot, és a GetTickCount()-ot, lehet használni ugyan úgy, csak más 1 kicsit a 2 funkció, mivel a tickcount függvény az a sa-mp szervernek kéri le, a GetTickCount pedig az oprendszer futási ideje talán.
Jó leírás. Igazából szerintem a tickcountot, és a GetTickCount()-ot, lehet használni ugyan úgy, csak más 1 kicsit a 2 funkció, mivel a tickcount függvény az a sa-mp szervernek kéri le, a GetTickCount pedig az oprendszer futási ideje talán. Nem, a kettõ lényegében ugyanaz, a számítógép futásának idejét mutatja ezredmásodpercben. Az egyik alap pawn függvény, a másik meg azt hiszem a SAMP native.Egyébként egy 32 bites integert ez kb. 24 nap folyamatos számítógép-üzemeltetés után túltölt. Ha saját szervered van, ajánlatos minden nap újraindítani, ha hosztos, akkor meg érdeklõdjetek náluk (de elvileg õk is újra szokták indítani õket x naponta). [/quote]Jah értem, köszi a választ.
ez jó, de nem marad meg, ha kikapcsolod a szervert.
ez jó, de nem marad meg, ha kikapcsolod a szervert.Téma címe: \"tickcount() a fölösleges timerek helyett\"A timerek sem maradnak meg, ha kikapcsolod a szervert! [/quote]ezalatt azt értettem, hogy a timer lefutási értékébõl megmaradt ms értéket nem tudod menteni, de a getdate, vagy tickcount értékét igen.
ez jó, de nem marad meg, ha kikapcsolod a szervert.Téma címe: \"tickcount() a fölösleges timerek helyett\"A timerek sem maradnak meg, ha kikapcsolod a szervert! [/quote]ezalatt azt értettem, hogy a timer lefutási értékébõl megmaradt ms értéket nem tudod menteni, de a getdate, vagy tickcount értékét igen. [/quote]Az ez elõtti hozzászólásodból nem derül ki, hogy a timerekre gondolsz, azt mondtad, \"ez\", azt hittem a tickcountra gondolsz, mivel errõl szól a téma.
newegyertek = 3000000000,ketertek = 3000000050;printf(\"%d|%d\", egyertek, ketertek);printf(\"Kivonás: %d\", (ketertek - egyertek));
Igazság szerint a limittõl se kell igazán félni, ugyanis ha eléri a limitet mínuszba megy. Ezen felül, ha kivonsz két értéket egymásból (ami persze mínusz), akkor is pozitív értéket kapsz.Pl:tickcount() visszatér -100al, ezt eltárolod. Majd tickcount újabb értéke visszatér -120al, az -100 - (-120), vagyis +20 jön ki. Igen, mínuszba megy. Ugyan ha a negatívból kivonod a negatívat pozitív értéket kapsz, de akkor már kényelmetlen a dolog, ha az elsõ változó értéke mondjuk 2,011,418,927, hiába vonogatod ki belõle a negatív számod, nem azt az értéket kapod, amit kéne, ergo hibás lesz a szkripted.Egyébként nem nagy dolog újraindítani a szervert 24 naponta, általában jóval gyakrabban újra vannak indítva, tehát ez nem kritikus probléma. [/quote]Mindig plusz lesz, mivel ha az elsõ érték 2,147,483,647, a második, mondjuk 2,147,483,680 akkor is pluszba jössz ki, mivel az elsõ érték mindig kisebb lesz a másodiknál. (még ha átrakja minuszba is). Illetve akkor is plusz érték jön ki, ha az elsõ plusz érték, a második pedig negatív, ha az elsõ negatív, és a második is negatív. Olyan pedig nem nagyon lehet hogy az elsõ negatív, a második pedig pozitív, ugyanis az elsõ szám MINDIG kisebb lesz a másodiknál.
Igazság szerint a limittõl se kell igazán félni, ugyanis ha eléri a limitet mínuszba megy. Ezen felül, ha kivonsz két értéket egymásból (ami persze mínusz), akkor is pozitív értéket kapsz.Pl:tickcount() visszatér -100al, ezt eltárolod. Majd tickcount újabb értéke visszatér -120al, az -100 - (-120), vagyis +20 jön ki.