Mafia 2

World Editor ~ WE - Matika (Inte


Autor: Emental
Název: WE - Matika (Integer n)

Mapmakingu zdar!
Rozhodol som sa že aj ja prispejem svojou troškou do kopy a napíšem tutoriál do WE zameraný na základné počítanie a inú pracu s číslami



Kapitoly
I. Čo je integer? Čo je real?
II. Rozdiel medzi integer a real v praxi
III. Integer v praxi
IV. Real v praxi
V. Slovo o náhodnosti
WE - Matika (Integer 'n Real)

Mapmakingu zdar!
Rozhodol som sa že aj ja prispejem svojou troškou do kopy a napíšem tutoriál do WE zameraný na základné počítanie a inú pracu s číslami.

Čo budeme potrebovať?
- Znalosť palety World Editora
- Znalosť spínačov
- Znalosť premenných
- Znalosť základných matematických operátorov (+, -, *, /)

Kapitoly
I. Čo je integer? Čo je real?
II. Rozdiel medzi integer a real v praxi
III. Integer v praxi
IV. Real v praxi
V. Slovo o náhodnosti
VI. Úlohy
VII. Bye, Bye

I. Čo je integer? Čo je real?
Integer je akákolvek číselná hodnota avšak musí to byť množina celých čísel, to jest číslo bez deasatinnej čiarky, zlomku, a tak podobne.
Real je akákolvek reálna hodnota, v editore sa tým myslí číslo ktoré je zaokrúhlené na 3 desatinné miesta.

II. Rozdiel medzi integer a real v praxi
Spravíme trigger aby sa každe 2 sekundy na obrazovke vypísalo aktuálne zdravie tvojho hrdinu.
tak najprv to spravíme za pomoci Integer:

Events
Time - Every 2.00 seconds of game time
Conditions
Actions
Game - Display to (All players) the text: (String((Integer((Life of Paladin 0004 )))))

Trochu podrobnejsie popíšem pustup tvorenia akcie:
- Vyber akciu "Game - Text Massage (Auto-Timed)"
- Klikni na "text"
- Zadaj funkciu "Conversion - Convert Integer To String" to prekonvertuje Integer na normal text
- Klikni na modrý nápis a zadaj funkciu "Conversion - Convert Real To Integer" to prekonvertuje zas real na integer
- Klikni na modré, už máš predvolenú funciu "Unit - Property" tak už iba zmeň "triggering unit" na svojho hrdinu (môj hrdina sa volá Paladin 0004)
- Stlač ENTER :)

Ešte hoď vedla tvojho hera zopár nepriatelov a sleduj čo sa stane ;) Malo by to písať dačo takéto:

650
650
629
614
598

OK toto bol integer a teraz real.
Sprav druhý trigger:

Melee Initialization
Events
Time - Every 2.00 seconds of game time
Conditions
Actions
Game - Display to (All players) the text: (String((Life of Paladin 0004 )))

Zas trochu podrobnejsie popíšem pustup tvorenia akcie:
- Vyber akciu "Game - Text Massage (Auto-Timed)"
- Klikni na "text"
-klikni na modrý nápis a zadaj funkciu "Conversion - Convert Real To String" to

prekonvertuje zas real na string
(to jest normal text)
- Klikni na modrý nápis, už máš predvolenú funciu "Unit - Property" tak už iba zmeň "triggering unit" na svojho hrdinu
Teraz by to malo vypísať dačo takéto:

650
650.000
650
650.000
629
629.459
614
614.128
598
598.021

Vidíš rozdiel?
OK po pozornom prezretí tohto textu by ste už mali 100% vedieť aký je rozdiel medzi integer a real, integer je 650 a real je 650.000, integer je 598 a real je 598.024 etc.

III. Integer v praxi
Povedzme že robíme mapu ktorej cielom je poraziť len 3-och zo 4-och mocných bossov MUHAHA!
Hru vyhráš ak porazíš iba 3-och bossov. Povedzme že nastane takáto situácia: si v dungeone a zrasu sa ocitneš na "križovatke" máš na výber 4 chodby a na konci každej bude jeden z našich bossov a ty si môžeš vybrať ktorou chodbou chceš ísť...
Treba nactaviť, že ak zabiješ akýchkolvek troch bossov tak vyhráš.

