manabeast Posted January 2, 2012 Posted January 2, 2012 (edited) i need a npc that sell item @@" any script can be use? edit: i use found how to add already http://eathena.ws/wiki/index.php/General_Shop_creation The limit for items per shop is 100. You can add more, it will just stop at 100 The prices are a bit odd: -1 means 'read from item_db' and any other amount is an absolute price. If you use absolute prices you open yourself to money exploits, it's best to just make sure all your item_db (SQL or TXT) items are priced! Edited January 4, 2012 by manabeast Quote
GM Takumirai Posted January 2, 2012 Posted January 2, 2012 (edited) You can use the Dynamic Shop NPC Made by Lunar //Made by Lunar //Version 1.6 //6.1.09 - shop quest_shop -1,501:50 prontera,147,173,5, script Dynamic Shop NPC 899,{ set @i,0; mes "[shop Quest NPC]"; mes "Which item do you wish to obtain?"; mes "Select only one."; callshop "quest_shop",1; npcshopattach "quest_shop"; end; OnBuyItem: if(.BuildQuest) { for(set .e,0; !compare(getarg(.e+1),"Zeny"); set .e,.e+2) {} npcshopadditem "quest_shop",getarg(.e+2),getarg(.e)*compare(getarg(.e+1),"SZeny"); setarray .Shop[.i],getarg(.e+2); set .i,.i+1; goto Quest_Setup; } if(.Shop[@i]!=@bought_nameid) for(set @i,1; 1; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set .i,@i; callsub Quest_Setup; } for(set @i,1; !@e; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set @e,1; set .i,@i; callsub Quest_Setup; } mes "[shop Quest NPC]"; mes "I require the following:"; for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) mes "^FF0000" + ((countitem(getarg(@i))>=getarg(@i+1))? "^00FF00":"") + "" + getarg(@i+1) + " " + getitemname(getarg(@i)) + " [" + countitem(getarg(@i)) + "/" + getarg(@i+1) + "]"; if(getarg(@i)) mes "^FF0000" + ((Zeny>=getarg(@i))? "^00FF00":"") + "" + getarg(@i) + " Zeny"; mes "^000000In exchange, I will give you:^0000FF"; for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) mes getarg(@i+1) + " " + getitemname(getarg(@i)); switch(select("Exchange:" + (((((getiteminfo(@bought_nameid,5) & 1) || (getiteminfo(@bought_nameid,5) & 256) || (getiteminfo(@bought_nameid,5) & 512)) && @equip==0))? "Preview Item":"") + ":No thanks")) { case 1: for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) if(countitem(getarg(@i)) < getarg(@i+1)) { next; mes "You have " + countitem(getarg(@i)) + " " + getitemname(getarg(@i)) + ", while I require " + getarg(@i+1) + "."; mes "Please obtain ^FF0000" + (getarg(@i+1)-countitem(getarg(@i))) + " more " + getitemname(getarg(@i)) + "^000000."; close; } if(Zeny < getarg(@i)) { next; mes "You do not have enough Zeny."; mes "Please obtain ^FF0000" + (getarg(@i)-Zeny) + " more Zeny^000000."; close; } for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) delitem getarg(@i),getarg(@i+1); set Zeny,Zeny-getarg(@i); for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) getitem getarg(@i),getarg(@i+1); if (compare(getarg(@i,0),"announce")) announce strcharinfo(0) + " has just obtained " + getitemname(@bought_nameid) + "!",bc_all; close; case 2: set @bottomview, getlook(3); set @topview, getlook(4); set @midview, getlook(5); addtimer 1000, strnpcinfo(3)+"::On_Leave"; set @equip,getiteminfo(@bought_nameid, 5); set @view, getiteminfo(@bought_nameid, 11); if(@equip != -1 && @view > 0) { if(@equip & 1) atcommand "@changelook 3 " + @view; if(@equip & 256) atcommand "@changelook 1 " + @view; if(@equip & 512) atcommand "@changelook 2 " + @view; } next; goto OnBuyItem; case 3: close; } On_Leave: atcommand "@changelook 1 " + @topview; atcommand "@changelook 2 " + @midview; atcommand "@changelook 3 " + @bottomview; set @equip,0; set @view,0; set @topview,0; set @midview,0; set @bottomview,0; end; OnInit: npcshopitem "quest_shop",0,0; set .BuildQuest,1; set .i,1; Quest_Setup: switch(.i) { default: set .BuildQuest,0; set .e,0; set .i,0; end; case 1: callsub OnBuyItem,50,"SZeny",501,1,"announce"; case 2: callsub OnBuyItem,502,1,0,"SZeny",502,1; case 3: callsub OnBuyItem,502,1,1000,"Zeny",504,1,501,1; case 4: callsub OnBuyItem,923,20,1000,"SZeny",2284,1,501,1,"announce"; } } Walking through a setup: Requirements: 4 Pencil Cases [iD: 738] 2 Slick Paper [iD: 7111] 10000 Zeny Reward: 1 The Paper Card [iD: 4172] So, let's pretend this is your 5th quest, you'd start off as such: CODE case 5: callsub OnBuyItem, Next, you would add in the first requirement: 4 Pencil Cases [iD: 738]: CODE case 5: callsub OnBuyItem,738,4, Next, you would add in the second requirement: 2 Slick Papers [iD: 7111]: CODE case 5: callsub OnBuyItem,738,4,7111,2, That is the last of your item requirements, so lets add the Zeny Requirement now: 10000 Zeny: CODE case 5: callsub OnBuyItem,738,4,7111,2,10000,"Zeny", Now, you add the prize: 1 The Paper Card [iD: 4172]: CODE case 5: callsub OnBuyItem,738,4,7111,2,10000,"Zeny",4172,1 Now to make sure the server reads this is a line, you need to end the line with a semi-colon (";"): CODE case 5: callsub OnBuyItem,738,4,7111,2,10000,"Zeny",4172,1; We have just created a custom quest. Edited January 2, 2012 by Arcenciel Codebox'ed Quote
manabeast Posted January 3, 2012 Author Posted January 3, 2012 yaya. this is not for quest only ? if i want for zeny only? the syntax should like this? case 5: callsub OnBuyItem,0,0,0,0,1000,"Zeny",4172,1; Quote
Emistry Posted January 3, 2012 Posted January 3, 2012 if i want for zeny only? the syntax should like this? LOL....why you go use a Complicated Zeny Shop Script when there is just a Simple way to do it... A Simple Normal Shop would fullfill your request on this.... since you just want to sell those items using ZENY.. Quote
manabeast Posted January 3, 2012 Author Posted January 3, 2012 (edited) before i ever try add more then 3 item as required but not working then i trow this npc script (i add jellopy front) case 5: callsub OnBuyItem,909,10,738,4,7111,2,10000,"Zeny",4172,1 about normal shop npc ~ ~"well. i try google it. just fail to get to emistry: about fishing script u not yet reply me @@" pls ignore all question, i just wan to ask the syntax correct or wrong? Edited January 3, 2012 by manabeast Quote
Question
manabeast
i need a npc that sell item @@" any script can be use?
edit:
i use found how to add already
http://eathena.ws/wiki/index.php/General_Shop_creation
The limit for items per shop is 100. You can add more, it will just stop at 100
The prices are a bit odd: -1 means 'read from item_db' and any other amount is an absolute price.
If you use absolute prices you open yourself to money exploits, it's best to just make sure all your
item_db (SQL or TXT) items are priced!
Edited by manabeast4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.