ACMD(itemmap) {
char item_name[100], party_name[NAME_LENGTH], guild_name[NAME_LENGTH];
int amount, get_type = 0, get_count, i, map;
struct item it;
struct item_data *item_data;
struct party_data *p;
struct guild *g;
struct s_mapiterator *iter = NULL;
struct map_session_data *pl_sd = NULL;
if (!sd) return false;
memset(item_name, '\0', sizeof(item_name));
memset(party_name, '\0', sizeof(party_name));
memset(guild_name, '\0', sizeof(guild_name));
if (strstr(command, "1") != NULL)
get_type = 1;
else if (strstr(command, "2") != NULL)
get_type = 2;
if (!message || !*message || (
get_type == 0 && sscanf(message, "\"%99[^\"]\" %d", item_name, &amount) < 1
&& sscanf(message, "%99s %d", item_name, &amount) < 1 )
) {
clif->message(fd, "Please, enter an item name/id (usage: @itemmap <item name or ID> {amount}).");
return false;
}
if ( get_type == 1 && sscanf(message, "\"%99[^\"]\" %d, %23[^\n]", item_name, &amount, party_name) < 2
&& sscanf(message, "%99s %d, %23[^\n]", item_name, &amount, party_name) < 2 )
{
clif->message(fd, "Please, enter an item name/id (usage: @itemmap1 <item id/name> <amount>, <party name>).");
return false;
}
if ( get_type == 2 && sscanf(message, "\"%99[^\"]\" %d, %23[^\n]", item_name, &amount, guild_name) < 2
&& sscanf(message, "%99s %d, %23[^\n]", item_name, &amount, guild_name) < 2 )
{
clif->message(fd, "Please, enter an item name/id (usage: @itemmap2 <item id/name> <amount>, <guild name>).");
return false;
}
if ((item_data = itemdb->search_name(item_name)) == NULL &&
(item_data = itemdb->exists(atoi(item_name))) == NULL)
{
clif->message(fd,"Invalid item ID or name."); // Invalid item ID or name.
return false;
}
memset(&it, 0, sizeof(it));
it.nameid = item_data->nameid;
if (amount <= 0)
amount = 1;
//Check if it's stackable.
if (!itemdb->isstackable2(item_data))
get_count = 1;
else
get_count = amount;
it.identify = 1;
map = sd->bl.m;
switch(get_type)
{
case 1:
if( (p = party->searchname(party_name)) == NULL )
{
clif->message(fd,"Incorrect name/ID, or no one from the specified party is online."); // Incorrect name or ID, or no one from the party is online.
return false;
}
for( i=0; i < MAX_PARTY; i++ )
if( p->data[i].sd && map == p->data[i].sd->bl.m )
pc_getitem_map(p->data[i].sd,it,amount,get_count,LOG_TYPE_COMMAND);
break;
case 2:
if( (g = guild->searchname(guild_name)) == NULL )
{
clif->message(fd,"Incorrect name/ID, or no one from the specified guild is online."); // Incorrect name/ID, or no one from the guild is online.
return false;
}
for( i=0; i < g->max_member; i++ )
if( g->member[i].sd && map == g->member[i].sd->bl.m )
>>>>> ERROR pc_getitem_map pc_getitem_map(g->member[i].sd,it,amount,get_count,LOG_TYPE_COMMAND);
break;
case 3:
iter = mapit_getallusers();
for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) {
if( map != pl_sd->bl.m )
continue;
pc_getitem_map(pl_sd,it,amount,get_count,LOG_TYPE_COMMAND);
}
mapit->free(iter);
break;
}
clif->message(fd,"Item created"); // Item created.
return true;
clif->message(fd,"Item created"); // Item created.
return true;
}