No tak na začiatok hodíme na mapu našich 4-och bossov, ja som si za bossov vybral 4-och mountainkingov...
...a ešte samozrejme treba na mapu treba hodiť aj nášho hrdinu ktorý zlých bossov porazí :)
Princíp bude taký že keď zomrie jeden z bossov tak sa od hodnoty premennej Alive_Bosses odpočíta 1, keď sa Alive_Bosses bide rovnať 0 tak vyhráš (nič zložité)

Teraz vytvorte tú premennú typu integer a pomenujte ju napríklad Alive_Bosses.
Spravte trigger v ktorom sa premennej Alive_Bosses priradí hodnota počtu našich bossov teda 4.
Malo by to vyzerať asi takto:

Events
Map initialization
Conditions
Actions
Set Alive_Bosses = 4

Ok a teraz spravíte trigger a nastavíte ho tak aby keď zomrie jeden z bossov tak sa od hodnoty premennej Alive_Bosses odpočíta 1, bude tovyzerať asi takto:

Events
Unit - Mountain King 0001 Dies
Unit - Mountain King 0002 Dies
Unit - Mountain King 0003 Dies
Unit - Mountain King 0003 Dies
Conditions
Actions
Set Alive_Bosses = (Alive_Bosses - 1)

Teraz spravíme trigger nastavený tak aby keď zomrie akákolvek jadnotka a Alive_Bosses sa rovna nule tak player1 vyhrá.

Events
Unit - A unit Dies
Conditions
Alive_Bosses Equal to 0
Actions
Game - Victory Player 1 (Red) (Show dialogs, Show scores)

Teraz stlačíme Ctrl + F9 a kocháme sa výsledkom :)

IV. Real v praxi
Máme napríklad Gryphon Ridera... Nádherne si lieta v oblakoch... a tu zrazu narazí na bandu elfských Archeriek.
Ok prejdem teda rovno k veci: keď archerka strelí šíp do krídla Gryphona bude sa mu ťažšie lietať, takže nastavíme že výška lietania Gryphona je priamoúmerná s jeho zdravím.
Tak najprv placnite na mapu Gryphon Ridera a o 4-5 metrov dalej zopár Archeriek.
Náš trigger bude vyzerať asi takto:

Events
Unit - Gryphon Rider 0000 Is attacked
Conditions
Actions
Animation - Change Gryphon Rider 0000 flying height to ((Life of Gryphon Rider 0000 ) x ((Default flying height of Gryphon Rider 0000 ) / (Max life of Gryphon Rider 0000 ))) at 0.00

OK to sme použili menší vzorček, v preklade to znamená asi tot:
Ak je Gryphon napadnuty
Aktuálna výška letu Gryphona =
zdravie Gryphona * (pôvodná výška letu Gryphona / maximálne zdravie Gryphona)

V. Slovo o náhodnosti
Pojem náhodnosť je nám dúfam všetkým jasný.
pokúsime sa nasimulovať hod kockou, ak player1 splačí Esc tak sa vygeneruje náhodné číslo medzi 1 a 6,
vyzerá to asi takto:

Events
Player - Player 1 (Red) skips a cinematic sequence
Conditions
Actions
Game - Display to (All players) the text: (String((Random integer number between 1 and 6)))

Dobre to bolo jednoduché skúsime dačo zložitejšie. Dáme na mapu jedného footmana, knighta a riflemana. Keď stlačíme Esc tak jeden z nich zomrie ale aby to nebolo také jednoduché tak footman bude mať 10% šancu že zomrie, knight 20%, Rifleman 30% a šanca že nezomrie nikto bude 40%.


Fúuh! Môže sa to zdať ako záplava "kódom" ale je to jednoduchšie ako to vyzerá.
- Vytvorte celý červený rámček
- Dva krát skopírujte fialový
- Zmente hodnoty v skopírovaných akciách tak ako je to aj v modrom a oranžovom rámčeku.
- Otestuj mapu

