Spawn át a forgatókönyvet - létrehozását a mod - módosítás - s

A script egyetlen egyedi funkcióval, amely felelős az ívási tárgyak:
Alife (): létrehozása (szakasz, összesen, levelvertex, gamevertex)

Az első lehetőség - szakasz konfigurációk tárgy leírását, például „csavar”, „med_kit” - egy egyszerű rész, egyszerű tárgyak és vannak olyan tárgyak, amelyek mozognak az online / offline, akkor az NPC-k, szörnyek, és így tovább, például mil_killer_respawn_2 - elindítja a mesterlövész csoportok gyilkosok.

A szám úgy gondolja, nem kell magyarázni, vannak egyetlen megkötés - ez a magasság Y és Z. nem lehetséges, hogy meghatározza a helyzetét egy ilyen konstrukció vektor (): set (x, y, z), ahol x, y és z - koordináta pontjában amely elindítja a tárgyat.

Nehezebb, mert tényleg nem lehet kifejezni.

Kezdjük az egyszerűtől a bonyolult. Minden szinten, sok tárgy, minden tárgy állnak sokszög, minden sokszög csúcsai - csúcsot.

Hogy itt vannak, hogy jelezze, hogy miért - nem különösebben értem, valószínűleg a pontos helymeghatározás a tárgyat. Például, lehet kapni a vertex legközelebb a színész - db.actor:level_vertex ()

Következő van egy sokkal érdekesebb lehetőség game_vertex, ez szinte ugyanaz, mint a level_vertex, de (!) Van egy globális méretű! Ha level_vertex figyelembe szinten game_vertex - az egész játék, és szüksége volt, hogy pont olyan térkép tárgy spawn (érthetőbb magyarázatot találtam).

Ennek megfelelően a zaspavnen valamit egy másik térképet, elegendő game_vertex a negyedik paramétert, például:
db.actor:game_vertex ()

Így például, hogy zaspavnen csavar lába alatt a színész, az írás:
Alife (): létrehozni ( "csavar", db.actor (): pozíció (), 1, db.actor: game_vertex ())

1. Miért helyett level_vertex? Kockás - nincs külön különbség, hogy mi level_vertex, bár egyes esetekben szükséges előírni a vertex érvényes, és hogy az alany egyszerűen zaspavnen nem a várt helyen. De a legtöbb esetben minden jól megy és az egység. (Figyelmen kívül hagyva level_vertex vezethet átszakadt gyártott tárgyak / karakterek a földbe.) De game_vertex mindent - azt jelzi, hogy milyen szinten kapsz tárgyat, ezért meg kell határozni. Elméletileg, akkor egyszerűen megtalálja minden szinten egy game_vertex'u és használja őket a szkripteket. Valójában game_vertex mutatja a töredéke a használt térkép (a teljes térképet van osztva darabokra folyamatos számozással minden szinten, és kiválasztja a megfelelő game_vertex) rendre való visszaélés cherevato.

Szintén - van egy másik lehetőség - azonosítója, ha adja meg azonosítóját NPC vagy színész - zaspavnen egy tárgyat a leltár.

Példa (spawn műtermék Medusa leltár színész):
Alife (): létrehozni ( "af_medusa", db.actor (): pozíció (), 1, db.actor:game_vertex (), db.actor:id ())

spawn függvény a szerver objektum, vagyis sem az NPC vagy szörny, vagy bármi más.

Server objektum lehetővé frissen létrehozott egy NPC vagy cache zatarilis különböző rulezy / leletek. Például ilyen módon jön létre a bejárat Sidorovich dolgovtsev és piszkálni egy csomag patron:
helyi obj
helyi a = vektor () - meghatározza azokat a változó
helyi dir = db.actor:direction ()

a.x = -243,61 - X koordináta
a.y = -19,52 - magasság Y
a.z = -127,17 - Z koordináta

