Hali!
Nos, arra gondoltam
, csinálok egypár új topicot, mondjuk az alábbi témakörökben: "Ki mit evett reggelire?", "A szőke nőket szereted jobban, avagy a barnákat?", esetleg "Szerinted Micimackó tényleg imádja a mézet?". Azután arra gondoltam
, hogy mégse
. Ezek túl komoly témák lennének a fórumhoz, tehát inkább a Heroes 4 szkriptelési rejtélyeibe mélyednénk el kissé
.
Az alábbiak nagy része a magyar nyelvű H4 Complete-hez kapott helpből valóak, csak épp kissé (:?:) átírtam némileg érthetőbb formába, meg az ottani... hmmm, maradjunk annyiban, hogy némi kívánnivalót hagyó példákat dolgoztam át olyanra, hogy működjenek is
.
*** H4 SZKRIPTELÉS ***
1.) Mi a franc az a szkript?
A szkript nem más, mint egy általunk írt miniprogram, amivel bizonyos dolgokat létre lehet hozni / be lehet állítani, stb... (Az eredeti szöveg szerint: a térkép-szerkesztő szkriptrendszere lehetővé teszi, hogy események létrehozásával gazdagíthasd a kiválasztott pálya játékmenetét. A szkriptelt eseményekkel állíthatod be a győzelmi és vesztési feltételeket, megváltoztathatod a kaland objektumok tulajdonosát, adományozhatsz vagy éppen elvehetsz nyersanyagot a játékostól, kiírathatsz egy szöveget, és még sok egyebet megvalósíthatsz vele.)
A H4-ben fellelhető komplex rendszernél egyszerűbb, beépített szkriptek vannak a H3-ban is, mint pl. az egyszerű kék event golyó, amire rálépve általában egy üzenetet kapott a játékos és/vagy szörnyek estek a nyakába, esetleg valamilyen rejtett jutalom (varázstárgy, nyersanyag, morálnövekedés, varázslat, stb...) ütötte a markát. De ilyen szkriptek a hutokba beépített lehetőségek tömege, amikor meghatározhatjuk, hogy az adott hut milyen típusú küldetést adjon (pl. hozd el ezt és ezt), vagy az adott hős milyen feltételeknek feleljen meg (pl. attack minimum 10), és mindezért milyen jutalmat kapjon; illetve ilyen szkriptek voltak a globálisan beállítható időhöz kötött események (Timed Events, ami ugye egy szöveget írt ki és/vagy nyersanyagot adományozott / vett el), és a várakban beállítható, időhöz kötött események is (amik az előzőeken túl épületeket tudtak felépíteni az adott várban, illetve a lénytoborzó helyek egyedszámát növelték meg).
Sajnos a H4-ben nem állnak rendelkezésünkre ezek az előre beépített, egyszerűbb lehetőségek, ott mindent nekünk kell részletesen beállítanunk, minden egyes utasítást nekünk kell megadnunk (még egy egyszerű szövegkiíratáshoz is általában külön parancs kell), de cserébe szinte korlátlan szabadságot kapunk. Mondjuk szvsz szerencsésebb lett volna meghagyni a H3 szkript-lehetőségeit IS, hogy az alap dolgokat sokkal egyszerűbben tudjuk megvalósítani, és ezek MELLÉ betenni az egész szabadon szkriptelhető rendszert; de hát nem így történt. Talán majd a H5-ben
. Mindenesetre nagyon nem kell tőle megijedni, ez azért nem olyan bonyolult, mint a WoW, bár kétségtelen, hogy amiket ott meg lehet valósítani (tetszőleges lények toborozhatóak egy adott várban; rózsaszín, 20.000 Hp-vel rendelkező titán, és társai; a játék egyes elemeinek teljes átalakítása), azok nem állnak mind a rendelkezésünkre.
2.) A szkriptek fajtái
A pálya szkriptjeinek egy jó részét, fajták szerint csoportosítva a pályaszerkesztő
Hadjárat / Térkép tulajdonságai / Események menüben találhatjuk / hozhatjuk létre. Négy fő csoportja van:
2.1. Időhöz kötött események: Ezek olyan események, amik egy bizonyos napon váltódnak ki. Nagyon hasonlít a H3 Timed Events menüpontjában megadhatókhoz, csak éppen H4-ben ez akármi lehet.
2.2. Előhozható események: Ezeket az eseményeket egy másik szkriptelt esemény váltja ki. Tulajdonképpen ide kell benyomni minden olyan eseményt, ami a másik 3 csoportba nem fér már bele, illetve azt, amit a kiváltó objektum szkriptjei közé nem tudunk valami miatt beépíteni.
2.3. Folyamatos események: Ezek olyan események, amik egy bizonyos játékakció vagy esemény (például egy város bevétele, egy küldetés teljesítése stb.) vált ki. A szkript folyamatosan figyeli a játékot, és akkor aktivizálódik, amikor a beállított feltétel teljesül (pl. játékos elfoglalja az adott várost, stb...).
2.4. Helyhez kötött események: Ezek akkor aktiválódnak, amikor a játékos serege elhalad a térkép egy bizonyos pontjára lehelyezett "Esemény" kalandobjektum felett. (A jó öreg H3 event golyója kissé felturbózott módon
.
3.) Következzék az összes lehetséges szkript-típus!
Természetesen az alábbiak közül nem mindegyiket lehet előhívni az egyes szkriptelt objektumoknál (pl. egy egységhez rendelt szkriptek között hiába is keressük az épület építése választható eseményt
. Részletezés, példák majd a következő fejezetekben!
Épület építése: Városhoz rendelhető, felépíti a beállított épülete(ke)t. Volt ilyen funkció a H3-ban is, csak ott időhöz lehetett csupán kötni, itt viszont bármi kiválthatja ezt az eseményt.
Egyedszám növelése / csökkentése: Megnöveli / lecsökkenti a toborozható lények számát a kérdéses lakóhelyen (növelni H3-ban is lehetett, de itt szörnyfészekhez is hozzárendelhetjük).
Tulajdonos váltás: Az objektum új tulajdonosa a megadott játékos lesz. Az objektum lehet egy város / bánya / szörnylakóhely, de lehet akár egy pályára lehelyezett sereg / szörny / hős is. Az adott objektum egyszerűen egy másik játékos irányítása alá kerül (azaz más lesz a színe). Az eredeti tulajdonos lehet maga a játékos, lehet egy computer irányította játékos, de lehet semleges is. A nagy különbség az, hogy amíg a H3-ban a hősnek oda kellett kutyagolnia a "csatlakozó"-ra beállított sereghez, és harcot kezdeményeznie vele, addig itt az objektum bárhol lehet a pályán, és a kiváltó ok is bármi lehet (pl. a felső szinten egy hut teljesítéséért az alsó szinten 6 fekete sárkány a mienk lesz).
Kaland objektum törlése: Eltávolít (felrobbant) egy bizonyos objektumot a térképről (pl. az eddig útban lévő falszakaszt). Az ehhez a szkripthez rendelt "Bomba" kalandobjektum(ok) jelzi(k), mely objektumo(ka)t távolítjuk el. Az egyik leggyakoribb szkript.
Vereség feltétel leírásának törlése: Törli a pálya Vereségfeltétel szövegét egy adott játékos számára.
Vereség szövegének törlése: Törli azt a szöveget, amit a játékos vereség esetén kap.
Vereség feltételének szövege: Egy pálya vereség feltételéhez beírhatunk egy szöveget.
Vereség üzenet: Lehetővé teszi, hogy megadjuk a vereség esetén kiírt szöveget.
Győzelmi feltétel leírásának törlése: Törli a pálya Győzelmi feltétel szövegét.
Győzelmi üzenet törlése: Törli azt a szöveget, amit a játékos győzelem esetén kap.
Győzelem feltételének szövege: Egy pálya győzelem feltételéhez beírhatunk egy szöveget.
Győzelmi üzenet: Lehetővé teszi, hogy megadjuk a győzelem esetén kiírt szöveget. (A fenti csoport jól használható például ahhoz, hogy mondjuk a kezdeti győzelmi feltételnek megadott város elfoglalása után kiiratjuk, hogy "Jaj bocsi, még ezt a várost is el kéne foglalnod", és az újabb város lesz az új győzelmi feltétel.)
Általános győzelmi feltétel kikapcsolása: Egy bizonyos játékos számára kikapcsolja a normál győzelmi feltételt (tehát csak a speciális feltétel teljesítésével nyerhet, úgy, hogy mindenkit legyalul a pályáról, nem).
Általános győzelmi feltétel bekapcsolása: Lehetővé teszi egy kiválasztott játékos számára, hogy a normál győzelmi feltételek mellett játsszon.
Csata: Létrehoz egy sereget, ami rögtön harcba bocsátkozik a megjelölt játékos seregével, azaz megegyezik azzal, mikor a H3-ban az eventből, vagy artifactból előugrottak az azt őrző lények.
Feltételhez kötött utasítás: Létrehoz egy feltételt tartalmazó szkriptet. Pl.: "Ha a játékosé ez a város, adjunk neki 10.000 aranyat."
Támadás növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hős támadóértékét véglegesen, vagy a következő csata elejéig (H3-ban a plusz attack skill).
Maximális Életpontok növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hős életpontjait egy bizonyos mennyiséggel véglegesen, vagy csak egy adott csatára.
Maximális Varázspontok növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hős maximális varázspontjainak számát (kicsit hasonlít, amikor H3-ban a Knowledge növekedett).
Aktuális Varázspontok növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hős aktuális varázspontjait egy bizonyos mennyiséggel (ilyen is volt a H3-ban).
Morál növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hadsereg morálját egy bizonyos mennyiséggel. (+- Morale)
Szerencse növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hadsereg szerencséjét egy bizonyos mennyiséggel. (+- Luck)
Gyorsaság növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hős gyorsaság karakterisztikáját (azaz a csatamezőn való mozgási sebességét) egy bizonyos mennyiséggel.
Aktuális mozgásképesség növelése / csökkentése: Megnöveli / lecsökkenti a kérdéses hadsereg mozgáspontjainak számát (H3: mozgásnövelő csizma hatása pl.).
Képernyő üzenet: Kiír egy szöveget a játékos számára (ki hitte volna?
)
Varázstárgy adományozása / elvétele: Egy vagy több varázstárgyat kap a kérdéses sereg / ill. vesz el a kérdéses seregtől.
Teremtmény adományozása / elvétele: Egy bizonyos számú teremtményt adományoz az adott hadseregnek / ill. vesz el az adott hadseregtől (H3 csatlakozó lényei).
Nyersanyag adományozása / elvétele: Egy bizonyos mennyiségű nyersanyagot adományoz az adott hadseregnek / ill. vesz el az adott seregtől. (Resource)
Képzettség adományozása: Egy kiválasztott másodlagos képzettséget (pl. Idézés) adományoz az adott hősnek.
Képzettség növelése: Megnöveli a kérdéses hős egyik létező képzettségének szintjét (pl. megnöveli az Idézést Expert fokozatra).
Varázslat adományozása: Egy kiválasztott varázslatot adományoz az adott hősnek (már ha meg tudja tanulni egyébként, azaz teljesíti a varázslat megtanulásához szükséges előfeltételeket).
Tapasztalat növelése: XP!
Tapasztalati szint növelése: Megnöveli a kérdéses hős szintjét egy konkrét értékkel (szintlépés).
Üres szkript: Nem hajt végre semmit (általában akkor használatos, ha egy elágazó szkriptet írunk, aminek az egyik ágán történik valami, a másik ágán meg minden marad úgy, ahogy volt).
Győzelem: Ennek hatására egy bizonyos játékos azonnal megnyeri a játékot (a speciális győzelmi feltételek teljesüléséhez érdemes hozzárendelni).
Vereség: Ennek hatására egy bizonyos játékos azonnal elveszíti a játékot (például ha meghal egy adott hőse, szintén folyamatos eseményhez érdemes rendelni).
Feltett kérdés: Lehetővé teszi, hogy egy eldöntendő (igen/nem) kérdést tehess fel, és szkriptet rendelj minden egyes válaszhoz (azaz ha igen: akkor ez történik, ha nem: akkor meg amaz).
Szkript eltávolítása: Eltávolítja a megjelölt szkript eseményt, hogy még egyszer ne hajtódjon végre (pl. a sok egyforma letett event golyó egyikébe lépés, aktiválódás után az összes többit törli).
Művelet sor: Segítségével szkriptek sorozatát hozhatjuk létre, melyek a megadott sorrend szerint fognak végrehajtódni. Ez a leggyakrabban használt alap szkript!
Logikai változó: Létrehozhatunk egy Igaz/Hamis változót (pl. az adott hős zöld játékos-e, vagy nem).
Numerikus változó: Segítségével létrehozhatunk egy változót, mellyel nyomon követhetünk, számolhatunk egy bizonyos akciót (például egy hadsereg hányszor haladt át egy fontos csomóponton, illetve simán megadhatunk egy tetszőleges változót, pl. Boszorkányhalál= 1).
Esemény kiváltása: Lehetővé teszi, hogy aktiválj egy korábban létrehozott (előhozható) eseményt.
4.) Logikai kifejezések:
Beállítottság: Leellenőrzi, hogy a kérdéses hadsereg egy bizonyos beállítottság követője-e (azaz pl. a sereg Élet, vagy Rend sereg-e).
A játékos bizonyos beállítottságú: Megnézi, hogy a kérdéses játékos egy bizonyos beállítottságot követ-e (azaz kezdetben pl. az Életet választotta-e), maga a sereg milyensége lényegtelen.
Bizonyos hős: Leellenőrzi, hogy a kérdéses hős egy bizonyos seregben van-e.
A játékosnál van-e egy bizonyos hős: Leellenőrzi, hogy a kérdéses játékosnál van-e egy bizonyos hős (tehát nem az adott seregben, hanem csak úgy, globálisan, a játékosnál).
Bizonyos hős halott: Megnézi, hogy a kérdéses hős meghalt-e (tehát nem börtönbe került, hanem épp hulla).
Bizonyos hős börtönben van: Leellenőrzi, hogy a nevezett hős börtönben raboskodik-e (azaz már legyőzték csatában).
A játékos bizonyos színű: Megnézi, a kérdéses játékos a megadott színű-e.
A játékos a számítógép: Megnézi, hogy a kérdéses játékost a számítógép játssza-e.
A játékos kiesett: Leellenőrzi, hogy a kérdéses játékos teljesen le lett-e győzve (nincs a pályán egysége, vára, hőse).
A játékos nem a számítógép: Megnézi, hogy a kérdéses játékost nem a számítógép játssza-e.
A játékos bizonyos város tulajdonosa: Leellenőrzi, hogy a játékos birtokában van-e egy megnevezett város.
Adott varázstárgyat birtokol-e: Megnézi, hogy egy hadsereg birtokában van-e egy bizonyos varázstárgy.
Adható-e képzettség: Leellenőrzi, hogy a kérdéses hős vagy hősök kaphatnak-e bizonyos képzettségeket.
Igaz (TRUE): Leellenőrzi, hogy egy feltétel igaz-e.
Hamis (FALSE): Leellenőrzi, hogy egy feltétel hamis-e.
Nagyobb, mint: Leellenőrzi, hogy egy feltétel nagyobb-e a másiknál (pl. a hősnél lévő fekete sárkányok száma nagyobb-e 9000-nél
).
Nagyobb vagy egyenlő: Leellenőrzi, hogy egy kifejezés nagyobb, vagy egyenlő-e a másiknál (pl. az adott játékos aranymennyisége nagyobb v. egyenlő 10.000-nél).
Kisebb, mint: Leellenőrzi, hogy a kifejezés kisebb-e, mint a másik.
Kisebb vagy egyenlő: Leellenőrzi, hogy a kifejezés kisebb, vagy egyenlő-e, mint a másik.
Egyenlő: Leellenőrzi, hogy két kifejezés egyenlő-e egymással (pl. amennyiben az eltelt napok száma EGYENLŐ 60-nal...).
Nem: Lehetővé teszi, hogy egy bizonyos változót negáljunk, így egy bizonyos kivételével az összes feltételt ellenőrizhessük. (Pl.: itt mindenki átmehet, aki NEM zöld játékos serege.)
ÉS: Segítségével feltételek láncolatai hozhatók létre egyetlen eseményhez (pl. adott sereg zöld ÉS a seregben van a Bubu nevű hős).
Vagy: Lehetővé teszi, hogy egy opcionális feltételt is beillesszünk, ahol kettő közül az egyik Igaz lehet, de nem feltétlenül mindkettő (pl. itt mindenki átmehet, ha zöld VAGY narancssárga).
Változó neve: Ezzel beállíthatod a változó nevét.
5.) Numerikus kifejezés típusok:
Aktuális nap: Megmondja, hogy a játék legelejétől számítva hányadik napot írjuk.
Aktuális nap a héten: Megmondja, hogy a hét elejétől számítva a hét melyik napját írjuk (pl. ha egy esemény csak keddenként történhet meg, akkor a hét 2. napján lehet csak aktivizálni).
Aktuális hét: Megmondja, hogy a játék elejétől számítva hányadik hetet írjuk.
Aktuális hét a hónapban: Megmondja, hogy a hónap elejétől számítva melyik hetet írjuk.
Aktuális hónap: Megmondja, hogy a játék elejétől számítva hányadik hónapot írjuk.
Tapasztalati szint: A hadseregben tartózkodó hős, hősök szintjét adja vissza.
Képzettség szint: A hadseregben tartózkodó hős, hősök kérdéses képzettségének szintjét adja vissza.
Szám: Egy megadott számot jelöl (pl. az aranymennyiség értéke, azaz száma 5000).
Nyersanyag mennyiség: Megadja egy birtokunkban lévő bizonyos nyersanyag mennyiségét (ehhez kell pl. az előbbi számot beállítani).
Összeadás: Lehetővé teszi, hogy két kifejezést összeadjunk.
Kivonás: Lehetővé teszi, hogy két kifejezést kivonjunk egymásból.
Szorzás: Lehetővé teszi, hogy két kifejezést összeszorozzunk.
Osztás: Lehetővé teszi, hogy két kifejezést elosszunk egymással.
Negálás: Általa negatívvá tehetünk egy kifejezést.
Játékos ID: Visszaad egy bizonyos játékost az előre beállított azonosítója alapján (pl. Főboszorkány1).
Véletlen szám: Kidob egy véletlen számot a minimum és maximum érték megadása alapján (azaz mondjuk egy 1-6-ig terjedő számot, vagy ha százalékos valószínűséget akarunk, 1-100-ig terjedőt, stb...).
Maradék: Megadja azt a számot, amely egy kifejezés osztása után marad.
A seregben lévő lények száma: Visszaadja egy hadseregben előforduló bizonyos teremtmények számát (pl. ennyi titán van benne).
Összes lény a seregben: Megadja, hogy a seregedben hány teremtmény található összesen, minden típust ideértve.
Összes hős a seregben: Megadja, hogy a seregedben hány hős harcol.
Változó neve: Ezzel beállíthatod a változó nevét.
No, ez eddig kicsit (?) talán száraz volt, de a következőkben már konkrét szkripteket fogunk gyártani!