diff --git a/src/map/clif.c b/src/map/clif.c index e0f65155aa..863c6cfbb2 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9593,6 +9593,7 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd) { *------------------------------------------ */ void clif_parse_UseItem(int fd, struct map_session_data *sd) { + int n; RFIFOHEAD(fd); if (pc_isdead(sd)) { @@ -9622,7 +9623,11 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd) { //Whether the item is used or not is irrelevant, the char ain't idle. [Skotlex] sd->idletime = last_tick; - if (!pc_useitem(sd,RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2)) + n = RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0])-2; + + if(n <0 || n >= MAX_INVENTORY) + return 0; + if (!pc_useitem(sd,n)) clif_useitemack(sd,n,0,0); //Send an empty ack packet or the client gets stuck. } diff --git a/src/map/pc.c b/src/map/pc.c index 2730baa799..1517cb17c6 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2814,9 +2814,6 @@ int pc_useitem(struct map_session_data *sd,int n) nullpo_retr(0, sd); - if(n <0 || n >= MAX_INVENTORY) - return 0; - if(sd->status.inventory[n].nameid <= 0 || sd->status.inventory[n].amount <= 0) return 0;