Jump to content
  • 0

[ solved ] Event KOE


Yukaiii

Question


  • Group:  Members
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  110
  • Reputation:   9
  • Joined:  11/20/13
  • Last Seen:  

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;

OnStart:
OnMinute00: //START 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]+"::OnStartKoE";
    while(1){
        $@koeactive = 0;
        for(.@i=0;.@i<getarraysize(.Maps$);.@i++)
            if(getd("$@koe_"+.Maps$[.@i]+"_start")){
                $@koeactive = 1;
                break;
            }
        if(!$@koeactive) break;
        //EF_FLOWERCAST
        specialeffect EF_HOMUNCASTING;
        sleep 500;
    }
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";

    setarray .Maps$[0],
                    "guild_vs1",
                    "valkyrie_vs",
                    "payg_vs",
                    "freya_vs",
                    "ra_koe";
                        
    setarray .Warp1$[0],    //Non owner warps
                    "Top,49,91,Left,7,50,Bottom,49,7,Right,92,49",                                // Geffen Arena
                    "Left,6,51,Bottom,48,9,Right,92,51",                                        // Valkyrie Arena
                    "Top-Left,18,43,Bottom-Left,18,18,Bottom-Right,43,18,Top-Right,43,43",        // Payon Arena
                    "Top-Left,10,68,Bottom-Left,10,30,Bottom-Right,89,30,Top-Right,89,68",        // Freyja Arena
                    "Top-Left,15,85,Bottom-Left,15,15,Bottom-Right,85,15,Top-Right,85,85";        // Rachel Arena
                    
    setarray .Warp2$[0],    //Owner Warps
                    "Top-Left,31,68,Bottom-Left,31,31,Bottom-Right,68,31,Top-Right,68,68",    // Geffen Arena
                    "Top,48,83,Bottom-Left,36,36,Bottom-Right,61,36",                        // Valkyrie Arena
                    "Bottom-Left,23,23,Top-Right,38,38",                                    // Payon Arena
                    "Top,50,73,Left,26,50,Bottom,49,26,Right,73,49",                        // Freyja Arena
                    "Top,50,75,Left,25,50,Bottom,50,25,Right,75,50";                        // Rachel Arena
                        
    setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
    ////////////////////////////////////////////////////
    //CONSTANTS! DO NOT TOUCH WITHOUT KNOWING ANYTHING//
    ////////////////////////////////////////////////////
    sleep 2000;
    if(gettime(DT_MINUTE)<50)
        donpcevent strnpcinfo(0)+"::OnStart";
    else
        donpcevent strnpcinfo(0)+"::OnEnd";
end;
function Add_Zero {
    return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
}

function Add_Zero2 {
    return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"50";
}

//$KOE_CONTROL[0], {Day}{TIME START},{MAP}
}

