Scriptování postav a monster

Každá postava v Ultimě má svůj vlastní script, podle kterého se chová a jedná v určité situaci – např. na blízku je hráč, je napadena hráčem
či jinou postavu, atd. Skripty charakterů jsou rozděleny na : zvířata, nepřátelé, lidi a zvláštní.
Skripty postav začínají vždy: [CHARDEF číslo] , kde chardef samozřejmě určuje, že se jedná o charakter a číslo udává jeho „pořadové číslo“. Zde pozor!!! Doporučuje se při vytváření nového monstra
nebo postavy vytvořit CHARDEF ve formátu [CHARDEF c_jméno] Pořadová čísla totiž musí jít přesně za sebou a jakákoli chybička může mít za následek nesprávnou
funkčnost sphere nebo monster!
Dále vždy následuje: DEFNAME = c_jméno. První řádka určuje pod jakým názvem bude sphéra znát tuto postavu. Zde se musí shodovat
názvy u CHARDEF a DEFNAME. Pod tímto názvem ji také např. přidáváte do hry.
Ve druhém řádku si můžete vymyslet jaké jméno chcete.Třeba Karel - NAME=Karel.
Následuje příkaz SOUND, který již podle názvu je zřejmý – přiřazuje monstru zvuk, který bude vydávat.
Příkaz (např.) ICON=i_pet_zombie říká sphéře, jak bude monstrum vypadat po shrinknutí.
ANIM=hexadecimální_číslo – přidává monstru animaci – hýbání, útočení. Je vždy zapsána hexadecimálním číslem.
CAN= MT_WALK určuje, co všechno potvora může dělat, v tomto případě chodit.
Příkazy DAM (damage) a ARMOR snad nemusím vysvětlovat. Jak jste si jistě všimli za DAM jsou dvě čísla, která symbolizují rozmezí síly úderu!
RESOURCES – říkají sphéře, co potvora po zabití a vykuchání obsahuje za potraviny apod. Např. z medvěda dostanete sirové maso a potom
ho můžete uvařit. Číslo udává samozřejmě počet té dotyčné substance.
FOODTYPE se váže k tomu, co potvora jí. Číslo udává kolik toho musí sníst, aby byla syta.
DESIRES – výčet toho, co postavu přitahuje. Může to být cokoliv, např. nějaký předmět (i_gold), nebo maso (t_meat_raw) apod.
SHELTER – tento příkaz udává, kde postava bude hledat přístřeší, nebo "obydlí". Zase to může být jakákoliv oblast – hory, lesy, město, dungeon.
AVERSIONS – jak již překlad napovídá, jsou to averze k určitému typu věci, nebo prostředí. Např. Ogre nemá rád civilizace a pasti.
Je velice důležité, aby tuto řádku obsahovala každá potvora, protože jinak vám poleze do pasti jen tak a nebude se ji snažit vyhnout, nebo poleze do města a
to přímo mezi bojovníky a stráže.
TEVENTS – zde můžete uvést skript, který bude postava dodržovat. Tento skript si sami musíte vytvořit, protože v základním
balíku sphéry jsou jen ty základní. Těmito skripty se budeme zabývat někdy později.
Dále již následuje trigger ON=@CREATE, který se provede jen jednou při vytvoření postavy ve hře. Zde se nastavuje síla, dexterita a
inteligence a ostatní položky:
NPC – zde můžeme uvést, jestli se postava bude chovat nějak inteligentně nebo bude tupě
čekat na potravu a nepřítele. Je-li postava nemrtvý bude to vypadat asi takto: NPC=brain_undead
Následují tři řádky s nastavením atributů monstra: STR={46 70}, DEX={31 50}, INT={26 40}.
Zde je nutné abych upozornil na jednu zvláštnost. Někteří jste si všimli, že čísla sice udávají interval, ale nemají čárku mezi sebou.
Toho dosáhneme tak, že dvě čísla uzavřeme do složených závorek {}!
Na dalších řádkách bychom měli uvést velikost jednotlivých skillů, které postava používá.Jednoduše napíšeme jméno skillu a za rovnítko
hodnotu (nebo interval):
PARRYING={20.0 30.0}, MAGICRESISTANCE={15.0 40.0}, TACTICS={35.0 50.0}, WRESTLING={35.0 50.0}
Na tomto místě je také vhodné určit, že postava bude "záporná" (červená). To zařídíme příkazy KARMA a FAME. Karma
musí mít vždy zápornou hodnotu alespoň -2500. Fame může být kladná.
Jako poslední musíme postavě přidělit loot, abychom se zbytečně nezabíjeli s drakem, když by nic neměl. Ve sphéře se užívá
příkazu RESTOCK, který všem vendorům a potvorám obnoví loot. Vendoři pak mají znova všechno zboží a peníze, proto skript:
ON=@NPCRestock
ITEM=loot_ZOMBIE
Říká sphéře, že po zadání příkazu RESTOCK ze strany GM bude zombii vybrán loot, který je v jiném souboru definován.
Výsledný script by potom mohl vypadat například takto:

[CHARDEF 03] DEFNAME=c_zombie
NAME=Zombie
SOUND=snd_MONSTER_ZOMBIE1
ICON=i_pet_ZOMBIE
ANIM=078c7f
CAN=MT_WALK
DAM=2,8
ARMOR=9
RESOURCES=10 t_eerie_stuff
FOODTYPE=20 t_meat_raw
DESIRES=i_gold,t_meat_raw, t_corpse
SHELTER=r_dungeon,r_spooky
AVERSIONS=t_TRAP
BLOODCOLOR=colors_green
TEVENTS=e_undead

ON=@Create
NPC=brain_undead
STR={46 70}
DEX={31 50}
INT={26 40}

PARRYING={20.0 30.0}
MAGICRESISTANCE={15.0 40.0}
TACTICS={35.0 50.0}
WRESTLING={35.0 50.0}

FAME=300
KARMA={-2000 -3999}

ON=@NPCRestock
ITEM=loot_ZOMBIE

Script se ale dá vytvořit i mnohem jednodušším způsobem. Pokud si například chceme vytvořit své specifické monstrum, které bude shodné
s již definovaným monstrem, můžeme hotové monstrum použít jako předlohu a pro to své upravíme jen příkazy, které potřebujeme. Délá se to příkazem
ID s použitím čísla hotového monstra. Odpadá tak nutnost vypisování některých specifikací. Dejme tomu, že si chceme vytvořit opět zombie,
ale mnohem silnější. Script by mohl vypadat takto:

[CHARDEF c_silna zombie] DEFNAME=c_silna_zombie
NAME=Silna Zombie
ID=03

DAM=6,15
ARMOR=13

ON=@Create
NPC=brain_undead
STR={80 94}
DEX={54 79}
INT={30 55}

PARRYING={40.0 80.0}
MAGICRESISTANCE={30.0 66.0}
TACTICS={55.0 84.0}
WRESTLING={55.0 74.0}

FAME=300
KARMA={-3800 -4500}

ON=@NPCRestock
ITEM=loot_ZOMBIE

Máme tedy vytvořenou zombie, která má veškeré atributy jako normální zombie, ale je silnější a má vyšší skilly.

Autor: Sandal

Poslal: Sandal - Pondělí, 20 září, 2004 - 04:40 CET