Jak psat script

Aneb stabni kultura neni jen buzerace…

Mozna konvence odsazovani, kterou pouzivam ja (z realneho NPC, jen je pridana zbytecna sekce OnInit), vypada nasledne:

amatsu,143,148,3	script	Kseftar#jirkan	118,{    // povinny format, zde neni co resit
	mes "[Kseftar]";                                 // standardni odsazeni jeden tabelator, v levem sloupci je jen definice NPC, jeji ukonceni a pripadne eventy
	if (!countitem(677)) {                           // slozena zavorka ktera otevira vnoreny blok na konci radku
		mes "Vypadni socko, kazis mi ksefty!";   // samotny blok je odsazeny o dalsi tabelator
		mes "Az budes mit bony prijd";
		close;
	}                                                // uzaviraci zavorka je presne pod prikazem ktery blok otevrel
	mes "psssst!";                                   // dalsi kod bez bloku pokracuje dal.
	mes "hele, ty vypadas bohate, udelame obchod?";
	next;
	mes "[Kseftar]";
	mes "Tak ja ti jako pujcim nejakej klip a ty mi zaplatis, co ty na to?";
	if (2 != prompt("Tahni drbane!:A co nabizis?")) close;       // na jeden radek pouze ty nejjednodussi konstrukce za if, cokoli slozitejsiho do samostatnych bloku
	next;
	mes "[Kseftar]";
	mes "Mam tu tyhle ctyri klipy, pujcim ti je na 2 hodiny a ty mi za to das jeden bon, plati?";
	switch (select("Healing Clip:Hiding Clip:Clip Under a Cast:Clairvoyant Clip:Nic nechci")) {  // switch podobne jako if, zacatek bloku na konci radky
		case 1:                                // varianty case odsazene o jeden tab
			delitem 677,1;                 // ale samotny kod je od case opet odsazeny, aby bylo poznak kde ktera sekce konci
			rentitem 10600,7200;
			break;
		case 2:                                // vynechavat radek nebo nevynechavat? tot otazka, na jednu
			delitem 677,1;                 // kdyz vynechame, je to prehlednejsi, ale zase se min vejde
			rentitem 10601,7200;           // na obrazovku takze se hur orientuje
			break;
		case 3:
			delitem 677,1;
			rentitem 10602,7200;
			break;
		case 4:
			delitem 677,1;
			rentitem 10603,7200;
			break;
                                                       // takze jsem vynechal radku az u podstatne zmeny
		default:                               // vzdy nejak osetrujeme i volby ktere nemusi nastat
			mes "Tak priste";
			break;                         // tenhle break je nadbytecny, ale na druhou stranu clovek pri dalsim copypastovani nezavlece chybu
	}
	close;

OnInit:                                                // event jako jediny krome konce od prvniho sloupce
        npctalk "Tak me tu mate!";                     // a kod zase klasicky odsazeny
        end;

}

Poznamka: V tomto scriptu nedodrzuji to, ze delitem a getitem by mely mit popsane co zerou/davaji. Cinim tak protoze je to zrejme z kontextu par radku kolem (zarucene na jedne obrazovce) o jake predmety se jedna.