|
@@ -1,259 +1,145 @@
|
|
|
-//===== eAthena Script =======================================
|
|
|
+//===== rAthena Script =======================================
|
|
|
//= 3rd Item Seller
|
|
|
//===== By: ==================================================
|
|
|
//= Masao
|
|
|
+//= Mercurial
|
|
|
//===== Current Version: =====================================
|
|
|
-//= 1.0
|
|
|
+//= 1.1
|
|
|
//===== Compatible With: =====================================
|
|
|
-//= eAthena SVN
|
|
|
+//= rAthena SVN
|
|
|
//===== Description: =========================================
|
|
|
//= [Aegis Conversion]
|
|
|
//= Sells some 3rd Job related Items.
|
|
|
//===== Additional Comments: =================================
|
|
|
+//= v1.1 Optimized Poison Herb Salesman NPC
|
|
|
//= v1.0 First Version.
|
|
|
//============================================================
|
|
|
|
|
|
-job3_guil01,79,96,3 script Poison Herb Salesman::phsale 877,{
|
|
|
|
|
|
- if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
|
|
|
+job3_guil01,79,96,3 script Poison Herb Salesman::PHS 877,{
|
|
|
+
|
|
|
+ // We are unsure about agis script command equivalent please refer to 3rd_trader.sc line 3
|
|
|
+ //if( (countitem(1201)>=30000) || checkweight() )
|
|
|
+
|
|
|
+ for(set .x,0; .x<getarraysize(.herbs); set .x,.x+1)
|
|
|
{
|
|
|
- mes "- Wait a minute !! -";
|
|
|
- mes "- Currently you're carrying -";
|
|
|
- mes "- too many items with you. -";
|
|
|
- mes "- Please try again -";
|
|
|
- mes "- after you loose some weight. -";
|
|
|
- close;
|
|
|
+ if(!checkweight(.herbs[.x],.maxHerbs))
|
|
|
+ {
|
|
|
+ mes "- Wait a minute !! -";
|
|
|
+ mes "- Currently you're carrying -";
|
|
|
+ mes "- too many items with you. -";
|
|
|
+ mes "- Please try again -";
|
|
|
+ mes "- after you loose some weight. -";
|
|
|
+ close;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
+
|
|
|
+ mes .npcName$;
|
|
|
mes "I am the professional";
|
|
|
mes "poison herb seller.";
|
|
|
mes "Which one do you want?";
|
|
|
- mes "They cost 4,000 zeny each!";
|
|
|
+ mes "They cost "+.herbCost[0]+" zeny each!";
|
|
|
+ set .herbType,select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit")-1;
|
|
|
next;
|
|
|
- switch(select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit"))
|
|
|
+ if(.herbType==(getarraysize(.herbs)-1))
|
|
|
{
|
|
|
- case 1:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "How many do you want? You can";
|
|
|
- mes "only buy a maximum of 2000ea";
|
|
|
- mes "and if you want to cancel, enter '0'.";
|
|
|
- next;
|
|
|
- input .@amount;
|
|
|
- if(.@amount == 0)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "You've cancelled the trade.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(.@amount > 2000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the maximum";
|
|
|
- mes "amount and then try again.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(Zeny < .@amount * 4000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the money you have,";
|
|
|
- mes "It doesn't seem like you have enough money.";
|
|
|
- close;
|
|
|
- }
|
|
|
- set Zeny,Zeny - .@amount * 4000;
|
|
|
- getitem 7932,.@amount;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 2:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "How many do you want? You can";
|
|
|
- mes "only buy a maximum of 2000ea";
|
|
|
- mes "and if you want to cancel, enter '0'.";
|
|
|
- next;
|
|
|
- input .@amount;
|
|
|
- if(.@amount == 0)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "You've cancelled the trade.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(.@amount > 2000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the maximum";
|
|
|
- mes "amount and then try again.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(Zeny < .@amount * 4000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the money you have,";
|
|
|
- mes "It doesn't seem like you have enough money.";
|
|
|
- close;
|
|
|
- }
|
|
|
- set Zeny,Zeny - .@amount * 4000;
|
|
|
- getitem 7933,.@amount;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 3:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "How many do you want? You can";
|
|
|
- mes "only buy a maximum of 2000ea";
|
|
|
- mes "and if you want to cancel, enter '0'.";
|
|
|
- next;
|
|
|
- input .@amount;
|
|
|
- if(.@amount == 0)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "You've cancelled the trade.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(.@amount > 2000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the maximum";
|
|
|
- mes "amount and then try again.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(Zeny < .@amount * 4000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the money you have,";
|
|
|
- mes "It doesn't seem like you have enough money.";
|
|
|
- close;
|
|
|
- }
|
|
|
- set Zeny,Zeny - .@amount * 4000;
|
|
|
- getitem 7934,.@amount;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 4:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "How many do you want? You can";
|
|
|
- mes "only buy a maximum of 2000ea";
|
|
|
- mes "and if you want to cancel, enter '0'.";
|
|
|
- next;
|
|
|
- input .@amount;
|
|
|
- if(.@amount == 0)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "You've cancelled the trade.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(.@amount > 2000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the maximum";
|
|
|
- mes "amount and then try again.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(Zeny < .@amount * 4000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the money you have,";
|
|
|
- mes "It doesn't seem like you have enough money.";
|
|
|
- close;
|
|
|
- }
|
|
|
- set Zeny,Zeny - .@amount * 4000;
|
|
|
- getitem 7935,.@amount;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 5:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "How many do you want? You can";
|
|
|
- mes "only buy a maximum of 2000ea";
|
|
|
- mes "and if you want to cancel, enter '0'.";
|
|
|
- next;
|
|
|
- input .@amount;
|
|
|
- if(.@amount == 0)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "You've cancelled the trade.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(.@amount > 2000)
|
|
|
- {
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the maximum";
|
|
|
- mes "amount and then try again.";
|
|
|
- close;
|
|
|
- }
|
|
|
- else if(Zeny < .@amount * 4000)
|
|
|
+ mes .npcName$;
|
|
|
+ mes "You can only buy";
|
|
|
+ mes "1 Poison Kit and it costs "+.herbCost[(getarraysize(.herbs)-1)]+" zeny.";
|
|
|
+ mes "Will you buy it?";
|
|
|
+
|
|
|
+ switch(select("Yes, I will.:No, I won't."))
|
|
|
{
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the money you have,";
|
|
|
- mes "It doesn't seem like you have enough money.";
|
|
|
- close;
|
|
|
+ case 1:
|
|
|
+ if(Zeny < .poisHerbCost)
|
|
|
+ {
|
|
|
+ next;
|
|
|
+ mes .npcName$;
|
|
|
+ mes "Please check the money you have.";
|
|
|
+ mes "It doesn't seem like you have enough money.";
|
|
|
+ close;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ set Zeny,Zeny-.poisHerbCost;
|
|
|
+ getitem .herbs[getarraysize(.herbs)-1],1;
|
|
|
+ next;
|
|
|
+ mes .npcName$;
|
|
|
+ mes "Thank you. See you~!";
|
|
|
+ close;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ next;
|
|
|
+ mes "[Poison Herb Salesman]";
|
|
|
+ mes "Well, I see. See you~!";
|
|
|
+ close;
|
|
|
+ break;
|
|
|
}
|
|
|
- set Zeny,Zeny - .@amount * 4000;
|
|
|
- getitem 7936,.@amount;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 6:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mes .npcName$;
|
|
|
mes "How many do you want? You can";
|
|
|
- mes "only buy a maximum of 2000ea";
|
|
|
+ mes "only buy a maximum of "+.maxHerbs+" ea";
|
|
|
mes "and if you want to cancel, enter '0'.";
|
|
|
- next;
|
|
|
- input .@amount;
|
|
|
- if(.@amount == 0)
|
|
|
+ input .herbsCount;
|
|
|
+ if(.herbsCount<=0) // check if player canceled herb purchase
|
|
|
{
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
+ next;
|
|
|
+ mes .npcName$;
|
|
|
mes "You've cancelled the trade.";
|
|
|
close;
|
|
|
}
|
|
|
- else if(.@amount > 2000)
|
|
|
+ else if(.herbsCount>.maxHerbs) // checks if herbs count exceeds maxHerbs limit
|
|
|
{
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
+ next;
|
|
|
+ mes .npcName$;
|
|
|
mes "Please check the maximum";
|
|
|
mes "amount and then try again.";
|
|
|
close;
|
|
|
}
|
|
|
- else if(Zeny < .@amount * 4000)
|
|
|
+ else if(.herbsCount+countitem(.herbs[.herbType]) > .maxItemStack) // Check item stack according to Aegis script
|
|
|
{
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Please check the money you have,";
|
|
|
- mes "It doesn't seem like you have enough money.";
|
|
|
+ mes "- Wait a minute !! -";
|
|
|
+ mes "- Currently you're carrying -";
|
|
|
+ mes "- too many items with you. -";
|
|
|
+ mes "- Please try again -";
|
|
|
+ mes "- after you loose some weight. -";
|
|
|
close;
|
|
|
}
|
|
|
- set Zeny,Zeny - .@amount * 4000;
|
|
|
- getitem 7937,.@amount;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 7:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "You can only buy";
|
|
|
- mes "1 Poison Kit and it costs 5,000 zeny.";
|
|
|
- mes "Will you buy it?";
|
|
|
- next;
|
|
|
- switch(select("Yes, I will.:No, I won't."))
|
|
|
+ else
|
|
|
{
|
|
|
- case 1:
|
|
|
- if(Zeny < 5000)
|
|
|
+ if(Zeny<(.herbsCount*.herbCost)) // Check if Zeny is enough
|
|
|
{
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
+ next;
|
|
|
+ mes .npcName$;
|
|
|
mes "Please check the money you have.";
|
|
|
mes "It doesn't seem like you have enough money.";
|
|
|
close;
|
|
|
}
|
|
|
- set Zeny,Zeny - 5000;
|
|
|
- getitem 7931,1;
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Thank you. See you~!";
|
|
|
- close;
|
|
|
- case 2:
|
|
|
- mes "[Poison Herb Salesman]";
|
|
|
- mes "Well, I see. See you~!";
|
|
|
- close;
|
|
|
+ else // all requirements are met give the item
|
|
|
+ {
|
|
|
+ set Zeny,Zeny-(.herbsCount*.herbCost);
|
|
|
+ getitem .herbs[.herbType],.herbsCount;
|
|
|
+ next;
|
|
|
+ mes .npcName$;
|
|
|
+ mes "Thank you. See you~!";
|
|
|
+ close;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+OnInit:
|
|
|
+// Initialize Item Id's on script engine Init Event
|
|
|
+ set .npcName$,"[Poison Herb Salesman]";
|
|
|
+ setarray .herbs[0],7932,7933,7934,7935,7936,7937,7931;
|
|
|
+ setarray .herbCost[0],4000,4000,4000,4000,4000,4000,5000;
|
|
|
+ set .maxHerbs,2000;
|
|
|
+ set .poisHerbCost,5000;
|
|
|
+ set .maxItemStack,30000;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
job3_rune01,90,62,3 script Rune Salesman::runesale 853,{
|
|
|
|
|
|
if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
|
|
@@ -629,6 +515,7 @@ gef_tower,105,172,5 script Point Salesman#Sorcerer 700,{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-morocc,190,96,4 duplicate(phsale) Poison Herb Salesman#1 877
|
|
|
-lhz_in02,16,205,4 duplicate(phsale) Poison Herb Salesman#2 877
|
|
|
+
|
|
|
+morocc,190,96,4 duplicate(PHS) Poison Herb Salesman#moc 877
|
|
|
+lhz_in02,16,205,4 duplicate(PHS) Poison Herb Salesman#lhz 877
|
|
|
prontera,168,228,3 duplicate(runesale) Rune Salesman#1 853
|