Přejít na obsah

Scydovy YSI návody | #3 | YSI_Coding\y_timers [**]

YSI Scydo SkiBig18 YSI4 y_timers YSI_Coding

  • Pokud chcete odpovědět, přihlaste se
6 odpovědí

#1
Castiel

Castiel

    OG LOC

  • Uživatel
  • Příspěvků: 1 382
  •   

YSI_Coding\y_timers
*****

Timery v a_samp jsou skvělá a učitečná věc. Avšak, každý timer vyžaduje neustále psát forward, public a fci. Ale za pomocí YSI stačí napsat jen typ timeru a způsob, jak ho spustíte.

Nejdříve si ukážeme použití y_timers. Tady jsem si vymyslel menší kód za použití čístě jen a_sampu:

Please Login or Register to see this Hidden Content

Teď ten samý kód za použít YSI:

Please Login or Register to see this Hidden Content

O dost kradší a přehlednější, že?

Manipulace s timery
Než budeme moct použít y_timer, musíme nejdříve si ujasnit, co v základech vůbec obsahuje a jaké fce co dělají:

defer

Spustí timer pouze jednou(stejně, jako by jste u fce SetTimer(Ex) dali u repeating false).

Please Login or Register to see this Hidden Content

repeat

Timer se bude neustále volat(jeho obsažený kód), dokud ho uživatel nezastaví nebo se nevypne server.

Please Login or Register to see this Hidden Content

stop

Zastaví opakující se timer. ALE POZOR. Při přidávání timerů jmenujete timery jmény, které normálně vkládáte do funcname[] ve fci SetTimer(Ex), avšak ve YSI vy musíte vypnout jeho ID. Tudíž využijete tag Timer:(který YSI obsahuje) pro jeho zjištění a následné vypnutí:

Please Login or Register to see this Hidden Content

Typy

Následné fce(inf. slovíčka) už vkládáme rovnou do zdrojového kód. Nikam do žádného callbacku či kamkoliv jinam.

timer

Základní "jednotka". Používá se v případě, že pracujete s timery, který spouštíte za pomocí defer či repeat(a nebo klidně i obyčejně).

task

Opakující se timer, který se ihned spustí po spuštění serveru. U task nelze přidávat parametry. Vyjímka tvoří ptask, kde je parametr playerid.

ptask

Stejně jako pro task, s tím rozdílem, že se opakuje, spustí se u daného hráče, a počet spuštěných timerů se zvyšuje s počtem hráčů na serveru.

Použití - tipy

Please Login or Register to see this Hidden Content

[font=verdana](Rád bych dodal, že jsem se snažil do návodu přidat jen ty nejpodstatnější informace. Složitější a zajímavější využití include si může i každý uživatel dohledat a naučit individuélně. Kdyby jste samozřejmě měli dotaz, ptejte se).

Scydovy YSI návody, hlavní topic: odkaz

  • 2



#2
vEnd

vEnd

    Python maniac

  • Globální moderátor
  • Příspěvků: 682

Kompenzují tyto časovače zpoždění, které generují běžné časovače (např. když máš časovač přes SetTimer na 30 sekund, může být až o x % delší, tedy přes 30 sekund)?


  • 0

I always enjoy meeting people more chemically imbalanced than myself. -Trevor Philips
It's hard to follow the train when you are hauling two number nines; a number nine large; a number six with extra dip; a number seven; two number 45s, one with cheese; and a large soda. -guess who


#3
Castiel

Castiel

    OG LOC

  • Uživatel
  • Příspěvků: 1 382
  •   

Kompenzují tyto časovače zpoždění, které generují běžné časovače (např. když máš časovač přes SetTimer na 30 sekund, může být až o x % delší, tedy přes 30 sekund)?


Pokud jsem správně pochopil otázce, tak snad tohle bude stačit jako odpověď:
 

Tasks with the same delays are automatically balanced to not occur at the same time. For example if you have three with a one second period, they will be called a third of a second apart.

The balancing algorithm is not perfect. If you have one timer at 400ms and one at 700ms, they will conflict once every 2.8s. This currently only offsets timers with the same periods, however cross-period-collisions are much rarer so not an issue most of the time.


-->>

Please Login or Register to see this Hidden Content


  • 0

#4
vEnd

vEnd

    Python maniac

  • Globální moderátor
  • Příspěvků: 682