//==========================KoE Engine===================//
-    script    KoE    -1,{

OnStartKoE:
setd "$@koe_"+strnpcinfo(2)+"_start", 1;
//============ Initilialize ============//
.@timesize = getarraysize(getd(".koe_part_n_"+strnpcinfo(2)+"["+getarraysize(getd(".koe_part_n_"+strnpcinfo(2)))+"]"));
deletearray getd(".koe_part_n_"+strnpcinfo(2)+"[0]"),.@timesize;
deletearray getd(".koe_part_t_"+strnpcinfo(2)+"[0]"),.@timesize;
setd "$koe_"+strnpcinfo(2),0;
SetCastleData strnpcinfo(2),CD_GUILD_ID, 0;
.@size = getarraysize(getd(".koe_"+strnpcinfo(2)+"_def"));
deletearray getd(".koe_"+strnpcinfo(2)+"_def[0]"),.@size;
deletearray getd(".koe_"+strnpcinfo(2)+"_time[0]"),.@size;
setd ".koe_"+strnpcinfo(2)+"_defguild",0;
setd ".koe_"+strnpcinfo(2)+"_deftime",0;
//============ Initilialize ============//
announce "The King of Emperium Hill in "+callsub(OnKoeMap)+" has begun! Prove who's the best!..", 0;
donpcevent "::OnRevKoE";
maprespawnguildid strnpcinfo(2), getd("$koe_"+strnpcinfo(2)), 6;
callsub OnSetKoE;
end;

OnWhisperGlobal: 
    if(getgroupid()<99) end;
OnEndKoE:
if(!getd("$@koe_"+strnpcinfo(2)+"_start")) end;
announce "The King of Emperium Hill at "+callsub(OnKoeMap)+" is over!~", 0;
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;
setd "$@koe_"+strnpcinfo(2)+"_start", 0;
// DEFENDER START
callsub OnDefTime;
for(.@i=0;.@i<getarraysize(getd(".koe_"+strnpcinfo(2)+"_def"));.@i++){
    if(getd(".koe_"+strnpcinfo(2)+"_deftime") < getd(".koe_"+strnpcinfo(2)+"_time["+.@i+"]")){
        setd ".koe_"+strnpcinfo(2)+"_defguild",getd(".koe_"+strnpcinfo(2)+"_def["+.@i+"]");
        setd ".koe_"+strnpcinfo(2)+"_deftime",getd(".koe_"+strnpcinfo(2)+"_time["+.@i+"]");
    }
}
// DEFENDER END
if(getd(".koe_"+strnpcinfo(2)+"_defguild")){
    announce "The Guild "+getguildname(getd(".koe_"+strnpcinfo(2)+"_defguild"))+" defended the "+callsub(OnKoeMap)+" Emperium the longest. "+callsub(OnConvertTime,getd(".koe_"+strnpcinfo(2)+"_deftime")), 0;
    // REWARD START
    if((.Options&1)){
        if(getd(".koe_"+strnpcinfo(2)+"_defguild") == getd("$koe_"+strnpcinfo(2)))
            callsub OnRewardBoth,getd("$koe_"+strnpcinfo(2));
        else{
            callsub OnRewardDefender,getd(".koe_"+strnpcinfo(2)+"_defguild");
            callsub OnRewardHolder,getd("$koe_"+strnpcinfo(2));
        }
    }
    // REWARD END
}
callsub OnRewardLosers;
killmonsterall strnpcinfo(2);
sleep 10000;
mapwarp strnpcinfo(2),"prontera",155,180;
end;
 
OnConvertTime:
    .@Time = getarg(0);
    .@Hours = .@Time / 3600000;
    .@Time = .@Time - (.@Hours * 3600000);
    .@Minutes = .@Time / 60000;
    .@Time = .@Time - (.@Minutes * 60000);
    .@Seconds = .@Time / 1000;
    .@Time = .@Time - (.@Seconds * 1000);
    .@timestr$ = (.@Hours ? .@Hours+"h ":"")+(.@Minutes ? .@Minutes+"m ":"")+(.@Seconds ? .@Seconds+"s ":"")+(.@Time ? .@Time+"ms ":"");
return .@timestr$;

OnEmpDead:
if(getd("$koe_"+strnpcinfo(2)))
    callsub OnDefTime;
initnpctimer strnpcinfo(0);
SetCastleData strnpcinfo(2),CD_GUILD_ID, getcharid(2);
setd "$koe_"+strnpcinfo(2), getcharid(2);
announce "The current King of Emperium Hill in "+callsub(OnKoeMap)+" is the [ "+ strcharinfo(2) +" ] guild.", 0;
donpcevent "::OnRevKoE";
maprespawnguildid strnpcinfo(2), getd("$koe_"+strnpcinfo(2)), 6;
sleep 500;
if ( getd("$@koe_"+strnpcinfo(2)+"_start") ){
    mapwarp strnpcinfo(2),strnpcinfo(2),getd(".warpbreak_"+strnpcinfo(2)+"[0]"),getd(".warpbreak_"+strnpcinfo(2)+"[1]"),1,getd("$koe_"+strnpcinfo(2));
    callsub OnSetKoE;
    if(getd("."+strnpcinfo(2)+"_guardian")){
        for(.@i=0;.@i<getarraysize(getd("."+strnpcinfo(2)+"_guardian"));.@i+=3)
            guardian strnpcinfo(2),getd("."+strnpcinfo(2)+"_guardian["+(.@i+1)+"]"),getd("."+strnpcinfo(2)+"_guardian["+(.@i+2)+"]"),"Emperium Guardian",getd("."+strnpcinfo(2)+"_guardian["+.@i+"]");
    }
}
end;

//============================= Defender Engine ===============================//
OnDefTime:
    .@tick = getnpctimer(0),strnpcinfo(0);
    .@a = inarray(getd(".koe_"+strnpcinfo(2)+"_def"),getd("$koe_"+strnpcinfo(2)));
    if(.@a>=0)
        setd ".koe_"+strnpcinfo(2)+"_time["+.@a+"]",getd(".koe_"+strnpcinfo(2)+"_time["+.@a+"]")+.@tick;
    else {
        .@size = getarraysize(getd(".koe_"+strnpcinfo(2)+"_def"));
        setd ".koe_"+strnpcinfo(2)+"_def["+.@size+"]",getd("$koe_"+strnpcinfo(2));
        setd ".koe_"+strnpcinfo(2)+"_time["+.@size+"]",getd(".koe_"+strnpcinfo(2)+"_time["+.@size+"]")+.@tick;
    }
return;
//============================== Defender Engine ==============================//

//============================= Barricade Engine ===============================//
OnSetKoE:
    killmonsterall strnpcinfo(2);
    monster strnpcinfo(2),getd("."+strnpcinfo(2)+"_emp[0]"),getd("."+strnpcinfo(2)+"_emp[1]"),"EMPERIUM",.Emperium_id,1,strnpcinfo(0)+"::OnEmpDead";
    if(.enableBarricade){
        setd ".EmpID_"+strnpcinfo(2),$@mobid[0];
        setunitdata getd(".EmpID_"+strnpcinfo(2)),UMOB_DMGIMMUNE,1;
        setd ".Barricade_"+strnpcinfo(2),0;
        for(.@i=0;.@i<getarraysize(getd(".barx_"+strnpcinfo(2)));.@i++){
            if(getd("$koe_"+strnpcinfo(2)))
                guardian strnpcinfo(2),getd(".barx_"+strnpcinfo(2)+"["+.@i+"]"),getd(".bary_"+strnpcinfo(2)+"["+.@i+"]"),"Barricade",.Barricade_id,strnpcinfo(0)+"::OnBarDead";
            else
                monster    strnpcinfo(2),getd(".barx_"+strnpcinfo(2)+"["+.@i+"]"),getd(".bary_"+strnpcinfo(2)+"["+.@i+"]"),"Barricade",.Barricade_id,1,strnpcinfo(0)+"::OnBarDead",0;            
            setd ".Barricade_"+strnpcinfo(2),getd(".Barricade_"+strnpcinfo(2))+1;
        }
        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,0;
    }
return;

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$;

OnKoeMap:
    for(.@i=0;.@i<getarraysize(.maps$);.@i+=2)
        if(.maps$[.@i]==strnpcinfo(2))
            return .maps$[.@i+1];
return;
//=============================== Reward Engine ===============================//

OnPCLoadMapEvent:
    if(.Participation) //Enable Participation?
    if(@lastmap$!=strnpcinfo(2) && strcharinfo(3)==strnpcinfo(2) && getd("$@koe_"+strnpcinfo(2)+"_start")){
        set @lastmap$,strcharinfo(3);
        message strcharinfo(0),"KoE Points Acquisition activated.";
        addtimer 60000,strnpcinfo(0)+"::OnParticipate";
    }
end;

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
    
    setarray .maps$[0],    // Map ID, Map Name
        "guild_vs1","Geffen Arena",
        "valkyrie_vs","Valhalla Arena",
        "payg_vs","Payon Arena",
        "freya_vs","Freyja Arena",
        "ra_koe","Rachel Arena";
    
    set .Emperium_id,1288;
    set .Barricade_id,1905;
    
    // Emperium Position X,Y-Axis
    setarray .guild_vs1_emp[0],50,50;
    setarray .valkyrie_vs_emp[0],49,53;
    setarray .payg_vs_emp[0],31,31;
    setarray .freya_vs_emp[0],50,50;
    setarray .ra_koe_emp[0],50,50;
    //setarray .prt_koe_emp[0],50,50;
    //setarray .temple_emp[0],101,98;
    
    // Guardian Setup [Monster ID,X-axis,Y-axis]
    setarray .guild_vs1_guardian[0],1285,44,55,        1286,55,44;
    setarray .valkyrie_vs_guardian[0],1285,54,48,        1286,43,48;
    setarray .payg_vs_guardian[0],1285,24,24,        1286,37,37;
    setarray .freya_vs_guardian[0],1285,42,57,        1286,58,41;
    setarray .ra_koe_guardian[0],1285,42,57,        1286,58,41;
    //setarray .prt_koe_guardian[0],1285,42,57,        1286,58,43;
    //setarray .temple_guardian[0],1285,92,106,        1286,108,90;
    
    // Barricade Setup
    set .enableBarricade,1;    // 0 - Disable Barricade | 1 - Break All to hit Emp
    // Geffen Arena
    setarray .warpbreak_guild_vs1[0],42,57;
    setarray .wall_guild_vs1[0],48,51,51,48;
    setarray .barx_guild_vs1[0],47,47,    48,51,    52,52,    51,48;
    setarray .bary_guild_vs1[0],51,48,    47,47,    48,51,    52,52;
    // Valkyrie
    setarray .warpbreak_valkyrie_vs[0],48,64;
    setarray .walkable_valkyrie_vs[0],46,55,51,50;
    setarray .barx_valkyrie_vs[0],45,45,    47,50,    52,52,    50,47;
    setarray .bary_valkyrie_vs[0],54,51,    56,56,    54,51,    49,49;
    // Payon
    setarray .warpbreak_payg_vs[0],38,38;
    setarray .walkable_payg_vs[0],28,33,33,28;
    setarray .barx_payg_vs[0],26,26,28,    35,35,33;
    setarray .bary_payg_vs[0],33,35,35,    28,26,26;
    // Freyja
    setarray .warpbreak_freya_vs[0],58,58;
    setarray .walkable_freya_vs[0],46,53,53,46;
    setarray .barx_freya_vs[0],45,45,    48,48,    51,51,    54,54;
    setarray .bary_freya_vs[0],51,48,    54,45,    54,45,    51,48;
    // Rachel
    setarray .warpbreak_ra_koe[0],58,58;
    setarray .walkable_ra_koe[0],46,53,53,46;
    setarray .barx_ra_koe[0],45,45,    48,48,    51,51,    54,54;
    setarray .bary_ra_koe[0],51,48,    54,45,    54,45,    51,48;
    // Prontera Arena
    setarray .warpbreak_prt_koe[0],61,51;
    setarray .walkable_prt_koe[0],46,53,53,46;
    setarray .barx_prt_koe[0],45,45,    48,48,    51,51,    54,54;
    setarray .bary_prt_koe[0],51,48,    54,45,    54,45,    51,48;
    // Yggdrassil Arena
    setarray .warpbreak_temple[0],107,105;
    setarray .walkable_temple[0],98,100,102,96;
    setarray .barx_temple[0],97,97,    99,101,    103,103,    101,99;
    setarray .bary_temple[0],99,97,    95,95,    97,99,        101,101;
    
    //Mapflags
    for(.@i=0;.@i<getarraysize(.Maps$);.@i+=2){
        setmapflag .Maps$[.@i],mf_gvg;
        setmapflag .Maps$[.@i],mf_nobranch;
        setmapflag .Maps$[.@i],mf_nomemo;
        setmapflag .Maps$[.@i],mf_nopenalty;
        setmapflag .Maps$[.@i],mf_nosave;
        setmapflag .Maps$[.@i],mf_noteleport;
        setmapflag .Maps$[.@i],mf_nowarp;
        setmapflag .Maps$[.@i],mf_nowarpto;
        setmapflag .Maps$[.@i],mf_loadevent;
        setmapflag .Maps$[.@i],mf_kingofemp;
    }
    //Clear Map
    for(.@i=0;.@i<getarraysize(.Maps$);.@i+=2)
        killmonsterall .Maps$[.@i];
end;
}