obj = Alife (): létrehozni ( "bar_dolg_respawn_3", a, 13193,8,65535)
alife (): create_ammo ( "ammo_9x18_fmj"
obj.position,
obj.m_level_vertex_id,
obj.m_game_vertex_id,
obj.id,
20) - a száma patronok

Csak a legszükségesebb - helyét, az ID szakaszig, és ez (szerver objektum) általában csak azonosító, mert az azonosító lehet beszerezni ezt ugyanazon a szerveren objektum:
(Alife (): tárgy (id))

Ezt fel lehet használni, hogy egy címke, például, de én személy használhatja fel más célra - ivadéka összetett objektumok, különösen - az NPC.

Például meg kell oldani a következő probléma - meg kell hozzon létre egy zsoldos csoport a helyére, és módosítsa a leltározás, valamint a rakomány - tette minden játékos.

Egy bizonyos ponton zaspavneny tárgy megy az interneten, abban a pillanatban is okozott visszahívás - net_spawn.

Mit csináljunk? Ellenőrzi az ID a tárgy a mentett online azonosítóját!

Ha egyezik, mint ez:
ha OBJ: id () == saved_id majd.

Ami fontos, hogy a szerver objektum ID - ezt az opciót, és az online azonosító az objektum kapott a funkciót. Ez azért fontos, mert éget.

Tehát, mi fogott a gyilkos az azonosítót.

Továbbá, minden nagyon egyszerű - hívja fel a parancsot kapsz gauss és lőszerek az NPC leltár (lásd fent.) Módosítása csoportosítását speciális funkció, és ez más.

Miért olyan nehéz? Csak offline NPC, mivel nem létezik, csak közvetett utalás, és plusz, mindezen funkciók dolgozni egy objektum típusú „NPC”, és nem a szerver tárgyakat.
Practice (1. rész)

1. ismétlések elkerülése leírásában egy új küldetés, a Tanulmány létrehozásáról szóló küldetések Fr3nzy - a legjobb cikkek ebben a témában, csak még nem láttam :) Egyszerűen kösse össze az egészet, és megtanulják, hogy kapsz tárgyakat a forgatókönyvet.

Miért előnyös, hogy nem ívik script keresztül, hanem az azonos xrSpawner? xrSpawner program minden erényeit, van egy hátránya - azaz ez kapsz keresztül all.spawn fájlt, ami:
Lehetetlen, hogy összekapcsolják a két divat ilyen spawn segítségével
Meg kell minden egyes alkalommal, hogy egy új játék

Ha kapsz egy script a helyzet más: a legtöbb esetben a korábban mentett játékokat fog működni, ez jó hír :)

Tehát határozza meg a küldetést.

Probléma: miután beszélt Sidorovich ívik zombik a gyár az első helyen. Annak érdekében, hogy ne sértse meg az eredeti telek a játék, a feladat kerül kiadásra, miután a folyosón a küldetés a botot gyorsan, mint voltak ugyanabban az időben van egy zombi gengszterek és gyors. Azt hiszem, az eredmény a csata előre eldöntött ügy :)

Megvalósítás: Megpróbálom leírni az összes intézkedés a lehető legrészletesebben, szó szerint lépésről lépésre. Először indul a játék :)

A konzolon adja ki a következő parancsot:
rs_stats vagy rs_stats 1

Így viszont a kijelzőn megjelenő információkat a képernyőn. Ezután adja másik parancs:
demo_record 1

És a „repülni” a gyári. Meg kell választani egy helyet kapsz tárgyakat és ez az üzemmód kiválóan alkalmas a megvalósításra. Azt hogy a leendő kamra szaporodásához és írási koordináták - fordultam 115, -6, -16.

A kilépéshez nyomja meg az Esc demo_record, a konzol írási rs_stats ki vagy rs_stats 0 (eltávolítás kimenet információ).

