Preskočiť na obsah
Domovská stránka » Pomsta! 3 – Akcia!

Pomsta! 3 – Akcia!

  • Tutorial

Voľajaký škriatok zapríčinil že sa tretia časť stratila a nebola zverejnená. Pri zmene designu som si všimol že je stále ako koncept. Takže po dvoch rokoch Budiž život…

Zmeny v priestore, pohyby objektov a rôzne reakcie na hráčove činy už vyžadujú náročnejšie skriptovanie. Najjednoduchšie to bude ukázať si to na príkladoch.

Položenie peňazí v taxíku:
– zničí predmet
– umožní opustiť taxík (vypne #leave akciu)
– zmení popis iného predmetu

{
#objectid=obj_penize;
#preset=predmet;
	#name=peníze;
	#description=Jedna zmuchlaná stokoruna.;
	#location=#you;
 
	#put={
		#printLn actionTaxikář se na peníze lačně vrhl.;
		#note zlikvidovat peniaze, zmenit popis taxikara, vypnut akciu pri snahe opustit taxik;
		#object[obj_penize].#life=#false;
		##object[obj_taxikar].#description=Taxikář spokojeně bručí a čeká, až vystoupíš.;
		#room[room_taxik].#leave=#null;
	};
}

Interpreter kvôli zjednodušeniu všetko prevádza na malé písmená. Niektoré veci dokáže rozoznať ako napríklad #print, ak sa však robí lowerCase aj tam kde to nie je žiadané dá sa to vypnúť zdvojením ##.

Viacnásobné skúmanie koša.

{
#objectid=obj_kos;
#preset=dekoracia;
	#name=koš;
 
	#description=V koši jsi něco našel.;
	#location=room_parcik;
	#examine={
		#if #object[$rom_exec_owner].#countOfExamination=1;
			#object[obj_salam].#found=#true;
			##object[obj_kos].#description=Objevil jsi v něm hromadu papírů.;
		#elseif #object[$rom_exec_owner].#countOfExamination=2;
			#object[obj_papir].#found=#true;
			##object[obj_kos].#description=Koš je úplně prázdný.;
			#object[obj_kos].#examine=#null;
		#endif;
	};
 
	#nonportable=#false;
	$text_takeVerifyFail=;
	#takeVerify={
		#printLn badactionKoš je příliš těžký.;
		#return #false;
	};
}

V #examine je definovaná akcia, ktorú spustí preskúmanie predmetu. Premenná $rom_exec_owner obsahuje ID majiteľa komu patrí akcia. V Tomto prípade je to priamo ID objektu, rovnaký efekt by malo #object[obj_kos]. Počet ktorý nás zaujíma obsahuje #countOfExamination. Vypíše sa popis objektu, ktorý sa následne zmení. Určite by to šlo napísať čitateľnejšie. Ide skôr o príklad možností nie o to najkrajšie riešenie.

Za zmienku stojí akcia #takeVerify sa zavolá pri pokuse o zdvihnutie a návratová hodnota zabezpečí že sa to nepodarí. Globálny text pre zlyhanie sa prepíše/vypne $text_takeVerifyFail=; Predmet ktorý sa nedá zobrať by sa dal dosiahnuť aj cez cez #nonportable=#true;.

Ďalší zaujímavý objekt je salám, ktorý pri položení na správnom mieste modifikuje objekt. Pridáva mu prídavné mená.

{
#objectid=obj_salam;
	...
	#put={
		#if #object[$rom_exec_owner].#location==room_placek_2;
			#object[$rom_exec_owner].#life=#false;
 
			#printLn actionPsisko skočilo po salámu a v mžiku jej sežralo.;
 
			##object[obj_pes].#description=Pes je nažraný a už na tebe nevrčí.;
			#object[obj_pes].#adjectives.#clear;
			#object[obj_pes].#adjectives.#add=nažraného;
			#object[obj_pes].#adjectives.#add=velkého;
 
			#object[obj_pes].$hlad=#false;
 
			#room[room_pred_vchodem].#enterVerify=#null;
		#endif;
	};
	...
}

Detekcia hráčovej pozície sa používa pri ďalších peniazoch.

{
#objectid=obj_prachy;
	...
	#put={
		#if #object[#you].#location==room_predsin;
			...
			#object[obj_vedouci].$triezvy=#false;
			...
		#endif;
	};
	...
}

Druhá možnosť by bola premenná $rom_your_position. Je tu zároveň ukázané použitie premennej $triezvy v objekte.

Všetky ostatné objekty sú už len varianty toho istého. Či už ide o otvorenie, zatvorenie, oblečenie, zbieranie či položenie predmetu.

Za zmienku stojí definovanie nového príkazu inštaluj ktorý je v bloku #commands;. Jeho použitie spúšťa skript #actionid=newcommand_instaluj;. Skript si kontroluje či bol zadaný so správnym predmetom.

	#if $rom_exec_commandline_count_of_primary_objects!=1;#note nebolo zadane co instalovat;
	 	#printLn Nelze provést.;
	 	#return;
	#endif;
 
	#if $rom_exec_commandline_primary_objects[1]!=obj_likvidator;#note zly predmet chces instalovat;
	 	#printLn Nelze provést.;
	 	#return;
	#endif;

Následne si skript skontroluje požadovanú polohy a či ide o prvú inštaláciu.

Ďalšia zaujímavá možnosť na oživenie sveta sú takzvané thready. Ide o skripty ktoré sa spúšťajú na pozadí a je možné ich načasovať na základe počtu zadaných príkazov, na základe počtu krokov alebo na základe reálneho času. Po úspešnej inštalácii likvidátora sú dva spustené.

	#threadid=thread_likvidator_cas; #note kazdych 6 sekund znizuje pocitadlo do spustenia likvidacie (zacina na 20);
	#threadid=thread_likvidator_prikaz; #note kazdy zadany prikaz znizuje pocitadlo do spustenia likvidacie (zacina na 20);

Odporúčam preštudovať kompletný zdrojový kód Pomsty!. Dosť odpovedí sa dá nájsť aj na txtwiki.pohroma.de.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Táto webová stránka používa Akismet na redukciu spamu. Získajte viac informácií o tom, ako sú vaše údaje z komentárov spracovávané.