瀏覽代碼

* Fixed a bug with InitTimer/StopTimer

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1358 54d463be-8e91-2dee-dedb-b68131a5f0ec
celest 20 年之前
父節點
當前提交
05e31aee3c
共有 4 個文件被更改,包括 20 次插入19 次删除
  1. 1 0
      Changelog-SVN.txt
  2. 14 14
      src/map/npc.c
  3. 1 1
      src/map/npc.h
  4. 4 4
      src/map/script.c

+ 1 - 0
Changelog-SVN.txt

@@ -2,6 +2,7 @@
 Date	Added
 
 03/31
+	* Fixed a bug with InitTimer/StopTimer, thanks to ilpalazzo-sama
 	* Set 'undead_detect_type' to 0 by default, thanks to Dino9021
 	* Fixed Enchant Poison / Deadly Poison having too high poisoning chance
 	* Reverted the pc_remove_map() change temporarily

+ 14 - 14
src/map/npc.c

@@ -499,33 +499,33 @@ int npc_cleareventtimer(struct npc_data *nd)
 
 int npc_do_ontimer_sub(void *key,void *data,va_list ap)
 {
-	char *p=(char *)key;
-	struct event_data *ev=(struct event_data *)data;
-	int *c=va_arg(ap,int *);
+	char *p = (char *)key;
+	struct event_data *ev = (struct event_data *)data;
+	int *c = va_arg(ap,int *);
 //	struct map_session_data *sd=va_arg(ap,struct map_session_data *);
-	int option=va_arg(ap,int);
-	int tick=0;
+	int option = va_arg(ap,int);
+	int tick = 0;
 	char temp[10];
 	char event[50];
 
-	if(ev->nd->bl.id==(int)*c && (p=strchr(p,':')) && p && strnicmp("::OnTimer",p,8)==0 ){
-		sscanf(&p[9],"%s",temp);
-		tick=atoi(temp);
+	if(ev->nd->bl.id == (int)*c && (p = strchr(p,':')) && strnicmp("::OnTimer",p,8) == 0){
+		sscanf(&p[9], "%s", temp);
+		tick = atoi(temp);
 
-		strcpy( event, ev->nd->name);
-		strcat( event, p);
+		strcpy(event, ev->nd->name);
+		strcat(event, p);
 
 		if (option!=0) {
-			npc_addeventtimer(ev->nd,tick,event);
+			npc_addeventtimer(ev->nd, tick, event);
 		} else {
-			npc_deleventtimer(ev->nd,event);
+			npc_deleventtimer(ev->nd, event);
 		}
 	}
 	return 0;
 }
-int npc_do_ontimer(int npc_id, struct map_session_data *sd, int option)
+int npc_do_ontimer(int npc_id, int option)
 {
-	strdb_foreach(ev_db,npc_do_ontimer_sub,&npc_id,sd,option);
+	strdb_foreach(ev_db, npc_do_ontimer_sub, &npc_id, option);
 	return 0;
 }
 /*==========================================

+ 1 - 1
src/map/npc.h

@@ -42,7 +42,7 @@ void npc_delsrcfile(char *);
 int do_final_npc(void);
 int do_init_npc(void);
 int npc_event_do_oninit(void);
-int npc_do_ontimer(int,struct map_session_data *,int);
+int npc_do_ontimer(int,int);
 
 int npc_event_doall(const char *name);
 int npc_event_do(const char *name);

+ 4 - 4
src/map/script.c

@@ -5524,9 +5524,9 @@ int buildin_cmdothernpc(struct script_state *st)	// Added by RoVeRT
 int buildin_inittimer(struct script_state *st)	// Added by RoVeRT
 {
 //	struct npc_data *nd=(struct npc_data*)map_id2bl(st->oid);
-
 //	nd->lastaction=nd->timer=gettick();
-	npc_do_ontimer(st->oid, map_id2sd(st->rid), 1);
+
+	npc_do_ontimer(st->oid, 1);
 
 	return 0;
 }
@@ -5534,9 +5534,9 @@ int buildin_inittimer(struct script_state *st)	// Added by RoVeRT
 int buildin_stoptimer(struct script_state *st)	// Added by RoVeRT
 {
 //	struct npc_data *nd=(struct npc_data*)map_id2bl(st->oid);
-
 //	nd->lastaction=nd->timer=-1;
-	npc_do_ontimer(st->oid, map_id2sd(st->rid), 0);
+
+	npc_do_ontimer(st->oid, 0);
 
 	return 0;
 }