Jump to content
  • 0
Dduwsmitt

Euphy's Card Trader, for Hercules

Question

//===== 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  :( . but no errors on script

Edited by Mumbles
Codeboxed.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Thank you sir :) , ill try upgrading my emulator :D

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 :D .

seems like this update fixed the problem in the script.

Fixed getarraysize returning incorrect values for character variables
https://github.com/HerculesWS/Hercules/commit/9832e82b0e8dbda38bf4feb18e48cf5335e213ee Edited by Mumbles
Merged double-post.

Share this post


Link to post
Share on other sites
  • 0

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

 

post-4706-0-84509400-1390131258_thumb.jpg

 

post-4706-0-47956900-1390131261_thumb.jpg

it said deal is a success 

post-4706-0-64611100-1390131265_thumb.jpg

 

Still got my drake card

post-4706-0-19021600-1390131268_thumb.jpg

 

Please Help me to make it usable :(

Edited by devilz33

Share this post


Link to post
Share on other sites
  • 0

Seems to work fine. Try giving yourself some zeny and seeing if it still doesn't work.

 

 

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.

Share this post


Link to post
Share on other sites
  • 0

Oh My God! , still not works for me :( ,
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

Edited by devilz33

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
Share on other sites
  • 0

How to add more category in Shop Items

Exmaple:

Usable,Headgear,Equipment,Scroll,Others

 

I guess callsub or arrays ?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.