Egy másik módja, hogy ugyanazt az információt -, hogy jöjjön a megfelelő helyre, és futtassa a szkript, amely megadja az összes szükséges koordinátákat. Én a következő script (hívja a szokásos módon keresztül main_menu):
funkció main_menu: main_cheat_f3 ()
-- Mi fog kiadni üzenetet a helyét
helyi szöveget
helyi vid
helyi gvid
helyi a = vektor () - Változó típusa
helyi szöveget

Egy ötödik modell szerint.

Ehhez hozzon létre egy fájlt a végén a következő részt:
[Zombie_ghost]: zombie_strong

Ez azt jelenti, hogy az ötödik zombi örökli az összes paramétert zombie_strong, akkor adjunk hozzá egy vizuális ábrázolás.

Írás:
$ Spawn = "szörnyek \ zombik \ zombie_ghost"
vizuális = szörnyek \ zombi \ zombi_1_ghost

Minden. A módosítások mentéséhez és zárja be a fájlt.

2. Az írás egy script spawn. A gamedata mappában hozzon létre egy új mappát szkripteket, hogy hozzon létre egy új szöveges dokumentumot, és nevezd el esc_zombie.script.

Így nyit az üres fájlt szerkesztésre, az első sor deklarálja a változó, amely tárolja a zombik:
helyi zombie_types =

Ezután levelet funkció:
funkció spawn_zombies (pozíció, összesen)
helyi zombie_index - zombi típusú tömb zombie_types
helyi new_pos, x_offset, z_offset - állapítsa változók
A zombie_index = 1, összesen do - fordulunk a ciklus annyiszor, ahányszor
beállítja a változó teljes
x_offset = Math.random (5) - random (véletlenszerűen) x 1-től 5
z_offset = Math.random (5) - random (véletlenszerűen) z 1-től 5
new_pos = helyzet - át a koordinátákat a funkció
new_pos.x = new_pos.x + x_offset - adunk a megadott kapcsolati
x koordinátája véletlenszerűen fent kapott X
new_pos.z = new_pos.z + z_offset - adunk a megadott kapcsolati
Z koordináta fent kapott véletlenszerűen z
-- Az alábbiakban, sőt, és a funkció az úgynevezett ivadékai véletlenszerű típusú zombik
zombie_types [Math.random (5)] kapcsolódik a koordinátákat
Alife (): létrehozása (zombie_types [Math.random (5)], new_pos, db.actor: level_vertex_id (), db.actor:game_vertex_id ())
vég
vég

És végül:
funkció zomby_story_1 (színész, NPC)
-- Tíz zombik a gyárban (Cordon)
helyi spawn_point = vektor (): set (115, -6, -16) - itt jelzik koordinátákat,
kiválasztott minket, hogy kapsz, amikor a „repülő” kamera :)
spawn_zombies (spawn_point, 10) - valóban hívja az előző funkciót
az átviteli koordinálja és az objektumok száma
vég

Minden. Mentse és zárja be a fájlt.

Annak érdekében, hogy a játék nem omlik össze, amikor mi adunk egy új típusú szörny, meg kell adni a xr_statistic.script fájlt. Tehát, másolja a fájlt a mappából a játék szkripteket mi mappát esc_zombie.script fájlt, és nyissa meg szerkesztésre.

Add a helyi killCountProps szörnyeket sor:
zombie_weak = 1, zombie_normal = 2, zombie_str 3

A helyi sect_alias sor:
zombie_weak = "zombie_weak", zombie_normal = "zombie_normal", zombie_str "zombie_strong"

És később monster_classes sor:
[Clsid.zombie_s] = "zombi"

A funkció getNpcType (NPC) hozzá struktúra:
elseif NPC: character_community () == "zombi", majd
közösség = „zombi”

A módosítások mentéséhez és zárja be a fájlt.

Minden együtt fog működni a lelkesedés, ahogy igyekszünk nem keresni a megölt zombik. Amint ezt tesszük, a játék összeomolhat a hibát.
Kifejezés. végzetes hiba
Funkciót. CInifile :: r_string
Fájlt. D: \ röntgenkép-svn \ xrCore \ Xr_ini.cpp
Line. 351
Leírás:
Érveket. Nem találja a változó ikonra [zombie_weak]

