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);