Stránka 1 z 2
Vypnutí scriptu
Napsal: 30.09.2007 00:55:14
od Rixx
Chtěl jsem se zeptat, dá se do scriptu zaimplementovat to, že když už jeden script běží a pustí se zase, aby to ten nově spuštěnej vyplo? Myslim třeba pustim script na heal a potom omylem ho pustim znovu (takže se mi prostě tlučou), tak aby to mělo nějakou podmínku na to, že když už script se jménem xxx běží a já se ho pokusim zapnout znovu, aby ho to buď vůbec nepustilo, nebo aby ho to hned ukončilo.. Doufám, že mě chápete.. Jde něco takovýho?
Re: Vypnutí scriptu
Napsal: 30.09.2007 11:16:33
od Mole Two
a) na zacatek skriptu
Kód: Vybrat vše
UO.Exec( "terminate jmenoSkriptu" );
b) pres globalni promenny
http://asyrks.asp2.cz/lock.txt
ale pak se musi vzdy pred ukoncenim skriptu volat Unlock a pri terminate all delat pres skript s UnlockAll ale zase se ten puvodni skript nevypne

Napsal: 30.09.2007 19:32:35
od Spike
Samosebou že jde, dokonce jde udělat to, že při prvním stisku tlačítka se heal zapne, při dalším stisku téhož tlačítka se zase vypne, jako to mám já

Všechno jde, když se chce

Napsal: 30.09.2007 23:09:37
od Rixx
Spike píše:Samosebou že jde, dokonce jde udělat to, že při prvním stisku tlačítka se heal zapne, při dalším stisku téhož tlačítka se zase vypne, jako to mám já

Všechno jde, když se chce

Tak tohle řešim přes terminate all, protože víc scriptů stejně nemám zapnutých.
Jinak Mole díky. Jenom se zeptám, nejde to přes UO.Terminate("jménoscriptu")? Bo UO.Exec tu lidi nemají rádi..

Ale asi UO.Terminate neexistuje, že?
Napsal: 30.09.2007 23:50:50
od Mole Two
UO.Terminate neni no
Napsal: 01.10.2007 16:39:21
od Spike
Rixx píše:Tak tohle řešim přes terminate all, protože víc scriptů stejně nemám zapnutých.
No, ale já mluvím o tom mít vypínání a zapínání na jednom tlačítku... Kdežto jak jsem pochopil z tvého zápisu ty musíš mačkat dvě.
Rixx píše:
...Bo UO.Exec tu lidi nemají rádi..

UO.Exec tu nemají rádi jen ti, kteří mu nerozumí a nevědí k čemu slouží a pouze někde od někoho slyšeli, že je to prasárna

Napsal: 01.10.2007 18:12:58
od Pepik
Napsal: 01.10.2007 18:21:40
od Carda
U exec de spíš o něco takovýho jakože pustí příkaz, kterej pustí příkaz, kterej provede danou akci -> je to možná nepatrně pomalejší a je to ošklivý

(sry jestli sem fakt daleko od pravdy :p)
Edit: Samozřejmě pokud to bez exec nejde (přepnutí warmodu, terminate), tak použít, ale pokud to de jednoduše jinym příkazem, tak použít radši to :p
Napsal: 01.10.2007 18:52:49
od Pepik
No jo, taky to nerad používám - ale evidentně se to někdy hodí. A ono zase - na E6700 to snad ani ňák znatelně pomalejší nebude

Napsal: 03.10.2007 08:22:11
od Spike
Carda píše:U exec de spíš o něco takovýho jakože pustí příkaz, kterej pustí příkaz, kterej provede danou akci -> je to možná nepatrně pomalejší a je to ošklivý

(sry jestli sem fakt daleko od pravdy :p)
Edit: Samozřejmě pokud to bez exec nejde (přepnutí warmodu, terminate), tak použít, ale pokud to de jednoduše jinym příkazem, tak použít radši to :p
Opravdu jsi docela dost daleko od pravdy

