Critica Posted March 4, 2012 Posted March 4, 2012 I CANT USE MY CASHSHOP!!! IM USING 20111122 CLIENT.. UUGHH.. IS THERE A FIX FOR 3CEAM 661 FOR THIS....??? =(( Quote
Lunna Posted March 4, 2012 Posted March 4, 2012 Maybe this work: Open your msgstringstable.txt in your data folder, and in line 1254 , replace for : Do you really want to purchase the selected items? %d points will be deducted from your total Kafra Credit Points.# <Make a backup before change it> Save, open your client & check if it works. Quote
HOSIN Posted March 4, 2012 Posted March 4, 2012 (edited) Special Thank you: zephyrus_cr and judas On npc.c add: /*========================================== * Cash Shop Buy List *------------------------------------------*/ int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, unsigned short* item_list) { int i, j, nameid, amount, new_, w, vt; struct npc_data *nd = (struct npc_data *)map_id2bl(sd-&amp;amp;amp;amp;gt;npc_shopid); if( !nd || nd-&amp;amp;amp;amp;gt;subtype != CASHSHOP ) return 1; if( sd-&amp;amp;amp;amp;gt;state.trading ) return 4; new_ = 0; w = 0; vt = 0; // Global Value // Validating Process ---------------------------------------------------- for( i = 0; i &amp;amp;amp;amp;lt; count; i++ ) { nameid = item_list[i*2+1]; amount = item_list[i*2+0]; if( !itemdb_exists(nameid) || amount &amp;amp;amp;amp;lt;= 0 ) return 5; ARR_FIND(0,nd-&amp;amp;amp;amp;gt;u.shop.count,j,nd-&amp;amp;amp;amp;gt;u.shop.shop_item[j].nameid == nameid); if( j == nd-&amp;amp;amp;amp;gt;u.shop.count || nd-&amp;amp;amp;amp;gt;u.shop.shop_item[j].value &amp;amp;amp;amp;lt;= 0 ) return 5; if( !itemdb_isstackable(nameid) &amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp; amount &amp;amp;amp;amp;gt; 1 ) { ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %d!n", sd-&amp;amp;amp;amp;gt;status.name, sd-&amp;amp;amp;amp;gt;status.account_id, sd-&amp;amp;amp;amp;gt;status.char_id, amount, nameid); amount = item_list[i*2+0] = 1; } switch( pc_checkadditem(sd,nameid,amount) ) { case ADDITEM_NEW: new_++; break; case ADDITEM_OVERAMOUNT: return 3; } vt += nd-&amp;amp;amp;amp;gt;u.shop.shop_item[j].value * amount; w += itemdb_weight(nameid) * amount; } if( w + sd-&amp;amp;amp;amp;gt;weight &amp;amp;amp;amp;gt; sd-&amp;amp;amp;amp;gt;max_weight ) return 3; if( pc_inventoryblank(sd) &amp;amp;amp;amp;lt; new_ ) return 3; if( points &amp;amp;amp;amp;gt; vt ) points = vt; // Payment Process ---------------------------------------------------- if( sd-&amp;amp;amp;amp;gt;kafraPoints &amp;amp;amp;amp;lt; points || sd-&amp;amp;amp;amp;gt;cashPoints &amp;amp;amp;amp;lt; (vt - points) ) return 6; pc_paycash(sd,vt,points); // Delivery Process ---------------------------------------------------- for( i = 0; i &amp;amp;amp;amp;lt; count; i++ ) { struct item item_tmp; nameid = item_list[i*2+1]; amount = item_list[i*2+0]; memset(&amp;amp;amp;amp;amp;item_tmp,0,sizeof(item_tmp)); if( !pet_create_egg(sd,nameid) ) { item_tmp.nameid = nameid; item_tmp.identify = 1; pc_additem(sd,&amp;amp;amp;amp;amp;item_tmp,amount); } if( log_config.enable_logs&amp;amp;amp;amp;amp;0x20 ) log_pick_pc(sd, "S", nameid, amount, NULL); } return 0; } On npc.h add: int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, unsigned short* item_list) And on clic.c replace with: void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) { int fail = 0; struct npc_data *nd; nullpo_retv(sd); if( sd-&amp;amp;amp;gt;state.trading || !sd-&amp;amp;amp;gt;npc_shopid ) fail = 1; else { #if PACKETVER &amp;amp;amp;lt; 20101116 short nameid = RFIFOW(fd,2); short amount = RFIFOW(fd,4); int points = RFIFOL(fd,6); fail = npc_cashshop_buy(sd, nameid, amount, points); #else int len = RFIFOW(fd,2); int points = RFIFOL(fd,4); int count = RFIFOW(fd,8); unsigned short* item_list = (unsigned short*)RFIFOP(fd,10); if( len &amp;amp;amp;lt; 10 || len != 10 + count * 4) { ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!n", sd-&amp;amp;amp;gt;status.char_id, len, 10 + count * 4); return; } fail = npc_cashshop_buylist(sd,points,count,item_list); #endif } clif_cashshop_ack(sd,fail); } And by last, on packet_db.txt //2010-11-24aRagexeRE packet_ver: 26 +0x0288,-1,cashshopbuy,4:8 0x0436,19,wanttoconnection,2:6:10:14:18 NOTE: The msgstringtable.txt may be needed to bypass any gravity errors when purchasing through cash shop. Attached File(s) msgstringtable.txt (64.11K) packet_db.txt (29.77K) Edited March 5, 2012 by Arcenciel Codeboxed Quote
Critica Posted March 5, 2012 Author Posted March 5, 2012 Tnx a lot guyS, it worked.. Uhhmm i got this warning.. btw srcmapclif.c(13796) : warning C4101: 'nd' : unreferenced local variable im not sure if it really affects the game.. but it seems ok tho.. no problem atm.. Quote
Judas Posted March 5, 2012 Posted March 5, 2012 yeah its not harmful, you can probably take that out and it would compile fine Quote
Question
Critica
I CANT USE MY CASHSHOP!!! IM USING 20111122 CLIENT.. UUGHH..
IS THERE A FIX FOR 3CEAM 661 FOR THIS....??? =((
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.