0% found this document useful (0 votes)
233 views18 pages

Script NPC

Uploaded by

huskyutube1990
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
233 views18 pages

Script NPC

Uploaded by

huskyutube1990
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 18

// ________________________________________________________

// / ____ \
// | | __| |
// | | |_ _ _ __ _ _ __ _ __ |
// | | _| || |/ _` | '_ \| |/ _ \ |
// | | |__ \/ | (_| | | | | | (_) | |
// | |____|__/ \__,_|_| |_|_|\___/ |
// | |
// | |
// |--------------------------------------------------------|
// | Name of Script: Narrator PvP |
// |--------------------------------------------------------|
// | By: Evanio (SynGates) |
// |--------------------------------------------------------|
// | Version 1.0 |
// |--------------------------------------------------------|
// | Description: Narrator PvP System, where the player has |
// | more than one choice of narrators. |
// |--------------------------------------------------------|
// | Changelog: |
// | 1.0 Script maked (18/02/2014) [Evanio] |
// \________________________________________________________/
// ----------------------------------------------------------
prontera,159,191,5 script Narrator PvP 999,{

Locutor:
mes "[Narrator PvP]";
mes "We have available four types of PvP narrators. Choose one of your
own.";
next;
switch(select("UnrealTournament","Badass","Flamboyant","Pimp")) {

case 1: set @loc,0; soundeffect "[Link]",0; goto Loc;


case 2: set @loc,1; soundeffect "[Link]",0; goto Loc;
case 3: set @loc,2; soundeffect "[Link]",0; goto Loc;
case 4: set @loc,3; soundeffect "[Link]",0;
Loc:
mes "[Narrator PvP]";
mes "You want to select this narrator?";
next;
if(select("Yes","No")==2) { goto Locutor; }
set #ST,@loc;
mes "[Narrator PvP]";
mes "Narrator selected.";
close;
}
}

