dize11 Posted August 20, 2013 Share Posted August 20, 2013 //===== eAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4a - eAthena //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //============================================================ prontera,164,203,6 script Quest Shop 998,{ function Add; function Chk; function Slot; function A_An; if(.Shops$ != "") set [email protected],1; else { set [email protected]$,""; for(set [email protected],1; [email protected]<=getarraysize(.Shops$); set [email protected],[email protected]+1) set [email protected]$, [email protected]$+.Shops$[[email protected]]+":"; set [email protected], select([email protected]$); } dispbottom "Select one item at a time."; callshop "qshop"[email protected],1; npcshopattach "qshop"[email protected]; end; function Add { if (getitemname(getarg(1))=="null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } for(set [email protected],5; [email protected]<127; set [email protected],[email protected]+2) { if (!getarg([email protected],0)) break; if (getitemname(getarg([email protected]))=="null") { debugmes "Quest requirement #"+getarg([email protected])+" invalid (skipped)."; return; } } for(set [email protected],2; [email protected]<[email protected]; set [email protected],[email protected]+1) set getd(".q_"+getarg(1)+"["+([email protected])+"]"), getarg([email protected]); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); sleep 1; return; } function Chk { if (getarg(0)<getarg(1)) { set @qe0,1; return "^FF0000"; } else return "^00FF00"; } function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot){ case 1: if (!getitemslots(getarg(0))) return [email protected]$; case 2: if (getiteminfo(getarg(0),11)>0) return [email protected]$+" ["+getitemslots(getarg(0))+"]"; default: return [email protected]$; } } function A_An { setarray [email protected]$[0],"a","e","i","o","u"; set [email protected]$, "_"+getarg(0); for(set [email protected],0; [email protected]<5; set [email protected],[email protected]+1) if (compare([email protected]$,"_"[email protected]$[[email protected]])) return "an "+getarg(0); return "a "+getarg(0); } OnBuyItem: set [email protected][0],@bought_nameid; copyarray [email protected][1],getd(".q_"[email protected]_nameid+"[0]"),getarraysize(getd(".q_"[email protected]_nameid+"[0]")); if ([email protected][1]) { message strcharinfo(0),"An error has occurred."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+(([email protected][1]>1)[email protected][1]+"x ":"")+Slot([email protected][0])+"^000000"; mes "Requirements:"; if ([email protected][2]) mes " > "+Chk(Zeny,[email protected][2])[email protected][2]+" Zeny^000000"; if ([email protected][3]) mes " > "+Chk(getd(.Points$[0]),[email protected][3])[email protected][3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"[email protected][3]+")^000000"; if ([email protected][4]) for(set [email protected],4; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) mes " > "+Chk(countitem([email protected][[email protected]]),[email protected][[email protected]+1])+((.DisplayID)?"{"[email protected][[email protected]]+"} ":"")+Slot([email protected][[email protected]])+" ("+countitem([email protected][[email protected]])+"/"[email protected][[email protected]+1]+")^000000"; next; set @qe1, getiteminfo([email protected][0],5); set @qe2, getiteminfo([email protected][0],11); addtimer 1000, strnpcinfo(1)+"::OnEnd"; while(1){ switch(select(" ~ Purchase ^0055FF"+getitemname([email protected][0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2>0 && [email protected])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe0) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight([email protected][0],[email protected][1])) { mes "[Quest Shop]"; mes "^FF0000You need "+((([email protected][1]*getiteminfo([email protected][0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if ([email protected][2]) set Zeny, [email protected][2]; if ([email protected][3]) setd .Points$[0], getd(.Points$[0])[email protected][3]; if ([email protected][4]) for(set [email protected],4; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) delitem [email protected][[email protected]],[email protected][[email protected]+1]; getitem [email protected][0],[email protected][1]; if (.Announce) announce strcharinfo(0)+" has created "+A_An(getitemname([email protected][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 "[email protected]; if (@qe1&256) atcommand "@changelook 1 "[email protected]; if (@qe1&512) atcommand "@changelook 2 "[email protected]; set @qe6,1; break; case 3: close; } } OnEnd: if (@qe6) { atcommand "@changelook 3 "[email protected]; atcommand "@changelook 1 "[email protected]; atcommand "@changelook 2 "[email protected]; } for(set [email protected],0; [email protected]<7; set [email protected],[email protected]+1) setd "@qe"[email protected],0; end; OnInit: // --------------------- 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],"Headgears","Weapons","Other"; // 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,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // -------------------------------------------------- for(set [email protected],1; [email protected]<=getarraysize(.Shops$); set [email protected],[email protected]+1) npcshopdelitem "qshop"[email protected],909; end; } 3600 // -------- Dummy data (duplicate as needed) -------- - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1 - shop qshop3 -1,909:-1 Quote Link to comment Share on other sites More sharing options...
Checkmate Posted August 20, 2013 Share Posted August 20, 2013 PM MeIn my server im use this script with 3 different job..Mean1 is for = Vote point2 is for = Quest Shop 3 is for = Rental Shop...Try to change getitem into rentitem or you can try go hereHereHere Here other topic told about this... Click Me Quote Link to comment Share on other sites More sharing options...
frenzmu06 Posted August 20, 2013 Share Posted August 20, 2013 just reward them with rental boxes, done Quote Link to comment Share on other sites More sharing options...
Grphx Posted August 20, 2013 Share Posted August 20, 2013 Well you could also edit the item itself. putting some restrictions just like rental items :3 Quote Link to comment Share on other sites More sharing options...
QQfoolsorellina Posted August 20, 2013 Share Posted August 20, 2013 (edited) http://rathena.org/board/topic/74893-help-dynamic-quest-by-euphy/ if you still use rev 1.4a search this line getitem [email protected][0],[email protected][1]; replace with for ([email protected]=0;[email protected] <[email protected][1];[email protected]++ ) rentitem [email protected][0], 604800; you can modify 604800 as you like Edited August 20, 2013 by QQfoolsorellina Quote Link to comment Share on other sites More sharing options...
dize11 Posted August 21, 2013 Author Share Posted August 21, 2013 PM Me ... Click Me What part is that can u edit it? Because when i put that nothing happen Quote Link to comment Share on other sites More sharing options...
Checkmate Posted August 21, 2013 Share Posted August 21, 2013 Sry late reply..Like Miss QQfoolsorellina say.. search this line getitem .@q[0],.@q[1]; replace with for (.@i=0;.@i <.@q[1];.@i++ ) rentitem .@q[0], 604800; If you want to know more try to PM me.. ^ ^ Willing to help ^^ Quote Link to comment Share on other sites More sharing options...
//===== eAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4a - eAthena //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //============================================================ prontera,164,203,6 script Quest Shop 998,{ function Add; function Chk; function Slot; function A_An; if(.Shops$ != "") set [email protected],1; else { set [email protected]$,""; for(set [email protected],1; [email protected]<=getarraysize(.Shops$); set [email protected],[email protected]+1) set [email protected]$, [email protected]$+.Shops$[[email protected]]+":"; set [email protected], select([email protected]$); } dispbottom "Select one item at a time."; callshop "qshop"[email protected],1; npcshopattach "qshop"[email protected]; end; function Add { if (getitemname(getarg(1))=="null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } for(set [email protected],5; [email protected]<127; set [email protected],[email protected]+2) { if (!getarg([email protected],0)) break; if (getitemname(getarg([email protected]))=="null") { debugmes "Quest requirement #"+getarg([email protected])+" invalid (skipped)."; return; } } for(set [email protected],2; [email protected]<[email protected]; set [email protected],[email protected]+1) set getd(".q_"+getarg(1)+"["+([email protected])+"]"), getarg([email protected]); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); sleep 1; return; } function Chk { if (getarg(0)<getarg(1)) { set @qe0,1; return "^FF0000"; } else return "^00FF00"; } function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot){ case 1: if (!getitemslots(getarg(0))) return [email protected]$; case 2: if (getiteminfo(getarg(0),11)>0) return [email protected]$+" ["+getitemslots(getarg(0))+"]"; default: return [email protected]$; } } function A_An { setarray [email protected]$[0],"a","e","i","o","u"; set [email protected]$, "_"+getarg(0); for(set [email protected],0; [email protected]<5; set [email protected],[email protected]+1) if (compare([email protected]$,"_"[email protected]$[[email protected]])) return "an "+getarg(0); return "a "+getarg(0); } OnBuyItem: set [email protected][0],@bought_nameid; copyarray [email protected][1],getd(".q_"[email protected]_nameid+"[0]"),getarraysize(getd(".q_"[email protected]_nameid+"[0]")); if ([email protected][1]) { message strcharinfo(0),"An error has occurred."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+(([email protected][1]>1)[email protected][1]+"x ":"")+Slot([email protected][0])+"^000000"; mes "Requirements:"; if ([email protected][2]) mes " > "+Chk(Zeny,[email protected][2])[email protected][2]+" Zeny^000000"; if ([email protected][3]) mes " > "+Chk(getd(.Points$[0]),[email protected][3])[email protected][3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"[email protected][3]+")^000000"; if ([email protected][4]) for(set [email protected],4; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) mes " > "+Chk(countitem([email protected][[email protected]]),[email protected][[email protected]+1])+((.DisplayID)?"{"[email protected][[email protected]]+"} ":"")+Slot([email protected][[email protected]])+" ("+countitem([email protected][[email protected]])+"/"[email protected][[email protected]+1]+")^000000"; next; set @qe1, getiteminfo([email protected][0],5); set @qe2, getiteminfo([email protected][0],11); addtimer 1000, strnpcinfo(1)+"::OnEnd"; while(1){ switch(select(" ~ Purchase ^0055FF"+getitemname([email protected][0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2>0 && [email protected])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe0) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight([email protected][0],[email protected][1])) { mes "[Quest Shop]"; mes "^FF0000You need "+((([email protected][1]*getiteminfo([email protected][0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if ([email protected][2]) set Zeny, [email protected][2]; if ([email protected][3]) setd .Points$[0], getd(.Points$[0])[email protected][3]; if ([email protected][4]) for(set [email protected],4; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) delitem [email protected][[email protected]],[email protected][[email protected]+1]; getitem [email protected][0],[email protected][1]; if (.Announce) announce strcharinfo(0)+" has created "+A_An(getitemname([email protected][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 "[email protected]; if (@qe1&256) atcommand "@changelook 1 "[email protected]; if (@qe1&512) atcommand "@changelook 2 "[email protected]; set @qe6,1; break; case 3: close; } } OnEnd: if (@qe6) { atcommand "@changelook 3 "[email protected]; atcommand "@changelook 1 "[email protected]; atcommand "@changelook 2 "[email protected]; } for(set [email protected],0; [email protected]<7; set [email protected],[email protected]+1) setd "@qe"[email protected],0; end; OnInit: // --------------------- 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],"Headgears","Weapons","Other"; // 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,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // -------------------------------------------------- for(set [email protected],1; [email protected]<=getarraysize(.Shops$); set [email protected],[email protected]+1) npcshopdelitem "qshop"[email protected],909; end; } 3600 // -------- Dummy data (duplicate as needed) -------- - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1 - shop qshop3 -1,909:-1Link to comment
Share on other sites