Fallout: New Vegas

World Editor ~ WE - MUI v period


Autor: Ariagil
Název: WE - MUI v periodic eventu

Pokud jsi začátečník a nevíš, "jak že se to vlastně dělá s tim editorem spínačů", tenhle článek pro tebe nemá smysl. Ok, zvládáš Custom Spells? Zvládáš je tak, že si říkáš jestli nejde udělat něco ještě lepšího? To už je lepší. Zvládáš už MUI? Skvěle! Potom tohle, bude pro tebe možná i hračka. Pokud ne, pokusím se ti ho rychle vysvětlit aby jsme mohli přejít k MUI v periodic eventu.


Na co MUI?

Ptáte se, na co to je? Ať už ho použijete kdekoliv, nejenom ve spellech, dokáže určitou funkci zobecnět. NO, to zní divně... Prostě např. nějaké kouzlo mohou seslat dvě jednotky na mapě najednou... Vemte si, že uděláte schopnost podle Custom spells, která zmrazí jednotku na 10 vteřin. A co teď, když po pěti vteřinách sešlete kouzlo znovu, na někoho jiného? Ta proměnná např. FreezeTarget se přepíše... Takže když na konci spínače bude Nepozastavit FreezeTarget - rozmrazí to toho druhého - ten první tam bude stát zmrazený na věky... A když uděláte knockback, který jednotku začne posouvat, ale uprostřed "odkopnutí" někdo sešle kouzlo na někoho jiného? Spínač označí nový cíl, nové zválenosti, nové pozice. Ten první se zastaví. A tohle všechno (a určitě mnohem víc) dokáže MUI vyřešit.

Jak to funguje?

A jak to teda to "MUI" dokáže? Pokud máte např. tu schopnost, která zmrazí - Máte důležitou proměnnou FreezeTarget. A aby se nepřepsala, vytvoříme další, vlastně takovou FreezeTarget2. Takže spínač nejdřív rozmrazí FreezeTarget1 a potom FreezeTarget2. A v periodic eventu? Tam to funguje dost podobně. Když máme takový Knockback, fungovalo by to stejně, až na tu smyčku, spínač s periodic eventem. Tady musíme v další smyčce hýbnout s více různými "duplikáty" toho Targetu.


1) MUI spínač

Možná sem vám trochu zamotal hlavu, tak přejděme ke spínači. Vytvoříme si navíc dvě proměnné - Integer1 a Integer2 a ostatním proměnným dáme Pole - Array.

Události
Unit začíná používat schopnost
Podmínky
Ability being cast = Freeze
Činnosti
Set Integer1 = Integer1 + 1
Set FreezeTarget[Integer1] = Target unit of ability being cast
Pozastaveno FreezeTarget[Integer1]
Wait 10 seconds
Set Integer2 = Integer2 + 1
Nepozastaveno Freeze target[Integer2]

Takže, na začátku jsme si Integer1 zvětšili a na začátku je samozřejmě 0. Takže Integer1 má teď hodnotu 1. Sešleme kouzlo na nepřátelského pěšáka a zmrazíme ho - ten pěšák je teď FreezeTarget[Integer1], vzhledem k tomu, že Integer1 je 1, je to FreezeTarget[1]. po chvíli přijde rytíř, tak schopnost použijeme znova. Integer1 se zvětší na 2 a rytíř označený jako FreezeTarget[Integer1] je vlastně FreezeTarget[2]. Pěšák je FreezeTarget[1], rytíř FreezeTarget[2]. Potom dojede to první wait. Integer2 se zvětší z 0 na 1 a rozmrazí to FreezeTarget[Integer2]. Integer2 má hodnotu 1,takže to rozmrazí FreezeTarget[1] a to je ten náš pěšák! Takže to sedí, na něj jsme kouzlo seslali jako na prvního a jako prvního ho to rozmrazilo. Potom dojede spínač podruhý, Integer2 se zvětší z 1 na 2 a rozmrazí to FreezeTarget[2] - a to je rytíř. A ještě jedna důležitá věc, 8192 je maximální hodnota v editoru, takže jakmile nějaký Integer dosáhne této hodnoty, hodíme ho spátky na nulu... A takto budeme moct schopnost používat kolikrát chceme. Takhle by to finálně vypadalo.


