Oh, hey guys. Sorry, I didn't know you replied to this topic. I'm quoting you both so you both get a notification. Here is the code:
void clif_parse_TakeItem(int fd, struct map_session_data *sd)
{
struct flooritem_data *fitem;
int map_object_id;
int skill_greed(struct block_list *bl, va_list ap);
//First we declare a variable that gets the return value
int debug_i = 0;
map_object_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]);
fitem = (struct flooritem_data*)map_id2bl(map_object_id);
do {
if (pc_isdead(sd)) {
clif_clearunit_area(&sd->bl, CLR_DEAD);
break;
}
if (fitem == NULL || fitem->bl.type != BL_ITEM || fitem->bl.m != sd->bl.m)
break;
if (pc_cant_act(sd))
break;
if (sd->state.arealoot == 1) {
//Now we give the variable
debug_i = map_foreachinrange(skill_greed,&sd->bl,3,BL_ITEM,&sd->bl);
//Now we print it to the map-server console so you can see what it is while playing
//ShowDebug("debug_i=%d", debug_i);
//Give fail packet if no item was looted
if(debug_i == 0)
break;
}
else {
if (!pc_takeitem(sd, fitem))
break;
}
return;
} while (0);
// Client REQUIRES a fail packet or you can no longer pick items.
clif_additem(sd,0,0,6);
}
That code is located in clif.c. I also added a command @arealoot in the atcommand.c. If you need that code as well, just let me know.
Can you post the full code or share it via message? Thanks!