Good afternoon my friends!
Guys I'm having a problem with event Koe..
The following happens when the event starts, I manage to break the emperium normally, but the other guild can't beat the emperium.
could someone tell me how to fix this problem?
Quote
/*==============================================================
* King of Emperium Hill Original idea by : AnnieRuru
* King of Emperium Hill Version 5.0 by : Yumi Haruka(https://rathena.org/board/profile/47351-haruka-mayumi/)
* Version 1.0 : Added. King Of Emperium Mapflag
* Version 2.0 : Revamped to rotational KoE
* Version 2.1 : Added Rewards
* Version 2.2 : Fixed Bug where adding session not recognized
* Version 2.3 : Added Participation Points
* Version 3.0 : Added Defender Time for holding the emperium.
* Version 3.1 : Revamped Rewards
* Version 3.2 : Fixed Manage Session adding .gm_allow.
* Version 4.0 : Added Enable Barricade
* Version 4.1 : Added Enable Guardian
* Version 4.2 : Added Special Effect to NPC when King of Emperium is Active.
* Version 4.3 : Fixed KOE Points saving when logged out.
* Version 4.4 : Revamped rewards due to rAthena guild members sql.
* Version 4.5 : Added Losers Participation reward
* Version 5.0 : Simplified most of the code
* - Added Gepard Unique ID Restriction on rewards
* - Made guardians more Flexible to add
* - Enable/Disable Position Warping
*==============================================================*/
prontera,149,172,6 script King Of Emperium 835,{
function Add_Zero; function Add_Zero2;
L_Menu1:
mes "[ ^FF5500King of Emperium^000000 ]";
for(.@i=0;.@i<getarraysize(.Maps$);.@i++){
if(getd("$@koe_"+.Maps$[.@i]+"_start")){
.@active = 1;
.@Maps$[.@x] = .Maps$[.@i];
.@MapsName$[.@x++] = .MapsName$[.@i];
}
}
if(.@active)
mes "The King of Emperium is ^0055FFactive^000000.";
else{
deletearray .@time[0],getarraysize(.@time);
for(.@i=0; .@i<.Size; .@i+=3)
if ((gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) <= $KOE_CONTROL[.@i+1]-1 ) || gettime(DT_DAYOFWEEK) < $KOE_CONTROL[.@i]-1) {
setarray .@time[0],$KOE_CONTROL[.@i]-1,$KOE_CONTROL[.@i+1]-1;
break;
}
if (!getarraysize(.@time))
setarray .@time[0],$KOE_CONTROL[0]-1,$KOE_CONTROL[1]-1;
mes "The King of Emperium is ^777777inactive^000000.";
if (.Size) {
mes " ";
mes "The next session will begin";
mes "on ^0055FF"+.Days$[.@time[0]]+"^000000 at "+Add_Zero(.@time[1])+"^000000.";
}
}
next;
switch(select((.@active ? "^0055FF~ Enter King of Emperium^000000":"")+":~ ^008000Check Schedules^000000:"+( getgmlevel()>= .gm_allow ? "~ Manage Sessions":"")+":~ Information:~ Goodbye")){
case 1:
mes "[ King of Emperium ]";
mes "Which arena are you going to join?.";
next;
.@menu$ = "";
for(.@i=0;.@i<.Size;.@i+=3)
if(gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) == $KOE_CONTROL[.@i+1]-1){
.@menu$ = .@menu$+"~ "+.MapsName$[$KOE_CONTROL[.@i+2]-1]+":";
.@sel[.@j++] = $KOE_CONTROL[.@i+2]-1;
}
.@warp = select(.@menu$)-1;
if(getd("$koe_"+.Maps$[.@sel[.@warp]])==getcharid(2)) //owner warps
explode(.@Warps$,.Warp2$[.@sel[.@warp]],",");
else
explode(.@Warps$,.Warp1$[.@sel[.@warp]],",");
.@warppoints = getarraysize(.@Warps$);
.@menu2$ ="";
for(.@i=0;.@i<.@warppoints;.@i+=3)
.@menu2$ = .@menu2$ + .@Warps$[.@i]+":";
.@loc = select(.@menu2$)-1;
next;
warp .Maps$[.@sel[.@warp]],atoi(.@Warps$[(.@loc*3)+1]),atoi(.@Warps$[(.@loc*3)+2]);
end;
case 2:
callsub OnSchedule;
goto L_Menu1;
case 3:
L_Menu2:
switch(select(" ~ Add a session...: ~ Delete a session...: ~ ^777777Go back^000000")){
case 1:
mes "[New Session]";
mes "Select a day.";
next;
set .@Day, select(" ~ "+implode(.Days$,": ~ "))-1;
mes "[New Session]";
mes "Select a start time for ^0055FF"+.Days$[.@Day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,0; .@i<24; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
set .@Start, select(.@menu$)-1;
mes "[New Session]";
mes "Select a map for ^0055FF"+.Days$[.@Day]+" ("+Add_Zero(.@Start)+")^000000.";
next;
set .@map, select(" ~ "+implode(.MapsName$,": ~ "))-1;
mes "[New Session]";
mes "You are about to add a\nKing of Emperium Session.";
mes "Schedule : \n~ ^0055FF"+.Days$[.@Day]+"^000000\n~ ^0055FF"+Add_Zero(.@Start)+"^000000\n~ ^0055FF"+.MapsName$[.@map]+"^000000";
next;
if(select(" ~ Add Session...: ~ Cancel")==2)
goto L_Menu1;
mes "[New Session]";
mes "New session has been added!";
if(!.@Day && !.@Start && !.@map ) goto L_Menu1;
set $KOE_CONTROL[.Size],.@Day+1;
set $KOE_CONTROL[.Size+1],.@Start+1;
set $KOE_CONTROL[.Size+2],.@map+1;
set .Size,getarraysize($KOE_CONTROL);
next;
break;
case 2:
mes "[Remove Session]";
if (!.Size) {
mes "There are no sessions configured.";
next;
break;
}
mes "Select a session to remove.";
next;
set .@menu$,"";
for(set .@i,0; .@i<.Size; set .@i,.@i+3)
set .@menu$, .@menu$+" ~ [^0055FF"+.MapsName$[$KOE_CONTROL[.@i+2]-1]+"^000000] "+.Days$[$KOE_CONTROL[.@i]-1]+" "+Add_Zero($KOE_CONTROL[.@i+1]-1,1)+"-"+Add_Zero2($KOE_CONTROL[.@i+1]-1,1)+":";
set .@i, select(.@menu$)-1;
mes "[Remove Session]";
mes "Delete ^0055FF"+.MapsName$[$KOE_CONTROL[.@i+2]-1]+" "+.Days$[$KOE_CONTROL[.@i*3]-1]+"^000000 session?";
mes "This action cannot be undone.";
next;
set .@j, select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000");
mes "[Remove Session]";
if (.@j == 2)
mes "cancelled.";
else {
deletearray $KOE_CONTROL[.@i*3],3;
set .Size, getarraysize($KOE_CONTROL);
mes "Session deleted.";
}
next;
break;
case 3:
break;
}
goto L_Menu1;
case 4:
mes "[ King of Emperium ]";
mes "You need to be inside 10 minutes at least to receive rewards";
mes "^00CC00Participation^000000 - 60 Badges";
mes "^CC0000Longest Defender^000000 - 150 Badges";
mes "^0000CCLast Holder^000000 - 150 Badges";
mes "^12AD2BBoth^000000 - 400 Badges.";
next;
goto L_Menu1;
case 5:
mes "[ King of Emperium ]";
mes "Good bye~";
mes "See you again next time~";
end;
}
end;
OnEnd:
OnMinute45: //END OF KOE
for(.@i=0;.@i<.Size;.@i+=3)
if(gettime(DT_DAYOFWEEK) == $KOE_CONTROL[.@i]-1 && gettime(DT_HOUR) == $KOE_CONTROL[.@i+1]-1)
donpcevent "KoE#"+.Maps$[$KOE_CONTROL[.@i+2]-1]+"::OnEndKoE";
end;
OnSchedule:
freeloop(1);
for(.@j=0;.@j<7;.@j++){
mes "[ King of Emperium ]";
mes "King of Emperium Schedules";
mes "^0055FF"+.Days$[.@j]+"^000000 :";
for(.@i=0;.@i<.Size;.@i+=3)
if($KOE_CONTROL[.@i]-1==.@j)
mes "~ ^FF5500"+.MapsName$[$KOE_CONTROL[.@i+2]-1]+"^000000 [ "+Add_Zero($KOE_CONTROL[.@i+1]-1)+" - "+Add_Zero2($KOE_CONTROL[.@i+1]-1)+" ]";
next;
}
freeloop(0);
return;
OnInit:
.gm_allow = 99; //Manage Sessions
////////////////////////////////////////////////////
//CONSTANTS! DO NOT TOUCH WITHOUT KNOWING ANYTHING//
////////////////////////////////////////////////////
set .Size,getarraysize($KOE_CONTROL);
setarray .MapsName$[0],
"Geffen Arena",
"Valkyrie Arena",
"Payon Arena",
"Freyja Arena",
"Rachel Arena";
OnBarDead:
setd ".Barricade_"+strnpcinfo(2),getd(".Barricade_"+strnpcinfo(2))-1;
if(getd(".Barricade_"+strnpcinfo(2)) <= 0){
mapannounce strnpcinfo(2),"The Barricades have fallen, The Emperium is now Vulnerable!",bc_map;
setcell strnpcinfo(2),getd(".walkable_"+strnpcinfo(2)+"[0]"),getd(".walkable_"+strnpcinfo(2)+"[1]"),getd(".walkable_"+strnpcinfo(2)+"[2]"),getd(".walkable_"+strnpcinfo(2)+"[3]"),cell_walkable,1;
setunitdata getd(".EmpID_"+strnpcinfo(2)),UMOB_DMGIMMUNE,0;
}
end;
//============================= Barricade Engine ===============================//
//=============================== Reward Engine ===============================//
OnRewardLosers:
freeloop(1);
.@size = getarraysize(getd(".koe_part_n_"+strnpcinfo(2)));
copyarray .@aid[0],getd(".koe_part_n_"+strnpcinfo(2)+"[0]"),.@size;
copyarray .@time[0],getd(".koe_part_t_"+strnpcinfo(2)+"[0]"),.@size;
for(set .@k,0; .@k<getarraysize(.partprize); set .@k,.@k+2){
.@item[.@x] = .partprize[.@k];
.@amt[.@x] = .partprize[.@k+1];
.@x++;
}
for(.@j=0;.@j<.@size;.@j+=1) {
if (!(.Options&4)) {
if(.Options&8){
set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
setd ".@ip_"+.@i+"_"+.@ip$,1;
}
if(.Options&16){
set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
setd ".@mac_"+.@i+"_"+.@mac$,1;
}
}
if(.@time[.@j] < .timepart) continue;
query_sql("SELECT `char_id` FROM `char` WHERE `account_id` = "+.@aid[.@j],.@cid);
mail .@cid,"No-reply","[King of Emperium]","You have been rewarded for participating for "+.timepart+" minutes at "+callsub(OnKoeMap)+" King of Emperium.",0,.@item,.@amt;
}
freeloop(0);
return;
OnRewardHolder:
freeloop(1);
.@gid = getarg(0);
getguildmember .@gid,1,.@cid;
getguildmember .@gid,2,.@aid;
.@size = $@guildmembercount;
for(set .@k,0; .@k<getarraysize(.holderprize); set .@k,.@k+2){
.@item[.@x] = .holderprize[.@k];
.@amt[.@x] = .holderprize[.@k+1];
.@x++;
}
if(.Options&4) .@size = 1;
for(.@j=0;.@j<.@size;.@j+=1) {
if (!(.Options&4) && isloggedin(.@aid[.@j],.@cid[.@j])) {
if(.Options&8){
set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
setd ".@ip_"+.@i+"_"+.@ip$,1;
}
if(.Options&16){
set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
setd ".@mac_"+.@i+"_"+.@mac$,1;
}
.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),.@aid[.@j]);
if(.@arr < 0 || getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]") < .timepart) continue;
}
mail .@cid[.@j],"No-reply","[King of Emperium]","You have been rewarded for being part of the guild at "+callsub(OnKoeMap)+" King of Emperium.",0,.@item,.@amt;
}
freeloop(0);
return;
OnRewardDefender:
freeloop(1);
.@gid = getarg(0);
getguildmember .@gid,1,.@cid;
getguildmember .@gid,2,.@aid;
.@size = $@guildmembercount;
for(set .@k,0; .@k<getarraysize(.defenderprize); set .@k,.@k+2){
.@item[.@x] = .defenderprize[.@k];
.@amt[.@x] = .defenderprize[.@k+1];
.@x++;
}
if(.Options&4) .@size = 1;
for(.@j=0;.@j<.@size;.@j+=1) {
if (!(.Options&4) && isloggedin(.@aid[.@j],.@cid[.@j])) {
if(.Options&8){
set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
setd ".@ip_"+.@i+"_"+.@ip$,1;
}
if(.Options&16){
set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
setd ".@mac_"+.@i+"_"+.@mac$,1;
}
.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),.@aid[.@j]);
if(.@arr < 0 || getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]") < .timepart) continue;
}
mail .@cid[.@j],"No-reply","[King of Emperium]","You have been rewarded for gracefully defending your Emperium at "+callsub(OnKoeMap)+" King of Emperium.",0,.@item,.@amt;
}
freeloop(0);
return;
OnRewardBoth:
freeloop(1);
.@gid = getarg(0);
getguildmember .@gid,1,.@cid;
getguildmember .@gid,2,.@aid;
.@size = $@guildmembercount;
for(set .@k,0; .@k<getarraysize(.bothprize); set .@k,.@k+2){
.@item[.@x] = .bothprize[.@k];
.@amt[.@x] = .bothprize[.@k+1];
.@x++;
}
if(.Options&4) .@size = 1;
for(.@j=0;.@j<.@size;.@j+=1) {
if (!(.Options&4) && isloggedin(.@aid[.@j],.@cid[.@j])) {
if(.Options&8){
set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
setd ".@ip_"+.@i+"_"+.@ip$,1;
}
if(.Options&16){
set .@mac$, callsub(OnGetUniqueID,.@aid[.@j]);
if(getd(".@mac_"+.@i+"_"+.@mac$)) continue;
setd ".@mac_"+.@i+"_"+.@mac$,1;
}
.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),.@aid[.@j]);
if(.@arr < 0 || getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]") < .timepart) continue;
}
mail .@cid[.@j],"No-reply","[King of Emperium]","You have been rewarded for being a part of the best defender guild and King Of Emperium Holder at "+callsub(OnKoeMap)+".",0,.@item,.@amt;
}
freeloop(0);
return;
OnGetUniqueID:
query_sql("SELECT `last_unique_id` FROM `login` WHERE `account_id` = '"+getarg(0)+"'",.@mac$);
return .@mac$;
OnParticipate:
set @lastmap$,strcharinfo(3);
if(@lastmap$==strnpcinfo(2) && getd("$@koe_"+strnpcinfo(2)+"_start")){
addtimer 60000,strnpcinfo(0)+"::OnParticipate";
set @KOEPOINTS,@KOEPOINTS+1;
.@arr = inarray(getd(".koe_part_n_"+strnpcinfo(2)),getcharid(3));
if(.@arr >= 0)
setd ".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]",getd(".koe_part_t_"+strnpcinfo(2)+"["+.@arr+"]")+1;
else {
setd ".koe_part_n_"+strnpcinfo(2)+"["+getarraysize(getd(".koe_part_n_"+strnpcinfo(2)))+"]",getcharid(3);
setd ".koe_part_t_"+strnpcinfo(2)+"["+getarraysize(getd(".koe_part_n_"+strnpcinfo(2)))+"]",getd(".koe_part_n_"+strnpcinfo(2)+"["+getd(".koe_part_n_"+strnpcinfo(2))+"]")+1;
}
} else
set @lastmap$,"";
end;
OnInit:
// -----------------------------------------------------------
// Reward options.
// -----------------------------------------------------------
// [1] Enable rewards.
// [4] Only reward Guild Masters.
// - If not set, all guild members are rewarded.
// - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards.
// [8] Duplicate IP check. /Gepard
// - Members in a guild with the same IP address are not rewarded.
// - If Guild Masters is enabled (option 4), this feature is not used.
// [16] Duplicate Gepard ID check.
// - Members in a guild with the same Mac address are not rewarded.
// - If Guild Masters is enabled (option 4), this feature is not used.
// -----------------------------------------------------------
// Combine values as needed (e.g. 1|8 = 1+8 = 9).
set .Options,9;
// Set Prizes Here
set .timepart,1; //Time needed to receive participation reward;
set .Participation,1; //Enable Participation points?
setarray .partprize[0],7828,15; //Participants prize ( non winner - LOSERS only );
setarray .defenderprize[0],7828,30; //Longest Defender Prize
setarray .holderprize[0],7828,35; //Emperium Holder at last Minute
setarray .bothprize[0],7828,150; //If Defender and Holder is same guild, This will be the prize instead of defenderprize and holderprize
- script KoEPointsLogout -1,{
OnPCLogoutEvent:
set #KOEPOINTS,(#KOEPOINTS+@KOEPOINTS);
end;
}
prontera,176,175,3 script KOE Shop 4_ep18_merchant,{
mes "[ King of Emperium ]";
mes "You can spend your King of Emperium Points here";
mes "^FFFFFF_^000000";
set #KOEPOINTS,(#KOEPOINTS+@KOEPOINTS);
set @KOEPOINTS,0;
mes "You current points: ^0000FF"+#KOEPOINTS+"^000000";
callshop "KOEPOINTS",1;
OnInit:
delwaitingroom;
waitingroom "KoE Shop",0;
}
//ADD YOUR ITEMS HERE
- pointshop KOEPOINTS -0,#KOEPOINTS,7828:1
//===================== Flag Configuration =================//
- script ::koe_flag GUILD_FLAG,{
mes "[King of Emperium Hill]";
if (!getd("$koe_"+strnpcinfo(2)))
mes "There is no current King of Emperium in ^0055FF"+strnpcinfo(1)+"^000000.";
else
mes "The Current King of Emperium Hill at ^0055FF"+strnpcinfo(1)+"^000000 is the [ ^0055FF"+ getguildname(getd("$koe_"+strnpcinfo(2))) +"^000000 ] guild.";
close;
OnAgitInit: //Uncomment this line to make the emblem stay after @reloadscript
OnRevKoE:
if(getd("$koe_"+strnpcinfo(2)))
flagemblem getd("$koe_"+strnpcinfo(2));
end;
}
prontera,147,151,6 duplicate(koe_flag) Geffen Arena#guild_vs1 GUILD_FLAG
prontera,147,147,6 duplicate(koe_flag) Payon Arena#payg_vs GUILD_FLAG
prontera,147,143,6 duplicate(koe_flag) Rachel Arena#ra_koe GUILD_FLAG
prontera,145,142,4 duplicate(koe_flag) Valkyrie Arena#valkyrie_vs GUILD_FLAG
prontera,142,142,4 duplicate(koe_flag) Freyja Arena#freya_vs GUILD_FLAG
//maintown,57,157,4 duplicate(koe_flag) Prontera Arena#prt_koe GUILD_FLAG
//maintown,54,157,4 duplicate(koe_flag) Yggdrasil Arena#temple GUILD_FLAG
//===================== Flag Configuration =================//
Question
Yukaiii
Good afternoon my friends!
Guys I'm having a problem with event Koe..
The following happens when the event starts, I manage to break the emperium normally, but the other guild can't beat the emperium.
could someone tell me how to fix this problem?
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.