Události
Unit začíná používat schopnost
Podmínky
Ability being cast = Freeze
Činnosti
If Then Else
IF
Integer1 = 8192
Then
Set Integer1 = 0
Else
Do Nothing
Set Integer1 = Integer1 + 1
Set FreezeTarget[Integer1] = Target unit of ability being cast
Pozastaveno FreezeTarget[Integer1]
Wait 10 seconds
If Then Else
IF
Integer2 = 8192
Then
Set Integer2 = 0
Else
Do Nothing
Set Integer2 = Integer2 + 1
Nepozastaveno Freeze target[Integer2]


Ok nechápete? Ještě máte jednu šanci, přímo MUI triggeru totiž věnoval rednek jeden celý článěk, určitě se podívejte! Pokud chápete, tak skvěle, skvěle! Pro nejlepší pořádek, vyzkoušejte si nějaké ty MUI spelly.

1) Ancient Power

Zvýší hrdinovy sílu na dvojnásobek a to na dvacet vteřin. Celých dvacet vteřin mu nad hlavou svítí pěkný efekt. A to v MUI!

2) Lightning Bolt

Vystřelí na nepřátelskou jednotku blesk (ten blesk co spojuje dva body), zraní ji, a po dalších dvou vteřínách exploduje a zraní všechny nepřátelské jednotky kolem místa seslání. A to v MUI!

3) Fire Altair

Na určitém místě vytvoří ohnivou sopku, po dvou vteřinách se na místě objevý slabý přízrak, po pěti vteřinách se objeví silnější přízrak a sopka exploduje - zraní velké okolí. A to v MUI!


2) MUI v periodic eventu

Pokud MUI trigger chápete a už jste dokázali i nějaký z těchto příkladů, dostali jsme se do fáze; "co s těmi složitějšími spelly?" Ano, ty spelly, kde např. hýbáme efektem stokrát za vteřinu a kousek dál - pohyb. Nebo knockback - tam také hýbáme jednotkou a to ve směru, kterým byla "odkopnuta". Řekněme, že spínač bude vypadat takto.

1. Spínač
Události
Unit schopnost začíná účinkovat
Podmínky
Ability being cast = Lightning missile
Činnosti
Set TargetPoint = Target of ability being cast
Set CasterPosition = Position of casting unit
Vytvořit 1 Lightning Missile for neutrální pasivní at CasterPosition ...
Set Missile = last created unit
Turn on Spinac2
Wait 2 seconds
Turn off Spinac2
Kill Missile
Create special efect on TargetPoint using ...
Damage ...

2. Spínač
Události
Every 0.01 seconds
Podmínky
Činnosti
Move Missile to position of Missile offset (distance between CasterPosition and Target point/200) (Angle between CasterPosition and Target point)

Ale co když uprostřed smyčky někdo zacastí kouzlo jinde? Ten 1. spínač vyřeší normální MUI trigger, ale tu smyčku? Zdá se, že pro každý okamžik by měla být jedna proměnná pro Array (pole). Ale ne, dá se to vyřešit jinak! Tu činnost v periodic eventu dáme do "For each (Integer A), from x to x do multiple actions". A budeme loopovat z Integer2 do Integer1 tzn. "For each (Integer A), from Integer2 to Integer1 do multiple actions". Nejdřív, proč to neni obráceně? From Integer1 to Integer2? Integer2 se zvyšuje později, tzn., že bude menší. A přece nebudeme mít od většího k menšímu, to by to neloopovalo nic. Tak nejdřív vám to ukážu.

2. Spínač
Události
Every 0.01 seconds
Podmínky
Činnosti
For each (Integer A), from Integer2 to Integer1 do multiple actions
Move Missile[IntegerA] to position of Missile[IntegerA] offset (distance between CasterPosition[IntegerA] and TargetPoint[IntegerA]/200) (Angle between CasterPosition[IntegerA] and TargetPoint[IntegerA])


A teď vám to vysvětlím. Tento spínač pohne každou Missile[IntegerA]. A IntegerA je všechno mezi Integer1 a Integer2. To znamená pohne to každou Missile, která byla právě vytvořena a má s ní být pohnuto. Příklad: Z jedné strany na mě jde pěšák, tak castím Lightning Missile - Smyčka loopuje mezi Integer2, který má zatím hodnotu 0 a Integer2, ten už se jednou zvýšil, takže má hodnotu 1...Střela letí, ale mezitím si všimnu střelce, který na mě útočí z druhé strany. Hned castím další Lightning Missile. První střela ale ještě nedoletěla. Takže Integer1 se zvýší a smyčka loopuje mezi Integer2(0) a Integer1(2). Takže nejdřív pohne s Missile[1], to je ta kterou sem poslal na pěšáka a potom i s Missile[2], to je ta proti střelci. Obě tedy nezávisle letí. Konec už je součástí toho základního MUI triggeru, Integer2 se zvýší na jedna, zničí Missile[1], a zraní jednotky kolem TargetPoint[1]. Po chvilce dojede i druhý sesální - Intger2 se setne na 2 a zničí to Missile[2] a zraní kolem TargetPoint[2]...A to je celé! Takže už víme jak bude vypadat periodic event a ten základní spínač si dokážeme představit dohromady to bude vypadat takhle krásně:

