manabeast Posted January 2, 2012 Group: Members Topic Count: 138 Topics Per Day: 0.03 Content Count: 835 Reputation: 25 Joined: 11/22/11 Last Seen: December 4, 2012 Share 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 Link to comment Share on other sites More sharing options...
GM Takumirai Posted January 2, 2012 Group: Members Topic Count: 69 Topics Per Day: 0.01 Content Count: 592 Reputation: 31 Joined: 11/14/11 Last Seen: July 29, 2015 Share 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 Link to comment Share on other sites More sharing options...
manabeast Posted January 3, 2012 Group: Members Topic Count: 138 Topics Per Day: 0.03 Content Count: 835 Reputation: 25 Joined: 11/22/11 Last Seen: December 4, 2012 Author Share 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 Link to comment Share on other sites More sharing options...
Emistry Posted January 3, 2012 Group: Forum Moderator Topic Count: 93 Topics Per Day: 0.02 Content Count: 10018 Reputation: 2369 Joined: 10/28/11 Last Seen: Sunday at 05:32 PM Share 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 Link to comment Share on other sites More sharing options...
manabeast Posted January 3, 2012 Group: Members Topic Count: 138 Topics Per Day: 0.03 Content Count: 835 Reputation: 25 Joined: 11/22/11 Last Seen: December 4, 2012 Author Share 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 Link to comment Share on other sites More sharing options...
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 manabeastLink to comment
Share on other sites
4 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.