Ne, to není to, na co jsem se ptal. Časovače mají už od přírody (:d) zpoždění. Když dáš třeba 1 000 milisekund (aka 1 sekunda) a zvolíš opakovat, vznikne tam vždy čas navíc (~ 1 100 milisekund). Proto dávám pro sekundové časovače jen 900 ms, popř. 950 ms.

 

Otázka zní, jestli tohle YSI kompenzuje. Vím, že na tom byl

Please Login or Register to see this Hidden Content

, ten to kompenzoval. Dělá to i y_timers?


  • 0

I always enjoy meeting people more chemically imbalanced than myself. -Trevor Philips
It's hard to follow the train when you are hauling two number nines; a number nine large; a number six with extra dip; a number seven; two number 45s, one with cheese; and a large soda. -guess who


#5
Castiel

Castiel

    OG LOC

  • Uživatel
  • Příspěvků: 1 382
  •   

Ne, to není to, na co jsem se ptal. Časovače mají už od přírody ( :d) zpoždění. Když dáš třeba 1 000 milisekund (aka 1 sekunda) a zvolíš opakovat, vznikne tam vždy čas navíc (~ 1 100 milisekund). Proto dávám pro sekundové časovače jen 900 ms, popř. 950 ms.
 
Otázka zní, jestli tohle YSI kompenzuje. Vím, že na tom byl

Please Login or Register to see this Hidden Content

, ten to kompenzoval. Dělá to i y_timers?


Jo ták :d. To ti nedokážu říct na 100 %, protože když jsem používal opakující timery, nějakou změnu v intervalu jsem nepostřehl(jinak řečeno nestalo se mi to, takže ano), ale co si pamatuju tak y_timers byly proslavené spousty úprav a i oprav obyčejných timerů(např. možnosti volat i string a array), takže je dosti pravděpodobně, že se tam implementovala i tahle úprava.
  • 0

#6
ATomas

ATomas

    RZE for life, SP for ever !

  • Ověřený uživatel
  • Příspěvků: 2 818
  •   

Tak vam to hosi rozseknu :)

Please Login or Register to see this Hidden Content

 

Timer intervals are not accurate (roughly 25% off).

Resenim je udelat mensi timer a kontrolovat podle funkce GetTickCount().


  • 0
play.superparba.eu:7777
www.superparba.eu
pawno.cz kazí dva typy lidí:
1. "Najdi do to na googlu/wiki" <- sakra tak od toho je tu ta sekce help ne ? Protože to asi nenašel / nepochopil / neví
2. Ovce. <- Člověk by se mohl smát kdyby to nebylo tak smutné jak tu někdo zavedl termín kid/děcko a všichni ho začali bezhlavě používat na každého, kdo se jenom opováží na něco zeptat nebo projevit svůj nazor.

#7
Asakura Yoh

Asakura Yoh

    Claude Speed

  • Uživatel
  • Příspěvků: 3 196

Ne, to není to, na co jsem se ptal. Časovače mají už od přírody ( :d) zpoždění. Když dáš třeba 1 000 milisekund (aka 1 sekunda) a zvolíš opakovat, vznikne tam vždy čas navíc (~ 1 100 milisekund). Proto dávám pro sekundové časovače jen 900 ms, popř. 950 ms.

 

Otázka zní, jestli tohle YSI kompenzuje. Vím, že na tom byl

Please Login or Register to see this Hidden Content

, ten to kompenzoval. Dělá to i y_timers?

 

 

Asi myslis, jestli se casovac spousti kazdych 1000ms nebo 1000ms po ukonceni volani cb predosleho ticku.

To si zmeris jednoducho. Udelej si casovac (5sec), do kteryho das vypis casu do konzole a pod nej jeste nejaky sleep na 3 sec.


  • 0

Lajkom proti kocovine!

There are only two things wrong with C++: The initial concept and the implementation.






Také označeno jedním nebo více klíčovými slovy: Návod, YSI, Scydo, SkiBig18, YSI4, y_timers, YSI_Coding

0 uživatelů si prohlíží toto fórum

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

© 2015 IPS, Inc.

Zajímat Vás mohou ještě aktuální zprávy. sleviště, slevy dnes Herbalife je skvělou cestou pro dobré zdraví. Je libo dětský web?