1. Spínač
Události
Unit schopnost začíná účinkovat
Podmínky
Ability being cast = Lightning missile
Činnosti
Set Integer1 = Integer1 + 1
Set TargetPoint[Integer1] = Target of ability being cast
Set CasterPosition[Integer1] = Position of casting unit
Vytvořit 1 Lightning Missile for neutrální pasivní at CasterPosition ...
Set Missile[Integer1] = last created unit
Wait 2 seconds
Set Integer2 = Integer2 + 1
Kill Missile[Integer2]
Create special efect on TargetPoint[Integer2] using ...
Damage ...

2. Spínač
Události
Every 0.01 seconds
Podmínky
Činnosti
For each (Integer A), from Integer2 to Integer1 do multiple actions
Move Missile[IntegerA] to position of Missile[IntegerA] offset (distance between CasterPosition[IntegerA] and TargetPoint[IntegerA]/200) (Angle between CasterPosition[IntegerA] and TargetPoint[IntegerA])



Moc pěkné, a bude to pěkně fungovat... Až do té doby, než dojde Integer1 k hodnotě 8192! Potom k ní samozřejmě dojde i Integer2 a už to bude naprosto nefunkční. Setnout je hned na nulu, to by pěkně bugovalo, takže sem to vymyslel takhle:

(*poznámka - ta podmínka v periodic eventu možná trochu buguje, ale je to něco, co se dá přežít, kouzlo většinou necastíte 8192krát a mělo by to bugovat jen v oblasti kolem toho 8192ho seslání)

If Then Else
If
Integer1 Se rovná 8192
Then
Set Integer1 Se rovná (8192-Integer2)
Set Integer2 Se rovná 0
Else
Do nothing

Pokud jste pochopili, a to všechno, velmi gratuluji!
Mě to trvalo hodně dlouho...
A tady je to i s tou podmínkou, aby jste nebyli ochuzeni

1. Spínač
Události
Unit schopnost začíná účinkovat
Podmínky
Ability being cast = Lightning missile
Činnosti
If Then Else
If
Integer1 Se rovná 8192
Then
Set Integer1 Se rovná (8192-Integer2)
Set Integer2 Se rovná 0
Else
Do nothing
Set Integer1 = Integer1 + 1
Set TargetPoint[Integer1] = Target of ability being cast
Set CasterPosition[Integer1] = Position of casting unit
Vytvořit 1 Lightning Missile for neutrální pasivní at CasterPosition ...
Set Missile[Integer1] = last created unit
Wait 2 seconds
Set Integer2 = Integer2 + 1
Kill Missile[Integer2]
Create special efect on TargetPoint[Integer2] using ...
Damage ...

2. Spínač
Události
Every 0.01 seconds
Podmínky
Činnosti
For each (Integer A), from Integer2 to Integer1 do multiple actions
Move Missile[IntegerA] to position of Missile[IntegerA] offset (distance between CasterPosition[IntegerA] and TargetPoint[IntegerA]/200) (Angle between CasterPosition[IntegerA] and TargetPoint[IntegerA])


Abyste upevnili své přesvědčení a umění MUI, vytvořte toto kouzlo:

Arcane Upsurge

Odhodí nepřátelskou jednotku přičemž jí zraní za počet many castera. Na konci všechna energie exploduje a zraní nepřátelské jednotky kolem cíle.



MUI jsem se naučil podle již zmíněného návodu od redneka a to v periodic eventu mě naučil rednek též. Tímto mu děkuji za dlouhé a vyčerpávající vysvětlování. Děkuji i vám, pokud jste dočetli až sem, doufám, že jsem vás moc nezahrnul informacemi, ale určitě to časem vstřebáte a povede se vám udělat obstojné MUI kouzlo, např. podle příkladů.
Hodně štěstí.




Edit by : e1f
e1f@warcraft3.cz

Editor neručí a nezodpovídá za kvalitu překladu

Hodnocení
(počet hlasů: 6)
hrozné
výborné

