Jump to content
  • 0

MVP Card trader


Question

Posted

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

5 answers to this question

Recommended Posts

  • 0
Posted (edited)

@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
  • 0
Posted (edited)
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
  • 0
Posted
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

  • 0
Posted
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. ^_^

  • 0
Posted
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. 

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...