Prechádzať zdrojové kódy

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6750 54d463be-8e91-2dee-dedb-b68131a5f0ec

Lance 19 rokov pred
rodič
commit
453e3b3213
2 zmenil súbory, kde vykonal 127 pridanie a 0 odobranie
  1. 126 0
      npc/sample/monster_controller.cpp
  2. 1 0
      npc/scripts_custom.conf

+ 126 - 0
npc/sample/monster_controller.cpp

@@ -0,0 +1,126 @@
+// Variables Logging:
+// 'mc_moblist[] - ID list of mobs
+prontera.gat,180,200,4	script	Monster Controller	123,{
+	function display_info {
+		getmobdata getarg(0), '@mob_data;
+		set '@array_size, getarraysize('@mob_data);
+		for(set '@i, 0; '@i < '@array_size; set '@i, '@i + 1){
+			mes '@i + " - " + '@mob_data['@i];
+		}
+		return;
+	}
+
+	function remove_mob {
+		removemob getarg(0);
+		set '@mob_size, getarraysize('mc_moblist);
+		for(set '@i, 0; '@i < '@mob_size; set '@i, '@i + 1){
+			if('mc_moblist['@i] == getarg(0))
+				deletearray 'mc_moblist['@i], 1;
+		}
+	}
+
+	function make_menu {
+		set '@array_size, getarraysize(getarg(0));
+		set '@tmp_str$, "";
+		for(set '@i, 0; '@i < '@array_size; set '@i, '@i + 1){
+			set '@tmp_str$, '@tmp_str$ + 'mc_moblist['@i] + ":";
+		}
+		select '@tmp_str$;
+		return getelementofarray(getarg(0),@menu-1);
+	}
+
+	function summon_mob {
+		set '@mob_size, getarraysize('mc_moblist);
+		set 'mc_moblist['@mob_size], spawnmob("Slave - " + '@mob_size, getarg(0), "prontera.gat", 180, 200);
+		mobattach 'mc_moblist['@mob_size];
+		return;
+	}
+
+	function list_mobs {
+		set '@mob_size, getarraysize('mc_moblist);
+		for(set '@i, 0; '@i < '@mob_size; set '@i, '@i + 1){
+			mes "- " + 'mc_moblist['@i];
+		}
+		return;
+	}
+
+L_MainMenu:
+	mes "[Monster Controller]";
+	mes "Current active monsters:";
+	list_mobs;
+	switch(select("Summon","Remove","Information","Actions")){
+		case 1: // Summon
+			next;
+			mes "[Monster Controller]";
+			mes "Monster ID -";
+			input @mob_id;
+			next;
+			summon_mob @mob_id;
+			goto L_MainMenu;
+			break;
+		case 2: // Remove
+			remove_mob make_menu('mc_moblist);
+			next;
+			goto L_MainMenu;
+			break;
+		case 3: // Information
+			set '@tmp, make_menu('mc_moblist);
+			next;
+			mes "[Monster Info]";
+			display_info '@tmp;
+			next;
+            goto L_MainMenu;
+			break;
+		case 4: // Actions
+			goto L_AttackMenu;
+			break;
+	}
+
+L_AttackMenu:
+	switch(select("Walk","Follow","Attack","Stop","Defend","Talk","Emote","Random Walk","Back")){
+		case 1: // Walk
+			set '@src, make_menu('mc_moblist);
+			input '@x;
+			input '@y;
+			mobwalk '@src,'@x,'@y; // Mode 1: Walk to location.
+			break;
+		case 2: // Follow
+			set '@src, make_menu('mc_moblist);
+			input '@tar;
+			mobwalk '@src, '@tar; // Mode 2: Walk to target.
+			break;
+		case 3: // Attack
+			set '@src, make_menu('mc_moblist);
+			input '@tar;
+			mobattack '@src, '@tar;
+			break;
+		case 4: // Stop
+			set '@src, make_menu('mc_moblist);
+			mobstop '@src;
+			break;
+		case 5: // Defend/Assist
+			set '@src, make_menu('mc_moblist);
+			input '@tar;
+			mobassist '@src, '@tar;
+			break;
+		case 6: // Talk
+			set '@src, make_menu('mc_moblist);
+			input '@text$;
+			mobtalk '@src, '@text$;
+			break;
+		case 7: // Emote
+			set '@src, make_menu('mc_moblist);
+			input '@emote;
+			mobemote '@src, '@emote;
+			break;
+		case 8:
+			set '@src, make_menu('mc_moblist);
+			input '@flag;
+			mobrandomwalk '@src, '@flag;
+			break;
+		case 9:
+			next;
+			goto L_MainMenu;
+	}
+	goto L_AttackMenu;
+}

+ 1 - 0
npc/scripts_custom.conf

@@ -20,6 +20,7 @@
 //npc: npc/location/to/script.txt
 //                     Your scripts go here!!
 // --------------------------------------------------------------
+//npc: npc/sample/monster_controller.cpp
 // ----------------------- Basic  Scripts -----------------------
 // -- Adoption NPC [Fredzilla]
 npc: npc/custom/adoption.txt