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 and 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, "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, ""); //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);