Pārlūkot izejas kodu

* Sending fake npc for inputs and menus for NPC without map coordinates.
* Fixed npc.h compiler warnings.

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

Lance 19 gadi atpakaļ
vecāks
revīzija
88cf55de08
3 mainītis faili ar 24 papildinājumiem un 1 dzēšanām
  1. 1 0
      Changelog-Trunk.txt
  2. 22 0
      src/map/clif.c
  3. 1 1
      src/map/npc.h

+ 1 - 0
Changelog-Trunk.txt

@@ -16,6 +16,7 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 	  [Lance]
 	* Added warnings to npc_scriptcont for easier debugging. [Lance]
 	* Missing lines in npc_parse_script! [Lance]
+	* Sending fake npc for inputs and menus for NPC without map coordinates. [Lance]
 
 2006/04/15
 	* Fixed upgrade_svn5902.sql, thanks to Koshiro for pointing it out.

+ 22 - 0
src/map/clif.c

@@ -1709,6 +1709,19 @@ int clif_scriptclose(struct map_session_data *sd, int npcid) {
 	return 0;
 }
 
+void send_fake_npc(struct map_session_data *sd, int npcid){
+	int fd = sd->fd;
+	WFIFOW(fd,0)=0x78;
+	WFIFOL(fd,2)=npcid;
+	WFIFOW(fd,12)=OPTION_INVISIBLE;
+	WFIFOW(fd,14)=INVISIBLE_CLASS;
+	WFIFOPOS(fd,46,sd->bl.x,sd->bl.y);
+	WFIFOB(fd,49)=5;
+	WFIFOB(fd,50)=5;
+	WFIFOSET(fd, packet_len_table[0x78]);
+	return;
+}
+
 /*==========================================
  *
  *------------------------------------------
@@ -1720,6 +1733,9 @@ int clif_scriptmenu(struct map_session_data *sd, int npcid, char *mes) {
 
 	nullpo_retr(0, sd);
 
+	if(map_id2bl(npcid)->m < 0)
+		send_fake_npc(sd, npcid);
+
 	fd=sd->fd;
 	WFIFOW(fd,0)=0xb7;
 	WFIFOW(fd,2)=slen;
@@ -1739,6 +1755,9 @@ int clif_scriptinput(struct map_session_data *sd, int npcid) {
 
 	nullpo_retr(0, sd);
 
+	if(map_id2bl(npcid)->m < 0)
+		send_fake_npc(sd, npcid);
+
 	fd=sd->fd;
    WFIFOHEAD(fd, packet_len_table[0x142]);
 	WFIFOW(fd,0)=0x142;
@@ -1757,6 +1776,9 @@ int clif_scriptinputstr(struct map_session_data *sd, int npcid) {
 
 	nullpo_retr(0, sd);
 
+	if(map_id2bl(npcid)->m < 0)
+		send_fake_npc(sd, npcid);
+
 	fd=sd->fd;
 	WFIFOHEAD(fd, packet_len_table[0x1d4]);
 	WFIFOW(fd,0)=0x1d4;

+ 1 - 1
src/map/npc.h

@@ -38,7 +38,7 @@ int npc_parse_mob(char *w1,char *w2,char *w3,char *w4);
 int npc_parse_mob2 (struct spawn_data*, int index); // [Wizputer]
 int npc_parse_warp(char *w1,char *w2,char *w3,char *w4);
 int npc_globalmessage(const char *name,char *mes);
-int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const unsigned char *eventname); //[Lance]
+int npc_event_sub(struct map_session_data *, struct event_data *, const unsigned char *); //[Lance]
 
 int npc_enable(const char *name,int flag);
 int npc_changename(const char *name, const char *newname, short look); // [Lance]