viewing paste Unknown #53224 | Text

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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
 
static int korea62conversionmin(int number, char* buf, int min)
{
        char korea62[62] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f',
                'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
                'w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L',
                'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
        int power62[3] = { 62*62, 62, 1 };
        int i = 0, k = 0;
        int count = 0;
 
        for (i = 0; i<3; i++) {
                count = number / power62[i];
                number -= count * power62[i];
                if (count || 3 - i <= min) {
                        buf[k] = korea62[count];
                        k++;
                }
        }
        return k;
}
 
static int korea62conversion(int number, char * buf) {
        return korea62conversionmin(number, buf, 2);
}
 
// you may need to change to <ITEM> and </ITEM> for this client version!
 
void itemdb_linkcreate(char* buf, struct item *item)
{
        int i = 9, k;
        struct item_data * id;
 
        if (item == NULL || !(id = itemdb_search(item->nameid))) {
                return;
        }
        strcat(buf, "<ITEML>00"); //start link
        i += korea62conversionmin(id->equip, buf + i, 3); // itemtype
        if (id->equip)
                buf[i] = '1';
        else
                buf[i] = '0';
        i += korea62conversion(item->nameid, buf + i + 1) + 1;
        if (item->refine) {
                buf[i] = '%';
                i += korea62conversion(item->refine, buf + i + 1) + 1;
        }
        buf[i] = '&';
        i += korea62conversion(id->view_id, buf + i + 1) + 1;
        for (k = 0; k<4; k++)
        {
                if (item->card[k]) {
                        buf[i] = '(';
                        i += korea62conversion(item->card[k], buf + i + 1) + 1;
                }
                else {
                        buf[i] = '(';
                        buf[i + 1] = '0';
                        buf[i + 2] = '0';
                        i += 3;
                }
        }
        for (k = 0; k < MAX_ITEM_RDM_OPT; k++)
        {
                if (item->option[k].id) {
                        buf[i] = '*';
                        i += korea62conversion(item->option[k].id, buf + i + 1) + 1;
                        buf[i] = '+';
                        i += korea62conversion(item->option[k].param, buf + i + 1) + 1;
                        buf[i] = ',';
                        i += korea62conversion(item->option[k].value, buf + i + 1) + 1;
                }
        }
 
 
        strcat(buf, "</ITEML>"); //end link
}
 
void itemdb_idlinkcreate(char* buf, int nameid) 
{
        struct item item_tmp;
        int i;
 
        item_tmp.nameid = nameid;
        item_tmp.refine = 0;
        for (i = 0; i < MAX_SLOTS; i++)
                item_tmp.card[i] = 0;
        for (i = 0; i < MAX_ITEM_RDM_OPT; i++) {
                item_tmp.option[i].id = 0;
                item_tmp.option[i].param = 0;
                item_tmp.option[i].value = 0;
        }
        itemdb_linkcreate(buf, &item_tmp);
}
 
 
usage:
 
char itemlink[CHAT_SIZE_MAX] = "";
itemdb_idlinkcreate(itemlink, mob->dropitem[i].nameid);
Viewed 170 times, submitted by Guest.