viewing paste Unknown #5924 | C

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
ACMD_FUNC(item)
{
        char item_name[100];
        int number = 0, item_id, flag, bound = 0;
        struct item item_tmp;
        struct item_data *item_data;
        int get_count, i;
        nullpo_retr(-1, sd);
 
        memset(item_name, '\0', sizeof(item_name));
 
        if (!message || !*message || (
                sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 &&
                sscanf(message, "%99s %d", item_name, &number) < 1
        )) {
                clif_displaymessage(fd, "Please, enter an item name/id (usage: @item <item name or ID> [quantity]).");
                return -1;
        }
 
        if (number <= 0)
                number = 1;
 
        if ((item_data = itemdb_searchname(item_name)) == NULL &&
                (item_data = itemdb_exists(atoi(item_name))) == NULL)
        {
                clif_displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
                return -1;
        }
 
        if( !strcmpi(command+1,"bounditem") )
                bound = 1;
 
        item_id = item_data->nameid;
        get_count = number;
        //Check if it's stackable.
        if( !itemdb_isstackable2(item_data) )
        {
                if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) )
                {
                        clif_displaymessage(fd, "Cannot create bounded pet eggs or pet armors.");
                        return -1;
                }
                get_count = 1;
        }
        else if( bound )
        {
                clif_displaymessage(fd, "Cannot create bounded stackable items.");
                return -1;
        }
 
        if(item_data->flag.trade_restriction&99){
                if(sd->status.account_id != 2000002) //we could move that id in battle conf
                        return -1;
        }
 
        for( i = 0; i < number; i += get_count )
        {
                // if not pet egg
                if( !pet_create_egg(sd, item_id) )
                {
                        memset(&item_tmp, 0, sizeof(item_tmp));
                        item_tmp.nameid = item_id;
                        item_tmp.identify = 1;
                        item_tmp.bound = bound;
 
                        if( (flag = pc_additem(sd, &item_tmp, get_count)) )
                                clif_additem(sd, 0, 0, flag);
                }
 
                //Logs (A)dmins items [Lupus]
                if( log_config.enable_logs&0x400 )
                        log_pick_pc(sd, "A", item_id, get_count, NULL, item_tmp.serial);
 
                item_tmp.serial = 0;
        }
 
        clif_displaymessage(fd, msg_txt(18)); // Item created.
        return 0;
}
Viewed 871 times, submitted by lighta.