Guest Odesláno: 6. Duben, 2012 Share Odesláno: 6. Duben, 2012 TIMER Obtížnost: 2 / 5 Obsah Co je to timer Kde se dá využít Rozdělení Teorie SetTimer Teorie SetTimerEx Co je to timer Timer (z ang. ,,časovač") jak už napovídá název je funkce, která podle časových úseků vyvolává nějaký callback. Kde se dá využít Říká se, že každý správný mód má svůj ,,sekundový timer". Ve většině je tomu tak, je to proto, že některou funkci prostě potřebujete vyvolávat za dobu zapnutého serveru. Mluvím o věcech které být nemusí (př. Tachometr). Samozřejmě, timery se dají využít třeba i při závodech. Když jsou závody, tak se nám zobrazuje časovač který nám vypisuje 3,2,1,START. To vše má na svědomí timer, aneb pokud by jsme neměli timer, nemohli by jsme dělat tyto super věci. Rozdělení Máme celkem dvě funkce pro vyvolání timeru. SetTimer a SetTimerEx. SetTimer nám odesílá prázdné parametry funkce, proto je méně zátěžový. SetTimerEx nám ale dokáže hodnoty parametrů odeslat. Teorie SetTimer Zjistili jsme, že SetTimer nám odesílá prázdné parametry funkce. Ale co si pod tímto pojmem přestavit? Jednoduše, když vytvoříme callback (public), automaticky se všechny parametry které do něj vložíme mají hodnotu 0 (tedy pokud je nenastavíme). SetTimer nic nemění, odešle funkci tak jak je, jen provede kód uvnitř svorek { }. SetTimer vkládáme nejčastěji do OnGameModeInit(). Parametry SetTimer: funcname[],interval,bool:repeating funcname[] - jméno publicu, který chceme vyvolat. Vždy zadáváme přesný název publicu interval - interval opakování v milisekundách (ms). (1000ms = 1s) bool:repeating - boolean má pouze dvě hodnoty - true & false ( 1 & 0 ). Při nastavení hodnoty true se nám public opakuje, při false pouze jednou. Př.: forward TestovniTimer(); public OnGameModeInit() { SetTimer("TestovniTimer",1000,true); return 1; } public TestovniTimer() { static x = 0; x++; printf("%d",x); return 1; } Nyní se nám každou sekundu přičte do statické proměnné x jedna hodnota a vypíše se do konzole. Bude se vypisovat tak dlouho dokuď nevypnete server . Teorie SetTimerEx Jak už jsem říkal, SetTimer a SetTimerEx se liší odesílání parametrů. Tudíž můžeme odeslat např. hráčovo ID. To se hodí když chceme třeba na příkaz hráče za 5 vteřin zabít. Parametry SetTimerEx (funcname[], interval, bool:repeating, const format[], {Float,_}:...) funcname[] - to samé jako u SetTimer, název publicu interval - interval v milisekundách bool:repeating - opakování (true/false) const format[] - formát pro speciální typy hodnot (při něm se ještě pozastavím) {Float,_}:... - parametry fcí Takže pozastavím se u const format[] const je konstatní proměnná (neměnná) ale to je teď jedno. format[] značí parametry funkcí, třeba pokus chceme použít string, dáme jako format[] s , integer d atd. Lepší to bude na příkladu: SetTimerEx("TestPublic",5000,false,"ds",playerid,"Ahoj"); Můžeme to použít třeba do OnPlayerConnect forward TestPublic(pid,str[]); public OnPlayerConnect(playerid) { SetTimerEx("TestPublic",5000,false,"ds",playerid,"Ahoj"); return 1; } public TestPublic(pid,str[]) { SendClientMessage(pid,-1,str); return 1; } A za pět sekund po připojení hráče se mu vypíše zpráva "Ahoj" Více parametrů: WIKI: SetTimerEx Doufám že jste si něco nového přinesli, Mort. Link to comment Share on other sites More sharing options...
martanius 9 Odesláno: 14. Květen, 2012 Share Odesláno: 14. Květen, 2012 Pěkné, 8/10 Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 14. Květen, 2012 Share Odesláno: 14. Květen, 2012 morte a co funkce KillTimer na tu jsi zapomněl? Link to comment Share on other sites More sharing options...
Riso135_ 2 Odesláno: 15. Květen, 2012 Share Odesláno: 15. Květen, 2012 new timer; timer = SetTimer & SetTimerEx... KillTimer(timer); Link to comment Share on other sites More sharing options...
11xam11 0 Odesláno: 12. Říjen, 2013 Share Odesláno: 12. Říjen, 2013 new timer; timer = SetTimer & SetTimerEx... KillTimer(timer); Co tím chtěl básník říct? Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 13. Říjen, 2013 Share Odesláno: 13. Říjen, 2013 Co tím chtěl básník říct? hádej inteligente Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now