Prechádzať zdrojové kódy

* Fixed map-server printing deprecation message, when monster event label was used as transport for special attributes (small/large monsters etc.) in script command 'monster' and related commands (bugreport:1274, since r6592, related r5707).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14814 54d463be-8e91-2dee-dedb-b68131a5f0ec
ai4rei 14 rokov pred
rodič
commit
333c944cae
5 zmenil súbory, kde vykonal 24 pridanie a 5 odobranie
  1. 2 0
      Changelog-Trunk.txt
  2. 2 2
      src/map/mob.c
  3. 8 0
      src/map/npc.c
  4. 1 0
      src/map/npc.h
  5. 11 3
      src/map/script.c

+ 2 - 0
Changelog-Trunk.txt

@@ -1,5 +1,7 @@
 Date	Added
 
+2011/05/14
+	* Fixed map-server printing deprecation message, when monster event label was used as transport for special attributes (small/large monsters etc.) in script command 'monster' and related commands (bugreport:1274, since r6592, related r5707). [Ai4rei]
 2011/05/13
 	* Random accumulated bits and pieces. [Ai4rei]
 	- Added checks/warnings to pc_paycash and pc_getcash (follow up to r12264).

+ 2 - 2
src/map/mob.c

@@ -179,7 +179,7 @@ int mob_parse_dataset(struct spawn_data *data)
 
 	if (data->eventname[0])
 	{
-		if(i <= 2)
+		if(npc_event_isspecial(data->eventname))
 		{	//Portable monster big/small implementation. [Skotlex]
 			i = atoi(data->eventname);
 			if (i) {
@@ -191,7 +191,7 @@ int mob_parse_dataset(struct spawn_data *data)
 					data->state.ai=1;
 				data->eventname[0] = '\0'; //Clear event as it is not used.
 			}
-		} else {
+		} else if( i ) {
 			if (data->eventname[i-1] == '"')
 				data->eventname[i-1] = '\0'; //Remove trailing quote.
 			if (data->eventname[0] == '"') //Strip leading quotes

+ 8 - 0
src/map/npc.c

@@ -345,6 +345,14 @@ int npc_event_doall_id(const char* name, int rid)
 }
 
 
+/// Checks whether or not the event name is used as transport for
+/// special flags.
+bool npc_event_isspecial(const char* eventname)
+{
+	return (bool)( eventname && ISDIGIT(eventname[0]) && !strstr(eventname, "::") );
+}
+
+
 /*==========================================
  * ŽžŒvƒCƒxƒ“ƒgŽÀ�s
  *------------------------------------------*/

+ 1 - 0
src/map/npc.h

@@ -134,6 +134,7 @@ int npc_do_ontimer(int npc_id, int option);
 int npc_event_do(const char* name);
 int npc_event_doall(const char* name);
 int npc_event_doall_id(const char* name, int rid);
+bool npc_event_isspecial(const char* eventname);
 
 int npc_timerevent_start(struct npc_data* nd, int rid);
 int npc_timerevent_stop(struct npc_data* nd);

+ 11 - 3
src/map/script.c

@@ -577,9 +577,17 @@ static void disp_error_message2(const char *mes,const char *pos,int report)
 /// Checks event parameter validity
 static void check_event(struct script_state *st, const char *evt)
 {
-	if( evt != NULL && *evt != '\0' && !stristr(evt,"::On") ){
-		ShowError("NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead of '%s'.\n",evt);
-		script_reportsrc(st);
+	if( evt && evt[0] && !stristr(evt, "::On") )
+	{
+		if( npc_event_isspecial(evt) )
+		{
+			;  // portable small/large monsters or other attributes
+		}
+		else
+		{
+			ShowError("NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead of '%s'.\n", evt);
+			script_reportsrc(st);
+		}
 	}
 }