VI. Úlohy
Prichystal som vám aj dáke úlohy aby ste sa mohli uistiť že integer a real naozaj dobre ovládate, vypracoval som aj riešenia ("Ale tie určite nebudete potrebovať. Že?").

-Úloha 1.
Zadanie: Ak ti zomrie hrdina ubudne ti 1/4 zlata
Riešenie:
Events
Unit - Paladin 0004 Dies
Conditions
Actions
Player - Set Player 1 (Red) Current gold to ((Player 1 (Red) Current gold) - ((Player 1 (Red) Current gold) / 4))

-Úloha 2.
Zadanie: Ak sa od seba príliš vzdialia dvaja footmani prisunie ich to bližšie k sebe
Riešenie:
Events
Time - Every 0.20 seconds of game time
Conditions
(Distance between (Position of Footman 0001 ) and (Position of Footman 0002 )) Greater than 512.00
Actions
Unit - Move Footman 0001 instantly to ((Position of Footman 0001 ) offset by 16.00 towards (Angle from (Position of Footman 0001 ) to (Position of Footman

0002 )) degrees), facing Default building facing degrees
Unit - Move Footman 0002 instantly to ((Position of Footman 0002 ) offset by 16.00 towards (Angle from (Position of Footman 0002 ) to (Position of Footman 0001 )) degrees), facing Default building facing degrees

-Úloha 3.
Zadanie: Každé 2 sekundy sa vypíše X-ová a Y-ová súradnica jednotky
Riešenie:
Events
Time - Every 2.00 seconds of game time
Conditions
Actions
Game - Display to (All players) the text: ((x + (String((X of (Position of Footman
0001 ))))) + ( y + (String((Y of (Position of Footman 0001 ))))))

-Úloha 4.
Zadanie: Za každú farmu ti každých 10 sekúnd príde 25 zlata
Riešenie:
Events
Time - Every 10.00 seconds of game time
Conditions
Actions
Player - Add ((Number of units in (Units owned by Player 1 (Red) of type Farm)) x 25)
to Player 1 (Red) Current gold

-Úloha 5.
Zadanie: Sprav aby X-ová súradnica kamery bola stále na X-ovej súradnici Footmana, to
isté sprav aj z Y-ovou ktorá bude na Y-ovej súradnici Riflemana.
Riešenie:
Untitled Trigger 001
Events
Time - Every 0.10 seconds of game time
Conditions
Actions
Camera - Pan camera for Player 1 (Red) to (Point((X of (Position of Footman 0001 )), (Y of (Position of Rifleman 0002 )))) over 0.25 seconds

-Úloha 6
Zadanie: Nasimuluj hod kockou, podobne ako v predchádzajúcej kapitole ale teraz sa bude
"hádzať" dvoma kockamitakže výsledná hodnota nesmie byť menšia ako 2
Riešenie:
Events
Player - Player 1 (Red) skips a cinematic sequence
Conditions
Actions
Game - Display to (All players) the text: (String((Random integer number between 2 and 12)))

VII. Bye, Bye
No tak to je odo mňa všetko, dúfam že už nebudete mať problémy z matematickými operáciamy vo WE (nejak machytilo používanie odborných termínov) :P

By Emental

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

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




hrac000 13.2.2011 18:33:50
Vážne výborný návod. 10/5. :)

Ariagil 22.5.2010 16:00:22
Skvělej návod! 5/5!!



Nový komentář:


Jen pro zaregistrované uživatele.

Jméno:
Heslo:
Zapamatovat
Nová registrace
Zapomněli jste heslo?


Poslední příspěvky
Novinky24.12. 18:11
Rat Race21.04. 13:53
Ikonky v př...20.04. 18:55
Rat Race20.04. 15:01
Rat Race09.04. 11:01
Hlášení chyb30.03. 14:05
Rat Race18.03. 10:44
Rat Race17.03. 16:07
Návrat Plam...14.03. 20:54
Rat Race12.03. 12:07


Streamy
back2warcraftN/A
CechiN/A
Compmaster[nXh]N/A
ESL_WC3N/A
LawLietN/A
n3GRN/A
ReMinDN/A
TomikuSN/A
vOshN/A

settlers7_120x600



© 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.