UO.Exec ma tu nedocenitelnou vlastnost, ze umozni spustit skriptove jiny skript jako samostatne vlakno. Priklad: Mam v yoku udelane obsluzne rutiny, tj skripty, ktere se staraji o spousteni, beh a vypinani dalsich skriptu. Pokud by napr. rutina Execute(), kterou budu chtit spoustet skript (nazyvejme ho napriklad MujSkript), spoustela tento skript prikazem
stane se to, ze skript se sice spusti, ale rutina Execute se zastavi a ceka, nez MujSkript skonci. Kdezto kdyz to bude spoustet nejak takhle
spusti se MujSkript jako samostatne vlakno, a rutina Execute muze v klidu vykonavat nejakou dalsi cinnost, pripadne skoncit. Je to krasne videt v zalozce prave bezicich skriptu, v prvnim pripade bys videl pouze jeden skript, a to Execute (i presto ze tento skrip spustil jiny skript s nazvem MujSkript), ve druhem pripade budes mit dva bezici na sobe nezavisle skripty.
UO.Exec tedy ma svuj ucel a zaplatpanbuh za nej, bez nej by takoveto prostredi obsluznych rutin vubec neslo realizovat (snad jen pouzitim UO.Say, netestoval jsem to, ale pokud to funguje, tak je to stejny princip).
Na druhou stranu uznavam, ze pouziti UO.Exec ve smyslu UO.Exec(waitmenu bla bla bla) je skutecne prasarna.
Napsal: 03.10.2007 08:58:24
od Mole Two
Spike píše:Pokud by napr. rutina Execute(), kterou budu chtit spoustet skript (nazyvejme ho napriklad MujSkript), spoustela tento skript prikazem
o rly? k cemu by pak byla? jak muzes predvidat co by jak delalo?
Napsal: 03.10.2007 09:34:57
od Spike
Mole Two píše:Spike píše:Pokud by napr. rutina Execute(), kterou budu chtit spoustet skript (nazyvejme ho napriklad MujSkript), spoustela tento skript prikazem
o rly? k cemu by pak byla? jak muzes predvidat co by jak delalo?
Huh? Jak predvidat? Ja to bral jako predpoklad, abych na tom demonstroval uzitecnost UO.Exec.
Promin, ale tvuj post jsem vubec nepochopil...
Napsal: 03.10.2007 09:53:00
od Mole Two
Jako demonstrujes uzitecnost nejaky veci na vymysleny veci? Nechapu nejak proc by nejaka funkce Execute() mela spoustet skript a cekat az se dokonci..
Napsal: 03.10.2007 14:05:51
od Spike
Mole Two píše:Jako demonstrujes uzitecnost nejaky veci na vymysleny veci? Nechapu nejak proc by nejaka funkce Execute() mela spoustet skript a cekat az se dokonci..
Nene, neni to vymyslena vec, takovou rutinu skutecne mam a pouzivam.
No to je prave to, fuknce, ktera spusti skript a ceka az se dokonci je nesmysl, ale prave tohle se stane pokud ten skript ta funkce nebude spoustet pres UO.Exec ale pouhym volanim. A tim jsem chtel demonstrovat prave onu vyznamnost prikazu UO.Exec pro tyto ucely. Uz si rozumime?

Napsal: 03.10.2007 14:42:34
od Carda
Spike píše:Opravdu jsi docela dost daleko od pravdy... ...Na druhou stranu uznavam, ze pouziti UO.Exec ve smyslu UO.Exec(waitmenu bla bla bla) je skutecne prasarna.
Aha, takže si vlastně chtěl říct, že mám pravdu. Protože právě tímhle
Carda píše:Samozřejmě pokud to bez exec nejde, tak použít, ale pokud to de jednoduše jinym příkazem, tak použít radši to :p
sem myslel i souběžný spuštění skriptu (to o čem si psal), ale bohužel sem to neuvedl do těch příkladů no

Napsal: 03.10.2007 15:30:58
od Dondor
Spike píše:...
Na druhou stranu uznavam, ze pouziti UO.Exec ve smyslu UO.Exec(waitmenu bla bla bla) je skutecne prasarna.
Co se tu přesně rozumí slovem "prasárna"? Je to jenom zastaralý zápis, pozůstatek z doby, kdy yoko nemělo funkci uo.waitmenu(), nebo se uo.exec("waitmenu bla bla bla") chová jinak než uo.waitmenu("bla","bla","bla")?
Napsal: 03.10.2007 16:32:35
od Spike
Dondor píše:Spike píše:...
Na druhou stranu uznavam, ze pouziti UO.Exec ve smyslu UO.Exec(waitmenu bla bla bla) je skutecne prasarna.
Co se tu přesně rozumí slovem "prasárna"? Je to jenom zastaralý zápis, pozůstatek z doby, kdy yoko nemělo funkci uo.waitmenu(), nebo se uo.exec("waitmenu bla bla bla") chová jinak než uo.waitmenu("bla","bla","bla")?
Prasarna je myslena jako opak elegantniho zapisu, proste neco co jde napsat mnohem hezceji, elegantneji.
Chovani je stejne u obou zpusobu.
Napsal: 03.10.2007 16:35:10
od Spike
Carda píše:..sem myslel i souběžný spuštění skriptu (to o čem si psal), ale bohužel sem to neuvedl do těch příkladů no

V tom pripade ano, mel jsi pravdu.
Ale teda jak se ti povedlo nenapsat do toho vyctu prave tohle pouziti, to je mi zahadou, protoze dle meho je prave tohle ten nejdulezitejsi zpusob pouziti UO.Exec
A zase naopak, na prepnuti warmode UO.Exec vubec nepotrebujes

Napsal: 03.10.2007 19:33:31
od Carda
Spike píše:Chovani je stejne u obou zpusobu.
->
Spike píše:V tom pripade ano, mel jsi pravdu.
Nemám ten dojem, že bych naznačoval, že chování obou zápisů je naprosto stejný.
Spike píše:Ale teda jak se ti povedlo nenapsat do toho vyctu prave tohle pouziti, to je mi zahadou, protoze dle meho je prave tohle ten nejdulezitejsi zpusob pouziti UO.Exec

Napsal sem co mě první napadlo a to byli logicky ty věci, který sem uvedl. Není nijak moc možný vypsat všechny možnosti.
Spike píše:A zase naopak, na prepnuti warmode UO.Exec vubec nepotrebujes

Měl sem na mysli UO.Exec("warmode flip") a to jaksi nenahradíš moc nijak jinak.
Napsal: 03.10.2007 19:56:25
od Dondor
Carda píše:Měl sem na mysli UO.Exec("warmode flip") a to jaksi nenahradíš moc nijak jinak.
Tohle by nefungovalo?
Kód: Vybrat vše
if (uo.warmode()==0) then
uo.warmode(1)
else
uo.warmode(0)
endif