Visszatérve m_zombie.ltx fájlt, és a [m_zombie_e]: monster_base paraméter beírását
icon = ui_npc_monster_kontroler

Minden. Indulás nem.

3. A téma ez a cikk nem tartalmaz részletes leírást, hogyan lehet egy új párbeszéd. A cikk elején már említettem a forrást, ahol megtalálható átfogó tájékoztatást a párbeszéd kialakítása, én is idézni példáját egy cikket, hogy hozzon létre egy párbeszéd BAC9-FLCL.

Csak meg kell tesztelni a funkcionalitás a script ívik, úgyhogy most tényleg megváltoztatta a párbeszéd dialogs_escape.xml file:

escape_trader_talk_info_999
7770
9991
9992
9993
9994
9995
9996


escape_trader_talk_info_99922
9996
9995


escape_trader_talk_info_3121
9996
9995


escape_trader_talk_info_3131
9996
9995


escape_trader_talk_info_41
9996
9995


escape_trader_talk_info_7779
9996
9995


escape_trader_talk_info_7777
esc_zombie.zombie_story_1
9996
9995

escape_trader_talk_info_51
9996
9995


És azt is társult stable_dialogs_escape.xml fájlt. A fájl elején, írja be a következő:

Nem volt baleset?


Igen, tudja. Olyan, mint a csendben mindannyian. Bár itt, emlékszem! mondd
a minap, hogy a gyárban, uh, ahol bandyuki lógni minden alkalommal, látott valamit kakiih e
emberek, vagy a szellemek. Akkor még nem úgy tűnt, részeg - Azt mondta, hogy ez vészjósló, mondván,
táplálékra is! Heh, a fenébe, alkoholisták.


Szóval trapp bármely korábbi gyár - ugyanabban az időben és nézzük meg ezeket
„Az emberek-szellemek.”


Igen, valahogy nem megy a rossz irányba.


Nos, nézd meg magad, akkor is legyen óvatos.


Igen. Menj, szellőztetni. Akkor gyere, mondd el, mi van ott, és hogyan.


Itt a folyosón vospreschon STALKER.


Minden. Meg lehet futtatni a játékot, menj a Cordon után razgovoroa a Sidorovich függően Jelzett megoldások, mi fut a gyár és nézd meg magad ... :)
Ready példa fájlok
spawn Lib

Házi feladat - vissza a játék második típusú civil zombik :)

Folytatása következik ...
Practice (2. rész)

modell fájlt szerkesztése előtt

modell fájlt szerkesztése után

5. Most írják az új zombik az összes fájlt, amit korábban létrehozott. A m_zombie.ltx fájl végéhez hozzáadja a rész:
[Zombie_old]: zombie_normal
$ Spawn = "szörnyek \ zombik \ zombie_old"
vizuális = szörnyek \ zombi \ zombi_3

A esc_zombie.script fájlt módosítja a tömbben az első sorban:
helyi zombie_types = "zombie_old", "zombie_ghost">

A funkció spawn_zombies megváltoztatni a spawn sorban:
Alife (): létrehozása (zombie_types [Math.random (6)], new_pos,
db.actor:level_vertex_id (), db.actor:game_vertex_id ())

zombie_story_1 változása függvényében az objektumok száma a többszöröse 6 (opcionális):
spawn_zombies (spawn_point, 12)

Mindent. Mentés és bezárás.

6. Másolja a mappát gamedata \ config \ gameplay \ fájl encyclopedia_mutants.xml, adjunk hozzá egy leírást a zombik az enciklopédiában:


És az ehhez kapcsolódó mappába string_table_enc_mutants.xml gamedata \ config \ text \ hun \ add:


Zombie szellem eltér a szokásos zombi, csak ebben az
hatás Vyzhigatel agy teljesen megsemmisült nemcsak a szerkezete az egyén, hanem a
szervezetben, így egy zombi szellem kissé szívós, összehasonlítva a szokásos zombik.


