summaryrefslogtreecommitdiff
path: root/src/map/clif.c
diff options
context:
space:
mode:
authorLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-01 05:48:06 +0000
committerLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-01 05:48:06 +0000
commita76908de39c38dcb65afb6d1ab628bc414abd483 (patch)
treebb1cd4e78c3a5f956dd974bd01b02b5c0c8e92e6 /src/map/clif.c
parentb8b2214648b6408c15cd9018a05a6dc63de45535 (diff)
downloadhercules-a76908de39c38dcb65afb6d1ab628bc414abd483.tar.gz
hercules-a76908de39c38dcb65afb6d1ab628bc414abd483.tar.bz2
hercules-a76908de39c38dcb65afb6d1ab628bc414abd483.tar.xz
hercules-a76908de39c38dcb65afb6d1ab628bc414abd483.zip
* Optimized fake npc system. Added npc_checknear back to npc_buysellsel.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6426 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/clif.c')
-rw-r--r--src/map/clif.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 0efd160b4..8321368c0 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -1809,10 +1809,16 @@ void clif_sendfakenpc(struct map_session_data *sd, int npcid) {
int clif_scriptmenu(struct map_session_data *sd, int npcid, char *mes) {
int fd;
int slen = strlen(mes) + 8;
+ struct block_list *bl = map_id2bl(npcid);
WFIFOHEAD(fd, slen);
nullpo_retr(0, sd);
+ if (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)
+ clif_sendfakenpc(sd, npcid);
+
fd=sd->fd;
WFIFOW(fd,0)=0xb7;
WFIFOW(fd,2)=slen;
@@ -1829,8 +1835,14 @@ int clif_scriptmenu(struct map_session_data *sd, int npcid, char *mes) {
*/
int clif_scriptinput(struct map_session_data *sd, int npcid) {
int fd;
+ struct block_list *bl = map_id2bl(npcid);
nullpo_retr(0, sd);
+
+ if (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)
+ clif_sendfakenpc(sd, npcid);
fd=sd->fd;
WFIFOHEAD(fd, packet_len_table[0x142]);
@@ -1847,9 +1859,15 @@ int clif_scriptinput(struct map_session_data *sd, int npcid) {
*/
int clif_scriptinputstr(struct map_session_data *sd, int npcid) {
int fd;
+ struct block_list *bl = map_id2bl(npcid);
nullpo_retr(0, sd);
+ if (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)
+ clif_sendfakenpc(sd, npcid);
+
fd=sd->fd;
WFIFOHEAD(fd, packet_len_table[0x1d4]);
WFIFOW(fd,0)=0x1d4;