viewing paste Unknown #53224 | 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 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 564 times, submitted by Guest.