//npc_buylist for script-controlled shops.
int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
{
char npc_ev[EVENT_NAME_LENGTH];
int i;
int key_nameid = 0;
int key_amount = 0;
nullpo_ret(item_list);
nullpo_ret(nd);
// discard old contents
script->cleararray_pc(sd, "@bought_nameid", (void*)0);
script->cleararray_pc(sd, "@bought_quantity", (void*)0);
// save list of bought items
for (i = 0; i < VECTOR_LENGTH(*item_list); i++) {
struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
intptr_t nameid = entry->id;
intptr_t amount = entry->amount;
script->setarray_pc(sd, "@bought_nameid", i, (void *)nameid, &key_nameid);
script->setarray_pc(sd, "@bought_quantity", i, (void *)amount, &key_amount);
}
// invoke event
snprintf(npc_ev, ARRAYLENGTH(npc_ev), "%s::OnBuyItem", nd->exname);
npc->event(sd, npc_ev, 0);
return 0;
}