- script CtrlLoc -1,{

OnPcKillEvent:
getmapxy @map$,@x,@y,0;
for(set .@a,0;.@a<getarraysize($@MapName$);set .@a,.@a+1)
if($@MapName$[.@a]==@map$) {
set @Killer,getcharid(0);
set @Morto$,rid2name(killedrid);
set @Killed,getcharid(0,rid2name(killedrid));
if(@Killed==@Killer) end;;
set @WD2,@WD2+1;
if(#ST==0) { set @WD,@WD2; }
if(#ST==0 && @WD2>12) { set @WD,0; set @Tocar$,"";}
if(#ST==1) { set @WD,@WD2+12;}
if(#ST==1 && @WD2>12) { set @WD,0; set @Tocar$,"";}
if(#ST==2) { set @WD,@WD2+24; }
if(#ST==2 && @WD2>12) { set @WD,0; set @Tocar$,"";}
if(#ST==3) { set @WD,@WD2+36; }
if(#ST==3 && @WD2>12) { set @WD,0; set @Tocar$,"";}
if($@Sounds$[@WD]!="") { set @Tocar$,$@Sounds$[@WD]; }
mapannounce @map$,"The Player [ "+strcharinfo(0)+" ] killed [ "+@Morto$
+" ] | "+@Tocar$,bc_map,0x7D7D7D;
if($@Sounds$[@WD]!="") { soundeffectall $@Sounds$[@WD]
+".wav",0; }
if(#ST==1) { soundeffectall $@SoundsE$[1]+".wav",0; }
if(#ST==3) { soundeffectall $@SoundsE$[3]+".wav",0;
soundeffectall $@SoundsE$[4]+".wav",0; }
}
end;

OnPcDieEvent:
getmapxy @map$,@x,@y,0;
for(set .@a,0;.@a<getarraysize($@MapName$);set .@a,.@a+1)
if($@MapName$[.@a]==@map$) {
set @WD2,0;
set @WD,0;
}
end;

OnInit:
deletearray $@Sounds$;
deletearray $@MapName$;
// --------------- Add here the pvp maps ------------
setarray $@MapName$[0],"pvp_y_8-1","pvp_y_8-2","pvp_y_8-3","pvp_y_8-
4","pvp_y_8-5";
//-------------------------------------------------------
setarray $@Sounds$[1],"First Blood","Double Kill","Triple Kill","Killing
Spree","Mega Kill","Ultra Kill","Monster
Kill","Unstoppable","WhickedSick","GodLike","HolyShit","Rampage";
setarray $@Sounds$[13],"First of Many","Too Easy","No Chance","Who's
next","Five kill stud","Not today dirtbag","Kiss my ass","Damn I'm good","Who's
your daddy","Hell yeah","Unbelievable","Champion";
setarray $@Sounds$[25],"Cherry Popper","Fabulous","It's a three way","Rainbow
Warrior","Homicidal","Big
Bear","Macho","Savage","Domination","Superstar","Yey","Like OMG";
setarray $@Sounds$[37],"First Time","Double D's","The juice is loose","It's a
four-gy","It's the 5-O","What's my name","Say my name","Mo money","One Bad
Mother","Pimpin is easy","Bitch please","Big Pimpin";
setarray $@SoundsE$[1],"bullet","bullet_glass","bling","chainin";
end;
}

//===== EinherjarRO Scripts ==================================


//= Daily Rewards
//===== By: ==================================================
//= Stolao
//===== Current Version: =====================================
//= 1.8C
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= A reward system for players who play more frequently
//===== Todo: ================================================
//= Maybe make .MinWait an array mins,days,weeks,months,years;
//= Make Logging out then it continue count
//= Seperate Timer from script for optional go collect reward
//= Remove use of sleep2
//= Suggestions?
//===== Additional Comments: =================================
//= For Older See Old Versions
//= 1.7C Added custom item binding mode [Secretdataz]
//= 1.7D Added cutin for next day option + command
//= 1.7E Added IP Check
//= 1.7F Moved .Rest Message to after .MinWait Check
//= 1.80 Added MacAddress check for those using Gepard Shield (disabled by default)
//= 1.81 Fixed Typo in .MacCheck
//= 1.82 Moved .Rest Check before rewards check to prevent bug
//= 1.83 Added strnpcinfo(3) for bindatcomands
//= 1.84 Rephrased some conf settings
//= 1.85 Fixed Capilazation
//= 1.86 Small Tabulation Tweaks
//= 1.87 Noted Changes to Reward Farmatting
//= 1.88 Added 'fixreward' Command for those who get negative wait times ( not sure
of issues still)
//= 1.89 Changed soeme Messaging Formatting
//= 1.8A Made Fix Command GM 99 Only, to use on others do '#fixreward'
//= 1.8B Added Overwieght Collection
//= 1.8C Added 'collectreward', 'collectdaily' and 'dailyreward' commands
//===== Contact Info: ========================================
//= [Stolao]
//= Email: Taingram11@[Link]
//============================================================
prontera,5,5,5 script LOGIN 111,{
OnWhisperGlobal:
OnLoginCmnd:
OnPCLoginEvent:
if(.IPCheck){
query_sql("SELECT last_ip FROM `login` WHERE account_id =
"+getcharid(3)+"", .@LastIp$);
query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+.@LastIp$
+"'", .@AccountId);
if(getarraysize(.@AccountId) > .IPCheck){
message strcharinfo(0),"[Daily Rewards]: Rewards are limited to
"+.IPCheck+" per IP sorry.";
end;
}
}
if(.MacCheck){
query_sql("SELECT last_unique_id FROM `login` WHERE account_id =
"+getcharid(3)+"", .@last_unique_id$);
query_sql("SELECT account_id FROM `login` WHERE last_unique_id =
'"+.@last_unique_id$+"'", .@AccountId2);
if(getarraysize(.@AccountId2) > .MacCheck){
message strcharinfo(0),"[Daily Rewards]: Rewards are limited to
"+.MacCheck+" per computer sorry.";
end;
}
}
.@i = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) *
60) + gettime(2);
if(.@i >= (#LastDailyReward + .MinWait) && .Rest && !#DROverweight){
message strcharinfo(0),"[Daily Rewards]: To collect reward you must
remain logged in for "+ .Rest +" minutes";
sleep2 1000;
}
if(.@i >= (#LastDailyReward + .MinWait)){
if(checkvending() & 2 && .Mode & 64){
message strcharinfo(0),"[Daily Rewards]: Venders cannot recive
rewards.";
end;
}
if(.@i < #LastDailyReward + .MaxWait)
#DRewardCon += 1;
else #DRewardCon = 1;
.@size = getarraysize(.Rewards$);
if(#DRewardCon >= .@size){
if(.Reset)
#DRewardCon = 1;
else #DRewardCon = .@size-1;
}
explode(.@XT$,.Rewards$[#DRewardCon],",");
.@size = getarraysize(.@XT$);
for(.@x = 0; .@x < .@size; .@x++)
.@TT[.@x] = atoi(.@XT$[.@x]);
if(.Mode & 1 && .@TT[4] > 0){
.@size = getarraysize(.@TT);
for(.@x = 4; .@x <= .@size - 1 ; .@x += 2){
.@itms[.@y] = .@TT[.@x];
.@qnts[.@y] = .@TT[.@x + 1];
.@y++;
}
if(checkweight2(.@itms,.@qnts)){
for(.@x = 0; .@x < .@y; .@x++){
if(.Mode & 32)

getitembound .@itms[.@x], .@qnts[.@x], .Bound_Mode;


else getitem .@itms[.@x], .@qnts[.@x];
}
#DROverweight = 0;
} else {
message strcharinfo(0),"[Daily Rewards]: You can not carry
the prizes, please use storage and type @relog.";
if(#DRewardCon) #DRewardCon -= 1;
#DROverweight = 1;
end;
}
}
if(.Mode & 16)
cutin .Cutins$[#DRewardCon],4;
if(.Mode & 2){
if(.@TT[0]){
zeny += .@TT[0];
message strcharinfo(0),"[Daily Rewards]: Recieved
"+ .@TT[0] +"z";
}
if(.@TT[1]){
setd getd(.Points$[0]),getd(.Points$[0]) + .@TT[1];
message strcharinfo(0),"[Daily Rewards]: Recieved
"+ .@TT[1] +" "+.Points$[1];
}
}
if(.Mode & 4 && (.@TT[3] || .@TT[4]))
getexp .@TT[3], .@TT[4];
if(.Mode & 8){
.@size = getarraysize(.BuffInfo);
for(.@x = 0; .@x < .@size; .@x += 4){
if(#DRewardCon % .BuffInfo[.@x + 1] == 0)
sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] *
60000, .BuffInfo[.@x + 3];
}
}
message strcharinfo(0),"[Daily Rewards]: You have collected your daily
reward, for "+callfunc("F_InsertPlural",#DRewardCon,"day")+" now.";
#LastDailyReward = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 *
60) + (gettime(3) * 60) + gettime(2) - .Rest;
end;
}
OnNextCmnd:
if(!.@i) .@i = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) +
(gettime(3) * 60) + gettime(2) - .Rest;
if(#LastDailyReward + .MinWait - .@i < 0){
message strcharinfo(0),"[Daily Rewards]: Your rewards should be
available.";
} else {
.@days = (#LastDailyReward + .MinWait - .@i) / 60 / 24;
.@hours = ((#LastDailyReward + .MinWait - .@i) / 60) % 24;
.@mins = (#LastDailyReward + .MinWait - .@i) % 60;
message strcharinfo(0),"[Daily Rewards]: You have "+ ((.@days) ? .@days
+" Days " : "") + ((.@hours) ? .@hours +" Hours " : "") + ((.@mins) ? .@mins +"
Minutes " : "") +"till your next reward.";
if(.Mode & 128){
set .@size,getarraysize(.Rewards$);
if(#DRewardCon + 1 >= .@size){
if(.Reset) .@g = 1;
else .@g = .@size-1;
} else .@g = #DRewardCon + 1;
cutin .Cutins$[.@g],4;
}
}
end;
OnFixCmnd:
#LastDailyReward = (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) +
(gettime(3) * 60) + gettime(2);
message strcharinfo(0),"[Daily Rewards]: Next reward has be forcively
reset.";
.@days = .MinWait / 60 / 24;
.@hours = .MinWait / 60 % 24;
.@mins = .MinWait % 60;
message strcharinfo(0),"[Daily Rewards]: You have "+ ((.@days) ? .@days +"
Days " : "") + ((.@hours) ? .@hours +" Hours " : "") + ((.@mins) ? .@mins +"
Minutes " : "") +"till your next reward.";
end;
OnInit:
// Basic Settings
// 1: Item | 2: Points | 4: Exp
// 8: Gain Buffs Every X Consecutive Days logged in
// 16: Show Cutins | 32: Bound Items
// 64: No Rewards ffor Autotraders
// 128: Show Next Day Cutin
// (a bit value, e.g. 3 = Items & Points from Multi)
.Mode = 1|2|4|8|16|64;

// Number of times same IP can recive rewards


// 0 = unlimited
.IPCheck = 0;

// Number of times same Computer (MacAdress) can recive rewards


// 0 = unlimited
.MacCheck = 0;

// Item Binding Mode


// Bound_Account : Account Bound item
// Bound_Guild : Guild Bound item
// Bound_Party : Party Bound item
// Bound_Char : Character Bound item
.Bound_Mode = Bound_Account;

// To disable the command '@loginreward' comment the next lines


// * Needs extra commands for typos
bindatcmd("relog",strnpcinfo(3)+"::OnLoginCmnd",0,99);
bindatcmd("collectreward",strnpcinfo(3)+"::OnLoginCmnd",0,99);
bindatcmd("dailyreward",strnpcinfo(3)+"::OnLoginCmnd",0,99);
bindatcmd("collectdaily",strnpcinfo(3)+"::OnLoginCmnd",0,99);
bindatcmd("nextreward",strnpcinfo(3)+"::OnNextCmnd",0,99);

// GM Command to fix the negative time till reward issue


// #fixreward <playername>
// * Needs extra commands for typos
bindatcmd("fixreward",strnpcinfo(3)+"::OnFixCmnd",99,99);

// Minimum minutes between collecting daily reward


// Day: 22*60 - 24*60
// Week: 10080
.MinWait = 24*60;

// Minutes before losing the consecutive reward


// Day: 48*60 - 50*60
// Week: 20160
.MaxWait = 3000;

// What to do upon reaching last day defined


// [0] Repeat last day
// [1] Restart at 1
.Reset = 1;

// Number of mins after logging before collecting prize


.Rest = 0;

// Point Type
// [0] Points earned
// [1] Point name in mes
setarray .Points$,"#KAFRAPOINTS","K-Points";

// Consecutive Days Buff


// Each buff contains 4 variables (32 Total Max)
// <Type>,<Days>,<Duration>,<Rate>, // Buff 1
// <Type>,<Days>,<Duration>,<Rate>, // Buff 2
// ...;
//
// Example: 188,7,45,3
// -Every 7th consecutive day logged in Player gains +3 Str for 45 mins
//
// Type is 188, which references which SC_ to use, SC_INCSTR in this example
// -For a full list of SC_ visit the db/[Link]
// Days is days buff is applied, in this example 7, so every 7th day,
14,21,28....
// Duration is buff duration is Minuits, in this example 45 mins
// Rate is buff strength, in this example player gains 3 Str
setarray .BuffInfo ,260,2,360,1 // Life Insurance for 360 Mins
Every 2nd Day
,0,0,0,0; // +50% Exp for 240 Mins Every 7th Day

// Daily Prize items (max 128 days):


// "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-
2>,<amount-2>...etc", // Day 1
// "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-
2>,<amount-2>...etc" // Day 2
// ...;
// Total length of any days string must be 255 or shorter
// * If players login longer than the last set
// day, they will keep getting the last prize.
setarray .Rewards$[1],
"0,0,0,0,503,5,506,5", // Day 1: 5 White Potion + 5 Green
Potion
"100", // Day 2: 100 Zeny
"0,0,0,0,501,5", // Day 3: 5 Red Potion
"0,0,0,0,503,5,506,5", // Day 4: 5 White Potion + 5 Green
Potion
"100", // Day 5: 100 Zeny
"0,0,0,0,501,5", // Day 6: 5 Red Potion
"1000", // Day 7: 100 Zeny
"1000", // Day 8: 100 Zeny
"0,0,0,0,503,5,506,5"; // Day 9: 5 White Potion + 5 Green
Potion

// Cutin Array
// Shows a cuting for each date
//
setarray .Cutins$[1],
"kafra_01",
"kafra_02",
"kafra_03",
"kafra_04",
"kafra_05",
"kafra_06",
"kafra_07",
"kafra_08",
"kafra_09";
end;
}
//* ============================================
// Author Goddameit
// Version 2013/02/06
// Web [Link]
// IP BAN SYSTEM
// ==============================================

- script ban_ip_atcommand -1,{


OnInit:
bindatcmd "banip",strnpcinfo(3)+"::OnBan";
bindatcmd "unbanip",strnpcinfo(3)+"::OnUnBan";
end;
OnBan:
if ( !.@atcmd_numparameters )
{
message strcharinfo(0), "usage: @banip <ip> <reason>";
end;
}
set .@atcmd_parameters$[0],escape_sql(.@atcmd_parameters$[0]);
set .@atcmd_parameters$[1],escape_sql(.@atcmd_parameters$[1]);
set .@tmp$, implode(.@atcmd_parameters$," ");
set .@reason$,
substr(.@tmp$,getstrlen(.@atcmd_parameters$[0]),getstrlen(.@tmp$)-1);
set .@oaid, getcharid(3);
set .@ip$, replacestr(.@atcmd_parameters$[0], "*", "%");
for(set .@j,0;;set .@j,.@j+1)
{
deletearray .@aid[0],128;
query_sql "SELECT `account_id` FROM `login` WHERE `last_ip` LIKE
'"+.@ip$+"' LIMIT "+(.@j*127)+",127",.@aid;
set .@num, getarraysize(.@aid);
for( set .@i,0; .@i<.@num; set .@i,.@i+1 )
{
if( attachrid(.@aid[.@i]) )
{
Announce "You have been banned because GM reject IP
["+.@atcmd_parameters$[0]+"]. Reason : "+.@reason$,bc_self;
addtimer 1000,strnpcinfo(0)+"::OnKick";
detachrid;
}
}
if( .@num < 127 )
break;
}
attachrid .@oaid;
query_sql "SELECT `ban_id` FROM `ipbanlist2` WHERE `list` =
'"+.@atcmd_parameters$[0]+"'",.@c;
if( .@c )
{
query_sql "UPDATE `ipbanlist2` SET `status` = 1 WHERE `list` =
'"+.@atcmd_parameters$[0]+"'";
query_sql "UPDATE `ipbanlist2` SET `ban_id` = "+getcharid(3)+" WHERE
`list` = '"+.@atcmd_parameters$[0]+"'";
query_sql "UPDATE `ipbanlist2` SET `ban_reason` = '"+.@reason$+"' WHERE
`list` = '"+.@atcmd_parameters$[0]+"'";
}
else
query_sql "INSERT `ipbanlist2`
VALUES('"+.@atcmd_parameters$[0]+"','"+.@reason$+"','',1,"+.@oaid+",0)";
message strcharinfo(0),"Ban IP:"+.@atcmd_parameters$[0];
end;
OnUnBan:
if ( !.@atcmd_numparameters )
{
message strcharinfo(0), "usage: @unbanip <ip> <reason>";
end;
}
set .@atcmd_parameters$[0],escape_sql(.@atcmd_parameters$[0]);
set .@atcmd_parameters$[1],escape_sql(.@atcmd_parameters$[1]);
query_sql "UPDATE `ipbanlist2` SET `status` = 0 WHERE `list` =
'"+.@atcmd_parameters$[0]+"'";
query_sql "UPDATE `ipbanlist2` SET `unban_id` = "+getcharid(3)+" WHERE `list`
= '"+.@atcmd_parameters$[0]+"'";
query_sql "UPDATE `ipbanlist2` SET `unban_reason` =
'"+.@atcmd_parameters$[1]+"' WHERE `list` = '"+.@atcmd_parameters$[0]+"'";
message strcharinfo(0),"Unban IP:"+.@atcmd_parameters$[0];
end;
OnPCLoginEvent:
query_sql "SELECT `last_ip` FROM `login` WHERE `account_id` =
"+getcharid(3),.@ip$;
set .@ip$, .@ip$[0];
deletearray .@my_array$[0],128;
explode(.@my_array$, .@ip$, ".");
setarray .@my_array1$[0],.@my_array$[0],.@my_array$[1],.@my_array$[2],"*";
setarray .@my_array2$[0],.@my_array$[0],.@my_array$[1],"*","*";
setarray .@my_array3$[0],.@my_array$[0],"*","*","*";
setarray .@my_array4$[0],"*","*","*","*";
set .@my_array1$,implode(.@my_array1$, ".");
set .@my_array2$,implode(.@my_array2$, ".");
set .@my_array3$,implode(.@my_array3$, ".");
set .@my_array4$,implode(.@my_array4$, ".");
query_sql "SELECT `list`,`ban_reason` FROM `ipbanlist2` WHERE `list` =
'"+.@ip$+"' OR `list` = '"+.@my_array1$+"' OR `list` = '"+.@my_array2$+"' OR `list`
= '"+.@my_array3$+"' OR `list` = '"+.@my_array4$+"' ",.@list$,.@ban_reason$;
set .@num, getarraysize(.@list$);
if( .@num )
{
Announce "You have been banned because GM reject IP ["+.@list$[0]+"].
Reason : "+.@ban_reason$[0],bc_self;
addtimer 5000,strnpcinfo(0)+"::OnKick";
}
end;
OnKick:
atcommand "@kick "+strcharinfo(0);
end;
}

CREATE TABLE IF NOT EXISTS `ipbanlist2` (


`list` varchar(255) NOT NULL default '',
`ban_reason` varchar(255) NOT NULL default '',
`unban_reason` varchar(255) NOT NULL default '',
`status` tinyint(1) NOT NULL default '0',
`ban_id` int(11) unsigned NOT NULL default '0',
`unban_id` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`list`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

//===== rAthena Script =======================================


//= Euphy's Quest Shop
//===== By: ==================================================
//= Euphy
//===== Update Hat Maker By: ==================================================
//= Boy
//===== 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.
//============================================================

prontera,155,180,5 script Hat Maker 58,{


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 "hatmaker"+.@i,1;
npcshopattach "hatmaker"+.@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) on
Quest ItemID "+ getarg(1) +"."; return; } }
for(set .@i,2; .@i<.@n; set .@i,.@i+1)
set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i);
npcshopadditem "hatmaker"+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_n
ameid+"[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:
// --------------------- 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],"Hat Maker Quest Items";


// 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,5086,1,0,0,5024,1,539,30,660,3);
Add(1,5137,1,0,0,5141,5,7047,100,661,1);
Add(1,5074,1,20000,0,2286,1,2254,1);
Add(1,5132,1,0,0,5035,1,5074,1,714,1,999,5);
Add(1,5153,1,0,0,10011,1);
Add(1,2284,1,0,0,923,20);
Add(1,5270,1,0,0,7198,200,7097,40);
sleep 10;
Add(1,5174,1,0,0,7445,7,7446,7,7447,7,7448,7,945,300,975,1,733,5,7166,50);
Add(1,5277,1,0,0,5278,1,508,200);
Add(1,2237,1,0,0,1020,100,983,1,2241,1);
Add(1,5147,1,0,0,2227,1,978,1,1057,100);
Add(1,5057,1,10000,0,2213,1,983,1,914,200);
Add(1,5076,1,0,0,2227,1,7038,500);
Add(1,5236,1,0,0,2227,1,7038,500,978,1);
Add(1,5235,1,0,0,2227,1,7038,500,982,1,983,1);
Add(1,5237,1,0,0,2227,1,7038,500,975,1,982,1);
Add(1,5382,1,0,0,969,8,10016,2,5083,1);
sleep 10;
Add(1,5065,1,0,0,624,1,959,300,544,50,1023,1);
Add(1,5052,1,0,0,2211,1,978,1,7003,300);
Add(1,2296,1,50000,0,2243,1,999,100);
Add(1,5129,1,0,0,604,1,916,1);
Add(1,5102,1,0,0,7263,2,2276,1,2239,1,568,150);
Add(1,5040,1,0,0,7047,100);
Add(1,5109,50000,0,0,10015,1,10007,1,5023,1,975,1);
Add(1,5016,1,0,0,1030,10,0,0,0,0,0,0);
Add(1,5110,1,0,0,526,2,7270,1,941,1,10004,1);
Add(1,5191,1,0,0,2208,1,983,1);
sleep 10;
Add(1,5169,1,0,0,706,1,1019,500,7200,10,1049,20,7165,500,1054,2,1024,100);
Add(1,5034,1,0,0,2233,1,746,20);
Add(1,2214,1,0,0,949,100,706,1,722,1,2213,1);
Add(1,5105,1,0,0,2288,1,1095,3000);
Add(1,5175,1,100000,0,7111,100,938,99,983,1);
Add(1,5080,1,0,0,10006,1,714,1,969,3);
Add(1,5024,1,0,0,529,10,530,5,539,20,999,10,538,15);
Add(1,5028,1,0,0,2279,1,7035,50,526,100);
Add(1,5200,1,0,0,5016,1,981,1,7317,20);
Add(1,5184,1,0,0,5120,5,995,50,983,1,720,50);
Add(1,5359,1,0,0,2284,1,5019,1,975,1);
Add(1,5214,1,0,0,976,1,1060,300,1022,100,5008,5);
Add(1,5026,1,0,0,1036,450,949,330,539,120,982,1);
sleep 10;
Add(1,5142,1,0,0,5017,1,2229,1,5014,1,7209,100,7123,100,1036,100,979,1);
Add(1,5283,1,0,0,949,200,916,100,7063,20,925,1);
Add(1,5260,1,0,0,4293,1,538,100,530,100,529,50);
Add(1,5075,1,0,0,2248,1,7030,108,7194,108,7120,4);
Add(1,5048,1,0,0,5041,1,999,10);
Add(1,5036,1,0,0,2608,1,7069,500);
Add(1,5135,1,0,0,2295,1,969,1,975,1,999,5);
Add(1,5181,1,0,0,7511,100,7340,200,7023,10);
Add(1,5108,1,5000,0,7301,1887,5114,1,611,10);
Add(1,5254,1,0,0,5132,1,5068,1,2255,1,7023,5,983,1);
sleep 10;
Add(1,5038,1,0,0,1038,600,7048,40);
Add(1,5229,1,0,0,1038,600,7048,40,982,1,983,1);
Add(1,5227,1,0,0,1038,600,7048,40,975,1);
Add(1,5228,1,0,0,1038,600,7048,40,982,1);
Add(1,5186,1,0,0,1032,100,7100,100,905,250);
Add(1,5091,1,20000,0,10016,1,714,1,969,3);
Add(1,5082,1,0,0,921,300);
Add(1,2273,1,3500,0,2275,1,998,50,733,1);
Add(1,5258,1,0,0,914,100,975,1,976,1,978,1);
Add(1,5198,1,0,0,5058,1,2214,1,949,500,914,200,622,50,1974,1);
sleep 10;
Add(1,5058,1,0,0,2233,1,983,1,7206,300,7030,1);
Add(1,5233,1,0,0,2233,1,983,1,7206,300,7030,1,978,1);
Add(1,5231,1,0,0,2233,1,983,1,7206,300,7030,1,982,1,983,1);
Add(1,5232,1,0,0,2233,1,983,1,7206,300,7030,1,982,1,975,1);
Add(1,5230,1,0,0,2233,1,983,1,7206,300,7030,1,982,1);
Add(1,5234,1,0,0,2233,1,983,1,7206,300,7030,1,976,1);
Add(1,5253,1,0,0,1034,300,7445,30,5141,10,979,1);
Add(1,5252,1,0,0,5058,1,1022,250,7267,100);
Add(1,2283,1,0,0,724,1,5001,1,949,200);
Add(1,5243,1,0,0,975,1,976,1,914,100,7441,150,7065,25,2283,1);
sleep 10;
Add(1,5259,1,0,0,978,1,7561,100,949,500,1026,200);
Add(1,5205,1,0,0,5185,1,610,100,706,25,7194,113);
Add(1,5068,1,20000,0,2255,1,2286,1);
Add(1,5304,1,0,0,7017,2,2510,1,983,1);
Add(1,5207,1,0,0,2282,5,2254,2,969,1,7063,15);
Add(1,5333,1,0,0,996,4,12028,1,12032,1,992,10,5011,1);
Add(1,5312,1,0,0,2261,1,983,1,2280,1,2627,1,969,2);
Add(1,5379,1,0,0,5061,2,978,1,2270,2,5083,1,1059,150);
Add(1,5416,1,0,0,746,20,7097,12,587,20,2717,1);
Add(1,5401,1,0,0,5288,1,983,1);
sleep 10;
Add(1,5427,1,0,0,5288,1,12078,1,7521,1,12183,1);
Add(1,5404,1,0,0,5187,1,1034,70,7441,10,978,10);
Add(1,5800,1,0,0,5040,1,7170,1,2371,1);
Add(1,5429,1,0,0,5100,1,1021,30,7268,1);
Add(1,5338,1,0,0,5100,1,7112,25,561,1);
Add(1,5300,1,0,0,7106,2,2246,1,7263,1);
Add(1,5378,1,0,0,2214,1,5045,1,975,1,740,100);
Add(1,5414,1,100000000,0,7300,9,1068,4,7098,2);
Add(1,5307,1,0,0,2275,5,514,2,979,1,634,1,619,20,1027,20);
Add(1,5431,1,50000000,0,5283,1,916,50,2717,1);
sleep 10;
Add(1,5341,1,80000000,0,5137,1,2276,1,1060,25);
Add(1,5131,1,0,0,5128,1,969,10,978,1,985,27);
Add(1,5417,1,0,0,4112,1,5299,1);
Add(1,5373,1,0,0,2255,1,7566,3,7511,60,5104,1,7799,4,7023,20);
Add(1,5369,1,0,0,5191,6,7205,25,558,3,2210,1,7441,5);
Add(1,5340,1,0,0,5137,1,5040,1,1034,25);
Add(1,5313,1,0,0,5124,1,2249,1,5007,1,523,200);
Add(1,5258,1,0,0,2261,1,914,200,975,1,976,1,978,1);
Add(1,5292,1,0,0,7266,2,1035,4,10001,1);
Add(1,5396,1,0,0,5058,1,980,1,1022,53);
sleep 10;
Add(1,5146,1,0,0,978,1,949,500,1019,1);
Add(1,5282,1,0,0,5200,1,982,1,978,2);
Add(1,5247,1,0,0,1039,60,923,25,2255,1);
Add(1,5364,1,0,0,5347,1,975,1,982,1,983,1,5048,1);
Add(1,5210,1,0,0,2254,10,7063,50,7168,200,7038,200);
Add(1,5047,1,0,0,2271,1,975,1);
Add(1,5170,1,0,0,5172,1,7063,100,982,1);
Add(1,5380,1,0,0,5065,2);
Add(1,5303,1,0,0,712,100,710,5,629,5,10009,1);
Add(1,5302,1,0,0,7553,2,982,1,7771,1);
sleep 10;
Add(1,5056,1,0,0,5079,1,578,100);
Add(1,5390,1,0,0,2236,2,978,1,1034,50,2294,2);
Add(1,5144,1,0,0,2214,1,2221,1,7567,25,1001,200);
Add(1,5063,1,0,0,970,1,930,500);
Add(1,5193,1,0,0,2208,1,979,1);
Add(1,5021,1,0,0,2233,1,969,1,999,20,949,80,938,800);
Add(1,5179,1,0,0,2234,1,969,3,2610,4,13106,2);
Add(1,5176,1,0,0,706,1,1019,500,7200,10,7015,20,2267,1,952,100,1028,100);
Add(1,5001,1,0,0,999,40,984,1,970,1,1003,1);
Add(1,5031,1,0,0,7013,1200);
sleep 10;
Add(1,5025,1,0,0,2229,1,2254,1,7036,5);
Add(1,5061,1,20000,0,2269,1,999,10);
Add(1,5139,1,0,0,5085,1,710,5,7510,1,975,1);
Add(1,5070,1,0,0,7216,300,7097,300,2211,1,982,1);
Add(1,5071,1,10000,0,5010,1,5049,1,7101,10);
Add(1,5173,1,0,0,7445,7,7446,7,7447,7,7478,7,945,300,983,1,733,5,2221,1);
Add(1,5321,1,0,0,2275,2,2211,2,7215,4,7217,20);
Add(1,5374,1,0,0,6004,5,5160,1,923,25);
Add(1,2240,1,0,0,1040,2,982,2,949,4,7457,1);
Add(1,5405,1,0,0,7441,45,949,80,916,100);
sleep 10;
Add(1,5410,1,50000000,0,7188,40,7111,20);
Add(1,5421,1,100000000,0,2286,1,7122,60);
Add(1,5424,1,0,0,980,1,620,1,605,50,985,200);
Add(1,5425,1,0,0,981,1,533,1,605,50,985,200);
Add(1,5276,1,0,0,2261,1,914,200,983,1,976,1,975,1);
Add(1,5156,1,0,0,2265,10,982,1);
Add(1,5154,1,0,0,2202,1,7020,5);
Add(1,5155,1,0,0,7024,10,7754,2,7562,4,7450,1);
Add(1,5018,1,500,0,2247,1,916,300);
Add(1,5403,1,0,0,1023,1,544,5,579,1);
sleep 10;
Add(1,5317,1,0,0,5120,1,2290,1,938,4);
Add(1,5269,1,0,0,5203,4,7063,60,2210,1);
Add(1,5334,1,0,0,5132,1,1971,20,7093,4,2659,1);
Add(1,5376,1,0,0,641,1,2210,1,7063,60,983,4);
Add(1,5400,1,0,0,1022,20,1234,2);
Add(1,5339,1,0,0,5100,1,7112,25,1558,1);
Add(1,5361,1,0,0,7216,200);
Add(1,5377,1,100000000,0,2268,1,1040,30,1629,1);
Add(1,5346,1,0,0,5100,1,7112,25,558,1);
Add(1,5433,1,0,0,5185,1,969,2);
sleep 10;
Add(1,5262,1,0,0,5164,1,7799,1,7578,1,969,3);
Add(1,5336,1,0,0,5100,1,7112,25,714,1);
Add(1,5273,1,0,0,2261,1,914,200,982,1,975,1,979,1);
Add(1,5319,1,0,0,5035,1,5074,1,978,1);
Add(1,5363,1,0,0,5120,1,2261,1,983,20);
Add(1,5314,1,0,0,7567,200,5102,1);
Add(1,5360,1,0,0,5057,1,2747,2,5161,1);
Add(1,5383,1,0,0,5200,1,979,1,7445,50);
Add(1,5423,1,5000000,0,736,300,5074,1,994,1);
Add(1,5209,1,0,0,5147,1,976,1);
sleep 10;
Add(1,5396,1,0,0,5430,1,5285,1,7262,20,5396,1);
Add(1,5371,1,0,0,5016,1,1004,35);
Add(1,5426,1,0,0,5027,1,976,5);
Add(1,5322,1,0,0,10019,1,982,2);
Add(1,5291,1,0,0,7323,100,969,20);
Add(1,5372,1,0,0,5099,1,5230,1,2747,5,982,15);
Add(1,5311,1,0,0,5139,5);
Add(1,5418,1,0,0,5016,1,2261,1,968,1,975,5,1004,35);
Add(1,5422,1,500000,0,1550,3,1006,20);
Add(1,5324,1,0,0,5137,1,7063,20,1034,20);
sleep 10;
Add(1,5448,1,0,0,521,200,1019,300);
Add(1,5449,1,0,0,521,200,1019,300);
Add(1,5332,1,0,0,7019,10,7200,10);
Add(1,5392,1,100000,0,721,5,7216,25);
Add(1,5803,1,0,0,2215,3,2210,2,5061,1,10009,1);
Add(1,5393,1,777777,0,2285,5,994,10,7097,25);
Add(1,5365,1,0,0,574,150,7031,150);
Add(1,5143,1,0,0,5090,1,1020,300,975,1,982,1);
Add(1,5020,1,0,0,2215,1,2210,1,7063,20);
Add(1,5140,1,0,0,5085,1,2244,1,5191,1,7166,50);
sleep 10;
Add(1,5069,1,0,0,1022,99);
Add(1,5185,1,0,0,5061,1,712,100,7194,150,7298,100,520,50,521,50);
Add(1,5130,1,0,0,1048,100,7564,150,517,30);
Add(1,5177,1,0,0,706,1,1019,500,7200,10,1049,500,1053,2,980,1);

Add(1,5013,1,50000000,0,754,100,753,100,752,100,751,100,750,100,743,100,742,100,741
,100,2613,100,5053,100,7020,100,7036,100,2268,100,734,100,923,100,968,100,7005,100,
714,300);
Add(1,5084,1,0,0,1026,1000,7065,100,945,100,7030,1);
Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
Add(1,5241,1,0,0,2252,1,1036,400,7001,50,4052,1,978,1);
Add(1,5240,1,0,0,2252,1,1036,400,7001,50,4052,1,982,1,983,1);
Add(1,5238,1,0,0,2252,1,1036,400,7001,50,4052,1,975,1);
sleep 10;
Add(1,5239,1,0,0,2252,1,1036,400,7001,50,4052,1,982,1);
Add(1,5242,1,0,0,2252,1,1036,400,7001,50,4052,1,976,1);
Add(1,5054,1,0,0,2252,1,1054,450,943,1200);
Add(1,5187,1,0,0,5085,1,5091,1,5117,2,978,1,975,1);
Add(1,5138,1,0,0,5123,1,5027,1,7337,50,981,1);
Add(1,5099,1,0,0,7267,300,7171,300,1029,5);
Add(1,5031,1,0,0,5009,1,5028,1,747,1,999,25);
Add(1,5081,1,40000,0,2249,1,714,1,969,3);
Add(1,5073,1,0,0,2285,1,1550,1);
Add(1,5117,1,50000,0,731,10,748,2,982,1);
sleep 10;
Add(1,5183,1,0,0,604,100,916,100,7115,100);
Add(1,5151,1,0,0,5001,1,978,1,991,200);
Add(1,2281,1,5000,0,998,20,707,1);
Add(1,5043,1,0,0,2281,1,1048,50);
Add(1,5094,1,0,0,968,100,2299,1,1124,1,931,1000);
Add(1,5196,1,0,0,2208,1,980,1);
Add(1,5078,1,0,0,5033,1,5064,1);
Add(1,5004,1,0,0,701,5);
Add(1,5275,1,0,0,2261,1,914,200,975,1,976,1,981,1);
Add(1,5389,1,0,0,5043,5,969,10,7568,50);
sleep 10;
Add(1,5420,1,300000000,0,5430,2,5421,1);
Add(1,5323,1,0,0,5081,3,7754,1,2128,1);
Add(1,5806,1,0,0,2280,1,7479,1,2109,1);
Add(1,5315,1,0,0,2276,1,5135,1,7094,50,7353,50);
Add(1,5807,1,0,0,5416,1,2211,2,949,100);
Add(1,5375,1,0,0,5094,1,10018,2,968,5,7440,30);
Add(1,5370,1,0,0,5302,1,981,5);
Add(1,5060,1,0,0,2236,1,7151,100,7111,100);

Add(1,5299,1,0,0,7441,20,949,50,916,15,7115,10,7440,20,7063,10,7200,10,2214,1);
Add(1,5023,1,0,0,1059,150,907,100,978,1);
sleep 10;
Add(1,5286,1,0,0,2254,2,7101,200,2210,2,7510,10);
Add(1,5271,1,0,0,2254,1,723,1,7301,20,999,50,978,1);
Add(1,5352,1,0,0,5035,1,979,1,938,100);
Add(1,2293,1,0,0,1049,4);
Add(1,5194,1,0,0,2208,1,975,1,982,1);
Add(1,5202,1,0,0,5035,1,1062,100,535,80);
Add(1,5182,1,0,0,5008,10,5118,1,1060,100,2210,1);
Add(1,5213,1,0,0,2214,1,983,1,7063,30);
Add(1,5033,1,0,0,1036,20,2213,1,7065,300,7012,200);
Add(1,5039,1,0,0,7030,50,978,1,5015,1);
sleep 10;
Add(1,5288,1,0,0,5047,1,2276,1);
Add(1,5195,1,0,0,2208,1,975,1);
Add(1,5211,1,0,0,5045,1,5083,1,7063,40,7553,1,982,1,975,1);
Add(1,5208,1,0,0,1550,1,1553,7,1556,7,1554,7,1557,7,1555,7,7015,30);
Add(1,5083,1,0,0,2244,1,2209,1,10007,1);
Add(1,2280,1,10000,0,1019,120);
Add(1,5100,1,0,0,2272,1,7451,4,7433,3,690,10);
Add(1,5067,1,0,0,5062,1,952,50,1907,1);
Add(1,5133,1,0,0,5160,1,7106,6,7107,80);
Add(1,5149,1,0,0,2234,1,714,5,2611,25);
sleep 10;
Add(1,5064,1,0,0,945,600,7030,1);
Add(1,2278,1,0,0,705,10,909,10,914,10);
Add(1,5203,1,0,0,2278,1,1015,1,999,5);
Add(1,5212,1,0,0,1820,2,5011,1,2651,1,4125,1);
Add(1,5257,1,0,0,5074,1,2282,1,7064,10,969,5);
Add(1,5029,1,0,0,7068,300,7033,850,1015,1);
Add(1,2272,1,911000,0,1019,50,983,1);
Add(1,5062,1,0,0,2280,1,7197,300,7150,300);
Add(1,5049,1,0,0,1099,1500);
Add(1,5287,1,0,0,5062,1,5348,1,978,1);
sleep 10;
Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
Add(1,5103,1,0,0,5351,1,10011,1);
Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
Add(1,5395,1,0,0,5045,2,7205,150,983,1,1059,100);
Add(1,5059,1,0,0,5030,1,7213,100,7217,100,7161,300);
Add(1,5107,1,0,0,519,50,7031,50,548,50,539,50);
Add(1,5255,1,0,0,5153,1,741,10,5132,1,5074,1);
Add(1,5077,1,0,0,2278,1,975,1);
Add(1,5337,1,0,0,5100,1,7112,25,2617,1);
Add(1,5358,1,0,0,2286,1,7101,30);
sleep 10;
Add(1,5152,1,0,0,2254,1,724,1,7301,20,999,50,978,1);
Add(1,5305,1,0,0,1214,5,969,10,7799,5);
Add(1,5413,1,0,0,608,20,1752,1,2261,1,978,1);
Add(1,5415,1,0,0,5255,1,5024,1);
Add(1,5318,1,0,0,5035,2,5060,2,741,10,530,50,938,100);
Add(1,5409,1,0,0,5075,1,7101,5,981,10);
Add(1,5051,1,0,0,7047,100);
Add(1,5293,1,0,0,577,20,7134,1,581,3,7454,2,7455,2,6033,2,6022,2);
Add(1,5801,1,0,0,5083,1,2700,12,7566,12,7562,12,2357,3);
Add(1,5325,1,0,0,5102,1,7355,12,7095,4,7317,2);
sleep 10;
Add(1,5320,1,0,0,5205,1,1009,50,2111,1);
Add(1,5354,1,0,0,5431,1,12080,1,1629,1);
Add(1,5811,1,0,0,985,100,2241,10);
Add(1,5381,1,0,0,5335,1,2236,1);
Add(1,5397,1,0,0,7325,5,2205,1,7355,1);
Add(1,5355,1,0,0,7166,100,1059,200);
Add(1,5243,1,0,0,7446,1,2339,10,1059,70);
Add(1,5310,1,0,0,5034,1,1971,2,996,6);
Add(1,5274,1,0,0,2261,1,914,200,980,2,975,1);
Add(1,5261,1,0,0,5164,1,714,25,2611,50,7799,4);
sleep 10;
Add(1,5388,1,0,0,1048,50,926,50);
Add(1,5342,1,0,0,5137,1,5040,1,1020,20,7152,5);
Add(1,5297,1,0,0,5257,1,1472,2,5158,2,7063,40);
Add(1,5335,1,0,0,741,5,607,5,940,150);
Add(1,5412,1,0,0,530,20,7035,10);
Add(1,5343,1,0,0,5137,1,2215,1,1034,25);
Add(1,5098,1,0,0,1029,10,2297,5,7267,50);
Add(1,5430,1,50000000,0,5414,1,7135,10,7451,4);
Add(1,5384,1,0,0,5390,1,975,1);
Add(1,5316,1,0,0,2226,1,622,10);
sleep 10;
Add(1,5289,1,0,0,526,200,7268,1);
Add(1,5805,1,0,0,5161,1);
Add(1,5301,1,0,0,5191,3,5195,3);
Add(1,5344,1,0,0,5137,1,7038,20,1060,25);
Add(1,5345,1,0,0,5137,1,5195,2,1060,45);
Add(1,5411,1,0,0,5388,1,982,5,7263,2,978,2);
Add(1,5368,1,0,0,5197,6,7751,25,561,3,2210,1,7063,20);
Add(1,5385,1,0,0,753,100);
Add(1,5079,1,0,0,2294,1,7220,400);

Add(1,5171,1,0,0,4219,1,4114,1,4177,1,4259,1,4212,1,4073,1,4112,1,4081,1,4251,1,416
6,1,7511,1000,7563,1000);
sleep 10;
Add(1,5256,1,0,0,7510,1,2210,1,7063,50);
Add(1,5285,1,0,0,7192,200,10011,1);
Add(1,5357,1,0,0,7510,20);
Add(1,5188,1,0,0,5027,1,7166,50,7064,1);
Add(1,2292,1,2000,0,999,50);
Add(1,5294,1,0,0,7019,5,7567,50);
Add(1,5115,1,50000,0,983,1,7267,99,749,1);
Add(1,5284,1,0,0,5302,1,975,1,982,1,5165,1);
Add(1,5050,1,0,0,5037,1,7064,500);
Add(1,5206,1,0,0,2269,1,982,1);
sleep 10;
Add(1,5197,1,0,0,2208,1,982,1);
Add(1,5278,1,0,0,2210,1,5192,1,2250,1);
Add(1,5192,1,0,0,2208,1,976,1);
Add(1,5121,1,0,0,7263,1,660,1,7099,30,7315,369);

// --------------------------------------------------
for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1)
npcshopdelitem "hatmaker"+.@i,909;
end;
}

// -------- Dummy data (duplicate as needed) --------


- shop hatmaker1 -1,909:-1

You might also like