Ver Fonte

Added a sample instancing script.
A few authorship fixes in sample scripts.

Signed-off-by: Euphy <euphy.raliel@rathena.org>

Euphy há 11 anos atrás
pai
commit
2834641350

+ 202 - 0
doc/sample/instancing.txt

@@ -0,0 +1,202 @@
+//===== rAthena Script =======================================
+//= Sample: Instancing
+//===== By: ==================================================
+//= Euphy
+//===== Last Updated: ========================================
+//= 20140129
+//===== Description: ========================================= 
+//= Contains elements of a basic instance script.
+//============================================================
+
+// Before running this script, add the entry below to
+// 'db/(pre-)re/instance_db.txt':
+// 12,Abyss Lake Instance,3600,abyss_03,160,155,abyss_03
+
+// Instance Creation
+//============================================================
+prontera,151,190,6	script	Sample Instance	101,{
+	.@instance$ = "Abyss Lake Instance";
+
+	if (instance_id()) {  // ignore the console debug message (harmless)
+		mes "[Sample Instance]";
+		mes "You are already part of an instance.";
+		next;
+		switch(select("Enter Instance.:Cancel.")) {
+		case 1:
+			break;
+		case 2:
+			mes "[Sample Instance]";
+			mes "You don't want to try again?";
+			emotion e_sob;
+			close;
+		}
+	} else {
+		mes "[Sample Instance]";
+		mes "Would you like to try the sample instance in Abyss Lake 3?";
+		next;
+		switch(select("Create Instance.:Cancel.")) {
+		case 1:
+			.@create = instance_create(.@instance$);
+			if (.@create < 0) {
+				mes "[Sample Instance]";
+				switch (.@create) {
+					case -1: mes "ERROR: Invalid type."; break;
+					case -2: mes "ERROR: Party not found."; break;
+					case -3: mes "ERROR: Instance already exists."; break;
+					case -4: mes "ERROR: No free instances."; break;
+				}
+				mes " ";
+				mes "Instance creation ^FF0000failed^000000.";
+				emotion e_omg;
+				close;
+			}
+			mes "[Sample Instance]";
+			mes "Instance created.";
+			mes " ";
+			mes "Now entering the instance...";
+			next;
+			break;
+		case 2:
+			mes "[Sample Instance]";
+			mes "Okay. Maybe next time!";
+			close;
+		}
+	}
+	.@enter = instance_enter(.@instance$);
+	if (.@enter != 0) {
+		mes "[Sample Instance]";
+		switch (.@enter) {
+			case 1: mes "ERROR: Party not found."; break;
+			case 2: mes "ERROR: Party does not have an instance."; break;
+			case 3: mes "ERROR: Unknown error."; break;
+		}
+		mes " ";
+		mes "Instance entry ^FF0000failed^000000.";
+		emotion e_omg;
+		close;
+	}
+	close;
+}
+
+// Instance Scripts
+//============================================================
+abyss_03,154,159,6	script	Instance NPC#start	101,{
+	mes "[Instance NPC]";
+	mes "Are you ready to begin?";
+	next;
+	switch(select("Yes.:No.")) {
+	case 1:
+		mes "[Instance NPC]";
+		mes "Good luck.";
+		close2;
+		donpcevent instance_npcname("#ins_abyss03_mobs")+"::OnEnable";
+		delwaitingroom;
+		disablenpc instance_npcname(strnpcinfo(0));
+		end;
+	case 2:
+		mes "[Instance NPC]";
+		mes "Take your time.";
+		close;
+	}
+	end;
+
+OnInit:  // hide the NPC on the normal map
+	disablenpc strnpcinfo(0);
+	end;
+OnInstanceInit:  // initialize the NPC when the instance is created
+	disablenpc instance_npcname("abysslakedunwarp004");  // disable original warp portal (currently buggy)
+	waitingroom "Click here to start!",0;
+	end;
+}
+
+abyss_03,0,0,0	script	#ins_abyss03_mobs	-1,{
+	end;
+OnEnable:
+	initnpctimer;
+	end;
+OnTimer1000:  //strnpcinfo(4) will retrieve the instanced map name
+	mapannounce strnpcinfo(4),"Instance NPC: The Abyss Lake instance has begun.",bc_all;
+	end;
+OnTimer4000:
+	mapannounce strnpcinfo(4),"Instance NPC: Smash the Treasure Chest in the center of the map for a prize.",bc_all;
+	end;
+OnTimer5000:
+	stopnpctimer;
+
+	// spawn mobs
+	.@map$        = instance_mapname("abyss_03");
+	.@label$      = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
+	.@label_boss$ = instance_npcname(strnpcinfo(0))+"::OnMyBossDead";
+	monster .@map$,0,0,"Huge Poring",1002,20,.@label$,2;
+	monster .@map$,0,0,"Huge Drops",1113,15,.@label$,2;
+	monster .@map$,0,0,"Huge Poporing",1031,10,.@label$,2;
+	monster .@map$,0,0,"Huge Marin",1242,10,.@label$,2;
+	monster .@map$,0,0,"Tiny Zombie",1015,30,.@label$,1;
+	monster .@map$,0,0,"Huge Mime Monkey",1585,2,.@label$,2;
+	monster .@map$,97,102,"Treasure Chest",1732,1,.@label_boss$,2;
+	end;
+OnMyMobDead:  // normal mobs
+	dispbottom "What am I doing? I should be attacking the Treasure Chest!";
+	viewpoint 0,97,102,0,0xFF0000;
+	switch (rand(6)) {  // for fun (:
+		case 0: sc_start SC_STONE,5000,0; break;
+		case 1: sc_start SC_FREEZE,5000,0; break;
+		case 2: sc_start SC_STUN,5000,0; break;
+		case 3: sc_start SC_SLEEP,5000,0; break;
+		case 4: sc_start SC_CONFUSION,5000,0; break;
+		case 5: sc_start SC_BLIND,5000,0; break;
+	}
+	end;
+OnMyBossDead:  // treasure chest
+	specialeffect2 EF_MVP;
+	getitem 512,1; //Apple
+
+	// trigger other events
+	.@map$   = instance_mapname("abyss_03");
+	.@label$ = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
+	killmonster .@map$,.@label$;
+	mapannounce .@map$,"Instance NPC: Good work! Please speak to me as soon as possible.",bc_all;
+	donpcevent instance_npcname("Instance NPC#finish")+"::OnEnable";
+	end;
+}
+
+abyss_03,97,102,4	script	Instance NPC#finish	101,{
+	mes "[Instance NPC]";
+	mes "Congratulations! You've finished the instance.";
+	mes "I'll send you back to town now.";
+	emotion e_no1;
+	close2;
+	warp "prontera",156,191;
+	instance_destroy();
+	end;
+
+OnInit:
+	disablenpc strnpcinfo(0);
+	end;
+OnInstanceInit:
+	disablenpc instance_npcname(strnpcinfo(0));
+	end;
+OnEnable:
+	enablenpc instance_npcname(strnpcinfo(0));
+	specialeffect EF_HIDING;
+	end;
+}
+
+abyss_03,115,26,0	script	#ins_abyss03_warp	45,5,5,{
+	end;
+OnTouch:
+	mes "Are you sure you want to leave?";
+	next;
+	switch(select("Leave.:Stay.")) {
+	case 1:
+		warp "prontera",156,191;
+		break;
+	case 2:
+		warp strnpcinfo(4),160,155;
+		break;
+	}
+	close;
+OnInit:
+	disablenpc strnpcinfo(0);
+	end;
+}

+ 1 - 1
doc/sample/npc_dynamic_shop.txt

@@ -1,7 +1,7 @@
 //===== rAthena Script =======================================
 //= Sample: Dynamic Shop
 //===== By: ==================================================
-//= rAthena Dev Team
+//= Lance
 //===== Last Updated: ========================================
 //= 20101219
 //===== Description: ========================================= 

+ 1 - 1
doc/sample/npc_test_pcre.txt

@@ -1,7 +1,7 @@
 //===== rAthena Script =======================================
 //= Sample: PCRE
 //===== By: ==================================================
-//= rAthena Dev Team
+//= MouseJstr
 //===== Last Updated: ========================================
 //= 20100108
 //===== Description: ========================================= 

+ 1 - 1
doc/sample/npc_test_quest.txt

@@ -1,7 +1,7 @@
 //===== rAthena Script =======================================
 //= Sample: Quest Test
 //===== By: ==================================================
-//= rAthena Dev Team
+//= Akkarin
 //===== Last Updated: ========================================
 //= 20121227
 //===== Description: =========================================