Bringer Posted December 4, 2016 Posted December 4, 2016 (edited) I need shop can buy items sample Menu Blue Potion Blessing Scroll Agi Scroll Cost 5 / 10 / 10 Cash point i can input how many i want to buy + can use @cpshop but they will cost 2 cash point .. but there will be WARNING MSG BEFORE THEY LOSE there 2 cash points Edited December 4, 2016 by Bringer Quote
2 HappyMan Posted December 4, 2016 Posted December 4, 2016 @Bringer //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4a //===== Compatible With: ===================================== //= rAthena SVN r15340+ //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //============================================================ quiz_02,293,234,4 script Vote Shop 501,{ function Add; function Chk; function Slot; function A_An; if(.Shops$ != "") set .@i,1; else { set .@menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) set .@menu$, .@menu$+.Shops$[.@i]+":"; set .@i, select(.@menu$); } dispbottom "Select one item at a time."; callshop "qshop2"+.@i,1; npcshopattach "qshop2"+.@i; end; function Add { if (getitemname(getarg(1))=="null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } for(set .@n,5; .@n<127; set .@n,.@n+2) { if (!getarg(.@n,0)) break; if (getitemname(getarg(.@n))=="null") { debugmes "Quest requirement #"+getarg(.@n)+" invalid (skipped)."; return; } } for(set .@i,2; .@i<.@n; set .@i,.@i+1) set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i); npcshopadditem "qshop2"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0)<getarg(1)) { set @qe0,1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot){ case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0),11)>0) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } OnBuyItem: set .@q[0],@bought_nameid; copyarray .@q[1],getd(".q_"+@bought_nameid+"[0]"),getarraysize(getd(".q_"+@bought_nameid+"[0]")); if (!.@q[1]) { message strcharinfo(0),"An error has occurred."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[1]>1)?.@q[1]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; if (.@q[2]) mes " > "+Chk(Zeny,.@q[2])+.@q[2]+" Zeny^000000"; if (.@q[3]) mes " > "+Chk(getd(.Points$[0]),.@q[3])+.@q[3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+.@q[3]+")^000000"; if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.DisplayID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000"; next; set @qe1, getiteminfo(.@q[0],5); set @qe2, getiteminfo(.@q[0],11); addtimer 1000, strnpcinfo(1)+"::OnEnd"; while(1){ switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2>0 && !@qe6)?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe0) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[1])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[1]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[2]) set Zeny, Zeny-.@q[2]; if (.@q[3]) setd .Points$[0], getd(.Points$[0])-.@q[3]; if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]; getitem .@q[0],.@q[1]; if (.Announce) announce strcharinfo(0)+" has created "+A_An(getitemname(.@q[0]))+"!",0; specialeffect2 699; close; case 2: set @qe3, getlook(3); set @qe4, getlook(4); set @qe5, getlook(5); if (@qe1&1) atcommand "@changelook 3 "+@qe2; if (@qe1&256) atcommand "@changelook 1 "+@qe2; if (@qe1&512) atcommand "@changelook 2 "+@qe2; set @qe6,1; break; case 3: close; } } OnEnd: if (@qe6) { atcommand "@changelook 3 "+@qe3; atcommand "@changelook 1 "+@qe4; atcommand "@changelook 2 "+@qe5; } for(set .@i,0; .@i<7; set .@i,.@i+1) setd "@qe"+.@i,0; end; OnInit: freeloop(1); // --------------------- Config --------------------- // Custom points, if needed: "<variable>","<name to display>" setarray .Points$[0],"#CASHPOINTS","Cash Points"; set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .DisplayID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) // Shop categories, if needed: "<Shop 1>","<Shop 2>"{,...}; // Duplicate dummy data for any additional shops (bottom of script). // If no categories, use the second line instead (remove //). setarray .Shops$[1],"Vote4Cash Items","Vote4Cash Foods"; // set .Shops$,"n/a"; // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // Shop number corresponds with order above (default is 1). // Note: Do NOT use a reward item more than once! Add(1,5401,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5402,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5288,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5793,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5387,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5486,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5338,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5346,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5336,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5360,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,18600,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5751,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5188,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5506,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5432,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5560,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5372,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5495,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,18656,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5579,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,20097,1,0,200,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5306,1,0,200,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12075,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12090,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12080,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12100,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12095,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12085,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,13697,1,0,20,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,13698,1,0,20,0,0,0,0,0,0,0,0,0,0,0,0); // -------------------------------------------------- freeloop(0); for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) npcshopdelitem "qshop2"+.@i,909; end; } // -------- Dummy data (duplicate as needed) -------- - shop qshop21 -1,909:-1 - shop qshop22 -1,909:-1 - shop qshop23 -1,909:-1 1 Quote
1 Stolao Posted December 5, 2016 Posted December 5, 2016 How lazy can you be @Bringer? @HappyMan is offering to help you fix the issue with a script that does what you want and all you can say is "Thanks but I don't like that script", well frankly I have a few exspatives regarding that... Stop being lazy, learn to do things don't expect to be spoon fed, If you don't like something about an npc and don't know how to edit it I'm all for helping but you can't help those who can't help themselves, we are will gladly teach you and help you grow, I'm sure @Akkarin and most other members of the community feel the same way as well. 1 Quote
0 Akkarin Posted December 4, 2016 Posted December 4, 2016 1 hour ago, Bringer said: Thanks but i dont like that npc Then use it as a base and change it to suit your requirements. I know this is a section to request scripts, but there's no need to be so damned lazy. Quote
0 Bringer Posted December 4, 2016 Author Posted December 4, 2016 3 hours ago, Akkarin said: Then use it as a base and change it to suit your requirements. I know this is a section to request scripts, but there's no need to be so damned lazy. The reason why i dont want to use that ppc is sometimes i got stack while talking the npc i need to recon alwys even My NPC TIMER IS Disable Quote
0 HappyMan Posted December 4, 2016 Posted December 4, 2016 (edited) 5 hours ago, Bringer said: The reason why i dont want to use that ppc is sometimes i got stack while talking the npc i need to recon alwys even My NPC TIMER IS Disable if you encounter no option while talking in the npc just add close; or next; Edited December 5, 2016 by HappyMan Quote
0 Bringer Posted December 5, 2016 Author Posted December 5, 2016 1 hour ago, HappyMan said: if you counter no option while talking in the npc just add close; or next; Which part i need to edit to solved the statck npc on the one you post it Quote
0 HappyMan Posted December 5, 2016 Posted December 5, 2016 2 minutes ago, Bringer said: Which part i need to edit to solved the statck npc on the one you post it tell me what part you got stack? Quote
0 Bringer Posted December 5, 2016 Author Posted December 5, 2016 42 minutes ago, HappyMan said: tell me what part you got stack? on menu part Quote
0 HappyMan Posted December 5, 2016 Posted December 5, 2016 4 minutes ago, Bringer said: on menu part can you make a screenshot and send it to me thru message? Quote
0 Bringer Posted December 5, 2016 Author Posted December 5, 2016 9 minutes ago, Stolao said: How lazy can you be @Bringer? @HappyMan is offering to help you fix the issue with a script that does what you want and all you can say is "Thanks but I don't like that script", well frankly I have a few exspatives regarding that... Stop being lazy, learn to do things don't expect to be spoon fed, If you don't like something about an npc and don't know how to edit it I'm all for helping but you can't help those who can't help themselves, we are will gladly teach you and help you grow, I'm sure @Akkarin and most other members of the community feel the same way as well. The reason i say that bcuz i got problem using that the euphy script every time i click will get stack @ menu script i already search the problem here @ rathena i aleady disbale the npc timer but still same problem thats why i'm looking for simple NPC Quote
0 Emistry Posted December 5, 2016 Posted December 5, 2016 you can use normal cashshop like this... npc/merchants/cash_trader.txt then add this bindatcmd script. - script atcmd_example -1,{ OnInit: bindatcmd "cshop",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: callshop "<shop_name>",1; end; } 15 hours ago, Bringer said: Thanks but i dont like that npc You should avoid this kind of reply unless you specify the reason together or at least mention it at the very beginning. Quote
-5 Bringer Posted December 4, 2016 Author Posted December 4, 2016 38 minutes ago, HappyMan said: @Bringer //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4a //===== Compatible With: ===================================== //= rAthena SVN r15340+ //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //============================================================ quiz_02,293,234,4 script Vote Shop 501,{ function Add; function Chk; function Slot; function A_An; if(.Shops$ != "") set .@i,1; else { set .@menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) set .@menu$, .@menu$+.Shops$[.@i]+":"; set .@i, select(.@menu$); } dispbottom "Select one item at a time."; callshop "qshop2"+.@i,1; npcshopattach "qshop2"+.@i; end; function Add { if (getitemname(getarg(1))=="null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } for(set .@n,5; .@n<127; set .@n,.@n+2) { if (!getarg(.@n,0)) break; if (getitemname(getarg(.@n))=="null") { debugmes "Quest requirement #"+getarg(.@n)+" invalid (skipped)."; return; } } for(set .@i,2; .@i<.@n; set .@i,.@i+1) set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i); npcshopadditem "qshop2"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0)<getarg(1)) { set @qe0,1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot){ case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0),11)>0) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } OnBuyItem: set .@q[0],@bought_nameid; copyarray .@q[1],getd(".q_"+@bought_nameid+"[0]"),getarraysize(getd(".q_"+@bought_nameid+"[0]")); if (!.@q[1]) { message strcharinfo(0),"An error has occurred."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[1]>1)?.@q[1]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; if (.@q[2]) mes " > "+Chk(Zeny,.@q[2])+.@q[2]+" Zeny^000000"; if (.@q[3]) mes " > "+Chk(getd(.Points$[0]),.@q[3])+.@q[3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+.@q[3]+")^000000"; if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.DisplayID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000"; next; set @qe1, getiteminfo(.@q[0],5); set @qe2, getiteminfo(.@q[0],11); addtimer 1000, strnpcinfo(1)+"::OnEnd"; while(1){ switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2>0 && !@qe6)?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe0) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[1])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[1]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[2]) set Zeny, Zeny-.@q[2]; if (.@q[3]) setd .Points$[0], getd(.Points$[0])-.@q[3]; if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]; getitem .@q[0],.@q[1]; if (.Announce) announce strcharinfo(0)+" has created "+A_An(getitemname(.@q[0]))+"!",0; specialeffect2 699; close; case 2: set @qe3, getlook(3); set @qe4, getlook(4); set @qe5, getlook(5); if (@qe1&1) atcommand "@changelook 3 "+@qe2; if (@qe1&256) atcommand "@changelook 1 "+@qe2; if (@qe1&512) atcommand "@changelook 2 "+@qe2; set @qe6,1; break; case 3: close; } } OnEnd: if (@qe6) { atcommand "@changelook 3 "+@qe3; atcommand "@changelook 1 "+@qe4; atcommand "@changelook 2 "+@qe5; } for(set .@i,0; .@i<7; set .@i,.@i+1) setd "@qe"+.@i,0; end; OnInit: freeloop(1); // --------------------- Config --------------------- // Custom points, if needed: "<variable>","<name to display>" setarray .Points$[0],"#CASHPOINTS","Cash Points"; set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .DisplayID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) // Shop categories, if needed: "<Shop 1>","<Shop 2>"{,...}; // Duplicate dummy data for any additional shops (bottom of script). // If no categories, use the second line instead (remove //). setarray .Shops$[1],"Vote4Cash Items","Vote4Cash Foods"; // set .Shops$,"n/a"; // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // Shop number corresponds with order above (default is 1). // Note: Do NOT use a reward item more than once! Add(1,5401,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5402,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5288,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5793,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5387,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5486,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5338,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5346,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5336,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5360,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,18600,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5751,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5188,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5506,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5432,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5560,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5372,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5495,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,18656,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5579,1,0,25,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,20097,1,0,200,0,0,0,0,0,0,0,0,0,0,0,0); Add(1,5306,1,0,200,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12075,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12090,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12080,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12100,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12095,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,12085,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,13697,1,0,20,0,0,0,0,0,0,0,0,0,0,0,0); Add(2,13698,1,0,20,0,0,0,0,0,0,0,0,0,0,0,0); // -------------------------------------------------- freeloop(0); for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) npcshopdelitem "qshop2"+.@i,909; end; } // -------- Dummy data (duplicate as needed) -------- - shop qshop21 -1,909:-1 - shop qshop22 -1,909:-1 - shop qshop23 -1,909:-1 Thanks but i dont like that npc Quote
Question
Bringer
I need shop can buy items sample
Menu Blue Potion Blessing Scroll Agi Scroll
Cost 5 / 10 / 10 Cash point i can input how many i want to buy
+ can use @cpshop but they will cost 2 cash point .. but there will be WARNING MSG BEFORE THEY LOSE there 2 cash points
Edited by Bringer12 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.