Euphy's Card Trader, for Hercules

Dduwsmitt

New member
Messages
59
Points
0
Emulator
Client Version
2019-05-30aRagexeRE
//===== rAthena Script =======================================//= Card Trader//===== By: ==================================================//= Euphy//===== Current Version: =====================================//= 1.1 //===== Compatible With: =====================================//= rAthena SVN//===== Description: =========================================//= Exchange cards for points.//============================================================ prontera,165,196,6 script Card Trader 90,{ mes "[Card Trader]"; mes "Hi, "+strcharinfo(0)+"!"; mes "What can I do for you?"; next; switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) { case 1: mes "[Card Trader]"; mes "Do you find that you've got"; mes "useless cards lying around?"; mes "I'll be glad to take them off"; mes "your hands!"; next; mes "[Card Trader]"; mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each"; mes "card you give me, and"; mes "^0055FF"+.Points[1]+" Points^000000 for MVP cards."; mes "You can trade those points"; mes "for items later on."; mes "How does that sound?"; emotion e_cash; close; case 2: mes "[Card Trader]"; mes "Select the cards you"; mes "want to trade in."; if (.Level) { mes " "; mes "They must be dropped"; mes "by monsters of level"; mes .Level+" and above."; } deletearray @sold_nameid[0],getarraysize(@sold_nameid); callshop "card_shop",2; npcshopattach "card_shop"; end; case 3: mes "[Card Trader]"; mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s."); callshop "card_shop",1; npcshopattach "card_shop"; end; case 4: mes "[Card Trader]"; mes "*yawn*"; mes "See you later!"; emotion e_yawn; close; } OnSellItem: mes "Cards to sell:"; mes "-----------------------------------"; for(set .@i,0; .@i<getarraysize(@sold_nameid); set .@i,.@i+1) if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) { if (.Level) { query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i],.@lv); if (.@lv < .Level) { dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level."; continue; } } set .@card_id[getarraysize(.@card_id)], @sold_nameid[.@i]; set .@card_amt[getarraysize(.@card_amt)], @sold_quantity[.@i]; set .@mvp, compare(.MVP$,""+@sold_nameid[.@i]); mes ((.@mvp)?" ^FF0000":" ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000"; set .@card_total, .@card_total+(@sold_quantity[.@i]*((.@mvp)?.Points[1]:.Points[0])); } deletearray @sold_nameid[0], getarraysize(@sold_nameid); deletearray @sold_quantity[0], getarraysize(@sold_quantity); if (!.@card_id) { mes " ^777777(none)^000000"; emotion e_swt; close; } mes " "; mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------"; next; if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) { mes "[Card Trader]"; mes "Oh, okay..."; emotion e_hmm; close; } for(set .@i,0; .@i<getarraysize(.@card_id); set .@i,.@i+1) delitem .@card_id[.@i],.@card_amt[.@i]; setd .Points$, getd(.Points$)+.@card_total; mes "[Card Trader]"; mes "All done!"; emotion e_ho; close; OnBuyItem: for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2) if (@bought_nameid[.@i] == .Shop[.@j]) { set .@cost, .@cost+(.Shop[.@j+1]*@bought_quantity[.@i]); break; } if (.@cost > getd(.Points$)) { mes "[Card Trader]"; mes "You don't have enough Points."; emotion e_omg; } else { mes "Items purchased:"; mes "-----------------------------------"; for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) { getitem @bought_nameid[.@i], @bought_quantity[.@i]; mes " ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000"; } mes " "; mes "---------- Total: ^0055FF"+.@cost+" pt.^000000 -------"; setd .Points$, getd(.Points$)-.@cost; emotion e_cash; } deletearray @bought_nameid[0], getarraysize(@bought_nameid); deletearray @bought_quantity[0], getarraysize(@bought_quantity); close; OnInit: set .Level,0; // Minimum monster level to trade corresponding cards. set .Points$,"#Card_Points"; // Variable to store points. setarray .Shop[0], // Card Shop items: <ID>,<point cost> 4001,1,4004,1,4033,1,4196,1,4197,25,4054,50,4174,75,4047,100; setarray .Points[0],1,5; // Points per <normal card>,<MVP card> set .MVP$, // List of MVP cards. "4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,4168,4236,"+ "4241,4263,4276,4302,4305,4318,4324,4330,4342,4357,4359,4361,4363,4365,4399,4403,4407"; npcshopdelitem "card_shop",909; for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2) npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1]; end;}- shop card_shop -1,909:-1

