Browse Source

* Optimized clif.c clif_scriptmenu/input/inputstr to check for sd->state.using_fake_npc before sending one (as it's not required to send twice).

* Reinitialize sd->state.using_fake_npc in clif_parse_LoadEndAck (for scripts that warps players and still continues execution to work).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6509 54d463be-8e91-2dee-dedb-b68131a5f0ec
Lance 19 years ago
parent
commit
dacea0478a
2 changed files with 12 additions and 6 deletions
  1. 4 0
      Changelog-Trunk.txt
  2. 8 6
      src/map/clif.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/05/05
+	* Optimized clif.c clif_scriptmenu/input/inputstr to check for sd->state.using_fake_npc
+	  before sending one (as it's not required to send twice).
+	* Reinitialize sd->state.using_fake_npc in clif_parse_LoadEndAck (for scripts that warps
+	  players and still continues execution to work). [Lance]
 	* Updated item_db.sql to current. [Skotlex]
 	* Fixed a bug in @commands, most likely the reason some people were still
 	  getting crashes. [Skotlex]

+ 8 - 6
src/map/clif.c

@@ -1821,9 +1821,9 @@ int clif_scriptmenu(struct map_session_data *sd, int npcid, char *mes) {
 
 	nullpo_retr(0, sd);
 
-	if (bl->type == BL_PC || bl->m!=sd->bl.m ||
+	if (!sd->state.using_fake_npc && (bl->type == BL_PC || bl->m!=sd->bl.m ||
 	   bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 ||
-	   bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)
+	   bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))
 	   clif_sendfakenpc(sd, npcid);
 
 	fd=sd->fd;
@@ -1846,9 +1846,9 @@ int clif_scriptinput(struct map_session_data *sd, int npcid) {
 
 	nullpo_retr(0, sd);
 
-	if (bl->type == BL_PC || bl->m!=sd->bl.m ||
+	if (!sd->state.using_fake_npc && (bl->type == BL_PC || bl->m!=sd->bl.m ||
 	   bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 ||
-	   bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)
+	   bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))
 	   clif_sendfakenpc(sd, npcid);
 	
 	fd=sd->fd;
@@ -1870,9 +1870,9 @@ int clif_scriptinputstr(struct map_session_data *sd, int npcid) {
 
 	nullpo_retr(0, sd);
 
-	if (bl->type == BL_PC || bl->m!=sd->bl.m ||
+	if (!sd->state.using_fake_npc && (bl->type == BL_PC || bl->m!=sd->bl.m ||
 	   bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 ||
-	   bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)
+	   bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))
 	   clif_sendfakenpc(sd, npcid);
 
 	fd=sd->fd;
@@ -8133,6 +8133,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 	if(sd->status.party_id)
 	    clif_party_hp(sd);
 
+	sd->state.using_fake_npc = 0;
+
 	// pvp
 	//if(sd->pvp_timer!=-1 && !battle_config.pk_mode) /PVP Client crash fix* Removed timer deletion
 	//	delete_timer(sd->pvp_timer,pc_calc_pvprank_timer);