- Follow up to r16164 and r16193: used SVN Copy/Move so SVN History is preserved.

- Added svn:eol-style=native property for some recently added text files.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16194 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
brianluau 2012-06-01 03:40:58 +00:00
parent 66f7f11388
commit d960aa3bee
30 changed files with 12198 additions and 12198 deletions

View File

@ -1,442 +1,442 @@
//===== rAthena Script =======================================
//= elRO Airship
//===== By: ==================================================
//= Draike, Bluto, Hephaestus
//===== Current Version: =====================================
//= 2.2a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= It's the elRO airship. XD
//===== Additional Comments: =================================
//= ALWAYS HAVE AT LEAST TWELVE (12) LOCATIONS AS THE MINIMUM. This is unless you modify to OnMinutes and change the schedule around.
//= If you have "airplane,103,72,0 warp airs02a 1,1,airplane,102,200" as a warp, remove it. Where it's supposed to go, I have no clue.
//= 2.1 Removed Duplicates [Silent]
//= 2.2 Added missing next;'s [Evera]
//============================================================
payon,153,43,5 script itinsetter -1,{
//This is just OnInit stuff to set the hourly intinerary.
OnInit:
deletearray $locationsname$[0],500;
deletearray $locationsmap$[0],500;
deletearray $locationsx[0],500;
deletearray $locationsy[0],500;
deletearray $alreadygoneto[0],500;
setarray $locationsname$[0],"Airport";
setarray $locationsname$[1],"Prontera";
setarray $locationsname$[2],"Payon";
setarray $locationsname$[3],"Aldebaran";
setarray $locationsname$[4],"Alberta";
setarray $locationsname$[5],"Geffen";
setarray $locationsname$[6],"Morocc";
setarray $locationsname$[7],"Glast Heim";
setarray $locationsname$[8],"Umbala";
setarray $locationsname$[9],"Comodo";
setarray $locationsname$[10],"Amatsu";
setarray $locationsname$[11],"Niflheim";
setarray $locationsname$[12],"Lutie";
setarray $locationsname$[13],"Louyang";
setarray $locationsname$[14],"Gonryun";
setarray $locationsname$[15],"Yuno";
setarray $locationsname$[16],"Ant Hell";
setarray $locationsname$[17],"Jawaii";
setarray $locationsname$[18],"Orc Village";
setarray $locationsname$[19],"Mjolnir Coal Mines";
setarray $locationsname$[20],"Gefenia Ruins";
setarray $locationsname$[21],"Ayothaya";
setarray $locationsname$[22],"Lighthalzen";
setarray $locationsname$[23],"Juperos";
setarray $locationsmap$[0],"airport";
setarray $locationsmap$[1],"prt_fild08";
setarray $locationsmap$[2],"pay_fild08";
setarray $locationsmap$[3],"mjolnir_12";
setarray $locationsmap$[4],"pay_fild03";
setarray $locationsmap$[5],"gef_fild00";
setarray $locationsmap$[6],"moc_fild10";
setarray $locationsmap$[7],"glast_01";
setarray $locationsmap$[8],"umbala";
setarray $locationsmap$[9],"comodo";
setarray $locationsmap$[10],"amatsu";
setarray $locationsmap$[11],"niflheim";
setarray $locationsmap$[12],"xmas";
setarray $locationsmap$[13],"louyang";
setarray $locationsmap$[14],"gonryun";
setarray $locationsmap$[15],"yuno";
setarray $locationsmap$[16],"moc_fild04";
setarray $locationsmap$[17],"jawaii";
setarray $locationsmap$[18],"gef_fild10";
setarray $locationsmap$[19],"mjolnir_02";
setarray $locationsmap$[20],"gefenia01";
setarray $locationsmap$[21],"ayothaya";
setarray $locationsmap$[22],"lighthalzen";
setarray $locationsmap$[23],"jupe_gate";
setarray $locationsx[0],148;
setarray $locationsx[1],206;
setarray $locationsx[2],159;
setarray $locationsx[3],62;
setarray $locationsx[4],194;
setarray $locationsx[5],50;
setarray $locationsx[6],163;
setarray $locationsx[7],196;
setarray $locationsx[8],187;
setarray $locationsx[9],203;
setarray $locationsx[10],115;
setarray $locationsx[11],132;
setarray $locationsx[12],232;
setarray $locationsx[13],36;
setarray $locationsx[14],82;
setarray $locationsx[15],58;
setarray $locationsx[16],209;
setarray $locationsx[17],248;
setarray $locationsx[18],158;
setarray $locationsx[19],76;
setarray $locationsx[20],98;
setarray $locationsx[21],183;
setarray $locationsx[22],99;
setarray $locationsx[23],46;
setarray $locationsy[0],45;
setarray $locationsy[1],280;
setarray $locationsy[2],92;
setarray $locationsy[3],381;
setarray $locationsy[4],182;
setarray $locationsy[5],365;
setarray $locationsy[6],172;
setarray $locationsy[7],327;
setarray $locationsy[8],98;
setarray $locationsy[9],76;
setarray $locationsy[10],79;
setarray $locationsy[11],241;
setarray $locationsy[12],308;
setarray $locationsy[13],279;
setarray $locationsy[14],96;
setarray $locationsy[15],194;
setarray $locationsy[16],326;
setarray $locationsy[17],175;
setarray $locationsy[18],95;
setarray $locationsy[19],363;
setarray $locationsy[20],21;
setarray $locationsy[21],104;
setarray $locationsy[22],240;
setarray $locationsy[23],19;
goto resetgoneto;
end;
setrandomitin:
set $@settervariable,$@settervariable + 1;
setarray $locationn[$@settervariable],rand(0,getarraysize($locationsname$) - 1);
if($alreadygoneto[$locationn[$@settervariable]]==1)set $@settervariable,$@settervariable - 1;
if($alreadygoneto[$locationn[$@settervariable]]==1)goto setrandomitin;
setarray $alreadygoneto[$locationn[$@settervariable]], 1;
if($@settervariable<12)goto setrandomitin;
end;
resetgoneto:
deletearray $alreadygoneto[0], 500;
set $@currenttime, 0;
goto setrandomitin;
OnMinute00:
set $@currenttime, 1;
callfunc "F_Itinreset",12,1,2;
OnMinute03:
set $destination,250;
end;
OnMinute05:
set $@currenttime, 2;
callfunc "F_Itinreset",1,2,3;
OnMinute08:
set $destination,250;
end;
OnMinute10:
set $@currenttime, 3;
callfunc "F_Itinreset",2,3,4;
OnMinute13:
set $destination,250;
end;
OnMinute15:
set $@currenttime, 4;
callfunc "F_Itinreset",3,4,5;
OnMinute18:
set $destination,250;
end;
OnMinute20:
set $@currenttime, 5;
callfunc "F_Itinreset",4,5,6;
OnMinute23:
set $destination,250;
end;
OnMinute25:
set $@currenttime, 6;
callfunc "F_Itinreset",5,6,7;
OnMinute28:
set $destination,250;
end;
OnMinute30:
set $@currenttime, 7;
callfunc "F_Itinreset",6,7,8;
OnMinute33:
set $destination,250;
end;
OnMinute35:
set $@currenttime, 8;
callfunc "F_Itinreset",7,8,9;
OnMinute38:
set $destination,250;
end;
OnMinute40:
set $@currenttime, 9;
callfunc "F_Itinreset",8,9,10;
OnMinute43:
set $destination,250;
end;
OnMinute45:
set $@currenttime, 10;
callfunc "F_Itinreset",9,10,11;
OnMinute48:
set $destination,250;
end;
OnMinute50:
set $@currenttime, 11;
callfunc "F_Itinreset",10,11,12;
OnMinute53:
set $destination,250;
end;
OnMinute55:
set $@currenttime, 12;
callfunc "F_Itinreset",11,12,1;
OnMinute58:
set $destination,250;
end;
}
function script F_Porter {
if($destination==getarg(0))goto Board;
if($destination!=getarg(0))goto Notime;
Board:
mes "^FF0000[Porter]^000000";
mes "The plane is currently ported. Would you like to board?";
next;
menu "Yes.",L_Yes,"No.",L_Nope,"View Hourly Itinerary.",Itin;
L_Yes:
if($destination!=getarg(0))goto Notime;
warp "airplane", 105, 72;
specialeffect2 501;
L_Nope:
mes "^FF0000[Porter]^000000";
mes "Have a good day. Thank you for traveling with Airship.";
close;
Notime:
mes "^FF0000[Porter]^000000";
if(sex==0) mes "Sorry, ma'am, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary.";
if(sex==1) mes "Sorry, sir, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary.";
next;
menu "Yes, please.",Itin,"No thanks.",L_Nope;
close;
end;
Itin:
mes "^FF0000[Porter]^000000";
callfunc "F_Itin";
}
airport,153,43,5 script Airport Porter 774,{
callfunc "F_Porter",0;
}
prt_fild08,206,279,5 script Porter#01 774,{
callfunc "F_Porter",1;
}
gef_fild00,50,364,5 script Porter#02 774,{
callfunc "F_Porter",5;
}
moc_fild10,163,173,5 script Porter#03 774,{
callfunc "F_Porter",6;
}
mjolnir_12,61,380,5 script Porter#04 774,{
callfunc "F_Porter",3;
}
pay_fild08,159,91,5 script Porter#05 774,{
callfunc "F_Porter",2;
}
pay_fild03,194,181,5 script Porter#06 774,{
callfunc "F_Porter",4;
}
glast_01,196,326,1 script Porter#07 774,{
callfunc "F_Porter",7;
}
umbala,188,98,3 script Porter#08 774,{
callfunc "F_Porter",8;
}
comodo,203,75,8 script Porter#09 774,{
callfunc "F_Porter",9;
}
amatsu,115,78,8 script Porter#10 774,{
callfunc "F_Porter",10;
}
niflheim,132,242,5 script Porter#11 774,{
callfunc "F_Porter",11;
}
xmas,232,309,5 script Porter#12 774,{
callfunc "F_Porter",12;
}
louyang,35,279,8 script Porter#13 774,{
callfunc "F_Porter",13;
}
gonryun,82,95,7 script Porter#14 774,{
callfunc "F_Porter",14;
}
yuno,58,195,4 script Porter#15 774,{
callfunc "F_Porter",15;
}
moc_fild04,210,326,2 script Porter#16 774,{
callfunc "F_Porter",16;
}
jawaii,247,174,7 script Porter#17 774,{
callfunc "F_Porter",17;
}
gef_fild10,159,95,2 script Porter#18 774,{
callfunc "F_Porter",18;
}
mjolnir_02,76,364,5 script Porter#19 774,{
callfunc "F_Porter",19;
}
gefenia01,97,22,6 script Porter#20 774,{
callfunc "F_Porter",20;
}
ayothaya,182,105,5 script Porter#21 774,{
callfunc "F_Porter",21;
}
lighthalzen,99,241,4 script Porter#22 774,{
callfunc "F_Porter",22;
}
jupe_gate,46,18,7 script Porter#23 774,{
callfunc "F_Porter",23;
}
airport,141,43,5 script Itinerary Schedule 837,{
mes "^FF0000[Itinerary]^000000";
callfunc "F_Itin";
}
airplane,102,68,5 script Docker 852,{
if($destination == 250) goto Nowhere;
mes "^FF0000[Airplane Attendant]^000000";
if($destination == 250)goto Notime;
set @dockky, $destination;
if($destination != 250)mes "We are currently docked at "+$locationsname$[$destination]+". Would you like to exit?";
next;
menu "Yes.",Lyes,"No.",Lnope;
Lyes:
if($destination == 250)goto Notime;
if($destination != @dockky)goto Notime;
warp $locationsmap$[$destination], $locationsx[$destination], $locationsy[$destination];
specialeffect2 501;
Lnope:
mes "^FF0000[Airplane Attendant]^000000";
mes "Have a good day. Thank you for traveling with us.";
close;
Notime:
mes "^FF0000[Airplane Attendant]^000000";
if(sex==0) mes "Sorry, ma'am, but the plane currently isn't docked. Please wait.";
if(sex==1) mes "Sorry, sir, but the plane currently isn't docked. Please wait.";
close;
Nowhere:
mes "^FF0000[Airplane Attendant]^000000";
mes "We're currently in air. Please wait until the pilot has announced that we have safely landed.";
close;
}
function script F_Itin {
//This is the itinerary's function. It should work well enough.
if($@currenttime==0)mes "Try again later. A recent server reboot or rehash has messed the itinerary up for a bit.";
if($@currenttime==0)close;
if($@currenttime==0)end;
set @tempo, 0;
set @tempo, $@currenttime - 1;
goto seta;
close;
seta:
set @tempo, @tempo + 1;
set @time, gettime(3);
set @minutes, 5 * @tempo - 5;
set @minutess, 5 * @tempo - 2;
if(@minutes<10)set @minutes$, "0" + @minutes;
if(@minutes>9)set @minutes$, @minutes;
if(@minutess<10)set @minutess$, "0" + @minutess;
if(@minutess>9)set @minutess$, @minutess;
if(@time<12)set @time$,@time;
if(@time==12)set @time$,12;
if(@time>12)set @time$,@time - 12;
if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$ + ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@tempo<12)goto seta;
set @tempo, 0;
goto setb;
setb:
if($@currenttime - 1==@tempo)goto setc;
set @tempo, @tempo + 1;
set @time, gettime(3) + 1;
set @minutes, 5 * @tempo - 5;
set @minutess, 5 * @tempo - 2;
if(@minutes<10)set @minutes$, "0" + @minutes;
if(@minutes>9)set @minutes$, @minutes;
if(@minutess<10)set @minutess$, "0" + @minutess;
if(@minutess>9)set @minutess$, @minutess;
if(@time<12)set @time$,@time;
if(@time==12)set @time$,12;
if(@time>12)set @time$,@time - 12;
if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
goto setb;
setc:
close;
end;
}
function script F_Itinreset {
setarray $alreadygoneto[$locationn[getarg(0)]], 0;
goto sest;
sest:
setarray $locationn[getarg(0)],rand(0,getarraysize($locationsname$) - 1);
if($alreadygoneto[$locationn[getarg(0)]]==1)goto sest;
setarray $alreadygoneto[$locationn[getarg(0)]], 1;
set $destination,$locationn[$@currenttime];
announce "Pilot: The plane has arrived at "+$locationsname$[$locationn[getarg(1)]]+". Departure to "+ $locationsname$[$locationn[getarg(2)]] + " is in 3 minutes.",16;
end;
}
//===== rAthena Script =======================================
//= elRO Airship
//===== By: ==================================================
//= Draike, Bluto, Hephaestus
//===== Current Version: =====================================
//= 2.2a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= It's the elRO airship. XD
//===== Additional Comments: =================================
//= ALWAYS HAVE AT LEAST TWELVE (12) LOCATIONS AS THE MINIMUM. This is unless you modify to OnMinutes and change the schedule around.
//= If you have "airplane,103,72,0 warp airs02a 1,1,airplane,102,200" as a warp, remove it. Where it's supposed to go, I have no clue.
//= 2.1 Removed Duplicates [Silent]
//= 2.2 Added missing next;'s [Evera]
//============================================================
payon,153,43,5 script itinsetter -1,{
//This is just OnInit stuff to set the hourly intinerary.
OnInit:
deletearray $locationsname$[0],500;
deletearray $locationsmap$[0],500;
deletearray $locationsx[0],500;
deletearray $locationsy[0],500;
deletearray $alreadygoneto[0],500;
setarray $locationsname$[0],"Airport";
setarray $locationsname$[1],"Prontera";
setarray $locationsname$[2],"Payon";
setarray $locationsname$[3],"Aldebaran";
setarray $locationsname$[4],"Alberta";
setarray $locationsname$[5],"Geffen";
setarray $locationsname$[6],"Morocc";
setarray $locationsname$[7],"Glast Heim";
setarray $locationsname$[8],"Umbala";
setarray $locationsname$[9],"Comodo";
setarray $locationsname$[10],"Amatsu";
setarray $locationsname$[11],"Niflheim";
setarray $locationsname$[12],"Lutie";
setarray $locationsname$[13],"Louyang";
setarray $locationsname$[14],"Gonryun";
setarray $locationsname$[15],"Yuno";
setarray $locationsname$[16],"Ant Hell";
setarray $locationsname$[17],"Jawaii";
setarray $locationsname$[18],"Orc Village";
setarray $locationsname$[19],"Mjolnir Coal Mines";
setarray $locationsname$[20],"Gefenia Ruins";
setarray $locationsname$[21],"Ayothaya";
setarray $locationsname$[22],"Lighthalzen";
setarray $locationsname$[23],"Juperos";
setarray $locationsmap$[0],"airport";
setarray $locationsmap$[1],"prt_fild08";
setarray $locationsmap$[2],"pay_fild08";
setarray $locationsmap$[3],"mjolnir_12";
setarray $locationsmap$[4],"pay_fild03";
setarray $locationsmap$[5],"gef_fild00";
setarray $locationsmap$[6],"moc_fild10";
setarray $locationsmap$[7],"glast_01";
setarray $locationsmap$[8],"umbala";
setarray $locationsmap$[9],"comodo";
setarray $locationsmap$[10],"amatsu";
setarray $locationsmap$[11],"niflheim";
setarray $locationsmap$[12],"xmas";
setarray $locationsmap$[13],"louyang";
setarray $locationsmap$[14],"gonryun";
setarray $locationsmap$[15],"yuno";
setarray $locationsmap$[16],"moc_fild04";
setarray $locationsmap$[17],"jawaii";
setarray $locationsmap$[18],"gef_fild10";
setarray $locationsmap$[19],"mjolnir_02";
setarray $locationsmap$[20],"gefenia01";
setarray $locationsmap$[21],"ayothaya";
setarray $locationsmap$[22],"lighthalzen";
setarray $locationsmap$[23],"jupe_gate";
setarray $locationsx[0],148;
setarray $locationsx[1],206;
setarray $locationsx[2],159;
setarray $locationsx[3],62;
setarray $locationsx[4],194;
setarray $locationsx[5],50;
setarray $locationsx[6],163;
setarray $locationsx[7],196;
setarray $locationsx[8],187;
setarray $locationsx[9],203;
setarray $locationsx[10],115;
setarray $locationsx[11],132;
setarray $locationsx[12],232;
setarray $locationsx[13],36;
setarray $locationsx[14],82;
setarray $locationsx[15],58;
setarray $locationsx[16],209;
setarray $locationsx[17],248;
setarray $locationsx[18],158;
setarray $locationsx[19],76;
setarray $locationsx[20],98;
setarray $locationsx[21],183;
setarray $locationsx[22],99;
setarray $locationsx[23],46;
setarray $locationsy[0],45;
setarray $locationsy[1],280;
setarray $locationsy[2],92;
setarray $locationsy[3],381;
setarray $locationsy[4],182;
setarray $locationsy[5],365;
setarray $locationsy[6],172;
setarray $locationsy[7],327;
setarray $locationsy[8],98;
setarray $locationsy[9],76;
setarray $locationsy[10],79;
setarray $locationsy[11],241;
setarray $locationsy[12],308;
setarray $locationsy[13],279;
setarray $locationsy[14],96;
setarray $locationsy[15],194;
setarray $locationsy[16],326;
setarray $locationsy[17],175;
setarray $locationsy[18],95;
setarray $locationsy[19],363;
setarray $locationsy[20],21;
setarray $locationsy[21],104;
setarray $locationsy[22],240;
setarray $locationsy[23],19;
goto resetgoneto;
end;
setrandomitin:
set $@settervariable,$@settervariable + 1;
setarray $locationn[$@settervariable],rand(0,getarraysize($locationsname$) - 1);
if($alreadygoneto[$locationn[$@settervariable]]==1)set $@settervariable,$@settervariable - 1;
if($alreadygoneto[$locationn[$@settervariable]]==1)goto setrandomitin;
setarray $alreadygoneto[$locationn[$@settervariable]], 1;
if($@settervariable<12)goto setrandomitin;
end;
resetgoneto:
deletearray $alreadygoneto[0], 500;
set $@currenttime, 0;
goto setrandomitin;
OnMinute00:
set $@currenttime, 1;
callfunc "F_Itinreset",12,1,2;
OnMinute03:
set $destination,250;
end;
OnMinute05:
set $@currenttime, 2;
callfunc "F_Itinreset",1,2,3;
OnMinute08:
set $destination,250;
end;
OnMinute10:
set $@currenttime, 3;
callfunc "F_Itinreset",2,3,4;
OnMinute13:
set $destination,250;
end;
OnMinute15:
set $@currenttime, 4;
callfunc "F_Itinreset",3,4,5;
OnMinute18:
set $destination,250;
end;
OnMinute20:
set $@currenttime, 5;
callfunc "F_Itinreset",4,5,6;
OnMinute23:
set $destination,250;
end;
OnMinute25:
set $@currenttime, 6;
callfunc "F_Itinreset",5,6,7;
OnMinute28:
set $destination,250;
end;
OnMinute30:
set $@currenttime, 7;
callfunc "F_Itinreset",6,7,8;
OnMinute33:
set $destination,250;
end;
OnMinute35:
set $@currenttime, 8;
callfunc "F_Itinreset",7,8,9;
OnMinute38:
set $destination,250;
end;
OnMinute40:
set $@currenttime, 9;
callfunc "F_Itinreset",8,9,10;
OnMinute43:
set $destination,250;
end;
OnMinute45:
set $@currenttime, 10;
callfunc "F_Itinreset",9,10,11;
OnMinute48:
set $destination,250;
end;
OnMinute50:
set $@currenttime, 11;
callfunc "F_Itinreset",10,11,12;
OnMinute53:
set $destination,250;
end;
OnMinute55:
set $@currenttime, 12;
callfunc "F_Itinreset",11,12,1;
OnMinute58:
set $destination,250;
end;
}
function script F_Porter {
if($destination==getarg(0))goto Board;
if($destination!=getarg(0))goto Notime;
Board:
mes "^FF0000[Porter]^000000";
mes "The plane is currently ported. Would you like to board?";
next;
menu "Yes.",L_Yes,"No.",L_Nope,"View Hourly Itinerary.",Itin;
L_Yes:
if($destination!=getarg(0))goto Notime;
warp "airplane", 105, 72;
specialeffect2 501;
L_Nope:
mes "^FF0000[Porter]^000000";
mes "Have a good day. Thank you for traveling with Airship.";
close;
Notime:
mes "^FF0000[Porter]^000000";
if(sex==0) mes "Sorry, ma'am, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary.";
if(sex==1) mes "Sorry, sir, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary.";
next;
menu "Yes, please.",Itin,"No thanks.",L_Nope;
close;
end;
Itin:
mes "^FF0000[Porter]^000000";
callfunc "F_Itin";
}
airport,153,43,5 script Airport Porter 774,{
callfunc "F_Porter",0;
}
prt_fild08,206,279,5 script Porter#01 774,{
callfunc "F_Porter",1;
}
gef_fild00,50,364,5 script Porter#02 774,{
callfunc "F_Porter",5;
}
moc_fild10,163,173,5 script Porter#03 774,{
callfunc "F_Porter",6;
}
mjolnir_12,61,380,5 script Porter#04 774,{
callfunc "F_Porter",3;
}
pay_fild08,159,91,5 script Porter#05 774,{
callfunc "F_Porter",2;
}
pay_fild03,194,181,5 script Porter#06 774,{
callfunc "F_Porter",4;
}
glast_01,196,326,1 script Porter#07 774,{
callfunc "F_Porter",7;
}
umbala,188,98,3 script Porter#08 774,{
callfunc "F_Porter",8;
}
comodo,203,75,8 script Porter#09 774,{
callfunc "F_Porter",9;
}
amatsu,115,78,8 script Porter#10 774,{
callfunc "F_Porter",10;
}
niflheim,132,242,5 script Porter#11 774,{
callfunc "F_Porter",11;
}
xmas,232,309,5 script Porter#12 774,{
callfunc "F_Porter",12;
}
louyang,35,279,8 script Porter#13 774,{
callfunc "F_Porter",13;
}
gonryun,82,95,7 script Porter#14 774,{
callfunc "F_Porter",14;
}
yuno,58,195,4 script Porter#15 774,{
callfunc "F_Porter",15;
}
moc_fild04,210,326,2 script Porter#16 774,{
callfunc "F_Porter",16;
}
jawaii,247,174,7 script Porter#17 774,{
callfunc "F_Porter",17;
}
gef_fild10,159,95,2 script Porter#18 774,{
callfunc "F_Porter",18;
}
mjolnir_02,76,364,5 script Porter#19 774,{
callfunc "F_Porter",19;
}
gefenia01,97,22,6 script Porter#20 774,{
callfunc "F_Porter",20;
}
ayothaya,182,105,5 script Porter#21 774,{
callfunc "F_Porter",21;
}
lighthalzen,99,241,4 script Porter#22 774,{
callfunc "F_Porter",22;
}
jupe_gate,46,18,7 script Porter#23 774,{
callfunc "F_Porter",23;
}
airport,141,43,5 script Itinerary Schedule 837,{
mes "^FF0000[Itinerary]^000000";
callfunc "F_Itin";
}
airplane,102,68,5 script Docker 852,{
if($destination == 250) goto Nowhere;
mes "^FF0000[Airplane Attendant]^000000";
if($destination == 250)goto Notime;
set @dockky, $destination;
if($destination != 250)mes "We are currently docked at "+$locationsname$[$destination]+". Would you like to exit?";
next;
menu "Yes.",Lyes,"No.",Lnope;
Lyes:
if($destination == 250)goto Notime;
if($destination != @dockky)goto Notime;
warp $locationsmap$[$destination], $locationsx[$destination], $locationsy[$destination];
specialeffect2 501;
Lnope:
mes "^FF0000[Airplane Attendant]^000000";
mes "Have a good day. Thank you for traveling with us.";
close;
Notime:
mes "^FF0000[Airplane Attendant]^000000";
if(sex==0) mes "Sorry, ma'am, but the plane currently isn't docked. Please wait.";
if(sex==1) mes "Sorry, sir, but the plane currently isn't docked. Please wait.";
close;
Nowhere:
mes "^FF0000[Airplane Attendant]^000000";
mes "We're currently in air. Please wait until the pilot has announced that we have safely landed.";
close;
}
function script F_Itin {
//This is the itinerary's function. It should work well enough.
if($@currenttime==0)mes "Try again later. A recent server reboot or rehash has messed the itinerary up for a bit.";
if($@currenttime==0)close;
if($@currenttime==0)end;
set @tempo, 0;
set @tempo, $@currenttime - 1;
goto seta;
close;
seta:
set @tempo, @tempo + 1;
set @time, gettime(3);
set @minutes, 5 * @tempo - 5;
set @minutess, 5 * @tempo - 2;
if(@minutes<10)set @minutes$, "0" + @minutes;
if(@minutes>9)set @minutes$, @minutes;
if(@minutess<10)set @minutess$, "0" + @minutess;
if(@minutess>9)set @minutess$, @minutess;
if(@time<12)set @time$,@time;
if(@time==12)set @time$,12;
if(@time>12)set @time$,@time - 12;
if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$ + ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@tempo<12)goto seta;
set @tempo, 0;
goto setb;
setb:
if($@currenttime - 1==@tempo)goto setc;
set @tempo, @tempo + 1;
set @time, gettime(3) + 1;
set @minutes, 5 * @tempo - 5;
set @minutess, 5 * @tempo - 2;
if(@minutes<10)set @minutes$, "0" + @minutes;
if(@minutes>9)set @minutes$, @minutes;
if(@minutess<10)set @minutess$, "0" + @minutess;
if(@minutess>9)set @minutess$, @minutess;
if(@time<12)set @time$,@time;
if(@time==12)set @time$,12;
if(@time>12)set @time$,@time - 12;
if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
goto setb;
setc:
close;
end;
}
function script F_Itinreset {
setarray $alreadygoneto[$locationn[getarg(0)]], 0;
goto sest;
sest:
setarray $locationn[getarg(0)],rand(0,getarraysize($locationsname$) - 1);
if($alreadygoneto[$locationn[getarg(0)]]==1)goto sest;
setarray $alreadygoneto[$locationn[getarg(0)]], 1;
set $destination,$locationn[$@currenttime];
announce "Pilot: The plane has arrived at "+$locationsname$[$locationn[getarg(1)]]+". Departure to "+ $locationsname$[$locationn[getarg(2)]] + " is in 3 minutes.",16;
end;
}

View File

@ -1,119 +1,119 @@
//===== rAthena Script =======================================
//= Banker Script
//===== By: ==================================================
//= Syrus22 (1.0)
//===== Current Version: =====================================
//= 2.0
//===== Compatible With: =====================================
//= Any rAthena version with Account variables.
//===== Description: =========================================
//= An account wide Banker to store Zeny
//===== Additional Comments: =================================
//= Syrus22 - There's an optional transaction fee at the top of
//= the script. To use it simply change the first set command
//= to set the cost variable to whatever you want the fee to be.
//= Version 2.0: Optimized and brought the script up to standard. [Jguy]
//============================================================
prontera,132,217,5 script Banker 109,{
set @cost,500;
mes "[Banker]";
mes "Welcome to the First Bank of Prontera. How can I help you today?";
next;
switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's my current balance?:Cancel")) {
case 1:
mes "[Banker]";
mes "Very well... How much would you like to deposit? The maximum you can deposit at once is 999,999 Zeny.";
next;
if (@cost > 0) {
mes "[Banker]";
mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!";
next;
}
input @deposit;
if (@deposit < 1) {
mes "Make sure you ask me to deposit a real amount.";
close;
}
else if (@deposit > Zeny) {
mes "It does not appear like you have the amount of zeny you're trying to deposit!";
close;
}
else if (@deposit > (Zeny - @cost)) {
mes "You need " + @cost + " Zeny to cover the transaction fee!";
close;
}
else {
set Zeny,Zeny - @deposit;
set Zeny,Zeny - @cost;
set #bankstorage,#bankstorage + @deposit;
mes "[Banker]";
mes "Thank you very much... Your zeny is in good hands.";
close;
}
case 2:
mes "[Banker]";
mes "Very well... How much would you like to withdraw? The maximum you can withdraw at one time is 999,999 Zeny";
next;
if (@cost > 0) {
mes "[Banker]";
mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!";
next;
}
input @withdrawl;
if (@withdrawl < 1) {
mes "Please don't play games. I need a real amount to withdraw.";
close;
}
else if (@withdrawl > #bankstorage) {
mes "I show you only have ^00FF00" + #bankstorage +"^000000 zeny in your account!";
close;
}
else if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) {
mes "[Banker]";
mes "You don't have the Zeny for the transaction fee right now. Would you like me to take the fee directly from your withdrawl?";
next;
switch(select("Yes please.:No, Thanks")){
case 1:
mes "[Banker]";
mes "Removing " + @cost + " from your withdrawl to cover the deposit fee...";
set @withdrawl,@withdrawl - @cost;
set #bankstorage,#bankstorage - @cost;
set @cost,0;
next;
set Zeny,Zeny - @cost;
set Zeny,Zeny + @withdrawl;
set #bankstorage,#bankstorage - @withdrawl;
mes "[Banker]";
mes "There's your Zeny. Have a good day.";
close;
case 2:
mes "[Banker]";
mes "Very well... come again soon.";
close;
}
}
else {
set Zeny,Zeny - @cost;
set Zeny,Zeny + @withdrawl;
set #bankstorage,#bankstorage - @withdrawl;
mes "[Banker]";
mes "There's your Zeny. Have a good day.";
close;
}
case 3:
mes "[Banker]";
mes "Hmmmm let me check some paper work.";
next;
mes "*Rustle, Rustle*";
next;
mes "[Banker]";
mes "You currently have " + #bankstorage + " Zeny in your account.";
close;
case 4:
mes "[Banker]";
mes "Very well... come again soon.";
close;
}
//===== rAthena Script =======================================
//= Banker Script
//===== By: ==================================================
//= Syrus22 (1.0)
//===== Current Version: =====================================
//= 2.0
//===== Compatible With: =====================================
//= Any rAthena version with Account variables.
//===== Description: =========================================
//= An account wide Banker to store Zeny
//===== Additional Comments: =================================
//= Syrus22 - There's an optional transaction fee at the top of
//= the script. To use it simply change the first set command
//= to set the cost variable to whatever you want the fee to be.
//= Version 2.0: Optimized and brought the script up to standard. [Jguy]
//============================================================
prontera,132,217,5 script Banker 109,{
set @cost,500;
mes "[Banker]";
mes "Welcome to the First Bank of Prontera. How can I help you today?";
next;
switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's my current balance?:Cancel")) {
case 1:
mes "[Banker]";
mes "Very well... How much would you like to deposit? The maximum you can deposit at once is 999,999 Zeny.";
next;
if (@cost > 0) {
mes "[Banker]";
mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!";
next;
}
input @deposit;
if (@deposit < 1) {
mes "Make sure you ask me to deposit a real amount.";
close;
}
else if (@deposit > Zeny) {
mes "It does not appear like you have the amount of zeny you're trying to deposit!";
close;
}
else if (@deposit > (Zeny - @cost)) {
mes "You need " + @cost + " Zeny to cover the transaction fee!";
close;
}
else {
set Zeny,Zeny - @deposit;
set Zeny,Zeny - @cost;
set #bankstorage,#bankstorage + @deposit;
mes "[Banker]";
mes "Thank you very much... Your zeny is in good hands.";
close;
}
case 2:
mes "[Banker]";
mes "Very well... How much would you like to withdraw? The maximum you can withdraw at one time is 999,999 Zeny";
next;
if (@cost > 0) {
mes "[Banker]";
mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!";
next;
}
input @withdrawl;
if (@withdrawl < 1) {
mes "Please don't play games. I need a real amount to withdraw.";
close;
}
else if (@withdrawl > #bankstorage) {
mes "I show you only have ^00FF00" + #bankstorage +"^000000 zeny in your account!";
close;
}
else if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) {
mes "[Banker]";
mes "You don't have the Zeny for the transaction fee right now. Would you like me to take the fee directly from your withdrawl?";
next;
switch(select("Yes please.:No, Thanks")){
case 1:
mes "[Banker]";
mes "Removing " + @cost + " from your withdrawl to cover the deposit fee...";
set @withdrawl,@withdrawl - @cost;
set #bankstorage,#bankstorage - @cost;
set @cost,0;
next;
set Zeny,Zeny - @cost;
set Zeny,Zeny + @withdrawl;
set #bankstorage,#bankstorage - @withdrawl;
mes "[Banker]";
mes "There's your Zeny. Have a good day.";
close;
case 2:
mes "[Banker]";
mes "Very well... come again soon.";
close;
}
}
else {
set Zeny,Zeny - @cost;
set Zeny,Zeny + @withdrawl;
set #bankstorage,#bankstorage - @withdrawl;
mes "[Banker]";
mes "There's your Zeny. Have a good day.";
close;
}
case 3:
mes "[Banker]";
mes "Hmmmm let me check some paper work.";
next;
mes "*Rustle, Rustle*";
next;
mes "[Banker]";
mes "You currently have " + #bankstorage + " Zeny in your account.";
close;
case 4:
mes "[Banker]";
mes "Very well... come again soon.";
close;
}
} // EOF