i cant make it to work on my server, it does not accept the cards that i sell 
default_sad.png
 . but no errors on script

 
Last edited by a moderator:
Works just fine as-is. I'm able to sell and purchase cards without an issue.

 
Its working to me too , but it does not give points, and it does not delete the card .

its saying the deal is completed but , nothing actualy happened xD

screenHercules022.jpg

screenHercules023.jpg

it said deal is a success 

screenHercules024.jpg

Still got my drake card

screenHercules026.jpg

Please Help me to make it usable
default_sad.png


 
Last edited by a moderator:
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.

Here's my copy of the script; there are no differences in functionality from yours: http://upaste.me/1727999529afe4d9

Note:

There's a segment towards the end where I give myself 1000 card points using one of my utilities; I didn't feel like selling 1000 Poring Cards or so, but every other functionality of the script is demonstrated in this video.


Additionally, I edited the topic title for improved readability.

 
Last edited by a moderator:
Oh My God! , still not works for me
default_sad.png
,
i copied your script , 

well theres a a little difference from mine in this line mine :

npcshopdelitem "card_shop",909;
for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2)
npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1];
end;
 
yours :
npcshopdelitem "card_shop",909;
for(set .@i,0; .@i < getarraysize(.Shop); set .@i,.@i+2)
npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1];
end;

but still  . . .
i think its my version of hercules, what version are you using sir Mumbles?
im using the latest trunk i downloaded last jan 12 .

-- edit
The Script always stops here
 

if (!.@card_id) {
mes "  ^777777(none)^000000";
emotion e_swt;
close;
}
 

it always add that none, when i sell 
 
-- edit
I deleted that line, and it continues to this line when im selling cards
 

mes " ";
mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------";
next;
if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) {
mes "[Card Trader]";
mes "Oh, okay...";
emotion e_hmm;
close;
}
BUT when i select Complete trade, it does not continue , there goes a stuck windows, i cant close it

 
Last edited by a moderator:
I always pull the latest builds when testing, so as of that posting I was at 284a163 (18 Jan 2014, 20:59). The differences in my version of Euphy's script are minimal, and don't impact any functionality whatsoever; they're just vanity changes I made while reading the script because I find it highly annoying when people don't put spaces between operators.

By removing that section, you're deleting the check that determines if your item sold was a card. I'm not sure what to tell you other than that you might not have enough zeny to process a transaction (i.e. you need 100z on your character to buy a Ghostring Card, even though it won't take it) - that's just how it works. I'm not sure if it'd be relevant since your problem is with selling items, but perhaps the variables aren't even being stored.

This issue might arise when your emulator is attempting to read from a nonexistent global_reg_value table in the database, since we changed those to char/acc* _reg_num_db and _reg_str_db. Try updating your emulator, and don't forget to run your upgrade SQL files as well (from sql-files/upgrades/); if you had Hercules prior to 1 January and updated your emulator, you'll need to run SQL updates too. Run the char-server by itself to see which ones you need.

 
Last edited by a moderator:
Thank you sir
default_smile.png
, ill try upgrading my emulator
default_biggrin.png


Question , If i update my emulator , will it retain all the changes ive made in the emulator?


i have updated my emulator, and now its working!
Thank you! sir Mumbles
default_biggrin.png
.

seems like this update fixed the problem in the script.

Fixed getarraysize returning incorrect values for character variables
https://github.com/HerculesWS/Hercules/commit/9832e82b0e8dbda38bf4feb18e48cf5335e213eehttps://github.com/HerculesWS/Hercules/commit/9832e82b0e8dbda38bf4feb18e48cf5335e213ee
 
Last edited by a moderator:
Guess I should have gone through the commit log. Glad you resolved your own issue by updating. d:

 
Back
Top