Hodnotit mohou jen registrovaní uživatelé. > Zaregistrovat <




Nový komentář
Ariagil 4.12.2011 11:11:27
To je pravda...
Nějaký přidám, až se dostanu k WE :)

kafis 5.11.2011 17:41:13
prosba
Když už jsi tady dal ty "úkoly" nebo jak to nazvat, mohl bys postnout taky jejich řešení podle tebe? Ať to máme s čím porovnat. (třeba mě pořád ta síla nechces zmizet :D prostě se stackuje dokud nedojde na konstantu.

Ariagil 17.10.2011 18:39:39
To jsou důležitý informace.

NiGhTmArEz 10.10.2011 17:22:25
ariagil
spamujes si vlastni navod :D

Ariagil 22.8.2011 22:05:15
Samozřejmě tam ještě bude
Custom Script -
"call RemoveLocation( udg_TargetPoint[udg_Integer2] )", jinak by to leakovalo... jak svině.

Ariagil 20.3.2011 12:25:14
Pardon

Ariagil 20.3.2011 12:25:05
Překlep
Malá chybička
- "Z jedné strany na mě jde pěšák, tak castím Lightning Missile - Smyčka loopuje mezi Integer2, který má zatím hodnotu 0 a Integer2,"
Tam je dvakrát Integer2, určitě jste pochopili, že tam má být:
- "Z jedné strany na mě jde pěšák, tak castím Lightning Missile - Smyčka loopuje mezi Integer2, který má zatím hodnotu 0 a Integer1, ten už se jednou zvýšil, takže má hodnotu 1."

Ariagil 20.3.2011 11:56:17
Překlep
Malá chybička
- "Z jedné strany na mě jde pěšák, tak castím Lightning Missile - Smyčka loopuje mezi Integer2, který má zatím hodnotu 0 a Integer2,"
Tam je dvakrát Integer2, určitě jste pochopili, že tam má být:
- "Z jedné strany na mě jde pěšák, tak castím Lightning Missile - Smyčka loopuje mezi Integer2, který má zatím hodnotu 0 a Integer1, ten už se jednou zvýšil, takže má hodnotu 1."

Ariagil 13.3.2011 20:11:38
Nevadí, díky, zkusim ho najít.
No tak mi napiš jak si to udělal, možná tam bude chyba typu, že si dal aby to zraňovalo jenom nepřátele a ve Scénáři si tam nedal žádný atd.

Frezzy ILoVErca13.3.2011 20:08:02
Ariagil 's Emptyin
Jo takový program znám: Unregistered Hypercam 2.
Ale neví kde a jak ho sehnat, fakt sorry. :-(

Frezzy ILoVErca13.3.2011 20:05:34
Mně se to furt seká, a ty efekty mi tam zůstávají.
Co s tím:?? ?:-(

Ariagil 11.3.2011 20:12:42
Návod
Moc pěknej edit, čím dál hezčí, díky!
Příklad MUI v periodic eventu je tady http://warcraft3.cz/final_download.php?table=maps&sub=1692.

Rád bych dodal video s názornou ukázkou, sice z té samé mapy, ale přecejenom stačí kliknout a znázorním to, že je opravdu MUI, ale nemám přostředek na záznam obrazovky, nevíte někdo o takovym prográmku?

e1f w3cz9.3.2011 11:49:38
pokud autor dodá nějaké screeny či video ukázky, tak bych byl jménem čtenářů potěšen :)



Nový komentář:


Jen pro zaregistrované uživatele.

Jméno:
Heslo:
Zapamatovat
Nová registrace
Zapomili jste heslo?


Poslední poíspivky
Rat Race19.09. 22:49
Holda is sti...05.09. 18:16
patch 1.2903.09. 17:55
Holda is sti...21.08. 09:15
Cesta údolím...19.08. 17:29
Cesta údolím...19.08. 15:52
Rat Race16.08. 13:38
Rat Race16.08. 08:07
Rat Race13.08. 07:54
Rat Race11.08. 13:59


Streamy
back2warcraftOffline
CechiOffline
Compmaster[nXh]Offline
ESL_WC3Offline
LawLietOnline
n3GROffline
ReMinDOffline
TomikuSOffline
vOshOffline

Anno 1404



© Warcraft3.cz 2003-2017, všechna práva vyhrazena, ISSN 1214-892X
Názvy Warcraft, Reign of Chaos, The Frozen Throne a Battle.net jsou
registrovanými obchodními znaekami spoleenosti Activision Blizzard.