Impact Vyzhigatel agy teljesen tönkreteszi az a személyiség szerkezetét,
így csak a testi shell. \ n \ n után vándorolt ​​egy kicsit a zónában, mentes az intelligencia a test
kezd alakulni egy igazi zombi. Reflexek azok csak a legprimitívebb,
fegyverek és felszerelések hamarosan használhatatlanná válnak. Az egyre nem más, mint eredményeként a zombik
de lassú félig hullák, amelyek jelenleg csak két hatásos inger:
eszik és alszik. Zombies elég kuszált a választott étel és ital, így a testük szó
impregnált sugárzás és a méreganyagok. Általános szabály, hogy ezek a lények céltalanul kóborolnak a környéken, vagy
mint hullák heverni elhagyott épületekben. Azonban amint a zombik közel pochuet
jelenlétében élő ember, azonnal megpróbálja a támadásra. Mint tapasztalt zaklatók
próbálja meg elkerülni ezeket ügyetlen elhagyatott héj.


Másolás ide a stable_statistic_caption.xml fájlt, és változtassa meg a 3 sor:


Mentés és bezárás.

7. És végül - add ikonok. Mondja azonnal elveszi kész fájl már tartalmazza a zombik és egyéb „visszanyert szörnyek” (köszönet Fr3nzy) ikonokat. Tehát csak másolja a fájlt ui_npc_monster.dds az archívumból egy mappába gamedata \ textúrák \ ui \ és ui_npc_monster.xml fájl - mappa gamedata \ config \ ui \. Ha azt szeretnénk, hogy a saját - olvasható a leckét a textúra változás.

Röviden leírja ui_npc_monster.xml fájl benne koordinátáit ikonok elrendezése ui_npc_monster.dds fájl minden típusú szörnyek a játékban.

Az utolsó érintés. M_zombie.ltx Nyissa meg a fájlt, és cserélje ki az első részben a sor
icon = ui_npc_monster_kontroler

Ahhoz, hogy:
icon = ui_npc_monster_zombie

Szakaszban [zombie_ghost] adjuk hozzá a sort:
icon = ui_npc_monster_zombieg

Tartsa meg a visszajárót. Mindent.

Itt a teljes minta fájlokat. Sok szerencsét, és köszönöm a figyelmet :)
kapsz NPC

Ez a része a cikk íródott Arhet, és létrehozott egy példa arra, hogy az SRP Mod NPC frakció jött létre „Sin”.

Kerékpározás fájlok:
gamedata \ config \ gameplay \ character_desc_escape.xml
gamedata \ config \ gameplay \ npc_profile.ltx
gamedata \ config \ lények \ spawn_sections.ltx

Kezdjük character_desc_escape.xml. Leírása, hogy mit jelent minden sort nem írok, mert minden megtörtént velem.

Ezután hozzon létre egy új karakter:

esc_dark_stalker_01 - itt az új osztály módon.
dark_stalker stalker_terrain

szereplők \ dark_stalker \ dark_stalker_1
characters_voice \ human_01 \ monolit \
-1
0

[Spawn] \ n
wpn_dark_colt1911 \ n
ammo_11.43x23_hydro \ n
#include "játék \ character_items.xml" \ n
#include "játék \ character_drugs.xml" \ n
#include "játék \ character_food.xml"


Finomítjuk a kódot miután néhány

Most menj be, és npc_profile.xml meghajtók:

Most, hogy minden NPC kapsz egy script, hogy hajt a nevét részén spawn_sections.ltx és woo-a-la.

Jelenlegi felejtsük el, hogy ez az NPC lesz rendelve Default Logic elfelejtette megemlíteni a (xxx - Loka) (azaz bután menni, ahol nem tudom):

xxx gulag.script (! akció NPS Hol: hol lehet rendelni egy állapotot Camper, Volker; i.d.t)

xxx gulag.ltx (azaz logikai doubler páros akció röviden LES)