
- Optimized Poison Herb Salesman since an optimized version already exist. (Tested and Approved) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15221 54d463be-8e91-2dee-dedb-b68131a5f0ec
521 lines
14 KiB
Plaintext
521 lines
14 KiB
Plaintext
//===== rAthena Script =======================================
|
|
//= 3rd Item Seller
|
|
//===== By: ==================================================
|
|
//= Masao
|
|
//= Mercurial
|
|
//===== Current Version: =====================================
|
|
//= 1.1
|
|
//===== Compatible With: =====================================
|
|
//= 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::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)
|
|
{
|
|
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 .npcName$;
|
|
mes "I am the professional";
|
|
mes "poison herb seller.";
|
|
mes "Which one do you want?";
|
|
mes "They cost "+.herbCost[0]+" zeny each!";
|
|
set .herbType,select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit")-1;
|
|
next;
|
|
if(.herbType==(getarraysize(.herbs)-1))
|
|
{
|
|
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."))
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
mes .npcName$;
|
|
mes "How many do you want? You can";
|
|
mes "only buy a maximum of "+.maxHerbs+" ea";
|
|
mes "and if you want to cancel, enter '0'.";
|
|
input .herbsCount;
|
|
if(.herbsCount<=0) // check if player canceled herb purchase
|
|
{
|
|
next;
|
|
mes .npcName$;
|
|
mes "You've cancelled the trade.";
|
|
close;
|
|
}
|
|
else if(.herbsCount>.maxHerbs) // checks if herbs count exceeds maxHerbs limit
|
|
{
|
|
next;
|
|
mes .npcName$;
|
|
mes "Please check the maximum";
|
|
mes "amount and then try again.";
|
|
close;
|
|
}
|
|
else if(.herbsCount+countitem(.herbs[.herbType]) > .maxItemStack) // Check item stack according to Aegis script
|
|
{
|
|
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;
|
|
}
|
|
else
|
|
{
|
|
if(Zeny<(.herbsCount*.herbCost)) // Check if Zeny is enough
|
|
{
|
|
next;
|
|
mes .npcName$;
|
|
mes "Please check the money you have.";
|
|
mes "It doesn't seem like you have enough money.";
|
|
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)
|
|
{
|
|
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 "[Rune Salesman]";
|
|
mes "Hey, do you need Runes?!";
|
|
mes "I sell all kinds of Rune Stones!";
|
|
mes "What kind of Rune do you want?";
|
|
next;
|
|
switch(select("Buy high-quality Rune Stones.:Buy ordinary Rune Stones."))
|
|
{
|
|
case 1:
|
|
mes "[Rune Salesman]";
|
|
mes "High-quality Runes!";
|
|
mes "They cost 2,500 zeny each!";
|
|
mes "Tell me how many you want to buy";
|
|
mes "and remember, you can only";
|
|
mes "buy a maximum amount of 2000 ea!";
|
|
next;
|
|
input .@amount;
|
|
if(.@amount == 0)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "You're not buying? Go away!";
|
|
close;
|
|
}
|
|
else if(.@amount > 2000)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "Please check the maximum";
|
|
mes "amount and then come back to me again!";
|
|
close;
|
|
}
|
|
else if(Zeny < .@amount * 2500)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "Money! Money!";
|
|
mes "You are short of money!";
|
|
mes "Check the amount of money you have!!";
|
|
close;
|
|
}
|
|
set .@checkweight,.@amount * 100;
|
|
if (MaxWeight < .@checkweight)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "You're not able to carry it, so why are you trying to buy it?!";
|
|
close;
|
|
}
|
|
set Zeny,Zeny - .@amount * 2500;
|
|
getitem 12734,.@amount;
|
|
mes "[Rune Salesman]";
|
|
mes "You can buy more again.";
|
|
mes "So, see you later.";
|
|
close;
|
|
case 2:
|
|
mes "[Rune Salesman]";
|
|
mes "Ordinary Rune Stones?";
|
|
mes "They cost 1,000 zeny each!";
|
|
mes "Tell me how many you want to buy";
|
|
mes "and remember, you can only";
|
|
mes "buy a maximum amount of 2000 ea!";
|
|
next;
|
|
input .@amount;
|
|
if(.@amount == 0)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "You're not buying? Go away!";
|
|
close;
|
|
}
|
|
else if(.@amount > 2000)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "Please check the maximum";
|
|
mes "amount and then come back to me again!";
|
|
close;
|
|
}
|
|
else if(Zeny < .@amount * 1000)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "Money! Money!";
|
|
mes "You are short of money!";
|
|
mes "Check the amount of money you have!!";
|
|
close;
|
|
}
|
|
set .@checkweight,.@amount * 100;
|
|
if (MaxWeight < .@checkweight)
|
|
{
|
|
mes "[Rune Salesman]";
|
|
mes "You're not able to carry it, so why are you trying to buy it?!";
|
|
close;
|
|
}
|
|
set Zeny,Zeny - .@amount * 1000;
|
|
getitem 12737,.@amount;
|
|
mes "[Rune Salesman]";
|
|
mes "You can buy more again.";
|
|
mes "So, see you later.";
|
|
close;
|
|
}
|
|
}
|
|
|
|
job3_guil01,91,93,3 script Rare Herb Collector 49,{
|
|
|
|
if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
|
|
{
|
|
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 (Class == 4059 || Class == 4065)
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "I wander around the world and collect rare poison herbs. Recently, I am dealing in the herb called Izidor. If you are interested, you can buy them.";
|
|
next;
|
|
switch(select("How can I buy them?:Exchange it with Animal Blood:Exchange it with a Bitter Herb:Exchange it with a Deadly Noxious Herb:Exchange it with a Frozen Rose:Exchange it with Ment:Exchange it with Hinalle"))
|
|
{
|
|
case 1:
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "You can buy any of those items for 10,000 zeny: Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or Hinalle. ";
|
|
next;
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Why I ask for money? That is just to pay a little respect to a collector like me. Ha ha ha...";
|
|
close;
|
|
case 2:
|
|
if ((countitem(702) > 0) && (Zeny > 9999))
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Thank you. I've received your payment.";
|
|
delitem 702,1;
|
|
set Zeny,Zeny - 10000;
|
|
getitem 709,1;
|
|
close;
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Hey, try again after you've prepared all the requirements for the exchange.";
|
|
close;
|
|
case 3:
|
|
if ((countitem(621) > 0) && (Zeny > 9999))
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Thank you. I've received your payment.";
|
|
delitem 621,1;
|
|
set Zeny,Zeny - 10000;
|
|
getitem 709,1;
|
|
close;
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Hey, try again after you've prepared all the requirements for the exchange.";
|
|
close;
|
|
case 4:
|
|
if ((countitem(631) > 0) && (Zeny > 9999))
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Thank you. I've received your payment.";
|
|
delitem 631,1;
|
|
set Zeny,Zeny - 10000;
|
|
getitem 709,1;
|
|
close;
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Hey, try again after you've prepared all the requirements for the exchange.";
|
|
close;
|
|
case 5:
|
|
if ((countitem(749) > 0) && (Zeny > 9999))
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Thank you. I've received your payment.";
|
|
delitem 749,1;
|
|
set Zeny,Zeny - 10000;
|
|
getitem 709,1;
|
|
close;
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Hey, try again after you've prepared all the requirements for the exchange.";
|
|
close;
|
|
case 6:
|
|
if ((countitem(605) > 0) && (Zeny > 9999))
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Thank you. I've received your payment.";
|
|
delitem 605,1;
|
|
set Zeny,Zeny - 10000;
|
|
getitem 709,1;
|
|
close;
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Hey, try again after you've prepared all the requirements for the exchange.";
|
|
close;
|
|
case 7:
|
|
if ((countitem(703) > 0) && (Zeny > 9999))
|
|
{
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Thank you. I've received your payment.";
|
|
delitem 703,1;
|
|
set Zeny,Zeny - 10000;
|
|
getitem 709,1;
|
|
close;
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "Hey, try again after you've prepared all the requirements for the exchange.";
|
|
close;
|
|
}
|
|
}
|
|
mes "[Rare Poison Herb Collector]";
|
|
mes "I wander around the world and collect rare poison herbs. But I don't feel like selling my herbs to a person like you... ha ha ha...";
|
|
close;
|
|
}
|
|
|
|
gef_tower,105,172,5 script Point Salesman#Sorcerer 700,{
|
|
|
|
if(checkweight(1201,1) == 0 || MaxWeight - Weight < 20000)
|
|
{
|
|
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 "[Point Salesman]";
|
|
mes "Hello. I'm selling a catalyst that are called ^FF0000Points^000000 for Sorcerers. What would you like?";
|
|
next;
|
|
switch(select("Scarlet Points - 200z:Lime Green Points - 200z:Indigo Points - 200z:Yellow Wish Points - 200z:Cancel"))
|
|
{
|
|
case 1:
|
|
mes "[Point Salesman]";
|
|
mes "You have chosen Scarlet Points.";
|
|
mes "How many do you want?";
|
|
mes "If you want to cancel, enter 0.";
|
|
next;
|
|
input .@amount;
|
|
if (.@amount == 0)
|
|
{
|
|
mes "[Point Salesman]";
|
|
mes "You've cancelled the trade.";
|
|
close;
|
|
}
|
|
set .@po_weight,.@amount * 10;
|
|
set .@tt_weight,MaxWeight - .@po_weight;
|
|
set .@po_money,.@amount * 200;
|
|
if (.@tt_weight > 0)
|
|
{
|
|
if (Zeny >= .@po_money)
|
|
{
|
|
set Zeny,Zeny - .@po_money;
|
|
getitem 6360,.@amount;
|
|
mes "[Point Salesman]";
|
|
mes "Thank you very much. See you~!";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't seem to have enough money.";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't have enough space in your inventory to buy this amount.";
|
|
close;
|
|
case 2:
|
|
mes "[Point Salesman]";
|
|
mes "You have chosen Lime Green Points.";
|
|
mes "How many do you want?";
|
|
mes "If you want to cancel, enter 0.";
|
|
next;
|
|
input .@amount;
|
|
if (.@amount == 0)
|
|
{
|
|
mes "[Point Salesman]";
|
|
mes "You've cancelled the trade.";
|
|
close;
|
|
}
|
|
set .@po_weight,.@amount * 10;
|
|
set .@tt_weight,MaxWeight - .@po_weight;
|
|
set .@po_money,.@amount * 200;
|
|
if (.@tt_weight > 0)
|
|
{
|
|
if (Zeny >= .@po_money)
|
|
{
|
|
set Zeny,Zeny - .@po_money;
|
|
getitem 6363,.@amount;
|
|
mes "[Point Salesman]";
|
|
mes "Thank you very much. See you~!";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't seem to have enough money.";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't have enough space in your inventory to buy this amount.";
|
|
close;
|
|
case 3:
|
|
mes "[Point Salesman]";
|
|
mes "You have chosen Indigo Points.";
|
|
mes "How many do you want?";
|
|
mes "If you want to cancel, enter 0.";
|
|
next;
|
|
input .@amount;
|
|
if (.@amount == 0)
|
|
{
|
|
mes "[Point Salesman]";
|
|
mes "You've cancelled the trade.";
|
|
close;
|
|
}
|
|
set .@po_weight,.@amount * 10;
|
|
set .@tt_weight,MaxWeight - .@po_weight;
|
|
set .@po_money,.@amount * 200;
|
|
if (.@tt_weight > 0)
|
|
{
|
|
if (Zeny >= .@po_money)
|
|
{
|
|
set Zeny,Zeny - .@po_money;
|
|
getitem 6361,.@amount;
|
|
mes "[Point Salesman]";
|
|
mes "Thank you very much. See you~!";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't seem to have enough money.";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't have enough space in your inventory to buy this amount.";
|
|
close;
|
|
case 4:
|
|
mes "[Point Salesman]";
|
|
mes "You have chosen Yellow Wish Points.";
|
|
mes "How many do you want?";
|
|
mes "If you want to cancel, enter 0.";
|
|
next;
|
|
input .@amount;
|
|
if (.@amount == 0)
|
|
{
|
|
mes "[Point Salesman]";
|
|
mes "You've cancelled the trade.";
|
|
close;
|
|
}
|
|
set .@po_weight,.@amount * 10;
|
|
set .@tt_weight,MaxWeight - .@po_weight;
|
|
set .@po_money,.@amount * 200;
|
|
if (.@tt_weight > 0)
|
|
{
|
|
if (Zeny >= .@po_money)
|
|
{
|
|
set Zeny,Zeny - .@po_money;
|
|
getitem 6362,.@amount;
|
|
mes "[Point Salesman]";
|
|
mes "Thank you very much. See you~!";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't seem to have enough money.";
|
|
close;
|
|
}
|
|
mes "[Point Salesman]";
|
|
mes "You don't have enough space in your inventory to buy this amount.";
|
|
close;
|
|
case 5:
|
|
mes "[Point Salesman]";
|
|
mes "You can't find the stuff you need?";
|
|
close;
|
|
}
|
|
}
|
|
|
|
|
|
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 |