Jump to content
  • 0

MVP Card trader


pajodex

Question


  • Group:  Members
  • Topic Count:  78
  • Topics Per Day:  0.03
  • Content Count:  431
  • Reputation:   164
  • Joined:  12/12/17
  • Last Seen:  

Hi,

I'm having problem in modifying Euphy's Card Trader NPC Download: Card Trader v1.1

I want to modify it to this:

  • instead of points, npc will give an item (ex: 501)
class 1 cards : npc wont give any iem and will say "I wont accept trash"
class 2 cards : npc will give item (501) for random amount 1 -3
class 3 cards : npc will give item (501) for random amount 3-5
class 4 cards : npc will give item (501) for random amount 5-10

I can carry out other modifications. Thanks

  • Upvote 1
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  78
  • Topics Per Day:  0.03
  • Content Count:  431
  • Reputation:   164
  • Joined:  12/12/17
  • Last Seen:  

@GodKnows Jhomz   Hi, I was able to do it my self. Working fine I guess? Can you check it for optimization? I will still clean this up in a while 

prontera,140,160,4	script	Black Market NPC	10044,{
	mes "[^995050Black Market NPC^000000]";
	mes "Hi, "+strcharinfo(0)+"!";
	mes "What can I do for you?";
	next;
	switch(select(" > Information: > Trade in cards: > Leave")) { // : > Point shop (^0055FF"+getd(.Points$)+"^000000)
	case 1:
		mes "[^995050Black Market NPC^000000]";
		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 "[^995050Black Market NPC^000000]";
		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 "[^995050Black Market NPC^000000]";
		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 "[^995050Black Market NPC^000000]";
//		mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s.");
//		callshop "card_shop",1;
//		npcshopattach "card_shop";
//		end;
	case 3:
		mes "[^995050Black Market NPC^000000]";
		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 | @sold_nameid[.@i] > 33000 && @sold_nameid[.@i] < 33006) {
			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 .@class2, compare(.class2$,""+@sold_nameid[.@i]);
			set .@class3, compare(.class3$,""+@sold_nameid[.@i]);
			set .@class4, compare(.class4$,""+@sold_nameid[.@i]);
			mes ((.@class2 || .@class3 || .@class4)?"  ^FF0000":"  ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000";
			if(.@class2) { .@class=1; }
			else if(.@class3) { .@class=2; }
			else if(.@class4) { .@class=3; }
			else { .@class=0; mes "DONT SELL ME CRAP I WILL TEAR THIS DOWN!"; close2; end; } 
			set .@card_total, .@card_total+ ( @sold_quantity[.@i]* .Points[.@class] );
		}
	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 "-----------------------------------";
	mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------";
	next;
	if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) {
		mes "[^995050Black Market NPC^000000]";
		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;
	getitem 501, getd(.Points$)+.@card_total;
	mes "[^995050Black Market NPC^000000]";
	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 "[^995050Black Market NPC^000000]";
		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$,"#TESTPOINTS";	// Variable to store points.
	setarray .Shop[0],		// Card Shop items: <ID>,<point cost>
	  5027,10, 18505,10, 5176,10, 5305,20;

	//setarray .Points[0],5,100;	// Points per <normal card>,<MVP card>
	setarray .Points[0],0,rand(5,11),rand(1,3),rand(8,20);	// Points per <Class 1>,<Class 2>,<Class 3>,<Class 4>
	
	set .class2$,
		"4441,4408,4263,4168,4430,4342,4318,4407,4399,4302,4560,4561,4562,4563,4564,4565,4566,4324,4386,4276,4334,4174";
		
	set .class3$,
		"4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,"+
		"4236,4305,4330,4357,4359,4361,4363,4365,4403";
		
	set .class4$,	
		"33000,33001,33002,33003,33004,33005,33006";
	
	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

 

Edited by pajodex
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  333
  • Reputation:   67
  • Joined:  09/05/12
  • Last Seen:  

1 hour ago, pajodex said:

Hi,

I'm having problem in modifying Euphy's Card Trader NPC Download: Card Trader v1.1

I want to modify it to this:

  • instead of points, npc will give an item (ex: 501)

class 1 cards : npc wont give any iem and will say "I wont accept trash"
class 2 cards : npc will give item (501) for random amount 1 -3
class 3 cards : npc will give item (501) for random amount 3-5
class 4 cards : npc will give item (501) for random amount 5-10

I can carry out other modifications. Thanks

Done. Tested and works fine. (Not yet applied Class Cards)
 

//===== 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"+getitemname(.Item)+"^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]+" "+getitemname(.Item)+""+((.Points[0] == 1)?"":"s")+"^000000 for each";
		mes "card you give me, and";
		mes "^0055FF"+.Points[1]+" "+getitemname(.Item)+""+((.Points[0] == 1)?"":"s")+"^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"+countitem(.Item)+"^000000 "+((countitem(.Item) == 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];
	getitem .Item,.@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 > countitem(.Item)) {
		mes "[Card Trader]";
		mes "You don't have enough "+getitemname(.Item)+".";
		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 -------";
		delitem .Item,.@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 .Item,501;	// Item to change cards.
	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

 

Edited by GodKnows Jhomz
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  78
  • Topics Per Day:  0.03
  • Content Count:  431
  • Reputation:   164
  • Joined:  12/12/17
  • Last Seen:  

4 minutes ago, GodKnows Jhomz said:

Done. Tested and works fine.

Hi, thank you but you missed this part:

class 1 cards : npc wont give any iem and will say "I wont accept trash"
class 2 cards : npc will give item (501) for random amount 1 -3
class 3 cards : npc will give item (501) for random amount 3-5
class 4 cards : npc will give item (501) for random amount 5-10

I'm currently using the v1.1

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  333
  • Reputation:   67
  • Joined:  09/05/12
  • Last Seen:  

1 minute ago, pajodex said:

Hi, thank you but you missed this part:


class 1 cards : npc wont give any iem and will say "I wont accept trash"
class 2 cards : npc will give item (501) for random amount 1 -3
class 3 cards : npc will give item (501) for random amount 3-5
class 4 cards : npc will give item (501) for random amount 5-10

I'm currently using the v1.1

Yes, sorry bout that. I'm trying to make it right now. ^_^

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  78
  • Topics Per Day:  0.03
  • Content Count:  431
  • Reputation:   164
  • Joined:  12/12/17
  • Last Seen:  

2 minutes ago, GodKnows Jhomz said:

Yes, sorry bout that. I'm trying to make it right now. ^_^

Thanks! Its a big help! I'm having trouble with it for a while now. 

Link to comment
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.   Paste as plain text instead

  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.

×
×
  • Create New...