Item Manipulation Triggers
Z Moriawiki
Verze z 10:13, 23. 10. 2007
Item Manipulation Triggers = triggery ktery se prekvapive poustej pri manipulaci s itemama. Aktualni (a brzo minuly) stav techto triggeru je zalozen na zpetne kompatibilite se sphereserverem. Kdyz sem to delal tak mi na ty kompatibilite zalezelo jaksi vic nez ted :) To mne ale mezitim preslo, takze je cas to udelat po svem a kompletne a lepe.
Ve sphere jsou toto vselijake ty @equip a @pickup a @dropon triggery. Nic proti nim ale jsou lehce nekonzistentni - napriklad @pickup se vola jen kdyz je item zvednut primo klientem, zatimco @equip se vola i pri equipnuti itemu ze skriptu... Tedy spatne se rozlisuje jestli je akce primo provadena klientem nebo az "druhotne" nejakym skriptem. Proto jsem se rozhodl udelat ve mnoziny triggeru - jedny volane pri (resp. tesne pred) kazdym pokusu klienta neco zvednout/polozit/stacknout (a ty budou vesmes Cancellable, a budou mit jasne danyho puvodce, tj. toho hrace), a druhou ktera se bude volat pri kazdy zmene lokace/stavu itemu (a ty vesmes cancellable nebudou, nybrz budou spis "oznamovaci", s tim ze puvodce muze byt nejasny). Tyto dve skupiny se pochopitelne budou castecne prekryvat, resp. doplnovat, a faktem je ze to znamena spustu volani triggeru pri kazdy manipulaci s itemem... Ale dokud se neukaze opak tak si myslim ze si to muzeme dovolit :)
Pouzivane nazvy parametru:
Item self = item se kterym je manipulovano Item/Container/Character/Thing target = cil zmeny, tj. cilovy kontejner nebo item se kterym bude self stacknut
Poradi parametru zde popsane budiz zavazne, tj. plati i pro LScript. V nekterych pripadech muzou byt parametry "obalene" do potomka ScriptArgs, pak budou parametry vypsany jako NazevTridyPotomkaScriptArgs(A param1, B param2, C param3, ...) a znamena to ze v C# lze trigger v Triggergroupe/pluginu deklarovat bud s 2 parametry - z toho druhy bude NazevTridyPotomkaScriptArgs, nebo s vypsanim jednotlivych A param1, B param2, C param3, ...
Systemove triggery
Tyto triggery budiz volany pri kazde zmene vlastnosti Cont nebo P. Pri kazdem volani triggeru plati ze musi byt dodrzovany vsechny bezne invarianty, tj. nikdy neni item nekde "ve vzduchu", ale je presne definovano jestli oznamovana akce (zmena stavu) uz probehla nebo prave probehne.
Nazev triggeru | Parametry | Stav pri volani | Popis |
---|