View File

@ -1,116 +1,116 @@
//===== rAthena Script =======================================
//= The 2nd Bank of Prontera (with daily 0.01% income!)
//===== By: ==================================================
//= Lupus (1.0)
//===== Current Version: =====================================
//= 1.2a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= A bank which has an interest %
//===== Additional Comments: =================================
// Look for this formula and setup your Bank daily % interest
// #kafrabank/1000 = 0.1% of interest per day
// #kafrabank/100 = 1% of interest per day
// #kafrabank/10 = 10% of interest per day
//
// 1.1 Added log of bank operation -> logmes "some info";
// 1.2 Set max income to 100,000z. It would help to avoid
// zeny exploits when you change DATE at your server
// 1.2a Corrected bad duplicate names. (bugreport:921) [Samuray22]
//============================================================
- script Bank Clerk::bankg 833,{
mes"[Maniss]";
mes strcharinfo(0)+", welcome to the 2nd Bank of Prontera!";
set @kb_int,(gettime(6)*31)+gettime(5); //today's number
set @income,0;
//calculate %
if (#kafrabank<=0 || #kb_int>=@kb_int) goto L_NoIncomeToday;
set @income,(#kafrabank/1000)*(@kb_int-#kb_int); //@income == % of the sum
//max income constant:
if (@income>100000) set @income,100000;
L_NoIncomeToday:
set #kb_int,@kb_int; //reset days timer
if(#kafrabank==0) mes "We could open you an account.";
if(@income>0) mes "Today's income: ^135445" + @income + "^000000 zeny.";
set #kafrabank,#kafrabank+@income;
if(#kafrabank>0) mes "Your account: ^135445" + #kafrabank + "^000000 zeny.";
mes "What would you like?";
next;
if(#kafrabank==0) menu "-Open an account",-,"-Quit",B_EXIT2;
if(#kafrabank>0) menu "-Deposit money",-,"-Withdraw money",M_WITHDRAW,"-Quit",B_EXIT2;
mes"[Maniss]";
mes "Please, tell me how much zeny you would like to deposit.";
next;
if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
if(@kafrabank<1000) goto L_LESS_1000;
if(@kafrabank>zeny) goto L_NOT_ENOUGH;
set zeny,zeny-@kafrabank;
set #kafrabank,#kafrabank+@kafrabank;
mes"[Maniss]";
mes "You've made a deposit of ^135445" + @kafrabank + "z^000000.";
//we log these zeny operations into the log db
logmes "Bank %: " + @income +"z, Deposit: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
goto B_EXIT;
M_WITHDRAW:
if(#kafrabank==0) goto L_ZERO_ACCOUNT;
mes"[Maniss]";
mes "Your account: ^135445" + #kafrabank + "^000000 zeny.";
mes "How much zeny would you like to withdraw?";
next;
if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
if(@kafrabank<1) goto B_EXIT2;
if(@kafrabank>#kafrabank) goto L_NOT_ENOUGH;
set #kafrabank,#kafrabank-@kafrabank;
set zeny,zeny+@kafrabank;
mes"[Maniss]";
mes "Here is your ^135445" + @kafrabank + "z^000000, put your sign here...";
//we log these zeny operations into the log db
logmes "Bank %: " + @income +"z, Withdraw: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
goto B_EXIT;
L_NOT_ENOUGH:
mes"[Maniss]";
mes "You don't have enough zeny for this operation.";
next;
goto B_EXIT2;
L_ZERO_ACCOUNT:
mes"[Maniss]";
mes "You don't have any zeny on your account!";
next;
goto B_EXIT2;
L_TOO_BIG_AMOUNT:
mes"[Maniss]";
mes "Sorry. The maximum deposit you can make on a time is 10,000,000 zeny.";
next;
goto B_EXIT2;
L_LESS_1000:
mes"[Maniss]";
mes "We're sorry, the minimum amount of zeny you can deposit is 1,000 zeny.";
next;
goto B_EXIT2;
B_EXIT:
mes "Very well... Come again soon!";
next;
B_EXIT2:
mes"[Maniss]";
mes "Thank you for using our Bank Service. We hope to see you again soon.";
close;
}
prontera,131,190,1 duplicate(bankg) Bank Clerk#1-1 833
geffen,125,73,3 duplicate(bankg) Bank Clerk#2-1 833
izlude,145,107,1 duplicate(bankg) Bank Clerk#3-1 833
morocc,147,84,7 duplicate(bankg) Bank Clerk#4-1 833
//===== rAthena Script =======================================
//= The 2nd Bank of Prontera (with daily 0.01% income!)
//===== By: ==================================================
//= Lupus (1.0)
//===== Current Version: =====================================
//= 1.2a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= A bank which has an interest %
//===== Additional Comments: =================================
// Look for this formula and setup your Bank daily % interest
// #kafrabank/1000 = 0.1% of interest per day
// #kafrabank/100 = 1% of interest per day
// #kafrabank/10 = 10% of interest per day
//
// 1.1 Added log of bank operation -> logmes "some info";
// 1.2 Set max income to 100,000z. It would help to avoid
// zeny exploits when you change DATE at your server
// 1.2a Corrected bad duplicate names. (bugreport:921) [Samuray22]
//============================================================
- script Bank Clerk::bankg 833,{
mes"[Maniss]";
mes strcharinfo(0)+", welcome to the 2nd Bank of Prontera!";
set @kb_int,(gettime(6)*31)+gettime(5); //today's number
set @income,0;
//calculate %
if (#kafrabank<=0 || #kb_int>=@kb_int) goto L_NoIncomeToday;
set @income,(#kafrabank/1000)*(@kb_int-#kb_int); //@income == % of the sum
//max income constant:
if (@income>100000) set @income,100000;
L_NoIncomeToday:
set #kb_int,@kb_int; //reset days timer
if(#kafrabank==0) mes "We could open you an account.";
if(@income>0) mes "Today's income: ^135445" + @income + "^000000 zeny.";
set #kafrabank,#kafrabank+@income;
if(#kafrabank>0) mes "Your account: ^135445" + #kafrabank + "^000000 zeny.";
mes "What would you like?";
next;
if(#kafrabank==0) menu "-Open an account",-,"-Quit",B_EXIT2;
if(#kafrabank>0) menu "-Deposit money",-,"-Withdraw money",M_WITHDRAW,"-Quit",B_EXIT2;
mes"[Maniss]";
mes "Please, tell me how much zeny you would like to deposit.";
next;
if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
if(@kafrabank<1000) goto L_LESS_1000;
if(@kafrabank>zeny) goto L_NOT_ENOUGH;
set zeny,zeny-@kafrabank;
set #kafrabank,#kafrabank+@kafrabank;
mes"[Maniss]";
mes "You've made a deposit of ^135445" + @kafrabank + "z^000000.";
//we log these zeny operations into the log db
logmes "Bank %: " + @income +"z, Deposit: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
goto B_EXIT;
M_WITHDRAW:
if(#kafrabank==0) goto L_ZERO_ACCOUNT;
mes"[Maniss]";
mes "Your account: ^135445" + #kafrabank + "^000000 zeny.";
mes "How much zeny would you like to withdraw?";
next;
if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
if(@kafrabank<1) goto B_EXIT2;
if(@kafrabank>#kafrabank) goto L_NOT_ENOUGH;
set #kafrabank,#kafrabank-@kafrabank;
set zeny,zeny+@kafrabank;
mes"[Maniss]";
mes "Here is your ^135445" + @kafrabank + "z^000000, put your sign here...";
//we log these zeny operations into the log db
logmes "Bank %: " + @income +"z, Withdraw: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
goto B_EXIT;
L_NOT_ENOUGH:
mes"[Maniss]";
mes "You don't have enough zeny for this operation.";
next;
goto B_EXIT2;
L_ZERO_ACCOUNT:
mes"[Maniss]";
mes "You don't have any zeny on your account!";
next;
goto B_EXIT2;
L_TOO_BIG_AMOUNT:
mes"[Maniss]";
mes "Sorry. The maximum deposit you can make on a time is 10,000,000 zeny.";
next;
goto B_EXIT2;
L_LESS_1000:
mes"[Maniss]";
mes "We're sorry, the minimum amount of zeny you can deposit is 1,000 zeny.";
next;
goto B_EXIT2;
B_EXIT:
mes "Very well... Come again soon!";
next;
B_EXIT2:
mes"[Maniss]";
mes "Thank you for using our Bank Service. We hope to see you again soon.";
close;
}
prontera,131,190,1 duplicate(bankg) Bank Clerk#1-1 833
geffen,125,73,3 duplicate(bankg) Bank Clerk#2-1 833
izlude,145,107,1 duplicate(bankg) Bank Clerk#3-1 833
morocc,147,84,7 duplicate(bankg) Bank Clerk#4-1 833

View File

@ -1,347 +1,347 @@
//===== rAthena Script =======================================
//= Black Jack
//===== By: ==================================================
//= kobra_k88
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Black Jack card game. Gameplay based off standard casino
//= black jack rules. Dealer must have at least 17 to stay and will
//= automatically stay at 17 and up. Player must have at least
//= 13 to stay. Aces counted as 11 or 1. Option to "Double Down".
//= Currently does not allow for "insurance", or "splitting"
//= of pairs.
//===== Additional Comments: =================================
//=
//============================================================
cmd_in02,188,89,1 script Black Jack Dealer 57,{
mes "[Dealer]";
mes "Hello there! Would you like to play a game of Black Jack?";
M_Menu:
next;
menu "What are the rules?",M_0, "I want to play.",L_Play, "No thanks.",M_End;
M_0:
mes "[Dealer]";
mes "What would you like to know?";
sM_Menu0:
next;
menu "The basics.",sM_0a, "Winning and loosing.",sM_0b, "'Double Down'.",sM_0c,
"Ace value.",sM_0d, "Nothing.",M_Menu;
sM_0a:
mes "[Dealer]";
mes "Black Jack is a card game in which the goal is to get 21, or as";
mes "close to 21 points as possible, without going over 21.";
next;
mes "[Dealer]";
mes "Before the game starts, the player must make a bet. Once the bet";
mes "has been made, both the dealer and the player are dealt 2 cards";
mes "each. Depending on what cards you have, you can choose to ^5533FF'stay'^000000,";
mes "or you can choose to ^5533FF'pull'^000000.";
next;
mes "[Dealer]";
mes "When you choose to 'stay', you are telling the dealer that you don't";
mes "need anymore cards. This allows the dealer to pull if he/she";
mes "wants to. In order to stay, you must have ^FF3355at least 13 points^000000. The";
mes "dealer can only stay when he/she has^FF3355 17 points or more^000000.";
next;
mes "[Dealer]";
mes "When you choose to 'pull', you are telling the dealer that you want";
mes "another card. By pulling more cards you can increase your point";
mes "total. As long has you have ^FF3355less than 21^000000 points you can pull a";
mes "card from the deck.";
goto sM_Menu0;
sM_0b:
mes "[Dealer]";
mes "There are 3 ways to win and loose at Black Jack.";
next;
mes "[Dealer]";
mes "1.) At the end of a Black Jack round, if you have more points";
mes "than the dealer you will win the round. Conversely if you have";
mes "less points than the dealer you will loose.";
next;
mes "[Dealer]";
mes "2.) If you pull a card that makes your point total go over 21 you";
mes "will automatically loose the round. This is called a ^5533FF'bust'^000000. If";
mes "the dealer busts then you will win the round.";
next;
mes "[Dealer]";
mes "3.) If you have a point total of 21 with the first 2 cards, you";
mes "will automatically win the round. This is called a ^5533FF'Black Jack'^000000";
mes "and happens when you get an 'Ace' and a '10 valued' card. If the";
mes "dealer gets a Black Jack he/she will automatically win the round.";
next;
mes "[Dealer]";
mes "4.) Besides winning and loosing, you can tie with the dealer. If";
mes "both you and the dealer have the same point total at the end of a";
mes "round, this will result in a tie with no winner and no loss or gain";
mes "in money.";
next;
mes "[Dealer]";
mes "This is called a ^5533FF'push'^000000 with the dealer. This also";
mes "applies to both you and the dealer having Black Jack at the same";
mes "time.";
goto sM_Menu0;
sM_0c:
mes "[Dealer]";
mes "The 'Double Down' option allows you to double your current bet,";
mes "but with the drawback that you will only be able to pull one";
mes "additional card. This option is only available at the beggining of";
mes "each round.";
next;
mes "[Dealer]";
mes "An example of when doubling down is useful, is when";
mes "your first 2 cards give you a point total of 11. You have a good";
mes "chance of getting 21 or 20 with the next card that you draw. This";
mes "would be a good hand to double down on.";
goto sM_Menu0;
sM_0d:
mes "[Dealer]";
mes "The 'Ace' card is a unique card in the game of Black Jack because";
mes "it can have 2 values. An Ace can be counted as either 11 points,";
mes "or just 1 point. For example if you had an Ace and a 4, that would";
mes "give you either 15 or 5 points.";
next;
mes "[Dealer]";
mes "If you decided to stay, the Ace would automatically be counted as";
mes "11 points to give you 15 points total.";
next;
mes "[Dealer]";
mes "If you had decided to pull and received a 9, the ace would";
mes "automatically be counted as 1 point to give you a total of 14";
mes "points. If the Ace was counted as 11 points, you would have a";
mes "point total over 21 and would have lost.";
next;
mes "[Dealer]";
mes "It is because of the flexibilty you have with the 'Ace' that makes";
mes "it the most powerfull card in the game.";
goto sM_Menu0;
M_End:
mes "[Dealer]";
mes "Feel free to come back anytime";
close;
//================
L_Play:
mes "[Dealer]";
mes "Please place your bets...";
next;
menu "2z",M_1a, "10z",M_1b, "20z",M_1c, "100z",M_1d, "Too rich for my blood....",M_End;
M_1a:
if(Zeny < 2) goto sL_NotEnuf;
set @bet, 2;
goto L_Cont0;
M_1b:
if(Zeny < 10) goto sL_NotEnuf;
set @bet, 10;
goto L_Cont0;
M_1c:
if(Zeny < 20) goto sL_NotEnuf;
set @bet, 20;
goto L_Cont0;
M_1d:
if(Zeny < 100) goto sL_NotEnuf;
set @bet, 100;
goto L_Cont0;
sL_NotEnuf:
mes "[Dealer]";
mes "I'm sorry but you don't have enough zeny to make that bet.";
close;
L_Cont0:
mes "(the cards are being dealt)";
next;
deletearray $@card[0],13;
set @dealerTurn, 0;
set @numP, 0;
set @numD, 0;
set @pAce, 0;
set @dAce, 0;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
//==============
L_Start:
callsub sF_GetTot;
mes "- Here are the ^FF5533DEALER'S^000000 cards:";
if (@numD==2) callsub sF_D2cards;
if (@numD==3) callsub sF_D3cards;
if (@numD==4) callsub sF_D4cards;
if (@numD==5) callsub sF_D5cards;
mes " The DEALER has: ^FF5533"+@dealTot+"^000000";
mes " ";
mes "- Here are ^5533FFYOUR^000000 cards:";
if (@numP==2) callsub sF_P2cards;
if (@numP==3) callsub sF_P3cards;
if (@numP==4) callsub sF_P4cards;
if (@numP==5) callsub sF_P5cards;
if(@pAce != 1 || @playTot == 21) mes " YOU have: ^5533FF" +@playTot+ "^000000";
if(@pAce == 1 && @playTot != 21) mes " You have: ^5533FF" +@playTot+ "^000000, or ^5533FF" +(@playTot-10)+ "^000000";
next;
if(@playTot==21 && @dealTot==21) goto sL_Push;
if(@numP==2 && @playTot == 21) goto sL_Win;
if(@numD==2 && @dealTot == 21) goto sL_Lose;
if(@playTot > 21) goto sL_Lose;
if(@dealTot > 21) goto sL_Win;
if(@numP==2 && @dealerTurn==0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay, "Double Down",M_Double;
if(@dealerTurn == 0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay;
M_Stay:
mes "[Dealer]";
if(@playTot < 13) goto sL_PlayToLow;
if(@dealTot > 16) mes "The Dealer stays.";
if(@dealTot > 16 || @numD == 5) goto L_Check;
mes "The Dealer is going to pull";
next;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
set @dealerTurn, 1;
goto L_Start;
sL_PlayToLow:
mes "I'm sorry but you do not have a high enough total to stay. You must pull.";
next;
goto M_Hit;
M_Hit:
if(@numP == 5) goto M_Stay;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
goto L_Start;
M_Double:
mes "[Dealer]";
mes "Player has chosen to Double Down. You're current bet will be";
mes "doubled, and you will only be able to pull 1 extra card.";
next;
set @dealerTurn, 1;
set @bet, @bet*2;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
goto L_Start;
//=============
L_Check:
next;
if(@playTot < @dealTot) goto sL_Lose;
if(@playTot == @dealTot) goto sL_Push;
sL_Win:
mes "[Dealer]";
mes "Congratulations, you've won!";
next;
set Zeny, Zeny + @bet;
goto L_Play;
sL_Lose:
mes "[Dealer]";
mes "I'm sorry but you've lost.";
set Zeny, Zeny - @bet;
next;
goto L_Play;
sL_Push:
mes "[Dealer]";
mes "Its a push. You tied with the Dealer.";
next;
goto L_Play;
//==================================
// Sub function for dealing/pulling the cards
sF_GetCards:
set @rnd, rand(1,13);
if($@card[@rnd] == 4) goto sF_GetCards;
set $@card[@rnd], $@card[@rnd] + 1;
set getarg(1), @rnd;
if(getarg(1) > 10) set getarg(1), 10;
if(getarg(1) == 1 && getarg(3) < 1) set getarg(1), 11;
if(getarg(1) == 11) set getarg(3), 1;
set getarg(2), " " + getarg(1) + " ";
if(@rnd == 10) set getarg(2), getarg(1);
if(@rnd == 1) set getarg(2), " A ";
if(@rnd == 11) set getarg(2), " J ";
if(@rnd == 12) set getarg(2), " Q ";
if(@rnd == 13) set getarg(2), " K ";
set getarg(0), getarg(0) + 1;
return;
//==================================
// Sub function for getting the total score for each hand
sF_GetTot:
set @i, 0;
set @dealTot, 0;
set @playTot, 0;
GetDealTot:
set @dealTot, @dealTot + @dealCard[@i];
set @i, @i + 1;
if(@i < @numD) goto GetDealTot;
if(@dAce == 1 && @dealTot > 21) set @dealTot, @dealTot - 10;
set @i, 0;
GetPlayTot:
set @playTot, @playTot + @playCard[@i];
set @i, @i + 1;
if(@i < @numP) goto GetPlayTot;
if(@pAce == 1 && @playTot > 21) set @pAce, 2;
if(@pAce > 0 && @playTot > 21) set @playTot, @playTot - 10;
return;
//=======================================
// Sub function for displaying the Cards
sF_D2cards:
mes " .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | ";
mes " '-----' '-----' ";
return;
sF_P2cards:
mes " .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | ";
mes " '-----' '-----' ";
return;
sF_D3cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
return;
sF_P3cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
return;
sF_D4cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. ";
mes " | "+@dealCard$[3]+" |";
mes " '-----' ";
return;
sF_P4cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" |";
mes " '-----' '-----' '-----' ";
mes " .-----. ";
mes " | "+@playCard$[3]+" |";
mes " '-----' ";
return;
sF_D5cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. .-----. ";
mes " | "+@dealCard$[3]+" | | "+@dealCard$[4]+" | ";
mes " '-----' '-----' ";
return;
sF_P5cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. .-----. ";
mes " | "+@playCard$[3]+" | | "+@playCard$[4]+" | ";
mes " '-----' '-----' ";
return;
}
//===== rAthena Script =======================================
//= Black Jack
//===== By: ==================================================
//= kobra_k88
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Black Jack card game. Gameplay based off standard casino
//= black jack rules. Dealer must have at least 17 to stay and will
//= automatically stay at 17 and up. Player must have at least
//= 13 to stay. Aces counted as 11 or 1. Option to "Double Down".
//= Currently does not allow for "insurance", or "splitting"
//= of pairs.
//===== Additional Comments: =================================
//=
//============================================================
cmd_in02,188,89,1 script Black Jack Dealer 57,{
mes "[Dealer]";
mes "Hello there! Would you like to play a game of Black Jack?";
M_Menu:
next;
menu "What are the rules?",M_0, "I want to play.",L_Play, "No thanks.",M_End;
M_0:
mes "[Dealer]";
mes "What would you like to know?";
sM_Menu0:
next;
menu "The basics.",sM_0a, "Winning and loosing.",sM_0b, "'Double Down'.",sM_0c,
"Ace value.",sM_0d, "Nothing.",M_Menu;
sM_0a:
mes "[Dealer]";
mes "Black Jack is a card game in which the goal is to get 21, or as";
mes "close to 21 points as possible, without going over 21.";
next;
mes "[Dealer]";
mes "Before the game starts, the player must make a bet. Once the bet";
mes "has been made, both the dealer and the player are dealt 2 cards";
mes "each. Depending on what cards you have, you can choose to ^5533FF'stay'^000000,";
mes "or you can choose to ^5533FF'pull'^000000.";
next;
mes "[Dealer]";
mes "When you choose to 'stay', you are telling the dealer that you don't";
mes "need anymore cards. This allows the dealer to pull if he/she";
mes "wants to. In order to stay, you must have ^FF3355at least 13 points^000000. The";
mes "dealer can only stay when he/she has^FF3355 17 points or more^000000.";
next;
mes "[Dealer]";
mes "When you choose to 'pull', you are telling the dealer that you want";
mes "another card. By pulling more cards you can increase your point";
mes "total. As long has you have ^FF3355less than 21^000000 points you can pull a";
mes "card from the deck.";
goto sM_Menu0;
sM_0b:
mes "[Dealer]";
mes "There are 3 ways to win and loose at Black Jack.";
next;
mes "[Dealer]";
mes "1.) At the end of a Black Jack round, if you have more points";
mes "than the dealer you will win the round. Conversely if you have";
mes "less points than the dealer you will loose.";
next;
mes "[Dealer]";
mes "2.) If you pull a card that makes your point total go over 21 you";
mes "will automatically loose the round. This is called a ^5533FF'bust'^000000. If";
mes "the dealer busts then you will win the round.";
next;
mes "[Dealer]";
mes "3.) If you have a point total of 21 with the first 2 cards, you";
mes "will automatically win the round. This is called a ^5533FF'Black Jack'^000000";
mes "and happens when you get an 'Ace' and a '10 valued' card. If the";
mes "dealer gets a Black Jack he/she will automatically win the round.";
next;
mes "[Dealer]";
mes "4.) Besides winning and loosing, you can tie with the dealer. If";
mes "both you and the dealer have the same point total at the end of a";
mes "round, this will result in a tie with no winner and no loss or gain";
mes "in money.";
next;
mes "[Dealer]";
mes "This is called a ^5533FF'push'^000000 with the dealer. This also";
mes "applies to both you and the dealer having Black Jack at the same";
mes "time.";
goto sM_Menu0;
sM_0c:
mes "[Dealer]";
mes "The 'Double Down' option allows you to double your current bet,";
mes "but with the drawback that you will only be able to pull one";
mes "additional card. This option is only available at the beggining of";
mes "each round.";
next;
mes "[Dealer]";
mes "An example of when doubling down is useful, is when";
mes "your first 2 cards give you a point total of 11. You have a good";
mes "chance of getting 21 or 20 with the next card that you draw. This";
mes "would be a good hand to double down on.";
goto sM_Menu0;
sM_0d:
mes "[Dealer]";
mes "The 'Ace' card is a unique card in the game of Black Jack because";
mes "it can have 2 values. An Ace can be counted as either 11 points,";
mes "or just 1 point. For example if you had an Ace and a 4, that would";
mes "give you either 15 or 5 points.";
next;
mes "[Dealer]";
mes "If you decided to stay, the Ace would automatically be counted as";
mes "11 points to give you 15 points total.";
next;
mes "[Dealer]";
mes "If you had decided to pull and received a 9, the ace would";
mes "automatically be counted as 1 point to give you a total of 14";
mes "points. If the Ace was counted as 11 points, you would have a";
mes "point total over 21 and would have lost.";
next;
mes "[Dealer]";
mes "It is because of the flexibilty you have with the 'Ace' that makes";
mes "it the most powerfull card in the game.";
goto sM_Menu0;
M_End:
mes "[Dealer]";
mes "Feel free to come back anytime";
close;
//================
L_Play:
mes "[Dealer]";
mes "Please place your bets...";
next;
menu "2z",M_1a, "10z",M_1b, "20z",M_1c, "100z",M_1d, "Too rich for my blood....",M_End;
M_1a:
if(Zeny < 2) goto sL_NotEnuf;
set @bet, 2;
goto L_Cont0;
M_1b:
if(Zeny < 10) goto sL_NotEnuf;
set @bet, 10;
goto L_Cont0;
M_1c:
if(Zeny < 20) goto sL_NotEnuf;
set @bet, 20;
goto L_Cont0;
M_1d:
if(Zeny < 100) goto sL_NotEnuf;
set @bet, 100;
goto L_Cont0;
sL_NotEnuf:
mes "[Dealer]";
mes "I'm sorry but you don't have enough zeny to make that bet.";
close;
L_Cont0:
mes "(the cards are being dealt)";
next;
deletearray $@card[0],13;
set @dealerTurn, 0;
set @numP, 0;
set @numD, 0;
set @pAce, 0;
set @dAce, 0;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
//==============
L_Start:
callsub sF_GetTot;
mes "- Here are the ^FF5533DEALER'S^000000 cards:";
if (@numD==2) callsub sF_D2cards;
if (@numD==3) callsub sF_D3cards;
if (@numD==4) callsub sF_D4cards;
if (@numD==5) callsub sF_D5cards;
mes " The DEALER has: ^FF5533"+@dealTot+"^000000";
mes " ";
mes "- Here are ^5533FFYOUR^000000 cards:";
if (@numP==2) callsub sF_P2cards;
if (@numP==3) callsub sF_P3cards;
if (@numP==4) callsub sF_P4cards;
if (@numP==5) callsub sF_P5cards;
if(@pAce != 1 || @playTot == 21) mes " YOU have: ^5533FF" +@playTot+ "^000000";
if(@pAce == 1 && @playTot != 21) mes " You have: ^5533FF" +@playTot+ "^000000, or ^5533FF" +(@playTot-10)+ "^000000";
next;
if(@playTot==21 && @dealTot==21) goto sL_Push;
if(@numP==2 && @playTot == 21) goto sL_Win;
if(@numD==2 && @dealTot == 21) goto sL_Lose;
if(@playTot > 21) goto sL_Lose;
if(@dealTot > 21) goto sL_Win;
if(@numP==2 && @dealerTurn==0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay, "Double Down",M_Double;
if(@dealerTurn == 0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay;
M_Stay:
mes "[Dealer]";
if(@playTot < 13) goto sL_PlayToLow;
if(@dealTot > 16) mes "The Dealer stays.";
if(@dealTot > 16 || @numD == 5) goto L_Check;
mes "The Dealer is going to pull";
next;
callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
set @dealerTurn, 1;
goto L_Start;
sL_PlayToLow:
mes "I'm sorry but you do not have a high enough total to stay. You must pull.";
next;
goto M_Hit;
M_Hit:
if(@numP == 5) goto M_Stay;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
goto L_Start;
M_Double:
mes "[Dealer]";
mes "Player has chosen to Double Down. You're current bet will be";
mes "doubled, and you will only be able to pull 1 extra card.";
next;
set @dealerTurn, 1;
set @bet, @bet*2;
callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
goto L_Start;
//=============
L_Check:
next;
if(@playTot < @dealTot) goto sL_Lose;
if(@playTot == @dealTot) goto sL_Push;
sL_Win:
mes "[Dealer]";
mes "Congratulations, you've won!";
next;
set Zeny, Zeny + @bet;
goto L_Play;
sL_Lose:
mes "[Dealer]";
mes "I'm sorry but you've lost.";
set Zeny, Zeny - @bet;
next;
goto L_Play;
sL_Push:
mes "[Dealer]";
mes "Its a push. You tied with the Dealer.";
next;
goto L_Play;
//==================================
// Sub function for dealing/pulling the cards
sF_GetCards:
set @rnd, rand(1,13);
if($@card[@rnd] == 4) goto sF_GetCards;
set $@card[@rnd], $@card[@rnd] + 1;
set getarg(1), @rnd;
if(getarg(1) > 10) set getarg(1), 10;
if(getarg(1) == 1 && getarg(3) < 1) set getarg(1), 11;
if(getarg(1) == 11) set getarg(3), 1;
set getarg(2), " " + getarg(1) + " ";
if(@rnd == 10) set getarg(2), getarg(1);
if(@rnd == 1) set getarg(2), " A ";
if(@rnd == 11) set getarg(2), " J ";
if(@rnd == 12) set getarg(2), " Q ";
if(@rnd == 13) set getarg(2), " K ";
set getarg(0), getarg(0) + 1;
return;
//==================================
// Sub function for getting the total score for each hand
sF_GetTot:
set @i, 0;
set @dealTot, 0;
set @playTot, 0;
GetDealTot:
set @dealTot, @dealTot + @dealCard[@i];
set @i, @i + 1;
if(@i < @numD) goto GetDealTot;
if(@dAce == 1 && @dealTot > 21) set @dealTot, @dealTot - 10;
set @i, 0;
GetPlayTot:
set @playTot, @playTot + @playCard[@i];
set @i, @i + 1;
if(@i < @numP) goto GetPlayTot;
if(@pAce == 1 && @playTot > 21) set @pAce, 2;
if(@pAce > 0 && @playTot > 21) set @playTot, @playTot - 10;
return;
//=======================================
// Sub function for displaying the Cards
sF_D2cards:
mes " .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | ";
mes " '-----' '-----' ";
return;
sF_P2cards:
mes " .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | ";
mes " '-----' '-----' ";
return;
sF_D3cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
return;
sF_P3cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
return;
sF_D4cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. ";
mes " | "+@dealCard$[3]+" |";
mes " '-----' ";
return;
sF_P4cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" |";
mes " '-----' '-----' '-----' ";
mes " .-----. ";
mes " | "+@playCard$[3]+" |";
mes " '-----' ";
return;
sF_D5cards:
mes " .-----. .-----. .-----. ";
mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. .-----. ";
mes " | "+@dealCard$[3]+" | | "+@dealCard$[4]+" | ";
mes " '-----' '-----' ";
return;
sF_P5cards:
mes " .-----. .-----. .-----. ";
mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
mes " '-----' '-----' '-----' ";
mes " .-----. .-----. ";
mes " | "+@playCard$[3]+" | | "+@playCard$[4]+" | ";
mes " '-----' '-----' ";
return;
}

View File

@ -1,43 +1,43 @@
//===== rAthena Script =======================================
//= Floating Server Rates
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= It's a simply example of setbattleflag
//= This script will change your server rates from 1x to 1.5x every 6 hours
//= Note: It doesn't affect Card granted drops, MVP & Treasure Chests drops ^_-
//= It also doesn't affect CARD drops, because they are just 0.01%
//===== Additional Comments: =================================
//= You can make incredible scripts with 'setbattleflag'!
//============================================================
- script FloatingRates -1,{
OnInit:
//add any other HOURS
OnHour00:
OnHour06:
OnHour12:
OnHour18:
//-------------------
set $@brate,rand(100,150);
set $@jrate,rand(100,150);
set $@drate,rand(100,150);
//Base exp
setbattleflag("base_exp_rate",$@brate);
//Job exp
setbattleflag("job_exp_rate",$@jrate);
//Drops
setbattleflag("item_rate_common",$@drate);
setbattleflag("item_rate_heal",$@drate);
setbattleflag("item_rate_use",$@drate);
setbattleflag("item_rate_equip",$@drate);
//we don't change card drops rate, because these values won't change them anyway
atcommand "@reloadmobdb";
announce "Current Rune-Midgard rates are: 1."+($@brate-100)+"x 1."+($@jrate-100)+"x 1."+($@drate-100)+"x",bc_all,0xFF6060;
end;
}
//===== rAthena Script =======================================
//= Floating Server Rates
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= It's a simply example of setbattleflag
//= This script will change your server rates from 1x to 1.5x every 6 hours
//= Note: It doesn't affect Card granted drops, MVP & Treasure Chests drops ^_-
//= It also doesn't affect CARD drops, because they are just 0.01%
//===== Additional Comments: =================================
//= You can make incredible scripts with 'setbattleflag'!
//============================================================
- script FloatingRates -1,{
OnInit:
//add any other HOURS
OnHour00:
OnHour06:
OnHour12:
OnHour18:
//-------------------
set $@brate,rand(100,150);
set $@jrate,rand(100,150);
set $@drate,rand(100,150);
//Base exp
setbattleflag("base_exp_rate",$@brate);
//Job exp
setbattleflag("job_exp_rate",$@jrate);
//Drops
setbattleflag("item_rate_common",$@drate);
setbattleflag("item_rate_heal",$@drate);
setbattleflag("item_rate_use",$@drate);
setbattleflag("item_rate_equip",$@drate);
//we don't change card drops rate, because these values won't change them anyway
atcommand "@reloadmobdb";
announce "Current Rune-Midgard rates are: 1."+($@brate-100)+"x 1."+($@jrate-100)+"x 1."+($@drate-100)+"x",bc_all,0xFF6060;
end;
}

View File

@ -1,454 +1,454 @@
//===== rAthena Script =======================================
//= Lottery
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.2.1a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Daily lottery draw
//===== Additional Comments: =================================
//= Numbers drawn daily (Time is configured line 29)
//= *Added GM-Riggability
//= *Ability to renew ticket
//= *Improved interface
//= *Fixed minor bug where first load didn't work.
//= 1.2.1a fix due to new script engine
//============================================================
- script lotterygenerator -1,{
OnInit:
set $L_TicketPrice,4750; // TICKET COST
set $L_Prize_Money,5000000; // JACKPOT AMOUNT
set $L_Prize_Money_Small,1000000; // SECONDARY PRIZE
if ($LID == 0) goto L_GenID;
end;
//Modify for own time
OnClock2045:
// CHECKS IF LOTTERY IS RIGGED
if ($L_Rigged == 1) goto L_Rigged_Draw;
// GENERATES RANDOM NUMBERS 1-40
Pick1:
set $LW1,rand (1,40);
Pick2:
set $LW2,rand (1,40);
if ($LW2 == $LW1) goto Pick2;
Pick3:
set $LW3,rand (1,40);
if ($LW3 == $LW2) goto Pick3;
if ($LW3 == $LW1) goto Pick3;
Pick4:
set $LW4,rand (1,40);
if ($LW4 == $LW2) goto Pick4;
if ($LW4 == $LW1) goto Pick4;
if ($LW4 == $LW3) goto Pick4;
Pick5:
set $LW5,rand (1,40);
if ($LW5 == $LW1) goto Pick5;
if ($LW5 == $LW2) goto Pick5;
if ($LW5 == $LW3) goto Pick5;
if ($LW5 == $LW4) goto Pick5;
Pick6:
set $LW6,rand (1,40);
if ($LW6 == $LW1) goto Pick6;
if ($LW6 == $LW2) goto Pick6;
if ($LW6 == $LW3) goto Pick6;
if ($LW6 == $LW4) goto Pick6;
if ($LW6 == $LW5) goto Pick6;
// BROADCASTS DRAW
L_Broadcast:
Announce "Lottery: Welcome to tonight's lotto draw!",8;
Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
Announce "Congratulations to the winners of tonight!",8;
// GENERATES DRAW ID CODE
L_GenID:
set $LID2,$LID;
// SETS TOMORROW'S ID NUMBER
set $LID,rand (100000,999999);
end;
// SETS DRAW TO RIGGED NUMBERS
L_Rigged_Draw:
set $LW1,$LR1;
set $LW2,$LR2;
set $LW3,$LR3;
set $LW4,$LR4;
set $LW5,$LR5;
set $LW6,$LR6;
set $L_Rigged,0;
goto L_Broadcast;
}
prontera,141,182,5 script Lottery 76,{
L_Begin:
mes "[Lottery]";
mes "Winning Lotto Numbers ("+$LID2+"):";
mes "^0000FF[" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]^000000";
if ($LID > 99999) mes "Your Ticket ("+#LID+"):";
if ($LID > 99999) mes "^FF0000[" + #LW1 + "] [" + #LW2 + "] [" + #LW3 + "] [" + #LW4 + "] [" + #LW5 + "] [" + #LW6 + "]^000000";
mes "Next Draw-ID: ^FF0000" + $LID + "^000000.";
next;
if (getgmlevel() > 90) goto L_GM;
menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"Cancel",L_Cancel;
// PURCHASE TICKET
L_Buy:
if (#LID == $LID && #L1 != 0) goto L_DoubleTicket;
mes "[Lottery]";
mes "Tickets cost ^0000FF" + $L_TicketPrice + "z^000000.";
mes "The Jackpot is ^FF0000" + $L_Prize_Money + "z^000000.";
next;
menu "Buy Ticket",-,"Cancel",L_Cancel;
if (zeny < $L_TicketPrice) goto L_NoZeny;
set zeny,zeny-$L_TicketPrice;
mes "[Lottery]";
mes "Would you like your numbers hand picked or computer generated?";
next;
menu "Computer Generated",L_ComputerGen,"Hand Picked",L_HandPick,"Renew Ticket",L_Renew;
// RENEW LAST TICKET
L_Renew:
if ($LID < 99999) goto L_Invalid;
set #LID,$LID;
goto L_Confirm2;
L_ComputerGen:
// SELECTS RANDOM NUMBERS
set @L1,0;
set @L2,0;
set @L3,0;
set @L4,0;
set @L5,0;
set @L6,0;
Pick1:
set @L1,rand (1,40);
Pick2:
set @L2,rand (1,40);
if (@L2 == @L1) goto Pick2;
Pick3:
set @L3,rand (1,40);
if (@L3 == @L2) goto Pick3;
if (@L3 == @L1) goto Pick3;
Pick4:
set @L4,rand (1,40);
if (@L4 == @L2) goto Pick4;
if (@L4 == @L1) goto Pick4;
if (@L4 == @L3) goto Pick4;
Pick5:
set @L5,rand (1,40);
if (@L5 == @L1) goto Pick5;
if (@L5 == @L2) goto Pick5;
if (@L5 == @L3) goto Pick5;
if (@L5 == @L4) goto Pick5;
Pick6:
set @L6,rand (1,40);
if (@L6 == @L1) goto Pick6;
if (@L6 == @L2) goto Pick6;
if (@L6 == @L3) goto Pick6;
if (@L6 == @L4) goto Pick6;
if (@L6 == @L5) goto Pick6;
mes "[Lottery]";
mes "The computer has selected the following numbers:";
mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
next;
menu "Confirm",L_Confirm,"Re-Generate",L_ComputerGen;
// HAND PICK LOTTERY NUMBERS
L_HandPick:
mes "[Lottery]";
mes "Please pick your numbers (1-40):";
set @L1,0;
set @L2,0;
set @L3,0;
set @L4,0;
set @L5,0;
set @L6,0;
Input1:
input @L1;
if (@L1 < 1 || @L1 > 40) goto Input1;
mes @L1;
Input2:
input @L2;
if (@L2 < 1 || @L2 > 40) goto Input2;
if (@L2 == @L1) goto Input2;
mes @L2;
Input3:
input @L3;
if (@L3 < 1 || @L3 > 40) goto Input3;
if (@L3 == @L1) goto Input3;
if (@L3 == @L2) goto Input3;
mes @L3;
Input4:
input @L4;
if (@L4 < 1 || @L4 > 40) goto Input4;
if (@L4 == @L1) goto Input4;
if (@L4 == @L2) goto Input4;
if (@L4 == @L3) goto Input4;
mes @L4;
Input5:
input @L5;
if (@L5 < 1 || @L5 > 40) goto Input5;
if (@L5 == @L1) goto Input5;
if (@L5 == @L2) goto Input5;
if (@L5 == @L3) goto Input5;
if (@L5 == @L4) goto Input5;
mes @L5;
Input6:
input @L6;
if (@L6 < 1 || @L6 > 40) goto Input6;
if (@L6 == @L1) goto Input6;
if (@L6 == @L2) goto Input6;
if (@L6 == @L3) goto Input6;
if (@L6 == @L4) goto Input6;
if (@L6 == @L5) goto Input6;
mes @L6;
next;
mes "[Lottery]";
mes "Your numbers are:";
mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
next;
menu "Confirm",L_Confirm,"Re-Pick",L_HandPick;
L_Confirm:
set #LW1,@L1;
set #LW2,@L2;
set #LW3,@L3;
set #LW4,@L4;
set #LW5,@L5;
set #LW6,@L6;
set #LID,$LID;
L_Confirm2:
mes "[Lottery]";
mes "The live broadcasted draw is at 9pm.";
mes "You can claim your ticket between then and the next draw.";
next;
mes "[Lottery]";
mes "Good luck!";
close;
L_Claim:
// CHECKS TICKET VALIDILITY
if (#LID != $LID2) goto L_Invalid;
// CHECKS HOW MANY NUMBERS MATCHED
set @LPrize,0;
if (#LW1 == $LW1) set @LPrize,@LPrize+1;
if (#LW1 == $LW2) set @LPrize,@LPrize+1;
if (#LW1 == $LW3) set @LPrize,@LPrize+1;
if (#LW1 == $LW4) set @LPrize,@LPrize+1;
if (#LW1 == $LW5) set @LPrize,@LPrize+1;
if (#LW1 == $LW6) set @LPrize,@LPrize+1;
if (#LW2 == $LW1) set @LPrize,@LPrize+1;
if (#LW2 == $LW2) set @LPrize,@LPrize+1;
if (#LW2 == $LW3) set @LPrize,@LPrize+1;
if (#LW2 == $LW4) set @LPrize,@LPrize+1;
if (#LW2 == $LW5) set @LPrize,@LPrize+1;
if (#LW2 == $LW6) set @LPrize,@LPrize+1;
if (#LW3 == $LW1) set @LPrize,@LPrize+1;
if (#LW3 == $LW2) set @LPrize,@LPrize+1;
if (#LW3 == $LW3) set @LPrize,@LPrize+1;
if (#LW3 == $LW4) set @LPrize,@LPrize+1;
if (#LW3 == $LW5) set @LPrize,@LPrize+1;
if (#LW3 == $LW6) set @LPrize,@LPrize+1;
if (#LW4 == $LW1) set @LPrize,@LPrize+1;
if (#LW4 == $LW2) set @LPrize,@LPrize+1;
if (#LW4 == $LW3) set @LPrize,@LPrize+1;
if (#LW4 == $LW4) set @LPrize,@LPrize+1;
if (#LW4 == $LW5) set @LPrize,@LPrize+1;
if (#LW4 == $LW6) set @LPrize,@LPrize+1;
if (#LW5 == $LW1) set @LPrize,@LPrize+1;
if (#LW5 == $LW2) set @LPrize,@LPrize+1;
if (#LW5 == $LW3) set @LPrize,@LPrize+1;
if (#LW5 == $LW4) set @LPrize,@LPrize+1;
if (#LW5 == $LW5) set @LPrize,@LPrize+1;
if (#LW5 == $LW6) set @LPrize,@LPrize+1;
if (#LW6 == $LW1) set @LPrize,@LPrize+1;
if (#LW6 == $LW2) set @LPrize,@LPrize+1;
if (#LW6 == $LW3) set @LPrize,@LPrize+1;
if (#LW6 == $LW4) set @LPrize,@LPrize+1;
if (#LW6 == $LW5) set @LPrize,@LPrize+1;
if (#LW6 == $LW6) set @LPrize,@LPrize+1;
if (@LPrize == 6) goto LWinBig;
if (@LPrize > 3 && @LPrize < 6) goto LWinSmall;
// NO WINNER
mes "[Lottery]";
mes "Bad luck, it appears you do not hold a winning ticket.";
next;
mes "[Lottery]";
mes "Better luck next time!.";
close;
// MATCHED ALL SIX
LWinBig:
mes "[Lottery]";
mes "You have matched all six numbers!";
mes "Jackpot!";
mes "You've won ^0000FF" + $L_Prize_Money + "z^000000.";
set zeny,zeny+$L_Prize_Money;
Announce "Lottery: " + strcharinfo(0) + " has won the JACKPOT of " + $L_Prize_Money + "z!",8;
set #LID,0;
close;
// MATCHED AT LEAST 4
LWinSmall:
mes "[Lottery]";
mes "You have matched at least 4 numbers!";
mes "You've won ^0000FF" + $L_Prize_Money_Small + "z^000000.";
set zeny,zeny+$L_Prize_Money_Small;
Announce "Lottery: " + strcharinfo(0) + " has won a prize of " + $L_Prize_Money_Small + "z!",8;
set #LID,0;
close;
// NO ZENY
L_NoZeny:
mes "[Lottery]";
mes "You can't afford a lottery ticket.";
close;
// INVALID TICKET
L_Invalid:
mes "[Lottery]";
mes "I'm sorry but it appears that you have an invalid ticket.";
close;
// DOUBLE TICKET
L_DoubleTicket:
mes "[Lottery]";
mes "It appears that you already have a ticket for today.";
mes "You may only purchase one ticket per draw.";
close;
L_Cancel:
mes "[Lottery]";
mes "Come back soon!";
close;
// GM MENU (Lets you manually do draws)
L_GM:
menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"[GM]Do Draw Now",-,"[GM]Rig the Lottery",L_GM_Rig,"Cancel",L_Cancel;
// CHECKS IF LOTTERY IS RIGGED
if ($L_Rigged == 1) goto L_Rigged_Draw;
// GENERATES RANDOM NUMBERS 1-40
GMPick1:
set $LW1,rand (1,40);
GMPick2:
set $LW2,rand (1,40);
if ($LW2 == $LW1) goto GMPick2;
GMPick3:
set $LW3,rand (1,40);
if ($LW3 == $LW2) goto GMPick3;
if ($LW3 == $LW1) goto GMPick3;
GMPick4:
set $LW4,rand (1,40);
if ($LW4 == $LW2) goto GMPick4;
if ($LW4 == $LW1) goto GMPick4;
if ($LW4 == $LW3) goto GMPick4;
GMPick5:
set $LW5,rand (1,40);
if ($LW5 == $LW1) goto GMPick5;
if ($LW5 == $LW2) goto GMPick5;
if ($LW5 == $LW3) goto GMPick5;
if ($LW5 == $LW4) goto GMPick5;
GMPick6:
set $LW6,rand (1,40);
if ($LW6 == $LW1) goto GMPick6;
if ($LW6 == $LW2) goto GMPick6;
if ($LW6 == $LW3) goto GMPick6;
if ($LW6 == $LW4) goto GMPick6;
if ($LW6 == $LW5) goto GMPick6;
// BROADCASTS DRAW
L_Broadcast:
Announce "Lottery: Welcome to the special GM's lotto draw!",8;
Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
Announce "Congratulations to the winners!",8;
// GENERATES DRAW ID CODE
L_GenID:
set $LID2,$LID;
// SETS TOMORROW'S ID NUMBER
set $LID,rand (100000,999999);
close;
// SETS DRAW TO RIGGED NUMBERS
L_Rigged_Draw:
set $LW1,$LR1;
set $LW2,$LR2;
set $LW3,$LR3;
set $LW4,$LR4;
set $LW5,$LR5;
set $LW6,$LR6;
set $L_Rigged,0;
goto L_Broadcast;
// ALLOWS GM TO DO A RIGGED DRAW
L_GM_Rig:
mes "[Lottery]";
mes "Please pick your numbers (1-40):";
set $LR1,0;
set $LR2,0;
set $LR3,0;
set $LR4,0;
set $LR5,0;
set $LR6,0;
GMInput1:
Input $LR1;
if ($LR1 < 1 || $LR1 > 40) goto GMInput1;
mes $LR1;
GMInput2:
Input $LR2;
if ($LR2 < 1 || $LR2 > 40) goto GMInput2;
if ($LR2 == $LR1) goto GMInput2;
mes $LR2;
GMInput3:
Input $LR3;
if ($LR3 < 1 || $LR3 > 40) goto GMInput3;
if ($LR3 == $LR1) goto GMInput3;
if ($LR3 == $LR2) goto GMInput3;
mes $LR3;
GMInput4:
Input $LR4;
if ($LR4 < 1 || $LR4 > 40) goto GMInput4;
if ($LR4 == $LR1) goto GMInput4;
if ($LR4 == $LR2) goto GMInput4;
if ($LR4 == $LR3) goto GMInput4;
mes $LR4;
GMInput5:
Input $LR5;
if ($LR5 < 1 || $LR5 > 40) goto GMInput5;
if ($LR5 == $LR1) goto GMInput5;
if ($LR5 == $LR2) goto GMInput5;
if ($LR5 == $LR3) goto GMInput5;
if ($LR5 == $LR4) goto GMInput5;
mes $LR5;
GMInput6:
Input $LR6;
if ($LR6 < 1 || $LR6 > 40) goto GMInput6;
if ($LR6 == $LR1) goto GMInput6;
if ($LR6 == $LR2) goto GMInput6;
if ($LR6 == $LR3) goto GMInput6;
if ($LR6 == $LR4) goto GMInput6;
if ($LR6 == $LR5) goto GMInput6;
mes $LR6;
next;
mes "[Lottery]";
mes "Lottery rigged for next draw.";
set $L_Rigged,1;
close;
}
//===== rAthena Script =======================================
//= Lottery
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.2.1a
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Daily lottery draw
//===== Additional Comments: =================================
//= Numbers drawn daily (Time is configured line 29)
//= *Added GM-Riggability
//= *Ability to renew ticket
//= *Improved interface
//= *Fixed minor bug where first load didn't work.
//= 1.2.1a fix due to new script engine
//============================================================
- script lotterygenerator -1,{
OnInit:
set $L_TicketPrice,4750; // TICKET COST
set $L_Prize_Money,5000000; // JACKPOT AMOUNT
set $L_Prize_Money_Small,1000000; // SECONDARY PRIZE
if ($LID == 0) goto L_GenID;
end;
//Modify for own time
OnClock2045:
// CHECKS IF LOTTERY IS RIGGED
if ($L_Rigged == 1) goto L_Rigged_Draw;
// GENERATES RANDOM NUMBERS 1-40
Pick1:
set $LW1,rand (1,40);
Pick2:
set $LW2,rand (1,40);
if ($LW2 == $LW1) goto Pick2;
Pick3:
set $LW3,rand (1,40);
if ($LW3 == $LW2) goto Pick3;
if ($LW3 == $LW1) goto Pick3;
Pick4:
set $LW4,rand (1,40);
if ($LW4 == $LW2) goto Pick4;
if ($LW4 == $LW1) goto Pick4;
if ($LW4 == $LW3) goto Pick4;
Pick5:
set $LW5,rand (1,40);
if ($LW5 == $LW1) goto Pick5;
if ($LW5 == $LW2) goto Pick5;
if ($LW5 == $LW3) goto Pick5;
if ($LW5 == $LW4) goto Pick5;
Pick6:
set $LW6,rand (1,40);
if ($LW6 == $LW1) goto Pick6;
if ($LW6 == $LW2) goto Pick6;
if ($LW6 == $LW3) goto Pick6;
if ($LW6 == $LW4) goto Pick6;
if ($LW6 == $LW5) goto Pick6;
// BROADCASTS DRAW
L_Broadcast:
Announce "Lottery: Welcome to tonight's lotto draw!",8;
Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
Announce "Congratulations to the winners of tonight!",8;
// GENERATES DRAW ID CODE
L_GenID:
set $LID2,$LID;
// SETS TOMORROW'S ID NUMBER
set $LID,rand (100000,999999);
end;
// SETS DRAW TO RIGGED NUMBERS
L_Rigged_Draw:
set $LW1,$LR1;
set $LW2,$LR2;
set $LW3,$LR3;
set $LW4,$LR4;
set $LW5,$LR5;
set $LW6,$LR6;
set $L_Rigged,0;
goto L_Broadcast;
}
prontera,141,182,5 script Lottery 76,{
L_Begin:
mes "[Lottery]";
mes "Winning Lotto Numbers ("+$LID2+"):";
mes "^0000FF[" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]^000000";
if ($LID > 99999) mes "Your Ticket ("+#LID+"):";
if ($LID > 99999) mes "^FF0000[" + #LW1 + "] [" + #LW2 + "] [" + #LW3 + "] [" + #LW4 + "] [" + #LW5 + "] [" + #LW6 + "]^000000";
mes "Next Draw-ID: ^FF0000" + $LID + "^000000.";
next;
if (getgmlevel() > 90) goto L_GM;
menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"Cancel",L_Cancel;
// PURCHASE TICKET
L_Buy:
if (#LID == $LID && #L1 != 0) goto L_DoubleTicket;
mes "[Lottery]";
mes "Tickets cost ^0000FF" + $L_TicketPrice + "z^000000.";
mes "The Jackpot is ^FF0000" + $L_Prize_Money + "z^000000.";
next;
menu "Buy Ticket",-,"Cancel",L_Cancel;
if (zeny < $L_TicketPrice) goto L_NoZeny;
set zeny,zeny-$L_TicketPrice;
mes "[Lottery]";
mes "Would you like your numbers hand picked or computer generated?";
next;
menu "Computer Generated",L_ComputerGen,"Hand Picked",L_HandPick,"Renew Ticket",L_Renew;
// RENEW LAST TICKET
L_Renew:
if ($LID < 99999) goto L_Invalid;
set #LID,$LID;
goto L_Confirm2;
L_ComputerGen:
// SELECTS RANDOM NUMBERS
set @L1,0;
set @L2,0;
set @L3,0;
set @L4,0;
set @L5,0;
set @L6,0;
Pick1:
set @L1,rand (1,40);
Pick2:
set @L2,rand (1,40);
if (@L2 == @L1) goto Pick2;
Pick3:
set @L3,rand (1,40);
if (@L3 == @L2) goto Pick3;
if (@L3 == @L1) goto Pick3;
Pick4:
set @L4,rand (1,40);
if (@L4 == @L2) goto Pick4;
if (@L4 == @L1) goto Pick4;
if (@L4 == @L3) goto Pick4;
Pick5:
set @L5,rand (1,40);
if (@L5 == @L1) goto Pick5;
if (@L5 == @L2) goto Pick5;
if (@L5 == @L3) goto Pick5;
if (@L5 == @L4) goto Pick5;
Pick6:
set @L6,rand (1,40);
if (@L6 == @L1) goto Pick6;
if (@L6 == @L2) goto Pick6;
if (@L6 == @L3) goto Pick6;
if (@L6 == @L4) goto Pick6;
if (@L6 == @L5) goto Pick6;
mes "[Lottery]";
mes "The computer has selected the following numbers:";
mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
next;
menu "Confirm",L_Confirm,"Re-Generate",L_ComputerGen;
// HAND PICK LOTTERY NUMBERS
L_HandPick:
mes "[Lottery]";
mes "Please pick your numbers (1-40):";
set @L1,0;
set @L2,0;
set @L3,0;
set @L4,0;
set @L5,0;
set @L6,0;
Input1:
input @L1;
if (@L1 < 1 || @L1 > 40) goto Input1;
mes @L1;
Input2:
input @L2;
if (@L2 < 1 || @L2 > 40) goto Input2;
if (@L2 == @L1) goto Input2;
mes @L2;
Input3:
input @L3;
if (@L3 < 1 || @L3 > 40) goto Input3;
if (@L3 == @L1) goto Input3;
if (@L3 == @L2) goto Input3;
mes @L3;
Input4:
input @L4;
if (@L4 < 1 || @L4 > 40) goto Input4;
if (@L4 == @L1) goto Input4;
if (@L4 == @L2) goto Input4;
if (@L4 == @L3) goto Input4;
mes @L4;
Input5:
input @L5;
if (@L5 < 1 || @L5 > 40) goto Input5;
if (@L5 == @L1) goto Input5;
if (@L5 == @L2) goto Input5;
if (@L5 == @L3) goto Input5;
if (@L5 == @L4) goto Input5;
mes @L5;
Input6:
input @L6;
if (@L6 < 1 || @L6 > 40) goto Input6;
if (@L6 == @L1) goto Input6;
if (@L6 == @L2) goto Input6;
if (@L6 == @L3) goto Input6;
if (@L6 == @L4) goto Input6;
if (@L6 == @L5) goto Input6;
mes @L6;
next;
mes "[Lottery]";
mes "Your numbers are:";
mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
next;
menu "Confirm",L_Confirm,"Re-Pick",L_HandPick;
L_Confirm:
set #LW1,@L1;
set #LW2,@L2;
set #LW3,@L3;
set #LW4,@L4;
set #LW5,@L5;
set #LW6,@L6;
set #LID,$LID;
L_Confirm2:
mes "[Lottery]";
mes "The live broadcasted draw is at 9pm.";
mes "You can claim your ticket between then and the next draw.";
next;
mes "[Lottery]";
mes "Good luck!";
close;
L_Claim:
// CHECKS TICKET VALIDILITY
if (#LID != $LID2) goto L_Invalid;
// CHECKS HOW MANY NUMBERS MATCHED
set @LPrize,0;
if (#LW1 == $LW1) set @LPrize,@LPrize+1;
if (#LW1 == $LW2) set @LPrize,@LPrize+1;
if (#LW1 == $LW3) set @LPrize,@LPrize+1;
if (#LW1 == $LW4) set @LPrize,@LPrize+1;
if (#LW1 == $LW5) set @LPrize,@LPrize+1;
if (#LW1 == $LW6) set @LPrize,@LPrize+1;
if (#LW2 == $LW1) set @LPrize,@LPrize+1;
if (#LW2 == $LW2) set @LPrize,@LPrize+1;
if (#LW2 == $LW3) set @LPrize,@LPrize+1;
if (#LW2 == $LW4) set @LPrize,@LPrize+1;
if (#LW2 == $LW5) set @LPrize,@LPrize+1;
if (#LW2 == $LW6) set @LPrize,@LPrize+1;
if (#LW3 == $LW1) set @LPrize,@LPrize+1;
if (#LW3 == $LW2) set @LPrize,@LPrize+1;
if (#LW3 == $LW3) set @LPrize,@LPrize+1;
if (#LW3 == $LW4) set @LPrize,@LPrize+1;
if (#LW3 == $LW5) set @LPrize,@LPrize+1;
if (#LW3 == $LW6) set @LPrize,@LPrize+1;
if (#LW4 == $LW1) set @LPrize,@LPrize+1;
if (#LW4 == $LW2) set @LPrize,@LPrize+1;
if (#LW4 == $LW3) set @LPrize,@LPrize+1;
if (#LW4 == $LW4) set @LPrize,@LPrize+1;
if (#LW4 == $LW5) set @LPrize,@LPrize+1;
if (#LW4 == $LW6) set @LPrize,@LPrize+1;
if (#LW5 == $LW1) set @LPrize,@LPrize+1;
if (#LW5 == $LW2) set @LPrize,@LPrize+1;
if (#LW5 == $LW3) set @LPrize,@LPrize+1;
if (#LW5 == $LW4) set @LPrize,@LPrize+1;
if (#LW5 == $LW5) set @LPrize,@LPrize+1;
if (#LW5 == $LW6) set @LPrize,@LPrize+1;
if (#LW6 == $LW1) set @LPrize,@LPrize+1;
if (#LW6 == $LW2) set @LPrize,@LPrize+1;
if (#LW6 == $LW3) set @LPrize,@LPrize+1;
if (#LW6 == $LW4) set @LPrize,@LPrize+1;
if (#LW6 == $LW5) set @LPrize,@LPrize+1;
if (#LW6 == $LW6) set @LPrize,@LPrize+1;
if (@LPrize == 6) goto LWinBig;
if (@LPrize > 3 && @LPrize < 6) goto LWinSmall;
// NO WINNER
mes "[Lottery]";
mes "Bad luck, it appears you do not hold a winning ticket.";
next;
mes "[Lottery]";
mes "Better luck next time!.";
close;
// MATCHED ALL SIX
LWinBig:
mes "[Lottery]";
mes "You have matched all six numbers!";
mes "Jackpot!";
mes "You've won ^0000FF" + $L_Prize_Money + "z^000000.";
set zeny,zeny+$L_Prize_Money;
Announce "Lottery: " + strcharinfo(0) + " has won the JACKPOT of " + $L_Prize_Money + "z!",8;
set #LID,0;
close;
// MATCHED AT LEAST 4
LWinSmall:
mes "[Lottery]";
mes "You have matched at least 4 numbers!";
mes "You've won ^0000FF" + $L_Prize_Money_Small + "z^000000.";
set zeny,zeny+$L_Prize_Money_Small;
Announce "Lottery: " + strcharinfo(0) + " has won a prize of " + $L_Prize_Money_Small + "z!",8;
set #LID,0;
close;
// NO ZENY
L_NoZeny:
mes "[Lottery]";
mes "You can't afford a lottery ticket.";
close;
// INVALID TICKET
L_Invalid:
mes "[Lottery]";
mes "I'm sorry but it appears that you have an invalid ticket.";
close;
// DOUBLE TICKET
L_DoubleTicket:
mes "[Lottery]";
mes "It appears that you already have a ticket for today.";
mes "You may only purchase one ticket per draw.";
close;
L_Cancel:
mes "[Lottery]";
mes "Come back soon!";
close;
// GM MENU (Lets you manually do draws)
L_GM:
menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"[GM]Do Draw Now",-,"[GM]Rig the Lottery",L_GM_Rig,"Cancel",L_Cancel;
// CHECKS IF LOTTERY IS RIGGED
if ($L_Rigged == 1) goto L_Rigged_Draw;
// GENERATES RANDOM NUMBERS 1-40
GMPick1:
set $LW1,rand (1,40);
GMPick2:
set $LW2,rand (1,40);
if ($LW2 == $LW1) goto GMPick2;
GMPick3:
set $LW3,rand (1,40);
if ($LW3 == $LW2) goto GMPick3;
if ($LW3 == $LW1) goto GMPick3;
GMPick4:
set $LW4,rand (1,40);
if ($LW4 == $LW2) goto GMPick4;
if ($LW4 == $LW1) goto GMPick4;
if ($LW4 == $LW3) goto GMPick4;
GMPick5:
set $LW5,rand (1,40);
if ($LW5 == $LW1) goto GMPick5;
if ($LW5 == $LW2) goto GMPick5;
if ($LW5 == $LW3) goto GMPick5;
if ($LW5 == $LW4) goto GMPick5;
GMPick6:
set $LW6,rand (1,40);
if ($LW6 == $LW1) goto GMPick6;
if ($LW6 == $LW2) goto GMPick6;
if ($LW6 == $LW3) goto GMPick6;
if ($LW6 == $LW4) goto GMPick6;
if ($LW6 == $LW5) goto GMPick6;
// BROADCASTS DRAW
L_Broadcast:
Announce "Lottery: Welcome to the special GM's lotto draw!",8;
Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
Announce "Congratulations to the winners!",8;
// GENERATES DRAW ID CODE
L_GenID:
set $LID2,$LID;
// SETS TOMORROW'S ID NUMBER
set $LID,rand (100000,999999);
close;
// SETS DRAW TO RIGGED NUMBERS
L_Rigged_Draw:
set $LW1,$LR1;
set $LW2,$LR2;
set $LW3,$LR3;
set $LW4,$LR4;
set $LW5,$LR5;
set $LW6,$LR6;
set $L_Rigged,0;
goto L_Broadcast;
// ALLOWS GM TO DO A RIGGED DRAW
L_GM_Rig:
mes "[Lottery]";
mes "Please pick your numbers (1-40):";
set $LR1,0;
set $LR2,0;
set $LR3,0;
set $LR4,0;
set $LR5,0;
set $LR6,0;
GMInput1:
Input $LR1;
if ($LR1 < 1 || $LR1 > 40) goto GMInput1;
mes $LR1;
GMInput2:
Input $LR2;
if ($LR2 < 1 || $LR2 > 40) goto GMInput2;
if ($LR2 == $LR1) goto GMInput2;
mes $LR2;
GMInput3:
Input $LR3;
if ($LR3 < 1 || $LR3 > 40) goto GMInput3;
if ($LR3 == $LR1) goto GMInput3;
if ($LR3 == $LR2) goto GMInput3;
mes $LR3;
GMInput4:
Input $LR4;
if ($LR4 < 1 || $LR4 > 40) goto GMInput4;
if ($LR4 == $LR1) goto GMInput4;
if ($LR4 == $LR2) goto GMInput4;
if ($LR4 == $LR3) goto GMInput4;
mes $LR4;
GMInput5:
Input $LR5;
if ($LR5 < 1 || $LR5 > 40) goto GMInput5;
if ($LR5 == $LR1) goto GMInput5;
if ($LR5 == $LR2) goto GMInput5;
if ($LR5 == $LR3) goto GMInput5;
if ($LR5 == $LR4) goto GMInput5;
mes $LR5;
GMInput6:
Input $LR6;
if ($LR6 < 1 || $LR6 > 40) goto GMInput6;
if ($LR6 == $LR1) goto GMInput6;
if ($LR6 == $LR2) goto GMInput6;
if ($LR6 == $LR3) goto GMInput6;
if ($LR6 == $LR4) goto GMInput6;
if ($LR6 == $LR5) goto GMInput6;
mes $LR6;
next;
mes "[Lottery]";
mes "Lottery rigged for next draw.";
set $L_Rigged,1;
close;
}

View File

@ -1,39 +1,39 @@
//===== rAthena Script =======================================
//= Market Place
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= This script should move vending crowds from Prontera
//= streets to a suitable market place. Save your traffic 8)
//===== Additional Comments: =================================
//= 1.1 Optimized it, Removed labels. [Spre]
//============================================================
prontera,144,174,3 script Market Place 722,{
mes"[Market Place]";
mes"Tristan III's order: ^FF0000Move all the private shops to a special Market Place^000000.";
next;
if (select("Yes Please:No") == 2) {
close;
}
// I didn't see the need to check and show venders.... Since it didnt even work
warp "gon_test",27+rand(5),98;
end;
}
gon_test,73,103,0 script MarketExit 45,1,2,{
warp "prontera",155,177-rand(10);
end;
}
//disable vending in Prontera
prontera mapflag novending
prt_in mapflag novending
//Market Place settings
gon_test mapflag noteleport
gon_test mapflag nomemo
gon_test mapflag nobranch
//===== rAthena Script =======================================
//= Market Place
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= This script should move vending crowds from Prontera
//= streets to a suitable market place. Save your traffic 8)
//===== Additional Comments: =================================
//= 1.1 Optimized it, Removed labels. [Spre]
//============================================================
prontera,144,174,3 script Market Place 722,{
mes"[Market Place]";
mes"Tristan III's order: ^FF0000Move all the private shops to a special Market Place^000000.";
next;
if (select("Yes Please:No") == 2) {
close;
}
// I didn't see the need to check and show venders.... Since it didnt even work
warp "gon_test",27+rand(5),98;
end;
}
gon_test,73,103,0 script MarketExit 45,1,2,{
warp "prontera",155,177-rand(10);
end;
}
//disable vending in Prontera
prontera mapflag novending
prt_in mapflag novending
//Market Place settings
gon_test mapflag noteleport
gon_test mapflag nomemo
gon_test mapflag nobranch

File diff suppressed because it is too large Load Diff

View File

@ -1,238 +1,238 @@
//===== rAthena Script =======================================
//= Morroc Raceway
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.3
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Lets players race around Morroc (pvp_y_1-5)
//===== Additional Comments: =================================
//= If there are more than 3 players, at least 3 people
//= must finish before a new race can be started.
//=
//= If there are less than 3 players, at least 1 person
//= must finish before a new race can be started.
//=
//= Removed permanent global variables
//= 1.2 Removed Duplicates [Silent]
//= 1.3 Replaced effect numerics with constants. [Samuray22]
//============================================================
//Warps you into race way
morocc,166,105,6 script Race Girl#01 116,{
mes "[Race Girl]";
mes "Would you like to visit ^0000FFMorroc Raceway^000000?";
next;
menu "Yes",L_Warp,"No",-;
mes "[Race Girl]";
mes "Alright, talk to me again when you want to go.";
close;
L_Warp:
warp "pvp_y_1-5",165,256;
close;
}
//Warps you out of raceway
pvp_y_1-5,169,265,5 script Race Girl#02 116,{
mes "[Race Girl]";
mes "Welcome to Morroc Raceway!";
next;
menu "Information",-,"Leave",L_Warp,"Cancel",L_Cancel;
mes "[Race Girl]";
mes "Someone must click on the Starter NPC to start the race.";
next;
mes "[Race Girl]";
mes "Once the race is started, run around Morroc anti-clockwise.";
next;
mes "[Race Girl]";
mes "You must reach all the checkpoints - No cheating!";
close;
L_Warp:
warp "morocc",165,101;
L_Cancel:
mes "[Race Girl]";
mes "Come again soon!";
close;
}
//Counts down and starts race
pvp_y_1-5,145,269,5 script Starter 733,{
if ($@race != 0) goto L_Started;
if ($@counting != 0) goto L_Started;
if ($@racecount == 1) goto L_Started;
L_Menu:
mes "[Race Starter]";
mes "Please stay on the Eastern side of me.";
menu "Start Race",L_Count,"Cancel",-;
close;
L_Count:
set $@counting,1;
mes "Counting down...";
addtimer 1000, "Starter::OnCount1000";
addtimer 2000, "Starter::OnCount2000";
addtimer 3000, "Starter::OnCount3000";
addtimer 4000, "Starter::OnCount4000";
announce strcharinfo(0) + "Started a countdown",1;
announce "Get ready to race!",1;
close;
OnCount1000:
announce "[3]",1;
end;
OnCount2000:
announce "[2]",1;
end;
OnCount3000:
announce "[1]",1;
end;
OnCount4000:
emotion 27;
specialeffect EF_CHIMTO;
announce "[GO!]",1;
set $@race,1;
set $@position,0;
set $@counting,0;
set $@raceid,rand(100000,999999);
end;
L_Started:
if ((getmapusers("pvp_y_1-5") < 3) && ($@position > 0)) goto L_Menu;
if ($@position > 2) goto L_Menu;
mes "[Starter]";
mes "Race in progress";
close;
OnInit:
set $@race,0;
set $@position,0;
set $@racecount,0;
end;
}
//Checkpoint 1
pvp_y_1-5,144,262,5 script Check Point 1 111,0,5,{
end;
OnTouch:
if (@raceid != $@raceid) goto L_Started;
if (@race == 6) goto L_Finished;
if ($@race == 1) goto L_Started;
mes "The race has not started, please move back.";
close;
L_Started:
set @race,1;
set @raceid,$@raceid;
end;
L_Finished:
mes "You have already completed the race.";
close;
}
//Checkpoint 2
pvp_y_1-5,73,247,5 script Check Point 2 111,6,6,{
end;
OnTouch:
if (@race != 1) goto L_Miss;
set @race,2;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [1]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Checkpoint 3
pvp_y_1-5,77,44,5 script Check Point 3 111,6,6,{
end;
OnTouch:
if (@race != 2) goto L_Miss;
set @race,3;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [2]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Checkpoint 3
pvp_y_1-5,249,60,5 script Check Point 4 111,6,6,{
end;
OnTouch:
if (@race != 3) goto L_Miss;
set @race,4;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [3]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Checkpoint 4
pvp_y_1-5,255,256,5 script Check Point 5 111,6,6,{
end;
OnTouch:
if (@race != 4) goto L_Miss;
set @race,5;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [4]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Finish Line
pvp_y_1-5,174,244,5 script Finish Line 111,6,6,{
end;
OnTouch:
if (@raceid != $@raceid) goto L_WrongRace;
if (@race != 5) goto L_Miss;
set @race,6;
set $@position,$@position+1;
announce "[" + strcharinfo(0) +"] has reached The Finish line! [Position: " + $@position + "]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
L_WrongRace:
mes "You are not in this race.";
close;
}
//Check Point Marker Flags
pvp_y_1-5,144,267,4 script Check Point 1#01 722,{
end;
}
pvp_y_1-5,144,257,4 script Check Point 1#02 722,{
end;
}
pvp_y_1-5,70,252,3 script Check Point 2#01 722,{
end;
}
pvp_y_1-5,77,243,3 script Check Point 2#02 722,{
end;
}
pvp_y_1-5,81,48,1 script Check Point 3#01 722,{
end;
}
pvp_y_1-5,72,40,1 script Check Point 3#02 722,{
end;
}
pvp_y_1-5,244,65,7 script Check Point 4#01 722,{
end;
}
pvp_y_1-5,252,57,7 script Check Point 4#02 722,{
end;
}
pvp_y_1-5,259,260,5 script Check Point 5#01 722,{
end;
}
pvp_y_1-5,251,252,5 script Check Point 5#02 722,{
end;
}
pvp_y_1-5,174,249,4 script Finish Line#01 722,{
end;
}
pvp_y_1-5,174,238,4 script Finish Line#02 722,{
end;
}
//===== rAthena Script =======================================
//= Morroc Raceway
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.3
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Lets players race around Morroc (pvp_y_1-5)
//===== Additional Comments: =================================
//= If there are more than 3 players, at least 3 people
//= must finish before a new race can be started.
//=
//= If there are less than 3 players, at least 1 person
//= must finish before a new race can be started.
//=
//= Removed permanent global variables
//= 1.2 Removed Duplicates [Silent]
//= 1.3 Replaced effect numerics with constants. [Samuray22]
//============================================================
//Warps you into race way
morocc,166,105,6 script Race Girl#01 116,{
mes "[Race Girl]";
mes "Would you like to visit ^0000FFMorroc Raceway^000000?";
next;
menu "Yes",L_Warp,"No",-;
mes "[Race Girl]";
mes "Alright, talk to me again when you want to go.";
close;
L_Warp:
warp "pvp_y_1-5",165,256;
close;
}
//Warps you out of raceway
pvp_y_1-5,169,265,5 script Race Girl#02 116,{
mes "[Race Girl]";
mes "Welcome to Morroc Raceway!";
next;
menu "Information",-,"Leave",L_Warp,"Cancel",L_Cancel;
mes "[Race Girl]";
mes "Someone must click on the Starter NPC to start the race.";
next;
mes "[Race Girl]";
mes "Once the race is started, run around Morroc anti-clockwise.";
next;
mes "[Race Girl]";
mes "You must reach all the checkpoints - No cheating!";
close;
L_Warp:
warp "morocc",165,101;
L_Cancel:
mes "[Race Girl]";
mes "Come again soon!";
close;
}
//Counts down and starts race
pvp_y_1-5,145,269,5 script Starter 733,{
if ($@race != 0) goto L_Started;
if ($@counting != 0) goto L_Started;
if ($@racecount == 1) goto L_Started;
L_Menu:
mes "[Race Starter]";
mes "Please stay on the Eastern side of me.";
menu "Start Race",L_Count,"Cancel",-;
close;
L_Count:
set $@counting,1;
mes "Counting down...";
addtimer 1000, "Starter::OnCount1000";
addtimer 2000, "Starter::OnCount2000";
addtimer 3000, "Starter::OnCount3000";
addtimer 4000, "Starter::OnCount4000";
announce strcharinfo(0) + "Started a countdown",1;
announce "Get ready to race!",1;
close;
OnCount1000:
announce "[3]",1;
end;
OnCount2000:
announce "[2]",1;
end;
OnCount3000:
announce "[1]",1;
end;
OnCount4000:
emotion 27;
specialeffect EF_CHIMTO;
announce "[GO!]",1;
set $@race,1;
set $@position,0;
set $@counting,0;
set $@raceid,rand(100000,999999);
end;
L_Started:
if ((getmapusers("pvp_y_1-5") < 3) && ($@position > 0)) goto L_Menu;
if ($@position > 2) goto L_Menu;
mes "[Starter]";
mes "Race in progress";
close;
OnInit:
set $@race,0;
set $@position,0;
set $@racecount,0;
end;
}
//Checkpoint 1
pvp_y_1-5,144,262,5 script Check Point 1 111,0,5,{
end;
OnTouch:
if (@raceid != $@raceid) goto L_Started;
if (@race == 6) goto L_Finished;
if ($@race == 1) goto L_Started;
mes "The race has not started, please move back.";
close;
L_Started:
set @race,1;
set @raceid,$@raceid;
end;
L_Finished:
mes "You have already completed the race.";
close;
}
//Checkpoint 2
pvp_y_1-5,73,247,5 script Check Point 2 111,6,6,{
end;
OnTouch:
if (@race != 1) goto L_Miss;
set @race,2;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [1]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Checkpoint 3
pvp_y_1-5,77,44,5 script Check Point 3 111,6,6,{
end;
OnTouch:
if (@race != 2) goto L_Miss;
set @race,3;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [2]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Checkpoint 3
pvp_y_1-5,249,60,5 script Check Point 4 111,6,6,{
end;
OnTouch:
if (@race != 3) goto L_Miss;
set @race,4;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [3]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Checkpoint 4
pvp_y_1-5,255,256,5 script Check Point 5 111,6,6,{
end;
OnTouch:
if (@race != 4) goto L_Miss;
set @race,5;
announce "[" + strcharinfo(0) +"] has reached Checkpoint [4]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
}
//Finish Line
pvp_y_1-5,174,244,5 script Finish Line 111,6,6,{
end;
OnTouch:
if (@raceid != $@raceid) goto L_WrongRace;
if (@race != 5) goto L_Miss;
set @race,6;
set $@position,$@position+1;
announce "[" + strcharinfo(0) +"] has reached The Finish line! [Position: " + $@position + "]",1;
end;
L_Miss:
mes "You have missed a Checkpoint. Please go back.";
close;
L_WrongRace:
mes "You are not in this race.";
close;
}
//Check Point Marker Flags
pvp_y_1-5,144,267,4 script Check Point 1#01 722,{
end;
}
pvp_y_1-5,144,257,4 script Check Point 1#02 722,{
end;
}
pvp_y_1-5,70,252,3 script Check Point 2#01 722,{
end;
}
pvp_y_1-5,77,243,3 script Check Point 2#02 722,{
end;
}
pvp_y_1-5,81,48,1 script Check Point 3#01 722,{
end;
}
pvp_y_1-5,72,40,1 script Check Point 3#02 722,{
end;
}
pvp_y_1-5,244,65,7 script Check Point 4#01 722,{
end;
}
pvp_y_1-5,252,57,7 script Check Point 4#02 722,{
end;
}
pvp_y_1-5,259,260,5 script Check Point 5#01 722,{
end;
}
pvp_y_1-5,251,252,5 script Check Point 5#02 722,{
end;
}
pvp_y_1-5,174,249,4 script Finish Line#01 722,{
end;
}
pvp_y_1-5,174,238,4 script Finish Line#02 722,{
end;
}

View File

@ -1,322 +1,322 @@
//===== rAthena Script =======================================
//= MVP Arena
//===== By: ==================================================
//= Darkchild
//===== Current Version: =====================================
//= 1.4
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Rooms containing 16 different MVPs
//===== Additional Comments: =================================
//= 1.0 first version of script
//= 1.1 Optimised The MVP arena [massdriller]
//= 1.2 - NPC in prontera [Silent]
//= 1.3 - Removed Duplicates
//= 1.4 - Optimized, text edited [Euphy]
//============================================================
// ==== Entrance ====
prontera,154,197,3 script MVP Warper 768,{
mes "[ ^0065DFMVP Warper^000000 ]";
mes "Would you like to enter";
mes "the MVP Arena?";
if (select("Yes!","No thanks.") == 2) close;
warp "quiz_00",50,24;
close;
}
// ==== Information NPC ====
quiz_00,49,31,4 script MVP Arena Guide 778,{
mes "[ ^0065DFMVP Arena Guide^000000 ]";
mes "Welcome and behold this sacred place. Here you will find out if you truly have what it takes to call yourself a warrior.";
next;
switch(select("Information","Heal me!","Return to Prontera","Cancel")) {
case 1:
mes "[ ^0065DFMVP Arena Guide^000000 ]";
mes "There are four Keepers, and each can spawn four different MVPs.";
mes "There are eight rooms per Keeper, and sixteen MVPs in total.";
close;
case 2:
specialeffect2 313;
percentheal 100,100;
close;
case 3:
warp "prontera",156,179;
close;
case 4:
close; }
}
// ==== Keepers ====
function script Keeper {
mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
mes "Which arena would you";
mes "like to enter?";
set .@menu$,"";
for(set .@i,1; .@i<9; set .@i,.@i+1)
set .@menu$, .@menu$+"Arena "+.@i+" ["+getmapusers("pvp_n_"+.@i+"-"+getarg(0))+"/20]:";
set .@i, select(.@menu$);
if (getmapusers("pvp_n_"+.@i+"-"+getarg(0))>19) {
mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
mes "Sorry, this arena is full!";
close; }
warp "pvp_n_"+.@i+"-"+getarg(0),102,102;
close;
}
quiz_00,56,31,4 script Alpha MVP 770,{
callfunc "Keeper",2; }
quiz_00,58,31,4 script Beta MVP 773,{
callfunc "Keeper",3; }
quiz_00,60,31,4 script Theta MVP 774,{
callfunc "Keeper",4; }
quiz_00,62,31,4 script Epsilon MVP 776,{
callfunc "Keeper",5; }
// ==== Protectors ====
function script Protector {
switch(select(""+((getarg(0)=="")?"":"Harder Monsters")+":Heal:Exit")) {
case 1:
warp getarg(0),102,102;
close;
case 2:
specialeffect2 313;
percentheal 100,100;
close;
case 3:
warp "prontera",156,179;
close; }
}
pvp_n_1-2,100,100,4 script MVP-Protector#01 727,{
callfunc "Protector","pvp_n_2-2"; }
pvp_n_2-2,100,100,4 script MVP-Protector#02 727,{
callfunc "Protector","pvp_n_3-2"; }
pvp_n_3-2,100,100,4 script MVP-Protector#03 727,{
callfunc "Protector","pvp_n_4-2"; }
pvp_n_4-2,100,100,4 script MVP-Protector#04 727,{
callfunc "Protector","pvp_n_5-2"; }
pvp_n_5-2,100,100,4 script MVP-Protector#05 727,{
callfunc "Protector","pvp_n_6-2"; }
pvp_n_6-2,100,100,4 script MVP-Protector#06 727,{
callfunc "Protector","pvp_n_7-2"; }
pvp_n_7-2,100,100,4 script MVP-Protector#07 727,{
callfunc "Protector","pvp_n_8-2"; }
pvp_n_8-2,100,100,4 script MVP-Protector#08 727,{
callfunc "Protector",""; }
pvp_n_1-3,100,100,4 script MVP-Protector#09 727,{
callfunc "Protector","pvp_n_2-3"; }
pvp_n_2-3,100,100,4 script MVP-Protector#10 727,{
callfunc "Protector","pvp_n_3-3"; }
pvp_n_3-3,100,100,4 script MVP-Protector#11 727,{
callfunc "Protector","pvp_n_4-3"; }
pvp_n_4-3,100,100,4 script MVP-Protector#12 727,{
callfunc "Protector","pvp_n_5-3"; }
pvp_n_5-3,100,100,4 script MVP-Protector#13 727,{
callfunc "Protector","pvp_n_6-3"; }
pvp_n_6-3,100,100,4 script MVP-Protector#14 727,{
callfunc "Protector","pvp_n_7-3"; }
pvp_n_7-3,100,100,4 script MVP-Protector#15 727,{
callfunc "Protector","pvp_n_8-3"; }
pvp_n_8-3,100,100,4 script MVP-Protector#16 727,{
callfunc "Protector",""; }
pvp_n_1-4,100,100,4 script MVP-Protector#17 727,{
callfunc "Protector","pvp_n_2-4"; }
pvp_n_2-4,100,100,4 script MVP-Protector#18 727,{
callfunc "Protector","pvp_n_3-4"; }
pvp_n_3-4,100,100,4 script MVP-Protector#19 727,{
callfunc "Protector","pvp_n_4-4"; }
pvp_n_4-4,100,100,4 script MVP-Protector#20 727,{
callfunc "Protector","pvp_n_5-4"; }
pvp_n_5-4,100,100,4 script MVP-Protector#21 727,{
callfunc "Protector","pvp_n_6-4"; }
pvp_n_6-4,100,100,4 script MVP-Protector#22 727,{
callfunc "Protector","pvp_n_7-4"; }
pvp_n_7-4,100,100,4 script MVP-Protector#23 727,{
callfunc "Protector","pvp_n_8-4"; }
pvp_n_8-4,100,100,4 script MVP-Protector#24 727,{
callfunc "Protector",""; }
pvp_n_1-5,100,100,4 script MVP-Protector#25 727,{
callfunc "Protector","pvp_n_2-5"; }
pvp_n_2-5,100,100,4 script MVP-Protector#26 727,{
callfunc "Protector","pvp_n_3-5"; }
pvp_n_3-5,100,100,4 script MVP-Protector#27 727,{
callfunc "Protector","pvp_n_4-5"; }
pvp_n_4-5,100,100,4 script MVP-Protector#28 727,{
callfunc "Protector","pvp_n_5-5"; }
pvp_n_5-5,100,100,4 script MVP-Protector#29 727,{
callfunc "Protector","pvp_n_6-5"; }
pvp_n_6-5,100,100,4 script MVP-Protector#30 727,{
callfunc "Protector","pvp_n_7-5"; }
pvp_n_7-5,100,100,4 script MVP-Protector#31 727,{
callfunc "Protector","pvp_n_8-5"; }
pvp_n_8-5,100,100,4 script MVP-Protector#32 727,{
callfunc "Protector",""; }
// ==== Alpha ====
pvp_n_1-2,0,0,0,0 monster Eddga 1115,3,60000,66000
pvp_n_1-2,0,0,0,0 monster Mistress 1059,1,60000,66000
pvp_n_2-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_2-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_3-2,0,0,0,0 monster Mistress 1059,1,60000,66000
pvp_n_3-2,0,0,0,0 monster Moonlight 1150,2,60000,66000
pvp_n_3-2,0,0,0,0 monster Maya 1147,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Eddga 1115,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Mistress 1059,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Maya 1147,1,60000,66000
pvp_n_5-2,0,0,0,0 monster Eddga 1115,1,60000,66000
pvp_n_5-2,0,0,0,0 monster Mistress 1059,2,60000,66000
pvp_n_5-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_5-2,0,0,0,0 monster Maya 1147,2,60000,66000
pvp_n_6-2,0,0,0,0 monster Eddga 1115,2,60000,66000
pvp_n_6-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_6-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_6-2,0,0,0,0 monster Maya 1147,2,60000,66000
pvp_n_7-2,0,0,0,0 monster Eddga 1115,3,60000,66000
pvp_n_7-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_7-2,0,0,0,0 monster Moonlight 1150,2,60000,66000
pvp_n_7-2,0,0,0,0 monster Maya 1147,2,60000,66000
pvp_n_8-2,0,0,0,0 monster Eddga 1115,3,60000,66000
pvp_n_8-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_8-2,0,0,0,0 monster Moonlight 1150,3,60000,66000
pvp_n_8-2,0,0,0,0 monster Maya 1147,3,60000,66000
// ==== Beta ====
pvp_n_1-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
pvp_n_1-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_2-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
pvp_n_2-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_2-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
pvp_n_4-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
pvp_n_4-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_4-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
pvp_n_4-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
pvp_n_5-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000
pvp_n_5-3,0,0,0,0 monster Turtle General 1312,2,60000,66000
pvp_n_5-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
pvp_n_5-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
pvp_n_6-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
pvp_n_6-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_6-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
pvp_n_6-3,0,0,0,0 monster Orc Lord 1190,2,60000,66000
pvp_n_7-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
pvp_n_7-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_7-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
pvp_n_7-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Turtle General 1312,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Orc Hero 1087,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000
// ==== Theta ====
pvp_n_1-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_1-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_2-4,0,0,0,0 monster Drake 1112,2,60000,66000
pvp_n_2-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_2-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Drake 1112,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
pvp_n_4-4,0,0,0,0 monster Drake 1112,2,60000,66000
pvp_n_4-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_4-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
pvp_n_4-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
pvp_n_5-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_5-4,0,0,0,0 monster Osiris 1038,2,60000,66000
pvp_n_5-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
pvp_n_5-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
pvp_n_6-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_6-4,0,0,0,0 monster Osiris 1038,2,60000,66000
pvp_n_6-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
pvp_n_6-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000
pvp_n_7-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_7-4,0,0,0,0 monster Osiris 1038,2,60000,66000
pvp_n_7-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000
pvp_n_7-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000
pvp_n_8-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_8-4,0,0,0,0 monster Osiris 1038,3,60000,66000
pvp_n_8-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000
pvp_n_8-4,0,0,0,0 monster Lord of Death 1373,3,60000,66000
// ==== Epsilon ====
pvp_n_1-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
pvp_n_1-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_2-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_2-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_2-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Incantation Samurai 1492,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_4-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
pvp_n_4-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_4-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
pvp_n_4-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_5-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_5-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_5-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_5-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_6-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_6-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_6-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_6-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_7-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_7-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_7-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_7-5,0,0,0,0 monster Baphomet 1039,2,60000,66000
pvp_n_8-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
pvp_n_8-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_8-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_8-5,0,0,0,0 monster Baphomet 1039,2,60000,66000
// ==== Mapflags ====
pvp_n_1-1 mapflag pvp_nightmaredrop off
pvp_n_2-1 mapflag pvp_nightmaredrop off
pvp_n_3-1 mapflag pvp_nightmaredrop off
pvp_n_4-1 mapflag pvp_nightmaredrop off
pvp_n_5-1 mapflag pvp_nightmaredrop off
pvp_n_6-1 mapflag pvp_nightmaredrop off
pvp_n_7-1 mapflag pvp_nightmaredrop off
pvp_n_8-1 mapflag pvp_nightmaredrop off
pvp_n_1-2 mapflag pvp_nightmaredrop off
pvp_n_2-2 mapflag pvp_nightmaredrop off
pvp_n_3-2 mapflag pvp_nightmaredrop off
pvp_n_4-2 mapflag pvp_nightmaredrop off
pvp_n_5-2 mapflag pvp_nightmaredrop off
pvp_n_6-2 mapflag pvp_nightmaredrop off
pvp_n_7-2 mapflag pvp_nightmaredrop off
pvp_n_8-2 mapflag pvp_nightmaredrop off
pvp_n_1-3 mapflag pvp_nightmaredrop off
pvp_n_2-3 mapflag pvp_nightmaredrop off
pvp_n_3-3 mapflag pvp_nightmaredrop off
pvp_n_4-3 mapflag pvp_nightmaredrop off
pvp_n_5-3 mapflag pvp_nightmaredrop off
pvp_n_6-3 mapflag pvp_nightmaredrop off
pvp_n_7-3 mapflag pvp_nightmaredrop off
pvp_n_8-3 mapflag pvp_nightmaredrop off
pvp_n_1-4 mapflag pvp_nightmaredrop off
pvp_n_2-4 mapflag pvp_nightmaredrop off
pvp_n_3-4 mapflag pvp_nightmaredrop off
pvp_n_4-4 mapflag pvp_nightmaredrop off
pvp_n_5-4 mapflag pvp_nightmaredrop off
pvp_n_6-4 mapflag pvp_nightmaredrop off
pvp_n_7-4 mapflag pvp_nightmaredrop off
pvp_n_8-4 mapflag pvp_nightmaredrop off
pvp_n_1-5 mapflag pvp_nightmaredrop off
pvp_n_2-5 mapflag pvp_nightmaredrop off
pvp_n_3-5 mapflag pvp_nightmaredrop off
pvp_n_4-5 mapflag pvp_nightmaredrop off
pvp_n_5-5 mapflag pvp_nightmaredrop off
pvp_n_6-5 mapflag pvp_nightmaredrop off
pvp_n_7-5 mapflag pvp_nightmaredrop off
//===== rAthena Script =======================================
//= MVP Arena
//===== By: ==================================================
//= Darkchild
//===== Current Version: =====================================
//= 1.4
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Rooms containing 16 different MVPs
//===== Additional Comments: =================================
//= 1.0 first version of script
//= 1.1 Optimised The MVP arena [massdriller]
//= 1.2 - NPC in prontera [Silent]
//= 1.3 - Removed Duplicates
//= 1.4 - Optimized, text edited [Euphy]
//============================================================
// ==== Entrance ====
prontera,154,197,3 script MVP Warper 768,{
mes "[ ^0065DFMVP Warper^000000 ]";
mes "Would you like to enter";
mes "the MVP Arena?";
if (select("Yes!","No thanks.") == 2) close;
warp "quiz_00",50,24;
close;
}
// ==== Information NPC ====
quiz_00,49,31,4 script MVP Arena Guide 778,{
mes "[ ^0065DFMVP Arena Guide^000000 ]";
mes "Welcome and behold this sacred place. Here you will find out if you truly have what it takes to call yourself a warrior.";
next;
switch(select("Information","Heal me!","Return to Prontera","Cancel")) {
case 1:
mes "[ ^0065DFMVP Arena Guide^000000 ]";
mes "There are four Keepers, and each can spawn four different MVPs.";
mes "There are eight rooms per Keeper, and sixteen MVPs in total.";
close;
case 2:
specialeffect2 313;
percentheal 100,100;
close;
case 3:
warp "prontera",156,179;
close;
case 4:
close; }
}
// ==== Keepers ====
function script Keeper {
mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
mes "Which arena would you";
mes "like to enter?";
set .@menu$,"";
for(set .@i,1; .@i<9; set .@i,.@i+1)
set .@menu$, .@menu$+"Arena "+.@i+" ["+getmapusers("pvp_n_"+.@i+"-"+getarg(0))+"/20]:";
set .@i, select(.@menu$);
if (getmapusers("pvp_n_"+.@i+"-"+getarg(0))>19) {
mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
mes "Sorry, this arena is full!";
close; }
warp "pvp_n_"+.@i+"-"+getarg(0),102,102;
close;
}
quiz_00,56,31,4 script Alpha MVP 770,{
callfunc "Keeper",2; }
quiz_00,58,31,4 script Beta MVP 773,{
callfunc "Keeper",3; }
quiz_00,60,31,4 script Theta MVP 774,{
callfunc "Keeper",4; }
quiz_00,62,31,4 script Epsilon MVP 776,{
callfunc "Keeper",5; }
// ==== Protectors ====
function script Protector {
switch(select(""+((getarg(0)=="")?"":"Harder Monsters")+":Heal:Exit")) {
case 1:
warp getarg(0),102,102;
close;
case 2:
specialeffect2 313;
percentheal 100,100;
close;
case 3:
warp "prontera",156,179;
close; }
}
pvp_n_1-2,100,100,4 script MVP-Protector#01 727,{
callfunc "Protector","pvp_n_2-2"; }
pvp_n_2-2,100,100,4 script MVP-Protector#02 727,{
callfunc "Protector","pvp_n_3-2"; }
pvp_n_3-2,100,100,4 script MVP-Protector#03 727,{
callfunc "Protector","pvp_n_4-2"; }
pvp_n_4-2,100,100,4 script MVP-Protector#04 727,{
callfunc "Protector","pvp_n_5-2"; }
pvp_n_5-2,100,100,4 script MVP-Protector#05 727,{
callfunc "Protector","pvp_n_6-2"; }
pvp_n_6-2,100,100,4 script MVP-Protector#06 727,{
callfunc "Protector","pvp_n_7-2"; }
pvp_n_7-2,100,100,4 script MVP-Protector#07 727,{
callfunc "Protector","pvp_n_8-2"; }
pvp_n_8-2,100,100,4 script MVP-Protector#08 727,{
callfunc "Protector",""; }
pvp_n_1-3,100,100,4 script MVP-Protector#09 727,{
callfunc "Protector","pvp_n_2-3"; }
pvp_n_2-3,100,100,4 script MVP-Protector#10 727,{
callfunc "Protector","pvp_n_3-3"; }
pvp_n_3-3,100,100,4 script MVP-Protector#11 727,{
callfunc "Protector","pvp_n_4-3"; }
pvp_n_4-3,100,100,4 script MVP-Protector#12 727,{
callfunc "Protector","pvp_n_5-3"; }
pvp_n_5-3,100,100,4 script MVP-Protector#13 727,{
callfunc "Protector","pvp_n_6-3"; }
pvp_n_6-3,100,100,4 script MVP-Protector#14 727,{
callfunc "Protector","pvp_n_7-3"; }
pvp_n_7-3,100,100,4 script MVP-Protector#15 727,{
callfunc "Protector","pvp_n_8-3"; }
pvp_n_8-3,100,100,4 script MVP-Protector#16 727,{
callfunc "Protector",""; }
pvp_n_1-4,100,100,4 script MVP-Protector#17 727,{
callfunc "Protector","pvp_n_2-4"; }
pvp_n_2-4,100,100,4 script MVP-Protector#18 727,{
callfunc "Protector","pvp_n_3-4"; }
pvp_n_3-4,100,100,4 script MVP-Protector#19 727,{
callfunc "Protector","pvp_n_4-4"; }
pvp_n_4-4,100,100,4 script MVP-Protector#20 727,{
callfunc "Protector","pvp_n_5-4"; }
pvp_n_5-4,100,100,4 script MVP-Protector#21 727,{
callfunc "Protector","pvp_n_6-4"; }
pvp_n_6-4,100,100,4 script MVP-Protector#22 727,{
callfunc "Protector","pvp_n_7-4"; }
pvp_n_7-4,100,100,4 script MVP-Protector#23 727,{
callfunc "Protector","pvp_n_8-4"; }
pvp_n_8-4,100,100,4 script MVP-Protector#24 727,{
callfunc "Protector",""; }
pvp_n_1-5,100,100,4 script MVP-Protector#25 727,{
callfunc "Protector","pvp_n_2-5"; }
pvp_n_2-5,100,100,4 script MVP-Protector#26 727,{
callfunc "Protector","pvp_n_3-5"; }
pvp_n_3-5,100,100,4 script MVP-Protector#27 727,{
callfunc "Protector","pvp_n_4-5"; }
pvp_n_4-5,100,100,4 script MVP-Protector#28 727,{
callfunc "Protector","pvp_n_5-5"; }
pvp_n_5-5,100,100,4 script MVP-Protector#29 727,{
callfunc "Protector","pvp_n_6-5"; }
pvp_n_6-5,100,100,4 script MVP-Protector#30 727,{
callfunc "Protector","pvp_n_7-5"; }
pvp_n_7-5,100,100,4 script MVP-Protector#31 727,{
callfunc "Protector","pvp_n_8-5"; }
pvp_n_8-5,100,100,4 script MVP-Protector#32 727,{
callfunc "Protector",""; }
// ==== Alpha ====
pvp_n_1-2,0,0,0,0 monster Eddga 1115,3,60000,66000
pvp_n_1-2,0,0,0,0 monster Mistress 1059,1,60000,66000
pvp_n_2-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_2-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_3-2,0,0,0,0 monster Mistress 1059,1,60000,66000
pvp_n_3-2,0,0,0,0 monster Moonlight 1150,2,60000,66000
pvp_n_3-2,0,0,0,0 monster Maya 1147,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Eddga 1115,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Mistress 1059,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_4-2,0,0,0,0 monster Maya 1147,1,60000,66000
pvp_n_5-2,0,0,0,0 monster Eddga 1115,1,60000,66000
pvp_n_5-2,0,0,0,0 monster Mistress 1059,2,60000,66000
pvp_n_5-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_5-2,0,0,0,0 monster Maya 1147,2,60000,66000
pvp_n_6-2,0,0,0,0 monster Eddga 1115,2,60000,66000
pvp_n_6-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_6-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
pvp_n_6-2,0,0,0,0 monster Maya 1147,2,60000,66000
pvp_n_7-2,0,0,0,0 monster Eddga 1115,3,60000,66000
pvp_n_7-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_7-2,0,0,0,0 monster Moonlight 1150,2,60000,66000
pvp_n_7-2,0,0,0,0 monster Maya 1147,2,60000,66000
pvp_n_8-2,0,0,0,0 monster Eddga 1115,3,60000,66000
pvp_n_8-2,0,0,0,0 monster Mistress 1059,3,60000,66000
pvp_n_8-2,0,0,0,0 monster Moonlight 1150,3,60000,66000
pvp_n_8-2,0,0,0,0 monster Maya 1147,3,60000,66000
// ==== Beta ====
pvp_n_1-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
pvp_n_1-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_2-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
pvp_n_2-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_2-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
pvp_n_3-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
pvp_n_4-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
pvp_n_4-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_4-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
pvp_n_4-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
pvp_n_5-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000
pvp_n_5-3,0,0,0,0 monster Turtle General 1312,2,60000,66000
pvp_n_5-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
pvp_n_5-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
pvp_n_6-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
pvp_n_6-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_6-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
pvp_n_6-3,0,0,0,0 monster Orc Lord 1190,2,60000,66000
pvp_n_7-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
pvp_n_7-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
pvp_n_7-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
pvp_n_7-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Turtle General 1312,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Orc Hero 1087,3,60000,66000
pvp_n_8-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000
// ==== Theta ====
pvp_n_1-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_1-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_2-4,0,0,0,0 monster Drake 1112,2,60000,66000
pvp_n_2-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_2-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Drake 1112,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000
pvp_n_3-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
pvp_n_4-4,0,0,0,0 monster Drake 1112,2,60000,66000
pvp_n_4-4,0,0,0,0 monster Osiris 1038,1,60000,66000
pvp_n_4-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
pvp_n_4-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
pvp_n_5-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_5-4,0,0,0,0 monster Osiris 1038,2,60000,66000
pvp_n_5-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
pvp_n_5-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
pvp_n_6-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_6-4,0,0,0,0 monster Osiris 1038,2,60000,66000
pvp_n_6-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
pvp_n_6-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000
pvp_n_7-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_7-4,0,0,0,0 monster Osiris 1038,2,60000,66000
pvp_n_7-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000
pvp_n_7-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000
pvp_n_8-4,0,0,0,0 monster Drake 1112,3,60000,66000
pvp_n_8-4,0,0,0,0 monster Osiris 1038,3,60000,66000
pvp_n_8-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000
pvp_n_8-4,0,0,0,0 monster Lord of Death 1373,3,60000,66000
// ==== Epsilon ====
pvp_n_1-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
pvp_n_1-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_2-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_2-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_2-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Incantation Samurai 1492,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
pvp_n_3-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_4-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
pvp_n_4-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
pvp_n_4-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
pvp_n_4-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_5-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_5-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_5-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_5-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_6-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_6-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_6-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_6-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
pvp_n_7-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
pvp_n_7-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_7-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_7-5,0,0,0,0 monster Baphomet 1039,2,60000,66000
pvp_n_8-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
pvp_n_8-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
pvp_n_8-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
pvp_n_8-5,0,0,0,0 monster Baphomet 1039,2,60000,66000
// ==== Mapflags ====
pvp_n_1-1 mapflag pvp_nightmaredrop off
pvp_n_2-1 mapflag pvp_nightmaredrop off
pvp_n_3-1 mapflag pvp_nightmaredrop off
pvp_n_4-1 mapflag pvp_nightmaredrop off
pvp_n_5-1 mapflag pvp_nightmaredrop off
pvp_n_6-1 mapflag pvp_nightmaredrop off
pvp_n_7-1 mapflag pvp_nightmaredrop off
pvp_n_8-1 mapflag pvp_nightmaredrop off
pvp_n_1-2 mapflag pvp_nightmaredrop off
pvp_n_2-2 mapflag pvp_nightmaredrop off
pvp_n_3-2 mapflag pvp_nightmaredrop off
pvp_n_4-2 mapflag pvp_nightmaredrop off
pvp_n_5-2 mapflag pvp_nightmaredrop off
pvp_n_6-2 mapflag pvp_nightmaredrop off
pvp_n_7-2 mapflag pvp_nightmaredrop off
pvp_n_8-2 mapflag pvp_nightmaredrop off
pvp_n_1-3 mapflag pvp_nightmaredrop off
pvp_n_2-3 mapflag pvp_nightmaredrop off
pvp_n_3-3 mapflag pvp_nightmaredrop off
pvp_n_4-3 mapflag pvp_nightmaredrop off
pvp_n_5-3 mapflag pvp_nightmaredrop off
pvp_n_6-3 mapflag pvp_nightmaredrop off
pvp_n_7-3 mapflag pvp_nightmaredrop off
pvp_n_8-3 mapflag pvp_nightmaredrop off
pvp_n_1-4 mapflag pvp_nightmaredrop off
pvp_n_2-4 mapflag pvp_nightmaredrop off
pvp_n_3-4 mapflag pvp_nightmaredrop off
pvp_n_4-4 mapflag pvp_nightmaredrop off
pvp_n_5-4 mapflag pvp_nightmaredrop off
pvp_n_6-4 mapflag pvp_nightmaredrop off
pvp_n_7-4 mapflag pvp_nightmaredrop off
pvp_n_8-4 mapflag pvp_nightmaredrop off
pvp_n_1-5 mapflag pvp_nightmaredrop off
pvp_n_2-5 mapflag pvp_nightmaredrop off
pvp_n_3-5 mapflag pvp_nightmaredrop off
pvp_n_4-5 mapflag pvp_nightmaredrop off
pvp_n_5-5 mapflag pvp_nightmaredrop off
pvp_n_6-5 mapflag pvp_nightmaredrop off
pvp_n_7-5 mapflag pvp_nightmaredrop off
pvp_n_8-5 mapflag pvp_nightmaredrop off

View File

@ -1,193 +1,193 @@
//===== rAthena Script =======================================
//= Penal Servitude
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.2
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= A simple Penal Servitude Script.
//= It could cheer up your prisoners a bit.
//===== Additional Comments: =================================
// This script uses CHEQUES of the 2nd KAFRA_BANK.TXT
// var PRISON - it counts number of your imprisonments.
// 1.1 English translation
// 1.2 Stricted the conditions a bit
//============================================================
sec_pri,36,58,1 script Chief Warder 105,{
mes "[Saddeus]";
emotion 1;
if(sex) {
mes "Mr. Prisoner #"+BaseLevel+JobLevel+",";
} else {
mes "Ms. Prisoner #"+BaseLevel+JobLevel+",";
}
mes "what's the noise over there?";
next;
menu "Let me free, I'll pay!",-, "Let me to work off my freedom!",M_Q1, "Nothing",M_NO_THANKS;
M_PAY:
mes "[Saddeus]";
set @MUSTPAY,(PRISON+1)*1000000;
if (@MUSTPAY<1000000) set @MUSTPAY,1000000;
if (@MUSTPAY>100000000) set @MUSTPAY,100000000;
if (PRISON==1) mes "I can't remember you. Is it your 1st time?";
if (PRISON>1) mes "You again? Sombody hasn't grown wiser from the very first visit...";
mes "OK, we could release you for ^FF0000"+@MUSTPAY+"z^000000.";
next;
menu "I pay cash!",M_PAYCASH,"Do you accept cheques?",M_PAYBANK,"I've changed my mind.",-;
mes "[Saddeus]";
mes "You've got some time to think about...";
close;
M_PAYCASH:
if (@MUSTPAY>Zeny) goto L_NOCASH;
set Zeny,Zeny-@MUSTPAY;
mes "[Saddeus]";
mes "OK, sing here and there.";
goto L_RELEASE;
L_NOCASH:
mes "[Saddeus]";
mes "What's this? It's not enough!";
close;
M_PAYBANK:
if (@MUSTPAY>#kafrabank) goto L_NOBANK;
set #kafrabank,#kafrabank-@MUSTPAY;
mes "[Saddeus]";
mes "OK, sign your cheque. And put down your name in my book.";
goto L_RELEASE;
L_NOBANK:
mes "[Saddeus]";
if (#kafrabank==0) mes "Your case says nothing about your bank accounts.";
if (#kafrabank!=0) mes "Alas, there's your bank account info... ^FF0000"+#kafrabank+"z^000000... in the case. It's not enough.";
mes "Stop your silly games now!";
close;
L_RELEASE:
set PRISON,PRISON+1;
next;
mes "[Saddeus]";
mes "You are free now!";
next;
savepoint "izlude",105,112;
warp "izlude",105,112;
close;
M_Q1:
mes "[Saddeus]";
mes "Our stocks are short of toadstools. Remember your morning's skilly? What about some work at our sponsored mushroom farm?";
next;
menu "OK, I'll work off!",-, "I love this prison!",M_NO_THANKS;
mes "[Saddeus]";
if(checkcart() || checkfalcon() || checkriding()){
emotion e_hmm;
mes "I'm sorry, you should release your Cart, PecoPeco or Falcon!";
close;
}
mes "Talk to our overseer, Oliver.";
next;
nude;
set @rw,rand(1,4);
if (@rw==2) goto L_W2;
if (@rw==3) goto L_W3;
if (@rw==4) goto L_W4;
L_W1:
savepoint "sec_in02",179,76;
warp "sec_in02",179,76;
close;
L_W2:
savepoint "sec_in02",139,32;
warp "sec_in02",139,32;
close;
L_W3:
savepoint "sec_in02",100,28;
warp "sec_in02",100,28;
close;
L_W4:
savepoint "sec_in02",107,75;
warp "sec_in02",107,75;
close;
M_NO_THANKS:
mes "[Saddeus]";
if (rand(2)) mes "Is today X-Mas time, huh?";
mes "Now shut up and back off!";
if (rand(2)) emotion 23;
close;
}
sec_in02,137,57,1 script Overseer 708,{
mes "[Oliver]";
delitem 4002,countitem(4002);//Items: Fabre_Card,
delitem 4009,countitem(4009);//Items: Chonchon_Card,
delitem 4022,countitem(4022);//Items: Spore_Card,
delitem 4048,countitem(4048);//Items: Poison_Spore_Card,
if (PRISON_Q <= 0 ) goto L_GET_Q;
mes "I want you to gather ^FF0000"+PRISON_Q+" Orange Net Mushroom^000000.";
if ( countitem(1069)<PRISON_Q ) close;//Items: Orange_Net_Mushroom,
mes "OK... hand me all the shrooms...";
mes "Let me see... "+countitem(1069)+" of almost eadible ones...";//Items: Orange_Net_Mushroom,
mes "And "+countitem(1070)+" useless deadly ones.";//Items: Orange_Gooey_Mushroom_,
next;
mes "[Oliver]";
mes "Thank you. You are free!";
set PRISON_Q,0;
delitem 1069,countitem(1069);//Items: Orange_Net_Mushroom,
delitem 1070,countitem(1070);//Items: Orange_Gooey_Mushroom_,
next;
savepoint "izlude",105,112;
warp "izlude",105,112;
close;
L_GET_Q:
set PRISON,PRISON+1;
if (PRISON > 1) mes "Hmm... You've been here already... Well-well...";
if ( countitem(1069) || countitem(1070) ) mes "Drop these mushrooms!! They are poisonous!";//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_,
delitem 1069,countitem(1069);//Items: Orange_Net_Mushroom,
delitem 1070,countitem(1070);//Items: Orange_Gooey_Mushroom_,
set PRISON_Q, PRISON*3 + BaseLevel/3;
set PRISON_Q, PRISON_Q * (readparam(bAspd)/55 + 1);
set PRISON_Q, PRISON_Q+rand(50,60);
mes "OK, you must bring me ^FF0000"+PRISON_Q+"^000000 edible ^FF0000Orange Net Mushroom^000000 toadstoo.. shrooms.";
if(readparam(bAspd)>=100) mes "You're a fast fella! You'll have to get more shrooms, then.";
if (rand(10)<4) mes "And you may eat the deadly ones for breakfast.";
close;
}
sec_in02 mapflag nomemo
sec_in02 mapflag nosave SavePoint
sec_in02 mapflag noteleport
sec_in02 mapflag nobranch
sec_in02 mapflag nowarp
sec_in02 mapflag nowarpto
sec_in02 mapflag noexp
sec_in02 mapflag noskill
//sec_in02 mapflag pvp
//sec_in02 mapflag pvp_noparty
//sec_in02 mapflag gvg
sec_in02 mapflag pvp_nightmaredrop random,all,300
sec_in02,138,55,100,100 monster Toadstool 1182,30,10000,10000,1
sec_in02,138,55,100,100 monster Fabre 1184,10,20000,20000
sec_in02,138,55,100,100 monster Chonchon 1183,11,20000,20000
sec_in02,138,55,100,100 monster Spore 1014,12,20000,20000
sec_in02,138,55,100,100 monster Poison Spore 1077,3,20000,20000
//===== rAthena Script =======================================
//= Penal Servitude
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.2
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= A simple Penal Servitude Script.
//= It could cheer up your prisoners a bit.
//===== Additional Comments: =================================
// This script uses CHEQUES of the 2nd KAFRA_BANK.TXT
// var PRISON - it counts number of your imprisonments.
// 1.1 English translation
// 1.2 Stricted the conditions a bit
//============================================================
sec_pri,36,58,1 script Chief Warder 105,{
mes "[Saddeus]";
emotion 1;
if(sex) {
mes "Mr. Prisoner #"+BaseLevel+JobLevel+",";
} else {
mes "Ms. Prisoner #"+BaseLevel+JobLevel+",";
}
mes "what's the noise over there?";
next;
menu "Let me free, I'll pay!",-, "Let me to work off my freedom!",M_Q1, "Nothing",M_NO_THANKS;
M_PAY:
mes "[Saddeus]";
set @MUSTPAY,(PRISON+1)*1000000;
if (@MUSTPAY<1000000) set @MUSTPAY,1000000;
if (@MUSTPAY>100000000) set @MUSTPAY,100000000;
if (PRISON==1) mes "I can't remember you. Is it your 1st time?";
if (PRISON>1) mes "You again? Sombody hasn't grown wiser from the very first visit...";
mes "OK, we could release you for ^FF0000"+@MUSTPAY+"z^000000.";
next;
menu "I pay cash!",M_PAYCASH,"Do you accept cheques?",M_PAYBANK,"I've changed my mind.",-;
mes "[Saddeus]";
mes "You've got some time to think about...";
close;
M_PAYCASH:
if (@MUSTPAY>Zeny) goto L_NOCASH;
set Zeny,Zeny-@MUSTPAY;
mes "[Saddeus]";
mes "OK, sing here and there.";
goto L_RELEASE;
L_NOCASH:
mes "[Saddeus]";
mes "What's this? It's not enough!";
close;
M_PAYBANK:
if (@MUSTPAY>#kafrabank) goto L_NOBANK;
set #kafrabank,#kafrabank-@MUSTPAY;
mes "[Saddeus]";
mes "OK, sign your cheque. And put down your name in my book.";
goto L_RELEASE;
L_NOBANK:
mes "[Saddeus]";
if (#kafrabank==0) mes "Your case says nothing about your bank accounts.";
if (#kafrabank!=0) mes "Alas, there's your bank account info... ^FF0000"+#kafrabank+"z^000000... in the case. It's not enough.";
mes "Stop your silly games now!";
close;
L_RELEASE:
set PRISON,PRISON+1;
next;
mes "[Saddeus]";
mes "You are free now!";
next;
savepoint "izlude",105,112;
warp "izlude",105,112;
close;
M_Q1:
mes "[Saddeus]";
mes "Our stocks are short of toadstools. Remember your morning's skilly? What about some work at our sponsored mushroom farm?";
next;
menu "OK, I'll work off!",-, "I love this prison!",M_NO_THANKS;
mes "[Saddeus]";
if(checkcart() || checkfalcon() || checkriding()){
emotion e_hmm;
mes "I'm sorry, you should release your Cart, PecoPeco or Falcon!";
close;
}
mes "Talk to our overseer, Oliver.";
next;
nude;
set @rw,rand(1,4);
if (@rw==2) goto L_W2;
if (@rw==3) goto L_W3;
if (@rw==4) goto L_W4;
L_W1:
savepoint "sec_in02",179,76;
warp "sec_in02",179,76;
close;
L_W2:
savepoint "sec_in02",139,32;
warp "sec_in02",139,32;
close;
L_W3:
savepoint "sec_in02",100,28;
warp "sec_in02",100,28;
close;
L_W4:
savepoint "sec_in02",107,75;
warp "sec_in02",107,75;
close;
M_NO_THANKS:
mes "[Saddeus]";
if (rand(2)) mes "Is today X-Mas time, huh?";
mes "Now shut up and back off!";
if (rand(2)) emotion 23;
close;
}
sec_in02,137,57,1 script Overseer 708,{
mes "[Oliver]";
delitem 4002,countitem(4002);//Items: Fabre_Card,
delitem 4009,countitem(4009);//Items: Chonchon_Card,
delitem 4022,countitem(4022);//Items: Spore_Card,
delitem 4048,countitem(4048);//Items: Poison_Spore_Card,
if (PRISON_Q <= 0 ) goto L_GET_Q;
mes "I want you to gather ^FF0000"+PRISON_Q+" Orange Net Mushroom^000000.";
if ( countitem(1069)<PRISON_Q ) close;//Items: Orange_Net_Mushroom,
mes "OK... hand me all the shrooms...";
mes "Let me see... "+countitem(1069)+" of almost eadible ones...";//Items: Orange_Net_Mushroom,
mes "And "+countitem(1070)+" useless deadly ones.";//Items: Orange_Gooey_Mushroom_,
next;
mes "[Oliver]";
mes "Thank you. You are free!";
set PRISON_Q,0;
delitem 1069,countitem(1069);//Items: Orange_Net_Mushroom,
delitem 1070,countitem(1070);//Items: Orange_Gooey_Mushroom_,
next;
savepoint "izlude",105,112;
warp "izlude",105,112;
close;
L_GET_Q:
set PRISON,PRISON+1;
if (PRISON > 1) mes "Hmm... You've been here already... Well-well...";
if ( countitem(1069) || countitem(1070) ) mes "Drop these mushrooms!! They are poisonous!";//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_,
delitem 1069,countitem(1069);//Items: Orange_Net_Mushroom,
delitem 1070,countitem(1070);//Items: Orange_Gooey_Mushroom_,
set PRISON_Q, PRISON*3 + BaseLevel/3;
set PRISON_Q, PRISON_Q * (readparam(bAspd)/55 + 1);
set PRISON_Q, PRISON_Q+rand(50,60);
mes "OK, you must bring me ^FF0000"+PRISON_Q+"^000000 edible ^FF0000Orange Net Mushroom^000000 toadstoo.. shrooms.";
if(readparam(bAspd)>=100) mes "You're a fast fella! You'll have to get more shrooms, then.";
if (rand(10)<4) mes "And you may eat the deadly ones for breakfast.";
close;
}
sec_in02 mapflag nomemo
sec_in02 mapflag nosave SavePoint
sec_in02 mapflag noteleport
sec_in02 mapflag nobranch
sec_in02 mapflag nowarp
sec_in02 mapflag nowarpto
sec_in02 mapflag noexp
sec_in02 mapflag noskill
//sec_in02 mapflag pvp
//sec_in02 mapflag pvp_noparty
//sec_in02 mapflag gvg
sec_in02 mapflag pvp_nightmaredrop random,all,300
sec_in02,138,55,100,100 monster Toadstool 1182,30,10000,10000,1
sec_in02,138,55,100,100 monster Fabre 1184,10,20000,20000
sec_in02,138,55,100,100 monster Chonchon 1183,11,20000,20000
sec_in02,138,55,100,100 monster Spore 1014,12,20000,20000
sec_in02,138,55,100,100 monster Poison Spore 1077,3,20000,20000

View File

@ -1,286 +1,286 @@
//===== rAthena Script =======================================
//= Rock Scissors Roulette
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.2
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Plays a hybrid Russian Roulette Rock Scissors Paper game.
//===== Additional Comments: =================================
//= Prizes customizable, Added emotions.
//= 1.2 Fixes by Blackthunder and me [Poki#3]
//============================================================
cmd_in02,182,126,2 script Crazy Boris 85,{
mes "Crazy Boris";
set @counter,1;
mes "Hey you! Up for Rock Scissors Roulette?";
next;
menu "Let me play.",PLAY,"Explain the rules.",RULES,"Leave",LEAVE;
SAME:
mes "Draw! Again!";
next;
goto PLAY;
WIN:
mes "Damnit, You Win!";
emotion 19;
next;
goto OPPPULL;
LOSE:
emotion 18;
mes "Boorah! You Lose!";
next;
goto YOUPULL;
PLAY:
mes "Rock... Paper...";
set @opp,rand (1,3);
menu "^0000FFROCK!",ROCK,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER;
ROCK:
if (@lastchoice == 1) set @opp,rand (1,3);
if (@opp == 1) emotion 11;
if (@opp == 2) emotion 10;
if (@opp == 3) emotion 12;
set @lastchoice,1;
if (@opp == 1) goto SAME;
if (@opp == 2) goto WIN;
if (@opp == 3) goto LOSE;
SCISSORS:
if (@lastchoice == 2) set @opp,rand (1,2);
if (@opp == 1) emotion 11;
if (@opp == 2) emotion 10;
if (@opp == 3) emotion 12;
set @lastchoice,2;
if (@opp == 1) goto LOSE;
if (@opp == 2) goto SAME;
if (@opp == 3) goto WIN;
PAPER:
if (@lastchoice == 3) set @opp,rand (2,3);
if (@opp == 1) emotion 11;
if (@opp == 2) emotion 10;
if (@opp == 3) emotion 12;
set @lastchoice,3;
if (@opp == 1) goto WIN;
if (@opp == 2) goto LOSE;
if (@opp == 3) goto SAME;
YOUPULL:
if (@counter == 1) goto ONE;
if (@counter == 2) goto TWO;
if (@counter == 3) goto THREE;
if (@counter == 4) goto FOUR;
if (@counter == 5) goto FIVE;
if (@counter == 6) goto SIX;
OPPPULL:
if (@counter == 1) goto ONEa;
if (@counter == 2) goto TWOa;
if (@counter == 3) goto THREEa;
if (@counter == 4) goto FOURa;
if (@counter == 5) goto FIVEa;
if (@counter == 6) goto SIXa;
ONE:
set @counter,2;
mes "1 of 6";
set @pull,rand (1,6);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
TWO:
set @counter,3;
mes "2 of 6";
set @pull,rand (1,5);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
THREE:
set @counter,4;
mes "3 of 6";
set @pull,rand (1,4);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
FOUR:
set @counter,5;
mes "4 of 6";
set @pull,rand (1,3);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
FIVE:
set @counter,6;
mes "5 of 6";
set @pull,rand (1,2);
if (@pull == 1) set @pull,rand (1,2);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
SIX:
mes "6 of 6";
mes "Say your prayers";
set @pull,1;
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
ONEa:
set @counter,2;
mes "1 of 6";
set @pull,rand (1,6);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
TWOa:
set @counter,3;
mes "2 of 6";
set @pull,rand (1,5);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
THREEa:
set @counter,4;
mes "3 of 6";
set @pull,rand (1,4);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
FOURa:
set @counter,5;
mes "4 of 6";
set @pull,rand (1,3);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
FIVEa:
set @counter,6;
mes "5 of 6";
set @pull,rand (1,2);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
SIXa:
mes "6 of 6";
mes "Say your prayers";
set @pull,1;
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
SAFE:
emotion 32;
mes "*^0000FFClick^000000* whew...";
goto PLAY;
DIE:
specialeffect2 183;
emotion 29;
percentheal -100,-100;
mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
mes "You're dead!";
close;
KILL:
specialeffect 183;
emotion 23;
mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
mes "OWWW @#$%^!! THAT HURT LIKE HELL!!";
next;
goto PRIZE;
RULES:
mes "Ok here are the rules:";
mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best.";
mes "Beat me to win a prize.";
menu "Let me play.",CONT,"No thanks.",LEAVE;
CONT:
mes "Ok here we go...";
next;
goto PLAY;
PRIZE:
mes "Congratulations! You have won...";
set @prize,rand (1,10);
if (@prize == 1) goto P1;
if (@prize == 2) goto P2;
if (@prize == 3) goto P3;
if (@prize == 4) goto P4;
if (@prize == 5) goto P5;
if (@prize == 6) goto P6;
if (@prize == 7) goto P7;
if (@prize == 8) goto P8;
if (@prize == 9) goto P9;
if (@prize == 10) goto P10;
P1:
mes "10x Oridicon!";
getitem 984,10;
close;
P2:
mes "10x Elunium!";
getitem 985,10;
close;
P3:
mes "100x Fly Wings!";
getitem 601,100;
close;
P4:
mes "8x Old Blue Box!";
getitem 603,8;
close;
P5:
mes "4x Old Violet Box!";
getitem 617,4;
close;
P6:
mes "1x Old Card Album!";
getitem 616,1;
close;
P7:
mes "10x Dead Branch!";
getitem 604,10;
close;
P8:
mes "3x Gold!";
getitem 969,3;
close;
P9:
mes "10x Elunium!";
getitem 985,10;
close;
P10:
mes "20x Blue Potion!";
getitem 505,20;
close;
LEAVE:
mes "Pansy.";
close;
}
//===== rAthena Script =======================================
//= Rock Scissors Roulette
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.2
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Plays a hybrid Russian Roulette Rock Scissors Paper game.
//===== Additional Comments: =================================
//= Prizes customizable, Added emotions.
//= 1.2 Fixes by Blackthunder and me [Poki#3]
//============================================================
cmd_in02,182,126,2 script Crazy Boris 85,{
mes "Crazy Boris";
set @counter,1;
mes "Hey you! Up for Rock Scissors Roulette?";
next;
menu "Let me play.",PLAY,"Explain the rules.",RULES,"Leave",LEAVE;
SAME:
mes "Draw! Again!";
next;
goto PLAY;
WIN:
mes "Damnit, You Win!";
emotion 19;
next;
goto OPPPULL;
LOSE:
emotion 18;
mes "Boorah! You Lose!";
next;
goto YOUPULL;
PLAY:
mes "Rock... Paper...";
set @opp,rand (1,3);
menu "^0000FFROCK!",ROCK,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER;
ROCK:
if (@lastchoice == 1) set @opp,rand (1,3);
if (@opp == 1) emotion 11;
if (@opp == 2) emotion 10;
if (@opp == 3) emotion 12;
set @lastchoice,1;
if (@opp == 1) goto SAME;
if (@opp == 2) goto WIN;
if (@opp == 3) goto LOSE;
SCISSORS:
if (@lastchoice == 2) set @opp,rand (1,2);
if (@opp == 1) emotion 11;
if (@opp == 2) emotion 10;
if (@opp == 3) emotion 12;
set @lastchoice,2;
if (@opp == 1) goto LOSE;
if (@opp == 2) goto SAME;
if (@opp == 3) goto WIN;
PAPER:
if (@lastchoice == 3) set @opp,rand (2,3);
if (@opp == 1) emotion 11;
if (@opp == 2) emotion 10;
if (@opp == 3) emotion 12;
set @lastchoice,3;
if (@opp == 1) goto WIN;
if (@opp == 2) goto LOSE;
if (@opp == 3) goto SAME;
YOUPULL:
if (@counter == 1) goto ONE;
if (@counter == 2) goto TWO;
if (@counter == 3) goto THREE;
if (@counter == 4) goto FOUR;
if (@counter == 5) goto FIVE;
if (@counter == 6) goto SIX;
OPPPULL:
if (@counter == 1) goto ONEa;
if (@counter == 2) goto TWOa;
if (@counter == 3) goto THREEa;
if (@counter == 4) goto FOURa;
if (@counter == 5) goto FIVEa;
if (@counter == 6) goto SIXa;
ONE:
set @counter,2;
mes "1 of 6";
set @pull,rand (1,6);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
TWO:
set @counter,3;
mes "2 of 6";
set @pull,rand (1,5);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
THREE:
set @counter,4;
mes "3 of 6";
set @pull,rand (1,4);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
FOUR:
set @counter,5;
mes "4 of 6";
set @pull,rand (1,3);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
FIVE:
set @counter,6;
mes "5 of 6";
set @pull,rand (1,2);
if (@pull == 1) set @pull,rand (1,2);
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
SIX:
mes "6 of 6";
mes "Say your prayers";
set @pull,1;
next;
if (@pull == 1) goto DIE;
if (@pull != 1) goto SAFE;
ONEa:
set @counter,2;
mes "1 of 6";
set @pull,rand (1,6);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
TWOa:
set @counter,3;
mes "2 of 6";
set @pull,rand (1,5);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
THREEa:
set @counter,4;
mes "3 of 6";
set @pull,rand (1,4);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
FOURa:
set @counter,5;
mes "4 of 6";
set @pull,rand (1,3);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
FIVEa:
set @counter,6;
mes "5 of 6";
set @pull,rand (1,2);
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
SIXa:
mes "6 of 6";
mes "Say your prayers";
set @pull,1;
next;
if (@pull == 1) goto KILL;
if (@pull != 1) goto SAFE;
SAFE:
emotion 32;
mes "*^0000FFClick^000000* whew...";
goto PLAY;
DIE:
specialeffect2 183;
emotion 29;
percentheal -100,-100;
mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
mes "You're dead!";
close;
KILL:
specialeffect 183;
emotion 23;
mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
mes "OWWW @#$%^!! THAT HURT LIKE HELL!!";
next;
goto PRIZE;
RULES:
mes "Ok here are the rules:";
mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best.";
mes "Beat me to win a prize.";
menu "Let me play.",CONT,"No thanks.",LEAVE;
CONT:
mes "Ok here we go...";
next;
goto PLAY;
PRIZE:
mes "Congratulations! You have won...";
set @prize,rand (1,10);
if (@prize == 1) goto P1;
if (@prize == 2) goto P2;
if (@prize == 3) goto P3;
if (@prize == 4) goto P4;
if (@prize == 5) goto P5;
if (@prize == 6) goto P6;
if (@prize == 7) goto P7;
if (@prize == 8) goto P8;
if (@prize == 9) goto P9;
if (@prize == 10) goto P10;
P1:
mes "10x Oridicon!";
getitem 984,10;
close;
P2:
mes "10x Elunium!";
getitem 985,10;
close;
P3:
mes "100x Fly Wings!";
getitem 601,100;
close;
P4:
mes "8x Old Blue Box!";
getitem 603,8;
close;
P5:
mes "4x Old Violet Box!";
getitem 617,4;
close;
P6:
mes "1x Old Card Album!";
getitem 616,1;
close;
P7:
mes "10x Dead Branch!";
getitem 604,10;
close;
P8:
mes "3x Gold!";
getitem 969,3;
close;
P9:
mes "10x Elunium!";
getitem 985,10;
close;
P10:
mes "20x Blue Potion!";
getitem 505,20;
close;
LEAVE:
mes "Pansy.";
close;
}

View File

@ -1,199 +1,199 @@
//===== rAthena Script =======================================
//= Shifty Assassin
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.1.2
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Players buy ninjas to assassinate other players
//===== Additional Comments: =================================
//= 1.1.1 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious]
//= 1.1.2 Updated WoE Check. [Paradox924X]
//============================================================
morocc,148,86,5 script Shifty Assassin 725,{
set $ninja_price,250000;
// STARTS THE MENU //
M_Start:
mes "[Shifty Assassin]";
mes "What do you want?";
next;
if (getgmlevel() > 90) goto M_GM;
menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Cancel",M_Exit;
M_GM:
menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Add Ninjas",M_Add,"Cancel",M_Exit;
// GM MENU TO ADD NINJAS //
M_Add:
mes "[Shifty Assassin]";
mes "How many ninjas do you want to make available?";
next;
set @add,0;
input @add;
set $ninja_avail,$ninja_avail+@add;
mes @add + " ninjas added.";
close;
// BUY NINJAS //
M_Buy:
mes "[Shifty Assassin]";
mes "How many ninjas do you want buy?";
mes "There are ^0000FF" + $ninja_avail + "^000000 ninjas available.";
mes "They cost ^0000FF" + $ninja_price + " zeny ^000000each.";
set @buy,0;
input @buy;
next;
if ($ninja_avail < 1) goto NoNinjas;
if ($ninja_avail < @buy) goto NotEnoughNinjas;
set @price,@buy*$ninja_price;
if (zeny < @price ) goto NoZeny;
mes "[Shifty Assassin]";
mes "That will cost you ^0000FF" + @price + " zeny^000000.";
next;
menu "Continue",-,"Cancel",M_Exit;
set zeny,zeny-@price;
set #ninjas,#ninjas+@buy;
set $ninja_avail,$ninja_avail-@buy;
mes "[Shifty Assassin]";
mes "Thank you.";
close;
// ASSASSINATE SOMEBODY //
M_Kill:
if (agitcheck()) goto M_Busy;
mes "[Shifty Assassin]";
mes "Enter the name of the target.";
mes "^FF0000Type the name exactly, otherwise I won't be able to find the victim.^000000";
next;
menu "Continue",-,"Cancel",M_Exit;
set @name$,"0";
input @name$;
next;
mes "[Shifty Assassin]";
mes "Active Ninjas: "+#ninjas;
mes "Resting Ninjas: "+#ninjasr;
mes "How many do you want to send?";
set @number,0;
input @number;
if (@number < 1) goto NoNinjasSent;
if (@number > #ninjas) goto NotEnoughNinjas1;
if (@number > 10) goto TooManyNinjas;
set @chance,rand (1,12);
set #ninjas,#ninjas-@number;
set #ninjas,#ninjas+#ninjasr;
set #ninjasr,0;
if (@number < @chance) goto M_Failure;
// SUCCESSFUL ATTACK //
mes "Sending ninjas now.";
next;
mes "[Shifty Assassin]";
set @ninjasurvived,rand (1,@number);
set #ninjasr,@number-@ninjasurvived;
mes "Your attack succeeded but only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
atcommand strcharinfo(0) + "@kill "+@name$;
announce @name$+" has been assassinated by " + strcharinfo(0) +"'s Ninjas.",8;
close;
// FAILED ATTACK //
M_Failure:
mes "Sending ninjas now.";
next;
mes "[Shifty Assassin]";
set @ninjasurvived,rand (1,@number);
set #ninjasr,@number-@ninjasurvived;
mes "Your attack failed and only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
announce @name$+" has survived " + strcharinfo(0) +"'s Ninja attack.",8;
close;
// NINJAS BUSY FOR WOE //
M_Busy:
mes "[Shifty Assassin]";
mes "Sorry, all my ninjas are busy doing War of Emperium.";
close;
// CHECK YOUR NINJAS //
M_Check:
mes "[Shifty Assassin]";
mes "You have:";
mes "^FF0000" + #ninjas + "^000000 Active Ninjas.";
mes "^0000FF" + #ninjasr + "^000000 Resting Ninjas.";
next;
goto M_Start;
// LIMIT //
NoNinjasSent:
mes "[Shifty Assassin]";
mes "You can't kill anyone without ninjas.";
next;
goto M_Start;
TooManyNinjas:
mes "[Shifty Assassin]";
mes "You can only send 10 ninjas max.";
next;
goto M_Start;
NoZeny:
mes "[Shifty Assassin]";
mes "You do not have enough zeny.";
close;
NotEnoughNinjas:
mes "[Shifty Assassin]";
mes "There aren't that many ninjas to buy.";
next;
goto M_Start;
NoNinjas:
mes "[Shifty Assassin]";
mes "There are no ninjas left to buy.";
close;
NotEnoughNinjas1:
mes "[Shifty Assassin]";
mes "You do not have that many ninjas.";
next;
goto M_Start;
M_Exit:
mes "[Shifty Assassin]";
mes "Goodbye.";
close;
// TIMER DELAY NINJA ADDER //
OnClock0600:
set $ninja_avail,$ninja_avail+2;
end;
OnClock1200:
set $ninja_avail,$ninja_avail+2;
end;
OnClock1500:
set $ninja_avail,$ninja_avail+2;
end;
OnClock1800:
set $ninja_avail,$ninja_avail+3;
end;
OnClock1900:
set $ninja_avail,$ninja_avail+2;
end;
OnClock2000:
set $ninja_avail,$ninja_avail+2;
end;
OnClock0000:
set $ninja_avail,$ninja_avail+2;
end;
OnInit:
set $ninja_avail,$ninja_avail+1;
end;
}
//===== rAthena Script =======================================
//= Shifty Assassin
//===== By: ==================================================
//= acky
//===== Current Version: =====================================
//= 1.1.2
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Players buy ninjas to assassinate other players
//===== Additional Comments: =================================
//= 1.1.1 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious]
//= 1.1.2 Updated WoE Check. [Paradox924X]
//============================================================
morocc,148,86,5 script Shifty Assassin 725,{
set $ninja_price,250000;
// STARTS THE MENU //
M_Start:
mes "[Shifty Assassin]";
mes "What do you want?";
next;
if (getgmlevel() > 90) goto M_GM;
menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Cancel",M_Exit;
M_GM:
menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Add Ninjas",M_Add,"Cancel",M_Exit;
// GM MENU TO ADD NINJAS //
M_Add:
mes "[Shifty Assassin]";
mes "How many ninjas do you want to make available?";
next;
set @add,0;
input @add;
set $ninja_avail,$ninja_avail+@add;
mes @add + " ninjas added.";
close;
// BUY NINJAS //
M_Buy:
mes "[Shifty Assassin]";
mes "How many ninjas do you want buy?";
mes "There are ^0000FF" + $ninja_avail + "^000000 ninjas available.";
mes "They cost ^0000FF" + $ninja_price + " zeny ^000000each.";
set @buy,0;
input @buy;
next;
if ($ninja_avail < 1) goto NoNinjas;
if ($ninja_avail < @buy) goto NotEnoughNinjas;
set @price,@buy*$ninja_price;
if (zeny < @price ) goto NoZeny;
mes "[Shifty Assassin]";
mes "That will cost you ^0000FF" + @price + " zeny^000000.";
next;
menu "Continue",-,"Cancel",M_Exit;
set zeny,zeny-@price;
set #ninjas,#ninjas+@buy;
set $ninja_avail,$ninja_avail-@buy;
mes "[Shifty Assassin]";
mes "Thank you.";
close;
// ASSASSINATE SOMEBODY //
M_Kill:
if (agitcheck()) goto M_Busy;
mes "[Shifty Assassin]";
mes "Enter the name of the target.";
mes "^FF0000Type the name exactly, otherwise I won't be able to find the victim.^000000";
next;
menu "Continue",-,"Cancel",M_Exit;
set @name$,"0";
input @name$;
next;
mes "[Shifty Assassin]";
mes "Active Ninjas: "+#ninjas;
mes "Resting Ninjas: "+#ninjasr;
mes "How many do you want to send?";
set @number,0;
input @number;
if (@number < 1) goto NoNinjasSent;
if (@number > #ninjas) goto NotEnoughNinjas1;
if (@number > 10) goto TooManyNinjas;
set @chance,rand (1,12);
set #ninjas,#ninjas-@number;
set #ninjas,#ninjas+#ninjasr;
set #ninjasr,0;
if (@number < @chance) goto M_Failure;
// SUCCESSFUL ATTACK //
mes "Sending ninjas now.";
next;
mes "[Shifty Assassin]";
set @ninjasurvived,rand (1,@number);
set #ninjasr,@number-@ninjasurvived;
mes "Your attack succeeded but only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
atcommand strcharinfo(0) + "@kill "+@name$;
announce @name$+" has been assassinated by " + strcharinfo(0) +"'s Ninjas.",8;
close;
// FAILED ATTACK //
M_Failure:
mes "Sending ninjas now.";
next;
mes "[Shifty Assassin]";
set @ninjasurvived,rand (1,@number);
set #ninjasr,@number-@ninjasurvived;
mes "Your attack failed and only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
announce @name$+" has survived " + strcharinfo(0) +"'s Ninja attack.",8;
close;
// NINJAS BUSY FOR WOE //
M_Busy:
mes "[Shifty Assassin]";
mes "Sorry, all my ninjas are busy doing War of Emperium.";
close;
// CHECK YOUR NINJAS //
M_Check:
mes "[Shifty Assassin]";
mes "You have:";
mes "^FF0000" + #ninjas + "^000000 Active Ninjas.";
mes "^0000FF" + #ninjasr + "^000000 Resting Ninjas.";
next;
goto M_Start;
// LIMIT //
NoNinjasSent:
mes "[Shifty Assassin]";
mes "You can't kill anyone without ninjas.";
next;
goto M_Start;
TooManyNinjas:
mes "[Shifty Assassin]";
mes "You can only send 10 ninjas max.";
next;
goto M_Start;
NoZeny:
mes "[Shifty Assassin]";
mes "You do not have enough zeny.";
close;
NotEnoughNinjas:
mes "[Shifty Assassin]";
mes "There aren't that many ninjas to buy.";
next;
goto M_Start;
NoNinjas:
mes "[Shifty Assassin]";
mes "There are no ninjas left to buy.";
close;
NotEnoughNinjas1:
mes "[Shifty Assassin]";
mes "You do not have that many ninjas.";
next;
goto M_Start;
M_Exit:
mes "[Shifty Assassin]";
mes "Goodbye.";
close;
// TIMER DELAY NINJA ADDER //
OnClock0600:
set $ninja_avail,$ninja_avail+2;
end;
OnClock1200:
set $ninja_avail,$ninja_avail+2;
end;
OnClock1500:
set $ninja_avail,$ninja_avail+2;
end;
OnClock1800:
set $ninja_avail,$ninja_avail+3;
end;
OnClock1900:
set $ninja_avail,$ninja_avail+2;
end;
OnClock2000:
set $ninja_avail,$ninja_avail+2;
end;
OnClock0000:
set $ninja_avail,$ninja_avail+2;
end;
OnInit:
set $ninja_avail,$ninja_avail+1;
end;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,49 +1,49 @@
//===== rAthena Script =======================================
//= Healer
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Basic healer script.
//============================================================
- script Healer -1,{
set .@Price,0; // Zeny required for heal
set .@Buffs,0; // Also buff players? (1: yes / 0: no)
set .@Delay,0; // Heal delay, in seconds
if (@HD > gettimetick(2)) end;
if (.@Price) {
message strcharinfo(0),"Healing costs "+.@Price+" Zeny.";
if (Zeny < .@Price) end;
if(select("^0055FFHeal^000000:^777777Cancel^000000")==2) close;
set Zeny, Zeny-.@Price; }
specialeffect2 313; percentheal 100,100;
if (.@Buffs) {
specialeffect2 37; sc_start SC_INCREASEAGI,240000,10;
specialeffect2 42; sc_start SC_BLESSING,240000,10; }
if (.@Delay) set @HD, gettimetick(2)+.@Delay;
if (.@Price) close;
end;
}
alberta,185,144,5 duplicate(Healer) Healer#alb 742
aldebaran,134,123,5 duplicate(Healer) Healer#alde 742
amatsu,200,80,5 duplicate(Healer) Healer#ama 742
ayothaya,155,111,5 duplicate(Healer) Healer#ayo 742
comodo,188,162,5 duplicate(Healer) Healer#com 742
geffen,121,61,5 duplicate(Healer) Healer#gef 742
gonryun,164,130,5 duplicate(Healer) Healer#gon 742
izlude,125,118,5 duplicate(Healer) Healer#izl 742
louyang,225,103,5 duplicate(Healer) Healer#lou 742
morocc,159,96,5 duplicate(Healer) Healer#mor 742
niflheim,188,180,5 duplicate(Healer) Healer#nif 742
payon,180,105,5 duplicate(Healer) Healer#pay 742
prontera,150,184,5 duplicate(Healer) Healer#pront 742
umbala,94,162,5 duplicate(Healer) Healer#umb 742
xmas,149,136,5 duplicate(Healer) Healer#xmas 742
//===== rAthena Script =======================================
//= Healer
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Basic healer script.
//============================================================
- script Healer -1,{
set .@Price,0; // Zeny required for heal
set .@Buffs,0; // Also buff players? (1: yes / 0: no)
set .@Delay,0; // Heal delay, in seconds
if (@HD > gettimetick(2)) end;
if (.@Price) {
message strcharinfo(0),"Healing costs "+.@Price+" Zeny.";
if (Zeny < .@Price) end;
if(select("^0055FFHeal^000000:^777777Cancel^000000")==2) close;
set Zeny, Zeny-.@Price; }
specialeffect2 313; percentheal 100,100;
if (.@Buffs) {
specialeffect2 37; sc_start SC_INCREASEAGI,240000,10;
specialeffect2 42; sc_start SC_BLESSING,240000,10; }
if (.@Delay) set @HD, gettimetick(2)+.@Delay;
if (.@Price) close;
end;
}
alberta,185,144,5 duplicate(Healer) Healer#alb 742
aldebaran,134,123,5 duplicate(Healer) Healer#alde 742
amatsu,200,80,5 duplicate(Healer) Healer#ama 742
ayothaya,155,111,5 duplicate(Healer) Healer#ayo 742
comodo,188,162,5 duplicate(Healer) Healer#com 742
geffen,121,61,5 duplicate(Healer) Healer#gef 742
gonryun,164,130,5 duplicate(Healer) Healer#gon 742
izlude,125,118,5 duplicate(Healer) Healer#izl 742
louyang,225,103,5 duplicate(Healer) Healer#lou 742
morocc,159,96,5 duplicate(Healer) Healer#mor 742
niflheim,188,180,5 duplicate(Healer) Healer#nif 742
payon,180,105,5 duplicate(Healer) Healer#pay 742
prontera,150,184,5 duplicate(Healer) Healer#pront 742
umbala,94,162,5 duplicate(Healer) Healer#umb 742
xmas,149,136,5 duplicate(Healer) Healer#xmas 742
yuno,152,186,5 duplicate(Healer) Healer#yuno 742

View File

@ -1,223 +1,223 @@
//===== rAthena Script =======================================
//= Sign Your Items
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Write you name on your rare equipment or weapon ^_-
//= Original X-Mas mini-quest(could be used as a permanent one)
//===== Additional Comments: =================================
//=
//============================================================
prt_in,24,61,7 script Perchik 47,{
mes "[Perchik]";
if(BaseJob==Job_Novice || BaseLevel<50) {
mes "Sorry, I don't help newbies. Go kill more Porings.";
emotion e_sry;
close;
}
mes "Hi, I can ^000090sign your name^000000 on almost any rare item you can hold.";
next;
menu "Tell me more...",-, "Sign my items, please",M_DO;
mes "[Perchik]";
mes "I can put your name on any slotless equipment or weapon.";
emotion e_ic;
next;
mes "[Perchik]";
mes "A week ago, my BOSS told me to send away newbies. I dunno why.";
next;
mes "[Perchik]";
mes "For my work I accept ^0000803 Gift Box^000000es (gray one)";
mes "plus ^FF00005000z^000000 per each refine of your item.";
next;
emotion e_cry;
mes "[Perchik]";
mes "Alas, I have 12 hungry children";
mes "and a very angry wife.";
next;
mes "[Perchik]";
mes "Or it was... 12 angry children";
mes "and a very hungry wife...";
emotion e_hmm;
close;
M_DO:
mes "[Perchik]";
mes "Show me your items to sign...";
M_MENU:
next;
menu getequipname(1),M_PART1,getequipname(9),M_PART9,getequipname(10),M_PART10,getequipname(2),M_PART2,getequipname(4),M_PART4,
getequipname(3),M_PART3,getequipname(5),M_PART5,getequipname(6),M_PART6,getequipname(7),M_PART7,getequipname(8),M_PART8;
//Head Gear
M_PART1:
set @part,1;
if (getequipisequiped(1)) goto L_CHECK1;
mes "[Perchik]";
mes "A bald head under a cheap wig... There's nothing worthy to sign.";
emotion 6;
goto M_MENU;
M_PART9:
set @part,9;
if (getequipisequiped(9)) goto L_CHECK1;
mes "[Perchik]";
mes "Glasses... I can't see any glasses...";
emotion 20;
goto M_MENU;
M_PART10:
set @part,10;
if (getequipisequiped(10)) goto L_CHECK1;
mes "[Perchik]";
mes "I don't see any mask here.";
emotion 20;
goto M_MENU;
//Armor
M_PART2:
set @part,2;
if (getequipisequiped(2)) goto L_CHECK1;
mes "[Perchik]";
mes "Your belly...? Yes, it's rather fat.";
emotion 6;
goto M_MENU;
//Left Hand
M_PART3:
set @part,3;
if (getequipisequiped(3)) goto L_CHECK1;
mes "[Perchik]";
mes "Sign your left hand? I'm not a celebrity, you know...";
emotion 4;
goto M_MENU;
//Right Hand
M_PART4:
set @part,4;
if (getequipisequiped(4)) goto L_CHECK1;
mes "[Perchik]";
mes "It isn't an armor... It's a mud!!! Wash your hands more often.";
emotion 4;
goto M_MENU;
//Garment
M_PART5:
set @part,5;
if (getequipisequiped(5)) goto L_CHECK1;
mes "[Perchik]";
mes "Look... It's empty...";
goto M_MENU;
//Foot Gear
M_PART6:
set @part,6;
if (getequipisequiped(6)) goto L_CHECK1;
mes "[Perchik]";
mes "Aw!! I don't like stinky feet.";
emotion 16;
goto M_MENU;
//Accessory1
M_PART7:
set @part,7;
if (getequipisequiped(7)) goto L_CHECK1;
mes "[Perchik]";
mes "Yep... a pocket with a huge hole...";
emotion 20;
goto M_MENU;
//Accessory2
M_PART8:
set @part,8;
if (getequipisequiped(8)) goto L_CHECK1;
mes "[Perchik]";
mes "I see your fat belly...";
emotion 20;
goto M_MENU;
L_CHECK1:
set @ref,0;
set @id,getequipid(@part);
if(getequipisidentify(@part)) goto L_CHECK2;
mes "[Perchik]";
mes "How could you equip such unknown item?";
npctalk "What a sneaky cheater!";
emotion e_wah;
close;
L_CHECK2:
set @ref,getequiprefinerycnt(@part);
mes "[Perchik]";
mes "You want me to sign your "+getitemname(@id)+"...";
if(BaseJob==Job_Novice) {
mes "But you're a Novice. My BOSS told me to send such weaklings away.";
emotion e_sry;
goto M_MENU;
}
set @slot0,getequipcardid(@part,0);
set @slot1,getequipcardid(@part,1);
set @slot2,getequipcardid(@part,2);
set @slot3,getequipcardid(@part,3);
if(@slot0==255 || @slot0==254 || @slot0<0) {
mes "Alas, this item's already signed.";
mes "I would never touch masters work.";
emotion e_hmm;
goto M_MENU;
}
if(@slot0>4000 && @slot0<5000) {
mes "A card? Here?!";
mes "As I said before, I don't sign items with cards.";
emotion e_hmm;
goto M_MENU;
}
if(getiteminfo(@id,10)) {
mes "Sorry. I don't sign slotted items.";
emotion e_sry;
goto M_MENU;
}
getinventorylist;
for (set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){
if(@inventorylist_expire[.@i] != 0) {
mes "Sorry, I don't sign rental items!";
emotion e_hmm;
goto M_MENU;
}
}
if(@ref)mes "It has been refined "+@ref+" times... Adding ^FF00005000z^000000 per time.";
mes "Give me ^0000803 gray Gift Boxes^000000";
if(@ref)mes "and ^FF0000"+(5000*@ref)+"z^000000.";
next;
menu "Ok!",-, "Leave",M_END;
if(Zeny>=(5000*@ref) && countitem(644)>=3) {
delitem 644,3;
set Zeny,Zeny-(5000*@ref);
goto L_MAKE;
}
mes "[Perchik]";
mes "I don't work for 'thanks'.";
emotion e_sry;
close;
L_MAKE:
if(countitem2(@id,1,@ref,0,@slot0,@slot1,@slot2,@slot3)==0) {
mes "[Perchik]";
mes "Where is... "+getitemname(@id)+"?";
npctalk "You're a snoozy cheater!";
logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id);
emotion e_wah;
close;
}
delitem2 @id,1,1,@ref,0,@slot0,@slot1,@slot2,@slot3;
mes "[Perchik]";
mes "Done!";
emotion e_proud;
getitem2 @id,1,1,@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff;
close;
M_END:
mes "[Perchik]";
mes "See you...";
emotion e_yawn;
close;
}
//===== rAthena Script =======================================
//= Sign Your Items
//===== By: ==================================================
//= Lupus
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Write you name on your rare equipment or weapon ^_-
//= Original X-Mas mini-quest(could be used as a permanent one)
//===== Additional Comments: =================================
//=
//============================================================
prt_in,24,61,7 script Perchik 47,{
mes "[Perchik]";
if(BaseJob==Job_Novice || BaseLevel<50) {
mes "Sorry, I don't help newbies. Go kill more Porings.";
emotion e_sry;
close;
}
mes "Hi, I can ^000090sign your name^000000 on almost any rare item you can hold.";
next;
menu "Tell me more...",-, "Sign my items, please",M_DO;
mes "[Perchik]";
mes "I can put your name on any slotless equipment or weapon.";
emotion e_ic;
next;
mes "[Perchik]";
mes "A week ago, my BOSS told me to send away newbies. I dunno why.";
next;
mes "[Perchik]";
mes "For my work I accept ^0000803 Gift Box^000000es (gray one)";
mes "plus ^FF00005000z^000000 per each refine of your item.";
next;
emotion e_cry;
mes "[Perchik]";
mes "Alas, I have 12 hungry children";
mes "and a very angry wife.";
next;
mes "[Perchik]";
mes "Or it was... 12 angry children";
mes "and a very hungry wife...";
emotion e_hmm;
close;
M_DO:
mes "[Perchik]";
mes "Show me your items to sign...";
M_MENU:
next;
menu getequipname(1),M_PART1,getequipname(9),M_PART9,getequipname(10),M_PART10,getequipname(2),M_PART2,getequipname(4),M_PART4,
getequipname(3),M_PART3,getequipname(5),M_PART5,getequipname(6),M_PART6,getequipname(7),M_PART7,getequipname(8),M_PART8;
//Head Gear
M_PART1:
set @part,1;
if (getequipisequiped(1)) goto L_CHECK1;
mes "[Perchik]";
mes "A bald head under a cheap wig... There's nothing worthy to sign.";
emotion 6;
goto M_MENU;
M_PART9:
set @part,9;
if (getequipisequiped(9)) goto L_CHECK1;
mes "[Perchik]";
mes "Glasses... I can't see any glasses...";
emotion 20;
goto M_MENU;
M_PART10:
set @part,10;
if (getequipisequiped(10)) goto L_CHECK1;
mes "[Perchik]";
mes "I don't see any mask here.";
emotion 20;
goto M_MENU;
//Armor
M_PART2:
set @part,2;
if (getequipisequiped(2)) goto L_CHECK1;
mes "[Perchik]";
mes "Your belly...? Yes, it's rather fat.";
emotion 6;
goto M_MENU;
//Left Hand
M_PART3:
set @part,3;
if (getequipisequiped(3)) goto L_CHECK1;
mes "[Perchik]";
mes "Sign your left hand? I'm not a celebrity, you know...";
emotion 4;
goto M_MENU;
//Right Hand
M_PART4:
set @part,4;
if (getequipisequiped(4)) goto L_CHECK1;
mes "[Perchik]";
mes "It isn't an armor... It's a mud!!! Wash your hands more often.";
emotion 4;
goto M_MENU;
//Garment
M_PART5:
set @part,5;
if (getequipisequiped(5)) goto L_CHECK1;
mes "[Perchik]";
mes "Look... It's empty...";
goto M_MENU;
//Foot Gear
M_PART6:
set @part,6;
if (getequipisequiped(6)) goto L_CHECK1;
mes "[Perchik]";
mes "Aw!! I don't like stinky feet.";
emotion 16;
goto M_MENU;
//Accessory1
M_PART7:
set @part,7;
if (getequipisequiped(7)) goto L_CHECK1;
mes "[Perchik]";
mes "Yep... a pocket with a huge hole...";
emotion 20;
goto M_MENU;
//Accessory2
M_PART8:
set @part,8;
if (getequipisequiped(8)) goto L_CHECK1;
mes "[Perchik]";
mes "I see your fat belly...";
emotion 20;
goto M_MENU;
L_CHECK1:
set @ref,0;
set @id,getequipid(@part);
if(getequipisidentify(@part)) goto L_CHECK2;
mes "[Perchik]";
mes "How could you equip such unknown item?";
npctalk "What a sneaky cheater!";
emotion e_wah;
close;
L_CHECK2:
set @ref,getequiprefinerycnt(@part);
mes "[Perchik]";
mes "You want me to sign your "+getitemname(@id)+"...";
if(BaseJob==Job_Novice) {
mes "But you're a Novice. My BOSS told me to send such weaklings away.";
emotion e_sry;
goto M_MENU;
}
set @slot0,getequipcardid(@part,0);
set @slot1,getequipcardid(@part,1);
set @slot2,getequipcardid(@part,2);
set @slot3,getequipcardid(@part,3);
if(@slot0==255 || @slot0==254 || @slot0<0) {
mes "Alas, this item's already signed.";
mes "I would never touch masters work.";
emotion e_hmm;
goto M_MENU;
}
if(@slot0>4000 && @slot0<5000) {
mes "A card? Here?!";
mes "As I said before, I don't sign items with cards.";
emotion e_hmm;
goto M_MENU;
}
if(getiteminfo(@id,10)) {
mes "Sorry. I don't sign slotted items.";
emotion e_sry;
goto M_MENU;
}
getinventorylist;
for (set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){
if(@inventorylist_expire[.@i] != 0) {
mes "Sorry, I don't sign rental items!";
emotion e_hmm;
goto M_MENU;
}
}
if(@ref)mes "It has been refined "+@ref+" times... Adding ^FF00005000z^000000 per time.";
mes "Give me ^0000803 gray Gift Boxes^000000";
if(@ref)mes "and ^FF0000"+(5000*@ref)+"z^000000.";
next;
menu "Ok!",-, "Leave",M_END;
if(Zeny>=(5000*@ref) && countitem(644)>=3) {
delitem 644,3;
set Zeny,Zeny-(5000*@ref);
goto L_MAKE;
}
mes "[Perchik]";
mes "I don't work for 'thanks'.";
emotion e_sry;
close;
L_MAKE:
if(countitem2(@id,1,@ref,0,@slot0,@slot1,@slot2,@slot3)==0) {
mes "[Perchik]";
mes "Where is... "+getitemname(@id)+"?";
npctalk "You're a snoozy cheater!";
logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id);
emotion e_wah;
close;
}
delitem2 @id,1,1,@ref,0,@slot0,@slot1,@slot2,@slot3;
mes "[Perchik]";
mes "Done!";
emotion e_proud;
getitem2 @id,1,1,@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff;
close;
M_END:
mes "[Perchik]";
mes "See you...";
emotion e_yawn;
close;
}

View File

@ -1,44 +1,44 @@
//===== rAthena Script =======================================
//= Shop Street
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0 [Masao]
//===== Compatible With: =====================================
//= Any rA SVN
//===== Description: =========================================
//= A Shopstreet in Prontera where players can buy some Equipment.
//============================================================
prontera,147,240,5 shop Armor 99,2304:10000,2306:20000,2308:20000,2310:50000,2311:50000,2313:50000,2315:75000,2317:100000,2322:20000,2326:60000,2331:75000,2342:100000,2353:75000,2364:150000,2367:100000,2399:50000
prontera,147,242,5 shop Shield 99,2102:10000,2106:60000,2108:60000,2110:85000,2114:30000,2116:30000,2123:50000,2124:50000
prontera,147,244,5 shop Footgear 99,2404:10000,2406:20000,2409:30000,2412:50000,2417:50000,2418:50000,2424:50000,2425:20000
prontera,147,246,5 shop Mace 99,1502:10000,1505:20000,1511:20000,1514:-1,1517:-1,1520:50000,1522:100000,1523:25000,1528:50000,1529:50000,1531:50000
prontera,147,248,5 shop Knuckle 494,1802:20000,1804:50000,1806:60000,1808:75000,1810:70000,1812:60000,1813:100000,1814:100000,1822:150000
prontera,147,250,5 shop Whips 494,1951:10000,1953:20000,1955:30000,1962:20000,1963:50000,1972:10000,1974:10000,1976:50000
prontera,147,252,5 shop Instruments 494,1902:10000,1904:20000,1906:-1,1908:50000,1913:50000,1914:50000,1915:50000,1916:50000,1917:50000
prontera,147,254,5 shop Books 494,1550:30000,1551:60000,1552:51000,1559:25000,1561:75000,1564:25000,1568:70000,1569:70000,1570:70000,1571:70000,1572:50000
prontera,147,256,5 shop Guns 497,13103:60000,13105:100000,13106:200000,13101:10000,13150:6000,13152:30000,13153:50000,13155:60000,13156:100000,13154:30000,13159:250000,13157:150000,13161:300000,13162:500000
prontera,147,258,5 shop Fuuma Shuriken 497,7522:500,7521:500,7523:500
prontera,147,260,5 shop One-Handed Swords 497,1108:10000,1117:10000,1120:100000,1124:50000,1130:100000,1131:50000,1133:50000,1138:200000,1139:200000,1145:-1,1149:50000
prontera,147,262,5 shop Two-Handed Swords 497,1155:50000,1158:90000,1163:120000,1164:50000,1165:50000,1166:75000,1168:50000,1169:500000,1172:200000,1175:75000
prontera,147,264,5 shop Spears 731,1405:20000,1408:50000,1415:100000,1417:75000,1421:75000,1422:25000
prontera,147,238,1 shop Dagger 731,1208:20000,1211:20000,1217:20000,1223:50000,1231:75000,1235:75000,1236:75000,1237:75000
prontera,164,264,4 shop Axes 731,1302:10000,1306:20000,1307:45000,1309:75000,1352:20000,1355:30000,1358:75000,1363:50000,1364:50000,1365:50000,1366:50000,1371:100000
prontera,164,262,4 shop Accessories 731,2621:-1,2622:-1,2624:30000,2618:10000,2625:30000,2626:30000,2674:10000,2648:50000,2649:50000,2627:-1,2701:75000
prontera,164,260,4 shop Bows 731,1702:20000,1705:50000,1708:20000,1720:50000,1723:75000,1724:75000,1725:75000
prontera,164,258,4 shop Staffs / Rods 731,1602:20000,1605:20000,1608:20000,1611:45000,1618:85000,1620:85000,1622:50000,1624:50000,1625:50000,1626:50000
prontera,164,256,4 shop Garments 405,2504:10000,2506:40000,2507:82000,2508:56000,2514:50000,2518:60000,2519:60000,2528:85000,2531:10000,2553:10000
prontera,164,254,4 shop Katars 405,1251:50000,1253:100000,1255:75000,1261:125000,1262:20000,1263:20000,1265:100000,1275:100000,1276:100000,1277:100000,1278:100000
prontera,164,252,4 shop Lower Headgear 405,2218:10000,5054:30000,2267:5000,5107:100000,2265:5000,2266:50000,2269:50000,2270:50000
prontera,164,250,4 shop Middle Headgear 405,2201:5000,2203:4000,2205:3500,2212:5000,2225:10000,2229:50000,2231:50000,2234:50000,2235:50000,2281:25000,2292:50000,2296:50000
prontera,164,248,4 shop Upper Headgear 405,2210:1000,2211:1000,2213:10000,2214:20000,2217:10000,2221:5000,2223:10000,2246:75000,2256:75000,2264:100000,2280:20000,2299:30000
prontera,164,246,4 shop Headgear 01 832,5380:40000,5382:40000,2269:5000,2270:5000,5107:15000,5110:15000,2247:30000:5206:10000,2245:30000,2286:35000,2296:15000,2258:45000,5161:200000,5104:40000,2295:20000,5026:30000,5032:100000,5038:30000,5229:65000,5227:65000,5228:65000,5198:50000,5058:300000,5253:80000,5252:60000,5296:100000,5231:300000,5232:300000,5233:300000,5230:300000,5234:300000,5076:50000
prontera,164,244,4 shop Headgear 02 832,5059:100000,5235:75000,5236:75000,5237:75000,5293:150000,5303:35000,5304:65000,5312:65000,5315:45000,5317:45000,5319:75000,5320:120000,5323:588888,5336:50000,5337:50000,5338:50000,5339:50000,5346:50000
prontera,164,242,4 shop Headgear 03 832,5181:300000,5102:500000,5016:75000,5349:150000,5013:700000,5022:500000,5171:1250000,5135:500000,5029:50000,5033:65000,5040:100000,5047:35000,5065:65000,5068:50000,5074:50000,5084:75000,5086:150000,5108:350000,5121:100000,5133:50000,5137:100000,5138:150000,5140:55000,5146:75000,5151:75000,5152:150000,5170:150000,5173:75000,5174:75000,5175:75000,5184:50000,5185:45000,5187:75000,5188:50000,5191:25000,5192:25000,5193:25000,5194:25000,5195:25000,5196:25000,5197:25000
prontera,164,240,4 shop Headgear 04 832,5200:75000,5205:100000,5211:75000,5226:50000,5238:75000,5239:75000,5240:75000,5241:75000,5242:75000,5243:50000,5325:75000,5254:100000,5255:65000,5257:50000,5297:100000,2202:45000,5258:35000,5298:50000,5276:50000,5273:50000,5275:50000,5274:50000,5259:50000,5271:250000,5272:50000,5284:50000,5286:75000,5288:50000,5289:50000,5291:55000,5292:55000,5294:55000,5352:50000,5324:100000,5359:50000,5360:50000
prontera,164,238,4 shop Headgear 05 832,5340:50000,5341:50000,5342:50000,5343:50000,5344:50000,5345:50000,5354:50000,5355:50000,5361:65000,5365:50000,5373:75000,5374:350000,5379:50000,5383:60000,5384:88888,5390:88888,5388:50000,5411:50000,5393:75000,5397:35000,5399:50000,5800:175000,5801:300000,5802:150000
prontera,151,284,4 shop Ammunition 880,1766:50,1755:20,1750:10,1754:20,1761:20,1752:20,1760:20,1759:20,1772:100,1757:30,1770:20,1769:30,1765:40,1763:30,1762:30,1767:30,1764:30,1751:20,1768:30,1753:30,1756:30,1758:30,1771:1000,13200:50,13202:100,13201:300,13206:500,13203:500,13207:500,13204:500,13205:500,13252:50,13254:500,13251:100,13253:300,13250:50,13256:50,13259:50,13258:50,13255:50,13257:50
prontera,153,284,4 shop Alchemist Dealer 880,715:600,716:600,717:600,1025:200,7136:500,7135:500,7136:500,7137:500,7138:500,7139:500
prontera,155,284,4 shop Street Dealer 880,678:5000,505:-1,506:40,610:4000,545:150,546:600,547:1650
//===== rAthena Script =======================================
//= Shop Street
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0 [Masao]
//===== Compatible With: =====================================
//= Any rA SVN
//===== Description: =========================================
//= A Shopstreet in Prontera where players can buy some Equipment.
//============================================================
prontera,147,240,5 shop Armor 99,2304:10000,2306:20000,2308:20000,2310:50000,2311:50000,2313:50000,2315:75000,2317:100000,2322:20000,2326:60000,2331:75000,2342:100000,2353:75000,2364:150000,2367:100000,2399:50000
prontera,147,242,5 shop Shield 99,2102:10000,2106:60000,2108:60000,2110:85000,2114:30000,2116:30000,2123:50000,2124:50000
prontera,147,244,5 shop Footgear 99,2404:10000,2406:20000,2409:30000,2412:50000,2417:50000,2418:50000,2424:50000,2425:20000
prontera,147,246,5 shop Mace 99,1502:10000,1505:20000,1511:20000,1514:-1,1517:-1,1520:50000,1522:100000,1523:25000,1528:50000,1529:50000,1531:50000
prontera,147,248,5 shop Knuckle 494,1802:20000,1804:50000,1806:60000,1808:75000,1810:70000,1812:60000,1813:100000,1814:100000,1822:150000
prontera,147,250,5 shop Whips 494,1951:10000,1953:20000,1955:30000,1962:20000,1963:50000,1972:10000,1974:10000,1976:50000
prontera,147,252,5 shop Instruments 494,1902:10000,1904:20000,1906:-1,1908:50000,1913:50000,1914:50000,1915:50000,1916:50000,1917:50000
prontera,147,254,5 shop Books 494,1550:30000,1551:60000,1552:51000,1559:25000,1561:75000,1564:25000,1568:70000,1569:70000,1570:70000,1571:70000,1572:50000
prontera,147,256,5 shop Guns 497,13103:60000,13105:100000,13106:200000,13101:10000,13150:6000,13152:30000,13153:50000,13155:60000,13156:100000,13154:30000,13159:250000,13157:150000,13161:300000,13162:500000
prontera,147,258,5 shop Fuuma Shuriken 497,7522:500,7521:500,7523:500
prontera,147,260,5 shop One-Handed Swords 497,1108:10000,1117:10000,1120:100000,1124:50000,1130:100000,1131:50000,1133:50000,1138:200000,1139:200000,1145:-1,1149:50000
prontera,147,262,5 shop Two-Handed Swords 497,1155:50000,1158:90000,1163:120000,1164:50000,1165:50000,1166:75000,1168:50000,1169:500000,1172:200000,1175:75000
prontera,147,264,5 shop Spears 731,1405:20000,1408:50000,1415:100000,1417:75000,1421:75000,1422:25000
prontera,147,238,1 shop Dagger 731,1208:20000,1211:20000,1217:20000,1223:50000,1231:75000,1235:75000,1236:75000,1237:75000
prontera,164,264,4 shop Axes 731,1302:10000,1306:20000,1307:45000,1309:75000,1352:20000,1355:30000,1358:75000,1363:50000,1364:50000,1365:50000,1366:50000,1371:100000
prontera,164,262,4 shop Accessories 731,2621:-1,2622:-1,2624:30000,2618:10000,2625:30000,2626:30000,2674:10000,2648:50000,2649:50000,2627:-1,2701:75000
prontera,164,260,4 shop Bows 731,1702:20000,1705:50000,1708:20000,1720:50000,1723:75000,1724:75000,1725:75000
prontera,164,258,4 shop Staffs / Rods 731,1602:20000,1605:20000,1608:20000,1611:45000,1618:85000,1620:85000,1622:50000,1624:50000,1625:50000,1626:50000
prontera,164,256,4 shop Garments 405,2504:10000,2506:40000,2507:82000,2508:56000,2514:50000,2518:60000,2519:60000,2528:85000,2531:10000,2553:10000
prontera,164,254,4 shop Katars 405,1251:50000,1253:100000,1255:75000,1261:125000,1262:20000,1263:20000,1265:100000,1275:100000,1276:100000,1277:100000,1278:100000
prontera,164,252,4 shop Lower Headgear 405,2218:10000,5054:30000,2267:5000,5107:100000,2265:5000,2266:50000,2269:50000,2270:50000
prontera,164,250,4 shop Middle Headgear 405,2201:5000,2203:4000,2205:3500,2212:5000,2225:10000,2229:50000,2231:50000,2234:50000,2235:50000,2281:25000,2292:50000,2296:50000
prontera,164,248,4 shop Upper Headgear 405,2210:1000,2211:1000,2213:10000,2214:20000,2217:10000,2221:5000,2223:10000,2246:75000,2256:75000,2264:100000,2280:20000,2299:30000
prontera,164,246,4 shop Headgear 01 832,5380:40000,5382:40000,2269:5000,2270:5000,5107:15000,5110:15000,2247:30000:5206:10000,2245:30000,2286:35000,2296:15000,2258:45000,5161:200000,5104:40000,2295:20000,5026:30000,5032:100000,5038:30000,5229:65000,5227:65000,5228:65000,5198:50000,5058:300000,5253:80000,5252:60000,5296:100000,5231:300000,5232:300000,5233:300000,5230:300000,5234:300000,5076:50000
prontera,164,244,4 shop Headgear 02 832,5059:100000,5235:75000,5236:75000,5237:75000,5293:150000,5303:35000,5304:65000,5312:65000,5315:45000,5317:45000,5319:75000,5320:120000,5323:588888,5336:50000,5337:50000,5338:50000,5339:50000,5346:50000
prontera,164,242,4 shop Headgear 03 832,5181:300000,5102:500000,5016:75000,5349:150000,5013:700000,5022:500000,5171:1250000,5135:500000,5029:50000,5033:65000,5040:100000,5047:35000,5065:65000,5068:50000,5074:50000,5084:75000,5086:150000,5108:350000,5121:100000,5133:50000,5137:100000,5138:150000,5140:55000,5146:75000,5151:75000,5152:150000,5170:150000,5173:75000,5174:75000,5175:75000,5184:50000,5185:45000,5187:75000,5188:50000,5191:25000,5192:25000,5193:25000,5194:25000,5195:25000,5196:25000,5197:25000
prontera,164,240,4 shop Headgear 04 832,5200:75000,5205:100000,5211:75000,5226:50000,5238:75000,5239:75000,5240:75000,5241:75000,5242:75000,5243:50000,5325:75000,5254:100000,5255:65000,5257:50000,5297:100000,2202:45000,5258:35000,5298:50000,5276:50000,5273:50000,5275:50000,5274:50000,5259:50000,5271:250000,5272:50000,5284:50000,5286:75000,5288:50000,5289:50000,5291:55000,5292:55000,5294:55000,5352:50000,5324:100000,5359:50000,5360:50000
prontera,164,238,4 shop Headgear 05 832,5340:50000,5341:50000,5342:50000,5343:50000,5344:50000,5345:50000,5354:50000,5355:50000,5361:65000,5365:50000,5373:75000,5374:350000,5379:50000,5383:60000,5384:88888,5390:88888,5388:50000,5411:50000,5393:75000,5397:35000,5399:50000,5800:175000,5801:300000,5802:150000
prontera,151,284,4 shop Ammunition 880,1766:50,1755:20,1750:10,1754:20,1761:20,1752:20,1760:20,1759:20,1772:100,1757:30,1770:20,1769:30,1765:40,1763:30,1762:30,1767:30,1764:30,1751:20,1768:30,1753:30,1756:30,1758:30,1771:1000,13200:50,13202:100,13201:300,13206:500,13203:500,13207:500,13204:500,13205:500,13252:50,13254:500,13251:100,13253:300,13250:50,13256:50,13259:50,13258:50,13255:50,13257:50
prontera,153,284,4 shop Alchemist Dealer 880,715:600,716:600,717:600,1025:200,7136:500,7135:500,7136:500,7137:500,7138:500,7139:500
prontera,155,284,4 shop Street Dealer 880,678:5000,505:-1,506:40,610:4000,545:150,546:600,547:1650
prontera,157,284,4 shop Sheepy Gonzales 895,12028:1000,12262:500,12016:750

View File

@ -1,319 +1,319 @@
//===== rAthena Script =======================================
//= Job Master
//===== By: ==================================================
//= rAthena Dev Team [Ori:LunatikBunnie]
//===== Current Version: =====================================
//= 1.7
//===== Compatible With: =====================================
//= rAthena SVN; 15624+
//===== Description: =========================================
//= Changes your job without asking too much
//= For other info, please contact me at Lunatikbunnie@gmail.com
//= Editted menu to avoid button mashing.
//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
//= script leaves grabage variable: 'lastJob'
//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants.
//= All credits go to pxxx [Skotlex]
//= 1.5 Rewrite everything from scratch. [Lance]
//= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus]
//= 1.6 Added support for both branches of 3rd classes,
//= unified response order, fixed minor quirk.
//= 1.7 Corrected typo on EAJ_THIRD to EAJL_THIRD and fixed job
//= level requirement to change to 3rd. [Rytech]
//===== TODO: ================================================
//= Add baby 3rd classes
//= Could be restructured some more using eajobs
//============================================================
prontera,153,193,6 script Job Master 123,{
mes "^ff0000[Job Master]^000000";
if(Class >= Job_Rune_Knight) goto L_noReq;
if(SkillPoint != 0)
{
mes "I'm sorry, please use up all your skill points before changing jobs";
mes "Please come again soon!";
close;
}
if(JobLevel < 10) goto L_LvError;
switch(Class){
case Job_Novice_High:
case Job_Baby:
case Job_Novice:
skill 142,1,0;
skill 143,1,0;
mes "Welcome, please select the job you wish to change into";
if(lastJob != 0 && Class == Job_Novice_High){
switch(lastJob){
case Job_Knight:
case Job_Crusader:
set @target_job, Job_Swordman_High;
break;
case Job_Monk:
case Job_Priest:
set @target_job, Job_Acolyte_High;
break;
case Job_Alchemist:
case Job_Blacksmith:
set @target_job, Job_Merchant_High;
break;
case Job_Rogue:
case Job_Assassin:
set @target_job, Job_Thief_High;
break;
case Job_Wizard:
case Job_Sage:
set @target_job, Job_Mage_High;
break;
case Job_Hunter:
case Job_Bard:
case Job_Dancer:
set @target_job, Job_Archer_High;
break;
}
} else {
switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
"Super Novice","Taekwon","Gunslinger","Ninja")){
case 7:
if(Class == Job_Novice_High) goto L_noReq;
if($@JC_SupNovM > BaseLevel) goto L_BvError;
if(Upper == 2)
set @target_job, Job_Super_Baby;
else
set @target_job, Job_SuperNovice;
break;
case 8:
if(Class == Job_Novice_High) goto L_noReq;
if(Upper == 2) goto L_noReq;
set @target_job, Job_Taekwon;
break;
case 9:
case 10:
if(Class == Job_Novice_High || Upper == 2) goto L_noReq;
set @target_job, @menu + 15;
break;
default:
set @target_job, @menu;
if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
break;
}
}
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
if(select("Yes","No") == 1){
callfunc "Job_Change", @target_job;
if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
callfunc "F_ClearJobVar";
} else {
if($@JC_Plat) goto L_GivePlat;
}
}
close;
break;
default:
if(JobLevel < $@JC_MinimumJB) goto L_LvError;
deletearray @job_opt, getarraysize(@job_opt);
if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
if(lastJob != 0 && Class >= Job_Swordman_High){ // lastJob could have been set before changing back to non-trans
set @target_job, lastJob + 4001;
} else {
switch(Class){
case Job_Swordman_High:
case Job_Baby_Swordman:
case Job_Swordman:
set @job_opt[0], Job_Knight;
set @job_opt[1], Job_Crusader;
break;
case Job_Mage_High:
case Job_Baby_Mage:
case Job_Mage:
set @job_opt[0], Job_Wizard;
set @job_opt[1], Job_Sage;
break;
case Job_Archer_High:
case Job_Baby_Archer:
case Job_Archer:
set @job_opt[0], Job_Hunter;
if(Sex == 0)
set @job_opt[1], Job_Dancer;
else
set @job_opt[1], Job_Bard;
break;
case Job_Acolyte_High:
case Job_Baby_Acolyte:
case Job_Acolyte:
set @job_opt[0], Job_Priest;
set @job_opt[1], Job_Monk;
break;
case Job_Merchant_High:
case Job_Baby_Merchant:
case Job_Merchant:
set @job_opt[0], Job_Blacksmith;
set @job_opt[1], Job_Alchemist;
break;
case Job_Thief_High:
case Job_Baby_Thief:
case Job_Thief:
set @job_opt[0], Job_Assassin;
set @job_opt[1], Job_Rogue;
break;
default:
set @job_opt[0], Job_Star_Gladiator;
set @job_opt[1], Job_Soul_Linker;
break;
}
mes "Welcome, please select the job you wish to change into";
set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1];
if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
}
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
if(select("Yes","No")==1){
callfunc "Job_Change", @target_job;
if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
callfunc "F_ClearJobVar";
} else {
if($@JC_Plat) goto L_GivePlat;
}
}
close;
}
if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
if(checkfalcon() || checkcart() || checkriding()) goto L_remove;
if((Class >= Job_Knight) && (Class <= Job_Crusader2)){
if (.thirdclass==1) {
mes "Would you like to be reborn or change to 3rd class?";
switch(select("I want to be reborn!", "I want to change to 3rd class!", "Cancel"))
{
case 1:
mes "Are you sure you want to be reborn?";
if(select("Yes", "No")==1){
set lastJob, Class;
if(Class == Job_Knight2){
set lastJob, Job_Knight;
} else {
if(Class == Job_Crusader2){
set lastJob, Job_Crusader;
}
}
jobchange Job_Novice_High;
resetlvl(1);
skill 142,1,0;
skill 143,1,0;
}
break;
case 2:
goto L_Third;
}
close;
}
else {
mes "Are you sure you want to be reborn?";
if(select("Yes", "No")==1){
set lastJob, Class;
if(Class == Job_Knight2){
set lastJob, Job_Knight;
} else {
if(Class == Job_Crusader2){
set lastJob, Job_Crusader;
}
}
jobchange Job_Novice_High;
resetlvl(1);
skill 142,1,0;
skill 143,1,0;
}
}
}
if (Class >= Job_Lord_Knight && Class <= Job_Paladin2 && .thirdclass == 1)
{
if(JobLevel < 50) goto L_cantCh;
goto L_Third;
}
}
mes "I'm sorry, there are no further classes for your job.";
close;
L_Third:
set @target_job, roclass(eaclass() | EAJL_THIRD);
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
if(select("Yes", "No")==1){
callfunc "Job_Change", @target_job;
}
close;
L_GivePlat:
if (BaseClass==Job_SuperNovice) goto L_sSuperN;
if (BaseClass==Job_Swordman) goto L_sSword;
if (BaseClass==Job_Mage) goto L_sMage;
if (BaseClass==Job_Archer) goto L_sArcher;
if (BaseClass==Job_Acolyte) goto L_sAcolyte;
if (BaseClass==Job_Merchant) goto L_sMerchant;
if (BaseClass==Job_Thief) goto L_sThief;
close;
L_sSuperN:
skill 142,1,0;
close;
L_sSword:
skill 142,1,0;
skill 144,1,0;
skill 145,1,0;
skill 146,1,0;
close;
L_sMage:
skill 142,1,0;
skill 157,1,0;
close;
L_sArcher:
skill 142,1,0;
skill 147,1,0;
skill 148,1,0;
close;
L_sAcolyte:
skill 142,1,0;
skill 156,1,0;
close;
L_sMerchant:
skill 142,1,0;
skill 153,1,0;
skill 154,1,0;
skill 155,1,0;
close;
L_sThief:
skill 142,1,0;
skill 149,1,0;
skill 150,1,0;
skill 151,1,0;
skill 152,1,0;
close;
L_cantCh:
mes "I'm sorry, you do not meet the requirements to change";
mes "Please come again soon!";
close;
L_LvError:
mes "I'm sorry, you do not seem to have enough Job Levels";
mes "Please come again soon!";
close;
L_BvError:
mes "I'm sorry, you do not seem to have enough Base Levels";
mes "Please come again soon!";
close;
L_noReq:
mes "I'm sorry, you do not meet the requirements to change";
mes "Please come again soon!";
close;
L_remove:
mes "Please remove your cart,falcon or peco";
mes "Please come again soon!";
close;
OnInit:
// Variable Setup
set $@JC_MinimumJB, 40; //Minimum job level for changing to 2nd classes (Default : 40)
set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
set .thirdclass, 1; // Allow players to change into third class?
end;
}
//===== rAthena Script =======================================
//= Job Master
//===== By: ==================================================
//= rAthena Dev Team [Ori:LunatikBunnie]
//===== Current Version: =====================================
//= 1.7
//===== Compatible With: =====================================
//= rAthena SVN; 15624+
//===== Description: =========================================
//= Changes your job without asking too much
//= For other info, please contact me at Lunatikbunnie@gmail.com
//= Editted menu to avoid button mashing.
//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
//= script leaves grabage variable: 'lastJob'
//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants.
//= All credits go to pxxx [Skotlex]
//= 1.5 Rewrite everything from scratch. [Lance]
//= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus]
//= 1.6 Added support for both branches of 3rd classes,
//= unified response order, fixed minor quirk.
//= 1.7 Corrected typo on EAJ_THIRD to EAJL_THIRD and fixed job
//= level requirement to change to 3rd. [Rytech]
//===== TODO: ================================================
//= Add baby 3rd classes
//= Could be restructured some more using eajobs
//============================================================
prontera,153,193,6 script Job Master 123,{
mes "^ff0000[Job Master]^000000";
if(Class >= Job_Rune_Knight) goto L_noReq;
if(SkillPoint != 0)
{
mes "I'm sorry, please use up all your skill points before changing jobs";
mes "Please come again soon!";
close;
}
if(JobLevel < 10) goto L_LvError;
switch(Class){
case Job_Novice_High:
case Job_Baby:
case Job_Novice:
skill 142,1,0;
skill 143,1,0;
mes "Welcome, please select the job you wish to change into";
if(lastJob != 0 && Class == Job_Novice_High){
switch(lastJob){
case Job_Knight:
case Job_Crusader:
set @target_job, Job_Swordman_High;
break;
case Job_Monk:
case Job_Priest:
set @target_job, Job_Acolyte_High;
break;
case Job_Alchemist:
case Job_Blacksmith:
set @target_job, Job_Merchant_High;
break;
case Job_Rogue:
case Job_Assassin:
set @target_job, Job_Thief_High;
break;
case Job_Wizard:
case Job_Sage:
set @target_job, Job_Mage_High;
break;
case Job_Hunter:
case Job_Bard:
case Job_Dancer:
set @target_job, Job_Archer_High;
break;
}
} else {
switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
"Super Novice","Taekwon","Gunslinger","Ninja")){
case 7:
if(Class == Job_Novice_High) goto L_noReq;
if($@JC_SupNovM > BaseLevel) goto L_BvError;
if(Upper == 2)
set @target_job, Job_Super_Baby;
else
set @target_job, Job_SuperNovice;
break;
case 8:
if(Class == Job_Novice_High) goto L_noReq;
if(Upper == 2) goto L_noReq;
set @target_job, Job_Taekwon;
break;
case 9:
case 10:
if(Class == Job_Novice_High || Upper == 2) goto L_noReq;
set @target_job, @menu + 15;
break;
default:
set @target_job, @menu;
if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
break;
}
}
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
if(select("Yes","No") == 1){
callfunc "Job_Change", @target_job;
if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
callfunc "F_ClearJobVar";
} else {
if($@JC_Plat) goto L_GivePlat;
}
}
close;
break;
default:
if(JobLevel < $@JC_MinimumJB) goto L_LvError;
deletearray @job_opt, getarraysize(@job_opt);
if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
if(lastJob != 0 && Class >= Job_Swordman_High){ // lastJob could have been set before changing back to non-trans
set @target_job, lastJob + 4001;
} else {
switch(Class){
case Job_Swordman_High:
case Job_Baby_Swordman:
case Job_Swordman:
set @job_opt[0], Job_Knight;
set @job_opt[1], Job_Crusader;
break;
case Job_Mage_High:
case Job_Baby_Mage:
case Job_Mage:
set @job_opt[0], Job_Wizard;
set @job_opt[1], Job_Sage;
break;
case Job_Archer_High:
case Job_Baby_Archer:
case Job_Archer:
set @job_opt[0], Job_Hunter;
if(Sex == 0)
set @job_opt[1], Job_Dancer;
else
set @job_opt[1], Job_Bard;
break;
case Job_Acolyte_High:
case Job_Baby_Acolyte:
case Job_Acolyte:
set @job_opt[0], Job_Priest;
set @job_opt[1], Job_Monk;
break;
case Job_Merchant_High:
case Job_Baby_Merchant:
case Job_Merchant:
set @job_opt[0], Job_Blacksmith;
set @job_opt[1], Job_Alchemist;
break;
case Job_Thief_High:
case Job_Baby_Thief:
case Job_Thief:
set @job_opt[0], Job_Assassin;
set @job_opt[1], Job_Rogue;
break;
default:
set @job_opt[0], Job_Star_Gladiator;
set @job_opt[1], Job_Soul_Linker;
break;
}
mes "Welcome, please select the job you wish to change into";
set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1];
if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
}
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
if(select("Yes","No")==1){
callfunc "Job_Change", @target_job;
if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
callfunc "F_ClearJobVar";
} else {
if($@JC_Plat) goto L_GivePlat;
}
}
close;
}
if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
if(checkfalcon() || checkcart() || checkriding()) goto L_remove;
if((Class >= Job_Knight) && (Class <= Job_Crusader2)){
if (.thirdclass==1) {
mes "Would you like to be reborn or change to 3rd class?";
switch(select("I want to be reborn!", "I want to change to 3rd class!", "Cancel"))
{
case 1:
mes "Are you sure you want to be reborn?";
if(select("Yes", "No")==1){
set lastJob, Class;
if(Class == Job_Knight2){
set lastJob, Job_Knight;
} else {
if(Class == Job_Crusader2){
set lastJob, Job_Crusader;
}
}
jobchange Job_Novice_High;
resetlvl(1);
skill 142,1,0;
skill 143,1,0;
}
break;
case 2:
goto L_Third;
}
close;
}
else {
mes "Are you sure you want to be reborn?";
if(select("Yes", "No")==1){
set lastJob, Class;
if(Class == Job_Knight2){
set lastJob, Job_Knight;
} else {
if(Class == Job_Crusader2){
set lastJob, Job_Crusader;
}
}
jobchange Job_Novice_High;
resetlvl(1);
skill 142,1,0;
skill 143,1,0;
}
}
}
if (Class >= Job_Lord_Knight && Class <= Job_Paladin2 && .thirdclass == 1)
{
if(JobLevel < 50) goto L_cantCh;
goto L_Third;
}
}
mes "I'm sorry, there are no further classes for your job.";
close;
L_Third:
set @target_job, roclass(eaclass() | EAJL_THIRD);
mes "Are you sure you want to change to " + JobName(@target_job) + "?";
if(select("Yes", "No")==1){
callfunc "Job_Change", @target_job;
}
close;
L_GivePlat:
if (BaseClass==Job_SuperNovice) goto L_sSuperN;
if (BaseClass==Job_Swordman) goto L_sSword;
if (BaseClass==Job_Mage) goto L_sMage;
if (BaseClass==Job_Archer) goto L_sArcher;
if (BaseClass==Job_Acolyte) goto L_sAcolyte;
if (BaseClass==Job_Merchant) goto L_sMerchant;
if (BaseClass==Job_Thief) goto L_sThief;
close;
L_sSuperN:
skill 142,1,0;
close;
L_sSword:
skill 142,1,0;
skill 144,1,0;
skill 145,1,0;
skill 146,1,0;
close;
L_sMage:
skill 142,1,0;
skill 157,1,0;
close;
L_sArcher:
skill 142,1,0;
skill 147,1,0;
skill 148,1,0;
close;
L_sAcolyte:
skill 142,1,0;
skill 156,1,0;
close;
L_sMerchant:
skill 142,1,0;
skill 153,1,0;
skill 154,1,0;
skill 155,1,0;
close;
L_sThief:
skill 142,1,0;
skill 149,1,0;
skill 150,1,0;
skill 151,1,0;
skill 152,1,0;
close;
L_cantCh:
mes "I'm sorry, you do not meet the requirements to change";
mes "Please come again soon!";
close;
L_LvError:
mes "I'm sorry, you do not seem to have enough Job Levels";
mes "Please come again soon!";
close;
L_BvError:
mes "I'm sorry, you do not seem to have enough Base Levels";
mes "Please come again soon!";
close;
L_noReq:
mes "I'm sorry, you do not meet the requirements to change";
mes "Please come again soon!";
close;
L_remove:
mes "Please remove your cart,falcon or peco";
mes "Please come again soon!";
close;
OnInit:
// Variable Setup
set $@JC_MinimumJB, 40; //Minimum job level for changing to 2nd classes (Default : 40)
set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
set .thirdclass, 1; // Allow players to change into third class?
end;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,62 +1,62 @@
//===== rAthena Script =======================================
//= Reset NPC
//===== By: ==================================================
//= rAthena Dev Team
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Resets skills, stats, or both.
//===== Additional Comments: =================================
//= 1.0 First Version
//= 1.1 Optimized for the greater good. [Kisuka]
//= 1.2 Cleaning [Euphy]
//============================================================
prontera,150,193,4 script Reset Girl 124,{
set .@ResetStat,5000; // Zeny for stat reset
set .@ResetSkill,5000; // Zeny for skill reset
set .@ResetBoth,9000; // Zeny for resetting both together
mes "[Reset Girl]";
mes "I am the Reset Girl.";
mes "Reset Stats: "+ .@ResetStat +"z";
mes "Reset Skills: "+ .@ResetSkill +"z";
mes "Reset Both: "+ .@ResetBoth +"z";
mes "Please select the service you want:";
next;
switch(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel")) {
case 1:
mes "[Reset Girl]";
if (Zeny < .@ResetSkill) {
mes "Sorry, you don't have enough Zeny.";
close; }
set Zeny, Zeny-.@ResetSkill;
ResetSkill;
mes "There you go!";
close;
case 2:
mes "[Reset Girl]";
if (Zeny < .@ResetStat) {
mes "Sorry, you don't have enough Zeny.";
close; }
set Zeny, Zeny-.@ResetStat;
ResetStatus;
mes "There you go!";
close;
case 3:
mes "[Reset Girl]";
if (Zeny < .@ResetBoth) {
mes "Sorry, you don't have enough Zeny.";
close; }
set Zeny, Zeny-.@ResetBoth;
ResetSkill;
ResetStatus;
mes "There you go!";
close;
case 4:
close;
}
//===== rAthena Script =======================================
//= Reset NPC
//===== By: ==================================================
//= rAthena Dev Team
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Resets skills, stats, or both.
//===== Additional Comments: =================================
//= 1.0 First Version
//= 1.1 Optimized for the greater good. [Kisuka]
//= 1.2 Cleaning [Euphy]
//============================================================
prontera,150,193,4 script Reset Girl 124,{
set .@ResetStat,5000; // Zeny for stat reset
set .@ResetSkill,5000; // Zeny for skill reset
set .@ResetBoth,9000; // Zeny for resetting both together
mes "[Reset Girl]";
mes "I am the Reset Girl.";
mes "Reset Stats: "+ .@ResetStat +"z";
mes "Reset Skills: "+ .@ResetSkill +"z";
mes "Reset Both: "+ .@ResetBoth +"z";
mes "Please select the service you want:";
next;
switch(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel")) {
case 1:
mes "[Reset Girl]";
if (Zeny < .@ResetSkill) {
mes "Sorry, you don't have enough Zeny.";
close; }
set Zeny, Zeny-.@ResetSkill;
ResetSkill;
mes "There you go!";
close;
case 2:
mes "[Reset Girl]";
if (Zeny < .@ResetStat) {
mes "Sorry, you don't have enough Zeny.";
close; }
set Zeny, Zeny-.@ResetStat;
ResetStatus;
mes "There you go!";
close;
case 3:
mes "[Reset Girl]";
if (Zeny < .@ResetBoth) {
mes "Sorry, you don't have enough Zeny.";
close; }
set Zeny, Zeny-.@ResetBoth;
ResetSkill;
ResetStatus;
mes "There you go!";
close;
case 4:
close;
}
}

View File

@ -1,33 +1,33 @@
//===== rAthena Script =======================================
//= Stylist
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Changes your hair style, hair color, and cloth color.
//============================================================
prontera,170,180,1 script Stylist#custom_stylist 122,{
setarray .@Styles[1],553,37,250; // Maximum dye, hair style, and hair color
setarray .@Look[1],7,1,6;
set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color");
set .@Revert, getlook(.@Look[.@s]); set .@Style,1;
while(1) {
setlook .@Look[.@s], .@Style;
message strcharinfo(0),"This is style #"+.@Style+".";
set .@menu$, " ~ Next (^0055FF"+((.@Style!=.@Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.@Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)";
switch(select(.@menu$)) {
case 1: set .@Style, ((.@Style!=.@Styles[.@s])?.@Style+1:1); break;
case 2: set .@Style, ((.@Style!=1)?.@Style-1:.@Styles[.@s]); break;
case 3: message strcharinfo(0),"Choose a style between 1 - "+.@Styles[.@s]+".";
input .@Style,0,.@Styles[.@s];
if (!.@Style) set .@Style, rand(1,.@Styles[.@s]);
break;
case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; }
} end;
//===== rAthena Script =======================================
//= Stylist
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Changes your hair style, hair color, and cloth color.
//============================================================
prontera,170,180,1 script Stylist#custom_stylist 122,{
setarray .@Styles[1],553,37,250; // Maximum dye, hair style, and hair color
setarray .@Look[1],7,1,6;
set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color");
set .@Revert, getlook(.@Look[.@s]); set .@Style,1;
while(1) {
setlook .@Look[.@s], .@Style;
message strcharinfo(0),"This is style #"+.@Style+".";
set .@menu$, " ~ Next (^0055FF"+((.@Style!=.@Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.@Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)";
switch(select(.@menu$)) {
case 1: set .@Style, ((.@Style!=.@Styles[.@s])?.@Style+1:1); break;
case 2: set .@Style, ((.@Style!=1)?.@Style-1:.@Styles[.@s]); break;
case 3: message strcharinfo(0),"Choose a style between 1 - "+.@Styles[.@s]+".";
input .@Style,0,.@Styles[.@s];
if (!.@Style) set .@Style, rand(1,.@Styles[.@s]);
break;
case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; }
} end;
}

View File

@ -1,123 +1,123 @@
//===== rAthena Script =======================================
//= Falcon Flute Trader
//===== By: ==================================================
//= Masao
//= Credits to Muad_Dib for the translation & Ziu for the
//= Item ID of the Falcon Flute.
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena
//===== Description: =========================================
//= An NPC which sells you a Falcon Flute so you're able to
//= summon a Falcon wherever you are.
//===== Additional Comments: =================================
//= 1.0 First Version. [Masao]
//= 1.1 Added Baby Hunter and Baby Ranger check. bugreport:5728 [Masao]
//============================================================
- script Falcon Flute Trader::fflute -1,{
if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper || Class == Job_Baby_Ranger || Class == Job_Ranger || Class == Job_Ranger_T) {
mes "[Falcon Flute Trader]";
mes "Do you need a Falcon?";
mes "With a magical Flute, you can call your Falcon from anywhere!";
next;
mes "[Falcon Flute Trader]";
mes "It's marvelous, isn't it? Ha ha ha!";
next;
mes "[Falcon Flute Trader]";
mes "Why I'm selling these Falcon Flutes?";
mes "It's because I have no clue how they work.";
mes "Ha ha ha!";
next;
mes "[Falcon Flute Trader]";
mes "Of course, you'll need the Skill ^ff0000Falcon Mastery^000000.";
mes "I don't have the Skill, so I don't know how to handle Falcons.";
mes "As it's for now, I may never have a Falcon.";
next;
mes "[Falcon Flute Trader]";
mes "But I can't give you one for free!";
mes "I have to make money since i also need to eat!";
next;
mes "[Falcon Flute Trader]";
mes "If you need a Falcon Flute I will sell them for 12,500 zeny. Or is that too expensive?";
next;
if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper) {
switch (select("Don't buy one:Buy a Falcon Flute")) {
case 1:
mes "[Falcon Flute Trader]";
mes "That's too bad. If you need one, come back!";
close;
case 2:
if (Zeny >= 12500) {
if (countitem(12848) >= 1) {
mes "[Falcon Flute Trader]";
mes "As i can see you already have an Falcon Flute!";
mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again";
mes "since the Falcon Flute won't disappear upon usage, isn't that great?";
close;
}
mes "[Falcon Flute Trader]";
mes "Here, take this Flute.";
mes "With it you can whistle for your Falcon from anywhere.";
set Zeny, Zeny - 12500;
getitem 12848,1; // Falcon Flute
next;
mes "[Falcon Flute Trader]";
mes "Just a reminder.";
mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!";
close;
}
mes "[Falcon Flute Trader]";
mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
close;
}
}
mes "[Falcon Flute Trader]";
mes "For Rangers however, I have a special Price of 10,000 zeny!";
next;
switch (select("Don't buy one:Buy a Falcon flute")) {
case 1:
mes "[Falcon Flute Trader]";
mes "That's too bad. If you need one, come back!";
close;
case 2:
if (Zeny >= 10000) {
if (countitem(12848) >= 1) {
mes "[Falcon Flute Trader]";
mes "As i can see you already have an Falcon Flute!";
mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again";
mes "since the Falcon Flute won't disappear upon usage, isn't that great?";
close;
}
mes "[Falcon Flute Trader]";
mes "Here take this Flute.";
mes "With it you can whistle for your Falcon from anywhere.";
set Zeny, Zeny - 10000;
getitem 12848,1; // Falcon Flute
next;
mes "[Falcon Flute Trader]";
mes "Just a reminder.";
mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!";
close;
}
mes "[Falcon Flute Trader]";
mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
close;
}
}
if (Class == Job_Baby_Archer || Class == Job_Archer) {
mes "[Falcon Flute Trader]";
mes "Hello young one!";
mes "Currently i can't help you,";
mes "but why don't you return to me when you've become an great Hunter and learned how to handle Falcons properly?";
close;
}
mes "[Falcon Flute Trader]";
mes "Isn't it a beautiful Day today?";
close;
}
hu_in01,386,306,3 duplicate(fflute) Falcon Flute Trader#fft 51
pay_arche,91,134,3 duplicate(fflute) Falcon Flute Trader#fft2 51
//===== rAthena Script =======================================
//= Falcon Flute Trader
//===== By: ==================================================
//= Masao
//= Credits to Muad_Dib for the translation & Ziu for the
//= Item ID of the Falcon Flute.
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena
//===== Description: =========================================
//= An NPC which sells you a Falcon Flute so you're able to
//= summon a Falcon wherever you are.
//===== Additional Comments: =================================
//= 1.0 First Version. [Masao]
//= 1.1 Added Baby Hunter and Baby Ranger check. bugreport:5728 [Masao]
//============================================================
- script Falcon Flute Trader::fflute -1,{
if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper || Class == Job_Baby_Ranger || Class == Job_Ranger || Class == Job_Ranger_T) {
mes "[Falcon Flute Trader]";
mes "Do you need a Falcon?";
mes "With a magical Flute, you can call your Falcon from anywhere!";
next;
mes "[Falcon Flute Trader]";
mes "It's marvelous, isn't it? Ha ha ha!";
next;
mes "[Falcon Flute Trader]";
mes "Why I'm selling these Falcon Flutes?";
mes "It's because I have no clue how they work.";
mes "Ha ha ha!";
next;
mes "[Falcon Flute Trader]";
mes "Of course, you'll need the Skill ^ff0000Falcon Mastery^000000.";
mes "I don't have the Skill, so I don't know how to handle Falcons.";
mes "As it's for now, I may never have a Falcon.";
next;
mes "[Falcon Flute Trader]";
mes "But I can't give you one for free!";
mes "I have to make money since i also need to eat!";
next;
mes "[Falcon Flute Trader]";
mes "If you need a Falcon Flute I will sell them for 12,500 zeny. Or is that too expensive?";
next;
if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper) {
switch (select("Don't buy one:Buy a Falcon Flute")) {
case 1:
mes "[Falcon Flute Trader]";
mes "That's too bad. If you need one, come back!";
close;
case 2:
if (Zeny >= 12500) {
if (countitem(12848) >= 1) {
mes "[Falcon Flute Trader]";
mes "As i can see you already have an Falcon Flute!";
mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again";
mes "since the Falcon Flute won't disappear upon usage, isn't that great?";
close;
}
mes "[Falcon Flute Trader]";
mes "Here, take this Flute.";
mes "With it you can whistle for your Falcon from anywhere.";
set Zeny, Zeny - 12500;
getitem 12848,1; // Falcon Flute
next;
mes "[Falcon Flute Trader]";
mes "Just a reminder.";
mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!";
close;
}
mes "[Falcon Flute Trader]";
mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
close;
}
}
mes "[Falcon Flute Trader]";
mes "For Rangers however, I have a special Price of 10,000 zeny!";
next;
switch (select("Don't buy one:Buy a Falcon flute")) {
case 1:
mes "[Falcon Flute Trader]";
mes "That's too bad. If you need one, come back!";
close;
case 2:
if (Zeny >= 10000) {
if (countitem(12848) >= 1) {
mes "[Falcon Flute Trader]";
mes "As i can see you already have an Falcon Flute!";
mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again";
mes "since the Falcon Flute won't disappear upon usage, isn't that great?";
close;
}
mes "[Falcon Flute Trader]";
mes "Here take this Flute.";
mes "With it you can whistle for your Falcon from anywhere.";
set Zeny, Zeny - 10000;
getitem 12848,1; // Falcon Flute
next;
mes "[Falcon Flute Trader]";
mes "Just a reminder.";
mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!";
close;
}
mes "[Falcon Flute Trader]";
mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
close;
}
}
if (Class == Job_Baby_Archer || Class == Job_Archer) {
mes "[Falcon Flute Trader]";
mes "Hello young one!";
mes "Currently i can't help you,";
mes "but why don't you return to me when you've become an great Hunter and learned how to handle Falcons properly?";
close;
}
mes "[Falcon Flute Trader]";
mes "Isn't it a beautiful Day today?";
close;
}
hu_in01,386,306,3 duplicate(fflute) Falcon Flute Trader#fft 51
pay_arche,91,134,3 duplicate(fflute) Falcon Flute Trader#fft2 51

View File

@ -1,150 +1,150 @@
//===== rAthena Script =======================================
//= iRO Repeatable EXP Quests.
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Custom Version.
//= Repeatable EXP Quest : Kill 50 Disguise or Loli Ruri.
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
nif_fild02,332,327,4 script Deadman 795,{
if (checkquest(60173) != -1) {
if (checkquest(60173,HUNTING) != 2 ) {
mes "[Deadman]";
mes "Have you finished hunting the 50 Disguise?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Deadman]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Deadman]";
mes "Remember, I need help hunting Disguise so go and hunt 50 of them.";
close;
case 3:
mes "[Deadman]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Deadman]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60173;
close;
case 2:
mes "[Deadman]";
mes "Please kill 50 Disguise in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Deadman]";
mes "Amazing, you did that with speed.";
getexp 140600,95800;
erasequest 60173;
close;
}
if (checkquest(60176) != -1) {
if (checkquest(60176,HUNTING) != 2 ) {
mes "[Deadman]";
mes "Have you finished hunting the 50 Loli Ruri?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Deadman]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Deadman]";
mes "Remember, I need help hunting Loli Ruri so go and hunt 50 of them.";
close;
case 3:
mes "[Deadman]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Deadman]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60176;
close;
case 2:
mes "[Deadman]";
mes "Please kill 50 Loli Ruri in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Deadman]";
mes "Amazing, you did that with speed.";
getexp 332000,239500;
erasequest 60176;
close;
}
if ((BaseLevel > 59) && (BaseLevel < 99)) {
mes "[Deadman]";
mes "Oh great!";
mes "You are here to help me right?";
mes "If not, i don't know what to do with the Monsters in this Place!";
next;
switch(select("Sure:No")) {
case 1:
mes "[Deadman]";
mes "Great! I knew the moment i saw you that i can count on you!";
mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
mes "There are to many Disguise and Loli Ruri around, which makes it impossible for the lower level players to gain good experience here.";
next;
mes "[Deadman]";
mes "So, which of those Monsters would you like to hunt for me?";
next;
switch(select("Disguise:Loli Ruri:Cancel")) {
case 1:
if(BaseLevel > 90){
mes "[Deadman]";
mes "Thank you for your great help with the Disguise!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Deadman]";
mes "Kill 50 of those Disguise and let me know when you're done. I will reward you for your efforts.";
setquest 60173;
close;
case 2:
if(BaseLevel > 98){
mes "[Deadman]";
mes "Thank you for your great help with the Loli Ruri!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Deadman]";
mes "Kill 50 of those Loli Ruri and let me know when you're done. I will reward you for your efforts.";
setquest 60176;
close;
case 3:
mes "[Deadman]";
mes "If you change your mind, please come back.";
close;
}
case 2:
mes "[Deadman]";
mes "If you change your mind, please come back.";
close;
}
}
mes "[Deadman]";
mes "Oh boy, Oh boy!";
next;
mes "[Deadman]";
mes "Sorry I can't talk right now I am in a world of pain here, these darn Disguise and Loli Ruri are going to kill me.";
close;
}
//===== rAthena Script =======================================
//= iRO Repeatable EXP Quests.
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Custom Version.
//= Repeatable EXP Quest : Kill 50 Disguise or Loli Ruri.
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
nif_fild02,332,327,4 script Deadman 795,{
if (checkquest(60173) != -1) {
if (checkquest(60173,HUNTING) != 2 ) {
mes "[Deadman]";
mes "Have you finished hunting the 50 Disguise?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Deadman]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Deadman]";
mes "Remember, I need help hunting Disguise so go and hunt 50 of them.";
close;
case 3:
mes "[Deadman]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Deadman]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60173;
close;
case 2:
mes "[Deadman]";
mes "Please kill 50 Disguise in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Deadman]";
mes "Amazing, you did that with speed.";
getexp 140600,95800;
erasequest 60173;
close;
}
if (checkquest(60176) != -1) {
if (checkquest(60176,HUNTING) != 2 ) {
mes "[Deadman]";
mes "Have you finished hunting the 50 Loli Ruri?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Deadman]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Deadman]";
mes "Remember, I need help hunting Loli Ruri so go and hunt 50 of them.";
close;
case 3:
mes "[Deadman]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Deadman]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60176;
close;
case 2:
mes "[Deadman]";
mes "Please kill 50 Loli Ruri in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Deadman]";
mes "Amazing, you did that with speed.";
getexp 332000,239500;
erasequest 60176;
close;
}
if ((BaseLevel > 59) && (BaseLevel < 99)) {
mes "[Deadman]";
mes "Oh great!";
mes "You are here to help me right?";
mes "If not, i don't know what to do with the Monsters in this Place!";
next;
switch(select("Sure:No")) {
case 1:
mes "[Deadman]";
mes "Great! I knew the moment i saw you that i can count on you!";
mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
mes "There are to many Disguise and Loli Ruri around, which makes it impossible for the lower level players to gain good experience here.";
next;
mes "[Deadman]";
mes "So, which of those Monsters would you like to hunt for me?";
next;
switch(select("Disguise:Loli Ruri:Cancel")) {
case 1:
if(BaseLevel > 90){
mes "[Deadman]";
mes "Thank you for your great help with the Disguise!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Deadman]";
mes "Kill 50 of those Disguise and let me know when you're done. I will reward you for your efforts.";
setquest 60173;
close;
case 2:
if(BaseLevel > 98){
mes "[Deadman]";
mes "Thank you for your great help with the Loli Ruri!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Deadman]";
mes "Kill 50 of those Loli Ruri and let me know when you're done. I will reward you for your efforts.";
setquest 60176;
close;
case 3:
mes "[Deadman]";
mes "If you change your mind, please come back.";
close;
}
case 2:
mes "[Deadman]";
mes "If you change your mind, please come back.";
close;
}
}
mes "[Deadman]";
mes "Oh boy, Oh boy!";
next;
mes "[Deadman]";
mes "Sorry I can't talk right now I am in a world of pain here, these darn Disguise and Loli Ruri are going to kill me.";
close;
}

View File

@ -1,101 +1,101 @@
//===== rAthena Script =======================================
//= iRO Repeatable EXP Quests.
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Custom Version.
//= Repeatable EXP Quest : Kill 50 Mantis.
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
lou_fild01,240,354,4 script Mantis Researcher 878,{
if (checkquest(60179) != -1) {
if (checkquest(60179,HUNTING) != 2 ) {
mes "[Mantis Researcher]";
mes "Have you finished hunting the 50 Mantis?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Mantis Researcher]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Mantis Researcher]";
mes "Remember, I need help hunting Mantis so go and hunt 50 of them.";
close;
case 3:
mes "[Mantis Researcher]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Mantis Researcher]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60179;
close;
case 2:
mes "[Mantis Researcher]";
mes "Please kill 50 Mantis in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Mantis Researcher]";
mes "Amazing, you did that with speed.";
getexp 18818,7527;
erasequest 60179;
close;
}
if ((BaseLevel > 34) && (BaseLevel < 71)) {
mes "[Mantis Researcher]";
mes "Oh great!";
mes "You are here to help me right?";
mes "If not, i don't know what to do with the Monsters in this Place!";
next;
switch(select("Sure:No")) {
case 1:
mes "[Mantis Researcher]";
mes "Great! I knew the moment i saw you that i can count on you!";
mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
mes "There are to many Mantis around, which makes it impossible for the lower level players to gain good experience here.";
next;
mes "[Mantis Researcher]";
mes "So, would you still like to help me?";
next;
switch(select("Sure:Cancel")) {
case 1:
if(BaseLevel > 70){
mes "[Mantis Researcher]";
mes "Thank you for your great help with the Mantis!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Mantis Researcher]";
mes "Kill 50 of those Mantis and let me know when you're done. I will reward you for your efforts.";
setquest 60179;
close;
case 2:
mes "[Mantis Researcher]";
mes "If you change your mind, please come back.";
close;
}
case 2:
mes "[Mantis Researcher]";
mes "If you change your mind, please come back.";
close;
}
}
mes "[Mantis Researcher]";
mes "Oh boy, Oh boy!";
next;
mes "[Mantis Researcher]";
mes "Sorry I can't talk right now I am in a world of pain here, these darn Mantis are going to kill me.";
close;
}
//===== rAthena Script =======================================
//= iRO Repeatable EXP Quests.
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Custom Version.
//= Repeatable EXP Quest : Kill 50 Mantis.
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
lou_fild01,240,354,4 script Mantis Researcher 878,{
if (checkquest(60179) != -1) {
if (checkquest(60179,HUNTING) != 2 ) {
mes "[Mantis Researcher]";
mes "Have you finished hunting the 50 Mantis?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Mantis Researcher]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Mantis Researcher]";
mes "Remember, I need help hunting Mantis so go and hunt 50 of them.";
close;
case 3:
mes "[Mantis Researcher]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Mantis Researcher]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60179;
close;
case 2:
mes "[Mantis Researcher]";
mes "Please kill 50 Mantis in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Mantis Researcher]";
mes "Amazing, you did that with speed.";
getexp 18818,7527;
erasequest 60179;
close;
}
if ((BaseLevel > 34) && (BaseLevel < 71)) {
mes "[Mantis Researcher]";
mes "Oh great!";
mes "You are here to help me right?";
mes "If not, i don't know what to do with the Monsters in this Place!";
next;
switch(select("Sure:No")) {
case 1:
mes "[Mantis Researcher]";
mes "Great! I knew the moment i saw you that i can count on you!";
mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
mes "There are to many Mantis around, which makes it impossible for the lower level players to gain good experience here.";
next;
mes "[Mantis Researcher]";
mes "So, would you still like to help me?";
next;
switch(select("Sure:Cancel")) {
case 1:
if(BaseLevel > 70){
mes "[Mantis Researcher]";
mes "Thank you for your great help with the Mantis!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Mantis Researcher]";
mes "Kill 50 of those Mantis and let me know when you're done. I will reward you for your efforts.";
setquest 60179;
close;
case 2:
mes "[Mantis Researcher]";
mes "If you change your mind, please come back.";
close;
}
case 2:
mes "[Mantis Researcher]";
mes "If you change your mind, please come back.";
close;
}
}
mes "[Mantis Researcher]";
mes "Oh boy, Oh boy!";
next;
mes "[Mantis Researcher]";
mes "Sorry I can't talk right now I am in a world of pain here, these darn Mantis are going to kill me.";
close;
}

View File

@ -1,101 +1,101 @@
//===== rAthena Script =======================================
//= iRO Repeatable EXP Quests.
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Custom Version.
//= Repeatable EXP Quest : Kill 50 Zhu Po Long.
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
lou_dun02,161,264,4 script Dragon Hunter 732,{
if (checkquest(60182) != -1) {
if (checkquest(60182,HUNTING) != 2 ) {
mes "[Dragon Hunter]";
mes "Have you finished hunting the 50 Zhu Po Long?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Dragon Hunter]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Dragon Hunter]";
mes "Remember, I need help hunting Zhu Po Long so go and hunt 50 of them.";
close;
case 3:
mes "[Dragon Hunter]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Dragon Hunter]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60182;
close;
case 2:
mes "[Dragon Hunter]";
mes "Please kill 50 Zhu Po Long in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Dragon Hunter]";
mes "Amazing, you did that with speed.";
getexp 151300,60520;
erasequest 60182;
close;
}
if ((BaseLevel > 49) && (BaseLevel < 91)) {
mes "[Dragon Hunter]";
mes "Oh great!";
mes "You are here to help me right?";
mes "If not, i don't know what to do with the Monsters in this Place!";
next;
switch(select("Sure:No")) {
case 1:
mes "[Dragon Hunter]";
mes "Great! I knew the moment i saw you that i can count on you!";
mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
mes "There are to many Zhu Po Long around, which makes it impossible for the lower level players to gain good experience here.";
next;
mes "[Dragon Hunter]";
mes "So, would you still like to help me?";
next;
switch(select("Sure:Cancel")) {
case 1:
if(BaseLevel > 90){
mes "[Dragon Hunter]";
mes "Thank you for your great help with the Zhu Po Long!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Dragon Hunter]";
mes "Kill 50 of those Zhu Po Long and let me know when you're done. I will reward you for your efforts.";
setquest 60182;
close;
case 2:
mes "[Dragon Hunter]";
mes "If you change your mind, please come back.";
close;
}
case 2:
mes "[Dragon Hunter]";
mes "If you change your mind, please come back.";
close;
}
}
mes "[Dragon Hunter]";
mes "Oh boy, Oh boy!";
next;
mes "[Dragon Hunter]";
mes "Sorry I can't talk right now I am in a world of pain here, these darn Zhu Po Long are going to kill me.";
close;
}
//===== rAthena Script =======================================
//= iRO Repeatable EXP Quests.
//===== By: ==================================================
//= Masao
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Custom Version.
//= Repeatable EXP Quest : Kill 50 Zhu Po Long.
//===== Additional Comments: =================================
//= 1.0 First version.
//============================================================
lou_dun02,161,264,4 script Dragon Hunter 732,{
if (checkquest(60182) != -1) {
if (checkquest(60182,HUNTING) != 2 ) {
mes "[Dragon Hunter]";
mes "Have you finished hunting the 50 Zhu Po Long?";
next;
switch(select("Yes:No:I want to quit")) {
case 1:
mes "[Dragon Hunter]";
mes "Hmm, I don't think you've hunted 50 yet.";
close;
case 2:
mes "[Dragon Hunter]";
mes "Remember, I need help hunting Zhu Po Long so go and hunt 50 of them.";
close;
case 3:
mes "[Dragon Hunter]";
mes "Are you sure that you want to stop hunting?";
mes "Any progress that you've made will be erased";
next;
switch(select("Yes:No")) {
case 1:
mes "[Dragon Hunter]";
mes "Ok then, well come back here if you change your mind.";
erasequest 60182;
close;
case 2:
mes "[Dragon Hunter]";
mes "Please kill 50 Zhu Po Long in order to make this a Place were people can go to and gather Experience.";
close;
}
}
}
mes "[Dragon Hunter]";
mes "Amazing, you did that with speed.";
getexp 151300,60520;
erasequest 60182;
close;
}
if ((BaseLevel > 49) && (BaseLevel < 91)) {
mes "[Dragon Hunter]";
mes "Oh great!";
mes "You are here to help me right?";
mes "If not, i don't know what to do with the Monsters in this Place!";
next;
switch(select("Sure:No")) {
case 1:
mes "[Dragon Hunter]";
mes "Great! I knew the moment i saw you that i can count on you!";
mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
mes "There are to many Zhu Po Long around, which makes it impossible for the lower level players to gain good experience here.";
next;
mes "[Dragon Hunter]";
mes "So, would you still like to help me?";
next;
switch(select("Sure:Cancel")) {
case 1:
if(BaseLevel > 90){
mes "[Dragon Hunter]";
mes "Thank you for your great help with the Zhu Po Long!";
mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
close;
}
mes "[Dragon Hunter]";
mes "Kill 50 of those Zhu Po Long and let me know when you're done. I will reward you for your efforts.";
setquest 60182;
close;
case 2:
mes "[Dragon Hunter]";
mes "If you change your mind, please come back.";
close;
}
case 2:
mes "[Dragon Hunter]";
mes "If you change your mind, please come back.";
close;
}
}
mes "[Dragon Hunter]";
mes "Oh boy, Oh boy!";
next;
mes "[Dragon Hunter]";
mes "Sorry I can't talk right now I am in a world of pain here, these darn Zhu Po Long are going to kill me.";
close;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,59 +1,59 @@
//===== rAthena Script =======================================
//= Pile Bunker Quest
//===== By: ==================================================
//= JayPee Mateo
//===== Current Version: =====================================
//= 2.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= 1.0 A Pile Bunker quest based on iRO WiKi. [JayPee Mateo]
//= iRO WiKi Link: http://irowiki.org/wiki/Pile_Bunker_quest
//= 2.0 Rewrited the Script a little so it looks a bit better. [Masao]
//============================================================
yuno,179,174,5 script Gomer 813,{
if(Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic){
mes "[Gomer]";
mes "Hello "+strcharinfo(0)+",";
mes "My name is Gomer and i can create Pile Bunkers for you if you bring me the required Items i need.";
next;
switch(select("Required items for Pile Bunker?:I brought the materials!")){
case 1:
mes "[Gomer]";
mes "These are the required Items:";
mes "1x Brocca";
mes "200x Steel";
mes "30x Flexible Tube";
close;
case 2:
if(countitem(1415) < 1 || countitem(999) < 200 || countitem(7325) < 30){
mes "[Gomer]";
mes "You dont have all the required items. Just talk to me when you have all the requirements.";
close;
}
mes "[Gomer]";
mes "Great you brought me all the materials i needed!";
next;
delitem 1415,1; // Brocca
delitem 999,50; // Steel
delitem 7325,30; // Flexible Tube
getitem 1549,1; // Pile Bunker
getitem 1360,1; // Two-Handed Axe
mes "[Gomer]";
mes "So please, take this Pile Bunker and this Two-Handed Axe i made for you.";
mes "If you need an new Pile Bunker just come and visit me again!";
close;
}
}
if(BaseJob == Merchant){
mes "[Gomer]";
mes "I'm sorry young one, but you do not seem ready yet to use the Pile Bunker.";
mes "Come back when you've grown in strength!";
close;
}
mes "[Gomer]";
mes "Isn't it a beautiful Day today?";
close;
}
//===== rAthena Script =======================================
//= Pile Bunker Quest
//===== By: ==================================================
//= JayPee Mateo
//===== Current Version: =====================================
//= 2.0
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= 1.0 A Pile Bunker quest based on iRO WiKi. [JayPee Mateo]
//= iRO WiKi Link: http://irowiki.org/wiki/Pile_Bunker_quest
//= 2.0 Rewrited the Script a little so it looks a bit better. [Masao]
//============================================================
yuno,179,174,5 script Gomer 813,{
if(Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic){
mes "[Gomer]";
mes "Hello "+strcharinfo(0)+",";
mes "My name is Gomer and i can create Pile Bunkers for you if you bring me the required Items i need.";
next;
switch(select("Required items for Pile Bunker?:I brought the materials!")){
case 1:
mes "[Gomer]";
mes "These are the required Items:";
mes "1x Brocca";
mes "200x Steel";
mes "30x Flexible Tube";
close;
case 2:
if(countitem(1415) < 1 || countitem(999) < 200 || countitem(7325) < 30){
mes "[Gomer]";
mes "You dont have all the required items. Just talk to me when you have all the requirements.";
close;
}
mes "[Gomer]";
mes "Great you brought me all the materials i needed!";
next;
delitem 1415,1; // Brocca
delitem 999,50; // Steel
delitem 7325,30; // Flexible Tube
getitem 1549,1; // Pile Bunker
getitem 1360,1; // Two-Handed Axe
mes "[Gomer]";
mes "So please, take this Pile Bunker and this Two-Handed Axe i made for you.";
mes "If you need an new Pile Bunker just come and visit me again!";
close;
}
}
if(BaseJob == Merchant){
mes "[Gomer]";
mes "I'm sorry young one, but you do not seem ready yet to use the Pile Bunker.";
mes "Come back when you've grown in strength!";
close;
}
mes "[Gomer]";
mes "Isn't it a beautiful Day today?";
close;
}

View File

@ -65,7 +65,7 @@ struct Login_Config {
int start_limited_time; // new account expiration time (-1: unlimited)
bool use_md5_passwds; // work with password hashes instead of plaintext passwords?
int group_id_to_connect; // required group id to connect
int min_group_id_to_connect; // minimum group id to connect
int min_group_id_to_connect; // minimum group id to connect
bool check_client_version; // check the clientversion set in the clientinfo ?
uint32 client_version_to_connect; // the client version needed to connect (if checking is enabled)