GodKnows Jhomz Posted May 3, 2020 Group: Members Topic Count: 38 Topics Per Day: 0.01 Content Count: 333 Reputation: 68 Joined: 09/05/12 Last Seen: June 13, 2023 Share Posted May 3, 2020 On 2/8/2019 at 8:48 AM, hikashin-rae said: The update on this is just change the variable that view the map area. Did you make it work on the latest git? Hopefully you can share us the latest working whosell command. Thank you so much! Quote Link to comment Share on other sites More sharing options...
kevinyrchua Posted August 15, 2020 Group: Members Topic Count: 14 Topics Per Day: 0.00 Content Count: 52 Reputation: 0 Joined: 07/14/17 Last Seen: August 29, 2020 Share Posted August 15, 2020 Does anyone knew the reason why it kept on showing, no one is vending? I used this script below... @Shinto maybe you can help? On 12/20/2017 at 5:59 PM, Shinto said: Thanks Lights I solved ..... I modified with "sd-> card.u.items_cart" and now it works .... here is the working script /*========================================== * @whosell - List who is vending the item (amount, price, and location). * revamped by VoidLess, original by zephyrus_cr *------------------------------------------*/ ACMD_FUNC(whosell) { char item_name[100]; int item_id = 0, j, count = 0, sat_num = 0; int s_type = 1; // search bitmask: 0-name,1-id, 2-card, 4-refine int refine = 0,card_id = 0; bool flag = 0; // place dot on the minimap? struct map_session_data* pl_sd; struct s_mapiterator* iter; unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0; struct item_data *item_data; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Use: @whosell (<+refine> )(<item_id>)(<[card_id]>) or @whosell <name>"); return -1; } if (sscanf(message, "+%d %d[%d]", &refine, &item_id, &card_id) == 3){ s_type = 1+2+4; } else if (sscanf(message, "+%d %d", &refine, &item_id) == 2){ s_type = 1+4; } else if (sscanf(message, "+%d [%d]", &refine, &card_id) == 2){ s_type = 2+4; } else if (sscanf(message, "%d[%d]", &item_id, &card_id) == 2){ s_type = 1+2; } else if (sscanf(message, "[%d]", &card_id) == 1){ s_type = 2; } else if (sscanf(message, "+%d", &refine) == 1){ s_type = 4; } else if (sscanf(message, "%d", &item_id) == 1 && item_id == atoi(message)){ //names, that start on num are not working //so implemented minumum item_id>500 //or better make item_id == atoi(message) ? s_type = 1; } else if (sscanf(message, "%99[^\n]", item_name) == 1){ s_type = 1; if ((item_data = itemdb_searchname(item_name)) == NULL){ clif_displaymessage(fd, "Not found item with this name"); return -1; } item_id = item_data->nameid; } else { clif_displaymessage(fd, "Use: @whosell (<+refine> )(<item_id>)(<[card_id]>) or @whosell <name>"); return -1; } //check card if(s_type & 2 && ((item_data = itemdb_exists(card_id)) == NULL || item_data->type != IT_CARD)){ clif_displaymessage(fd, "Not found a card with than ID"); return -1; } //check item if(s_type & 1 && (item_data = itemdb_exists(item_id)) == NULL){ clif_displaymessage(fd, "Not found an item with than ID"); return -1; } //check refine if(s_type & 4){ if (refine<0 || refine>10){ clif_displaymessage(fd, "Refine out of bounds: 0 - 10"); return -1; } /*if(item_data->type != IT_WEAPON && item_data->type != IT_ARMOR){ clif_displaymessage(fd, "Use refine only with weapon or armor"); return -1; }*/ } iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if( pl_sd->vender_id ) //check if player is vending { for (j = 0; j < pl_sd->vend_num; j++) { if((item_data = itemdb_exists(sd->cart.u.items_cart[pl_sd->vending[j].index].nameid)) == NULL) continue; if(s_type & 1 && sd->cart.u.items_cart[pl_sd->vending[j].index].nameid != item_id) continue; if(s_type & 2 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || (sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] != card_id && sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] != card_id && sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] != card_id && sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] != card_id))) continue; if(s_type & 4 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || sd->cart.u.items_cart[pl_sd->vending[j].index].refine != refine)) continue; if(item_data->type == IT_ARMOR) snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %d[%d] | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",sd->cart.u.items_cart[pl_sd->vending[j].index].refine ,sd->cart.u.items_cart[pl_sd->vending[j].index].nameid ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x,pl_sd->bl.y ,pl_sd->status.name); else if(item_data->type == IT_WEAPON) snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %d[%d,%d,%d,%d] | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",sd->cart.u.items_cart[pl_sd->vending[j].index].refine ,sd->cart.u.items_cart[pl_sd->vending[j].index].nameid ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] ,sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x,pl_sd->bl.y ,pl_sd->status.name); else snprintf(atcmd_output, CHAT_SIZE_MAX, "ID %d | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",sd->cart.u.items_cart[pl_sd->vending[j].index].nameid ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x, pl_sd->bl.y ,pl_sd->status.name); if(pl_sd->vending[j].value < MinPrice) MinPrice = pl_sd->vending[j].value; if(pl_sd->vending[j].value > MaxPrice) MaxPrice = pl_sd->vending[j].value; clif_displaymessage(fd, atcmd_output); count++; flag = 1; } if(flag && pl_sd->mapindex == sd->mapindex){ clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, ++sat_num, 0xFFFFFF); flag = 0; } } } mapit_free(iter); if(count > 0) { snprintf(atcmd_output,CHAT_SIZE_MAX, "Found %d ea. Prices from %dz to %dz", count, MinPrice, MaxPrice); clif_displaymessage(fd, atcmd_output); } else clif_displaymessage(fd, "Nobody is selling it now."); return 0; } On 12/31/2017 at 2:11 AM, Rebel said: Why the output always "Nobody is selling it now." Is this really working? Hi! were you able to make it work? Quote Link to comment Share on other sites More sharing options...
hikashin-rae Posted January 16, 2021 Group: Members Topic Count: 18 Topics Per Day: 0.00 Content Count: 213 Reputation: 24 Joined: 01/14/13 Last Seen: Thursday at 07:00 PM Share Posted January 16, 2021 If someone looking for a working diff on latest rA. https://github.com/coookie1010/Server-Patches/blob/main/rA-whosell.diff 2 Quote Link to comment Share on other sites More sharing options...
kalabasa Posted February 1, 2021 Group: Members Topic Count: 123 Topics Per Day: 0.05 Content Count: 478 Reputation: 14 Joined: 11/30/17 Last Seen: January 23 Share Posted February 1, 2021 can you add commas for the prices Quote Link to comment Share on other sites More sharing options...
fzxree1010 Posted March 2 Group: Members Topic Count: 5 Topics Per Day: 0.00 Content Count: 27 Reputation: 2 Joined: 11/17/16 Last Seen: 12 hours ago Share Posted March 2 On 1/16/2021 at 6:07 PM, hikashin-rae said: If someone looking for a working diff on latest rA. https://github.com/coookie1010/Server-Patches/blob/main/rA-whosell.diff Your link is not working anymore. is there a new link for this? thank you Quote Link to comment Share on other sites More sharing options...
hikashin-rae Posted March 3 Group: Members Topic Count: 18 Topics Per Day: 0.00 Content Count: 213 Reputation: 24 Joined: 01/14/13 Last Seen: Thursday at 07:00 PM Share Posted March 3 20 hours ago, fzxree1010 said: Your link is not working anymore. is there a new link for this? thank you I tookdown all of my git for my own safety too Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.