-    duplicate(KoE)    KoE#guild_vs1    722
-    duplicate(KoE)    KoE#valkyrie_vs    722
-    duplicate(KoE)    KoE#payg_vs    722
-    duplicate(KoE)    KoE#freya_vs    722
-    duplicate(KoE)    KoE#ra_koe    722
//-    duplicate(KoE)    KoE#prt_koe    722
//-    duplicate(KoE)    KoE#temple    722

-    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 =================//

 

Edited by Yukaiii
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  1536
  • Reputation:   237
  • Joined:  08/03/12
  • Last Seen:  

1 hour ago, Yukaiii said:

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?

 

Did you already up guild approval skills ?

image.png.03677feee71ddb9e7bb9023557538089.png

Or do you have some custom modification about attack range ? Since someone post their issue can't attack Emperium and figure out he modified attack range.

  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  110
  • Reputation:   9
  • Joined:  11/20/13
  • Last Seen:  

2 hours ago, Chaos92 said:

Você já aprimorou as habilidades de aprovação de guilda?

imagem.png.03677feee71ddb9e7bb9023557538089.png

Ou você tem alguma modificação personalizada sobre o alcance do ataque? Já que alguém postou seu problema, não pode atacar o Emperium e descobrir que ele modificou o alcance do ataque.

the guild is at the maximum level friend. LOL

in case the opposing guild cannot beat the emp.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  1536
  • Reputation:   237
  • Joined:  08/03/12
  • Last Seen:  

7 hours ago, Yukaiii said:

the guild is at the maximum level friend. LOL

in case the opposing guild cannot beat the emp.

From your statement 'the guild is at the maximum level', that doesnt mean that the guild already up skill guild approval.

Or else list all of your modification or setting for KoE then, the information might helps.

  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  110
  • Reputation:   9
  • Joined:  11/20/13
  • Last Seen:  

I installed the mod from source.. problem solved.

my stupidity here. thanks @Chaos92.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...