Jump to content

Ukiram

Members
  • Posts

    291
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by Ukiram

  1. 55 minutes ago, BeWan said:

    apply this in skill.c

     

    
    ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
    skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
    skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ) {

    @idLaZ @Ryo Osaki

     

    and remove this part

     

    
    case RG_STRIPHELM:
                            status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
                            sc_start( NULL, bl, SC_STRIPHELM, 100, skill_lv, skill_get_time(skill_id, skill_lv) );
                            break;


     

    Can you give me the full patch if you don't mind?

  2. On 4/22/2019 at 10:46 PM, idLaZ said:

    Hi All, anyone can help me if there is a problem in this code as I can't understand what the code is saying.

    
    int d = 0;
    
    // By pass FCP when using single strip skills by 15%(requires Glistening Coat).
    if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75
    &&
    ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
    skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
    skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
    skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
    int item_id = 7139; // Glistening Coat
    int ii;
    ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id );
    if ( ii < MAX_INVENTORY ) {
    pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
    switch ( skill_id ) { 
    case RG_STRIPWEAPON:
    status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
    sc_start(src,bl,SC_STRIPWEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv));
    break;
    case RG_STRIPSHIELD:
    status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
    sc_start(src,bl,SC_STRIPSHIELD,100,skill_lv,skill_get_time(skill_id,skill_lv));
    break;
    case RG_STRIPARMOR:
    status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
    sc_start(src,bl,SC_STRIPARMOR,100,skill_lv,skill_get_time(skill_id,skill_lv));
    case RG_STRIPHELM:
    status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
    sc_start(src,bl,SC_STRIPHELM,100,skill_lv,skill_get_time(skill_id,skill_lv));
    break;
    }
    clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
    break;
    }
    }

     

    If you applied this source mod in the latest rA version, does the Stalker (with Soul Link and Glistening Coat) will be able to cast a Strip Helm if he uses a Bow and attack an enemy?

    Thank you.

     

    Is this still working?

  3. Hi, I would like to request a support from you guys. 

    I want quest npc that allows you to equipped an item first before take a quest and after you equipped an item and successful.

    The NPC will gives you a Item Choices what items you want to quest.

     

    Choices

    Weapon 1

    Weapon 2

    Weapon 3

    Weapon 4

    Weapon 5

    After you choose a choices he will gives you an requirements per items then he will allows you to bring the requirements in exchange of the weapon. (announce if possible)

     

    Here's my script, but need to edit.

     

    PS: I don't know if i posted on the right forum section. But if i post it in wrong section kindly please moved me to the right section. Thank you! ?

     

    Quote
    
    aldebaran,150,147,6 script Toji 766,{
    if (!isequipped(5009, 2406)) { mes "Please use Safety Helmet[0] & Boots[1] Before Talk."; close; }
    
    set .@n$,"^0000FF[Toji]^000000";
    mes .@n$;
    mes "You have 200 Bacillus and 150 Mould Powder?";
    menu "Yes",-,"It's Hard",end2;
    if (countitem(7119) < 200 || countitem(7001)  < 150) goto L_NOTENOUGH;
    next;
    delitem 7119,200;
    delitem 7001,150;
    next;
    mes .@n$;
    mes "Oh my God,you got it all.";
    mes "thanks for helping older guy.";
    mes "here is your reward.";
    next;
    getitem 5131,1;
    mes .@n$;
    mes "Take it...it's such a nice";
    mes "item...";
    close;
    end2:
    next;
    mes .@n$;
    mes "Too bad...You are too lazy";
    mes "to do this job.";
    close;
    L_NOTENOUGH:
    next;
    mes .@n$;
    mes "You still miss some items";
    close;
    }

     

  4. Hi,

    I would like to add waitingroom thats have WoE Status like this. "WoE Status: Active!" if the War of Emperium starts. if War of Emperium ends "WoE Status: Disabled!"

    Thanks to those who wants to help me with this. Very much appreciated! ❤️ Thank you in advance.

    //===== rAthena Script =======================================
    //= Euphy's WOE Controller
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.5
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= A controller for War of Emperium designed for
    //= simplicity and ease of use.
    //= Many concepts taken from ToastOfDoom's script,
    //= and "rewards" function originally by Goddameit.
    //===== Additional Comments: =================================
    //= Be sure to disable the default agit controllers!
    //== npc\guild\agit_controller.txt
    //== npc\guild2\agit_start_se.txt
    //============================================================
    
    // Information NPC
    //============================================================
    prontera,148,187,4    script    WOE Information    652,{
    OnInit:
    delwaitingroom;
    waitingroom "War of Emperium",0;
        doevent "WOE_CONTROL::OnMenu";
        end;
    OnAgitStart:
        while(agitcheck()) {
            specialeffect EF_BEGINSPELL6;
            sleep 425;
        }
        end;
    }
    
    // Script Core
    //============================================================
    -    script    WOE_CONTROL    -1,{
    function Disp_Owner; function Add_Zero;
    
    OnInit:
    
    // -----------------------------------------------------------
    //  Configuration settings.
    // -----------------------------------------------------------
    
        set .CastleWarp,0;        // 1: Always enable all castle warps. | 0: Warp only to active castles.
        set .AutoKick,1;        // Automatically kick players from inactive castles during WOE? (1:yes / 0:no)
        set .NoOwner,0;         // Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no)
        set .ExitWarp,0;        // Warp all players from castles when WOE ends? (1:yes / 0:no)
        set .GMAccess,99;        // GM level required to access Session Manager.
    
    // -----------------------------------------------------------
    //  Reward options.
    // -----------------------------------------------------------
    //  [1] Enable rewards.
    //  [2] Mail all rewards.
    //      - If not set, players receive items in their inventory.
    //      - Only ONE item can be sent via mail for PACKETVER < 20150513 while later clients are limited to MAIL_MAX_ITEM (5).
    //      - Note that offline players do NOT receive 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.
    //      - Members in a guild with the same IP 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, 1|8;
    
        // Rewards per castle.
        //   setarray .reward_id[0],     <itemID>{,<itemID>,...}
        //   setarray .reward_amount[0], <amount>{,<amount>,...}
        setarray .reward_id[0],14001;
        setarray .reward_amount[0],1;
    
        // Zeny reward:
        .reward_zeny = 0;
    
    // -----------------------------------------------------------
    //  Constants (leave this section alone).
    // -----------------------------------------------------------
    
        setarray .Castles$[0],
            "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
            "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
            "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
            "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
            "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
            "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
        setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05";
        setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
        setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt";
        setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld";
        setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71;
        setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315;
    
    // -----------------------------------------------------------
    
        .reward_id_size = getarraysize(.reward_id);
        set .Size, getarraysize($WOE_CONTROL);
        if (.AutoKick || .NoOwner)
            for(set .@i,0; .@i<30; set .@i,.@i+1) {
                setmapflag .Castles$[.@i], mf_loadevent;
                setd "."+.Castles$[.@i], .@i;
            }
        if (!agitcheck() && !agitcheck2()) sleep 4000;
        set .Init,1;
    
    OnMinute00:
        freeloop(1);
        if (agitcheck() || agitcheck2()) {
            for(set .@i,0; .@i<.Size; set .@i,.@i+4)
                if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[.@i] && gettime(DT_HOUR) == $WOE_CONTROL[.@i+2]) {
                OnWOEEnd:
                    announce "The War Of Emperium is over!",bc_all|bc_woe;
                    AgitEnd; AgitEnd2;
                    sleep 1000;
                    for(set .@j,0; .@j<30; set .@j,.@j+1) {
                        if (.Active[0]&(1<<.@j)) Disp_Owner(.Castles$[.@j],1);
                        if (.ExitWarp) maprespawnguildid .Castles$[.@j],0,3;
                    }
                    if ((.Options&1) && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
                    deletearray .Active[0],2;
                    if (.ForceEnd) { set .ForceEnd,0; end; }
                    break;
                }
        }
        if ((!agitcheck() && !agitcheck2()) || .Init) {
            if (!agitcheck() && !agitcheck2()) set .Init,0;
            for(set .@i,0; .@i<.Size; set .@i,.@i+4)
                if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[.@i] && gettime(DT_HOUR) >= $WOE_CONTROL[.@i+1] && gettime(DT_HOUR) < $WOE_CONTROL[.@i+2]) {
                    deletearray .Active[0],2;
                    set .Active[0], $WOE_CONTROL[.@i+3];
                    if (.Init) { AgitEnd; AgitEnd2; }
                    else announce "The War Of Emperium has begun!",bc_all|bc_woe;
                    sleep 1000;
                    AgitStart; AgitStart2;
                    for(set .@j,0; .@j<30; set .@j,.@j+1) {
                        if (.Active[0]&(1<<.@j)) {
                            if (!.Init) Disp_Owner(.Castles$[.@j],0);
                            set .Active[1], .Active[1] | (1<<((.@j/5)+1));
                        } else {
                            if (.@j<20) {
                                donpcevent "Agit#"+.Castles$[.@j]+"::OnAgitEnd";
                                killmonster .Castles$[.@j], "Agit#"+.Castles$[.@j]+"::OnAgitBreak";
                            } else {
                                donpcevent "Manager#"+.Castles$[.@j]+"::OnAgitEnd2";
                                killmonster .Castles$[.@j], "Steward#"+.EndLabel$[.@j-20]+"::OnStartArena";
                            }
                        }
                    }
                    break;
                }
        }
        set .Init,0;
        end;
    
    function Disp_Owner {
        set .@o, getcastledata(getarg(0),1);
        if (.@o) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname(.@o)+"] guild.",bc_all|bc_woe;
        else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe;
        return;
    }
    function Add_Zero {
        return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00";
    }
    
    OnReward:
        if (!.reward_id_size && !.reward_zeny)
            return;
    
        set .@sql$, ((.Options&4)?"position = 0":"online = 1");
        if (.Options&2) set .@str$,gettimestr("%B %d, %Y",21);
        freeloop(1);
        for(set .@i,0; .@i<30; set .@i,.@i+1) {
            if (getarg(0)&(1<<.@i)) {
                set .@gid, getcastledata(.Castles$[.@i],1);
                if (!.@gid) continue;
                set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@gid+"' AND "+.@sql$,.@aid,.@cid);
                for(set .@j,0; .@j<.@size; set .@j,.@j+1) {
                    if ((.Options&8) && !(.Options&4)) {
                        set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
                        if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
                        setd ".@ip_"+.@i+"_"+.@ip$,1;
                    }
                    if (.Options&2) {
                        .@charid = .@cid[.@j];
                        .@sender$ = "no-reply";
                        .@title$ = "** Siege Reward: "+getcastlename(.Castles$[.@i])+" **";
                        .@body$ = "Brave one,\r\n \r\n Congratulations!\r\n Your guild has successfully occupied\r\n territory in the War of Emperium on\r\n "+.@str$+".\r\n \r\n \r\n \r\n \r\n [ Your reward is attached. ]";
    
                        if (.reward_id_size)
                            mail .@charid, .@sender$, .@title$, .@body$, .reward_zeny, .reward_id, .reward_amount;
                        else
                            mail .@charid, .@sender$, .@title$, .@body$, .reward_zeny;
    
                        if (PACKETVER < 20150513 && !getd(".@str_"+.@cid[.@j]) && isloggedin(.@aid[.@j],.@cid[.@j])) {
                            setd ".@str_"+.@cid[.@j],1;
                            message rid2name(.@aid[.@j]),"You've got mail!";
                        }
                    } else if (isloggedin(.@aid[.@j])) {
                        .@name$ = rid2name(.@aid[.@j]);
                        .@castle_name$ = getcastlename(.Castles$[.@i]);
                        for ( .@k = 0; .@k < .reward_id_size; .@k++ ) {
                            if (checkweight(.reward_id[.@k], .reward_amount[.@k]))
                                getitem .reward_id[.@k], .reward_amount[.@k], .@aid[.@j];
                            else
                                message .@name$, "You can't receive x" + .reward_amount[.@k] + " " + getitemname(.reward_id[.@k]) + " for conquering " + .@castle_name$ + " because you're overweight.";
                        }
                        Zeny += .reward_zeny;
                        message .@name$, "You have been rewarded for conquering " + .@castle_name$ + ".";
                    }
                }
            }
        }
        return;
    
    OnPCLoadMapEvent:
        if (!compare(strcharinfo(3),"g_cas")) end;
        if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) {
            if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end;
            sleep2 1000;
            message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive.";
            sleep2 5000;
            if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;
        }
        end;
    
    OnMenu:
    while(1) {
        mes "[WOE Information]";
        if (agitcheck() || agitcheck2()) {
            if (.Active[0]) {
                for(set .@i,0; .@i<.Size; set .@i,.@i+4)
                    if (gettime(DT_DAYOFWEEK) == $WOE_CONTROL[.@i] && gettime(DT_HOUR) >= $WOE_CONTROL[.@i+1] && gettime(DT_HOUR) < $WOE_CONTROL[.@i+2]) {
                        set .@i, $WOE_CONTROL[.@i+2];
                        break;
                    }
                mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero(.@i)+"^000000 in the following regions:";
                mes " ";
                for(set .@i,0; .@i<6; set .@i,.@i+1)
                    if (.Active[1]&(1<<(.@i+1))) mes " > ^777777"+.Regions$[.@i]+"^000000";
            } else
                mes "The War of Emperium is ^0055FFactive^000000.";
        } else {
            for(set .@i,0; .@i<.Size; set .@i,.@i+4)
                if ((gettime(DT_DAYOFWEEK) == $WOE_CONTROL[.@i] && gettime(DT_HOUR) <= $WOE_CONTROL[.@i+1]) || gettime(DT_DAYOFWEEK) < $WOE_CONTROL[.@i]) {
                    setarray .@time[0],$WOE_CONTROL[.@i],$WOE_CONTROL[.@i+1];
                    break;
                }
            if (!getarraysize(.@time))
                setarray .@time[0],$WOE_CONTROL[0],$WOE_CONTROL[1];
            mes "The War 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(""+((.CastleWarp || .Active[1])?" ~ Warp to castles...":"")+": ~ Check schedule...: ~ View castle owners...:"+((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions...")+": ~ ^777777Cancel^000000")) {
        case 1:
            if (.CastleWarp) set .@clr$,"^0055FF";
            set .@menu$,"";
            for(set .@i,0; .@i<6; set .@i,.@i+1) {
                if (.CastleWarp || .Active[1]&(1<<(.@i+1)))
                    set .@menu$, .@menu$+" ~ "+((.Active[1]&(1<<(.@i+1)))?.@clr$:"^777777")+.Regions$[.@i]+" Castles^000000";
                set .@menu$, .@menu$+":";
            }
            set .@i, select(.@menu$)-1;
            set .@menu$,"";
            for(set .@j,.@i*5; .@j<(.@i*5)+5; set .@j,.@j+1) {
                if (.CastleWarp || .Active[0]&(1<<.@j))
                    set .@menu$, .@menu$+" ~ "+((.Active[0]&(1<<.@j))?.@clr$:"^777777")+getcastlename(.Castles$[.@j])+"^000000";
                set .@menu$, .@menu$+":";
            }
            set .@j, select(.@menu$)-1;
            warp .Map$[.@i],.MapX[(.@i*5)+.@j],.MapY[(.@i*5)+.@j];
            close;
        case 2:
            mes "[Schedule]";
            if (.Size) {
                freeloop(1);
                for(set .@i,0; .@i<.Size; set .@i,.@i+4) {
                    mes "> ^FF0000"+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1])+"-"+Add_Zero($WOE_CONTROL[.@i+2])+")^000000";
                    for(set .@j,0; .@j<30; set .@j,.@j+1)
                        if ($WOE_CONTROL[.@i+3]&(1<<.@j)) mes "  ~ "+getcastlename(.Castles$[.@j])+" ^777777("+.Castles$[.@j]+")^000000";
                    if (.@i+4 < .Size) mes " ";
                }
                freeloop(0);
            } else
                mes "No times are configured.";
            next;
            break;
        case 3:
            mes "[Castle Ownership]";
            for(set .@i,0; .@i<6; set .@i,.@i+1) {
                set .@k, .@i*5;
                mes "> ^FF0000"+.Regions$[.@i]+"^000000";
                for(set .@j,.@k; .@j<(.@k+5); set .@j,.@j+1) { 
                    set .@t, getcastledata(.Castles$[.@j],1);
                    mes "  ~ "+getcastlename(.Castles$[.@j])+": "+((.@t)?"^0055FF"+getguildname(.@t):"^777777unoccupied")+"^000000";
                }
                if (.@i < 5) mes " ";
            }
            next;
            break;
        case 4:
        while(1) {
            mes "[Session Manager]";
            mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured.";
            mes "What would you like to do?";
            next;
            switch(select(" ~ Add a session...: ~ Delete a session...: ~ Reload settings...:"+((agitcheck() || agitcheck2())?" ~ End WOE session...":"")+": ~ ^777777Go back^000000")) {
            case 1:
                mes "[New Session]";
                if (.Size > 127) {
                    mes "You have already reached the maximum of 32 sessions.";
                    next;
                    break;
                }
                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<23; set .@i,.@i+1)
                    set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
                set .@Start, select(.@menu$)-1;
                mes "[New Session]";
                mes "Select an end time for ^0055FF"+.Days$[.@Day]+"^000000.";
                next;
                set .@menu$,"";
                for(set .@i,.@Start+1; .@i<24; set.@i,.@i+1)
                    set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
                set .@End, select(.@menu$)+.@Start;
                for(set .@i,0; .@i<.Size; set .@i,.@i+4)
                    if (.@Day == $WOE_CONTROL[.@i] &&
                       ((.@Start >= $WOE_CONTROL[.@i+1] && .@Start < $WOE_CONTROL[.@i+2]) ||
                        (.@End > $WOE_CONTROL[.@i+1] && .@End <= $WOE_CONTROL[.@i+2]) ||
                        (.@Start <= $WOE_CONTROL[.@i+1] && .@End >= $WOE_CONTROL[.@i+2]))) {
                        mes "[New Session]";
                        mes "The chosen times overlap with an existing session.";
                        next;
                        set .@d,1;
                        break;
                    }
                if (.@d) { set .@d,0; break; }
                set .@Castle,0;
                while(1) {
                    mes "[New Session]";
                    mes "^0055FF"+.Days$[.@Day]+" ("+Add_Zero(.@Start)+"-"+Add_Zero(.@End)+")^000000";
                    mes " > Castles:";
                    if (!.@Castle)
                        mes "   ~ ^777777(none selected)^000000";
                    else for(set .@i,0; .@i<30; set .@i,.@i+1)
                        if (.@Castle&(1<<.@i)) mes "   ~ "+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")";
                    next;
                    set .@menu$,((.@Castle)?" ~ ^FF0000Finished...^000000":"")+":";
                    for(set .@i,0; .@i<30; set .@i,.@i+1)
                        set .@menu$, .@menu$+" ~ "+((.@Castle&(1<<.@i))?"^0055FF":"")+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")^000000:";
                    set .@i, select(.@menu$)-1;
                    if (.@i)
                        set .@Castle, .@Castle^(1<<(.@i-1));
                    else {
                        mes "[New Session]";
                        mes "Are you sure?";
                        next;
                        switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) {
                        case 1:
                            for(set .@i,0; .@i<.Size; set .@i,.@i+4)
                                if ((.@Day == $WOE_CONTROL[.@i] && .@End <= $WOE_CONTROL[.@i+1]) || .@Day < $WOE_CONTROL[.@i]) {
                                    set .@d,1;
                                    break;
                                }
                            if (!.@d) { set .@d,1; set .@i,.Size; }
                            copyarray $WOE_CONTROL[.@i+4], $WOE_CONTROL[.@i], .Size-.@i;
                            setarray $WOE_CONTROL[.@i], .@Day, .@Start, .@End, .@Castle;
                            set .Size, getarraysize($WOE_CONTROL);
                        case 3:
                            mes "[New Session]";
                            mes ((.@d)?"Session added.":"cancelled.");
                            next;
                            set .@d,1;
                        case 2:
                            break;
                        }
                        if (.@d) { set .@d,0; break; }
                    }
                }
                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+4)
                    set .@menu$, .@menu$+" ~ "+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1],1)+"-"+Add_Zero($WOE_CONTROL[.@i+2],1)+"):";
                set .@menu$, .@menu$+" ~ ^777777Cancel^000000";
                set .@i, select(.@menu$)-1;
                if (.@i == (.Size/4)) break;
                mes "[Remove Session]";
                mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[.@i*4]]+"'s^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 $WOE_CONTROL[.@i*4],4;
                    set .Size, getarraysize($WOE_CONTROL);
                    mes "Session deleted.";
                }
                next;
                break;
            case 3:
                mes "[Reload Settings]";
                mes "This will trigger all events related to new session configurations, if any.";
                if (agitcheck() || agitcheck2()) {
                    mes " ";
                    mes "Be aware that this will disrupt the current WOE session.";
                }
                next;
                set .@i, select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000");
                mes "[Reload Settings]";
                if (.@i == 2) mes "cancelled.";
                else {
                    set .Init,1;
                    donpcevent "WOE_CONTROL::OnMinute00";
                    mes "Variables have been re-initialized.";
                }
                next;
                break;
            case 4:
                mes "[Force Agit End]";
                if (!agitcheck() && !agitcheck2())  {
                    mes "WOE has already ended.";
                    next;
                    break;
                }
                mes "This command will safely execute all AgitEnd events.";
                mes " ";
                mes "Kill the current WOE session?";
                next;
                set .@i, select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000");
                mes "[Force Agit End]";
                if (.@i == 3)
                    mes "cancelled.";
                else {
                    set .ForceEnd, .@i;
                    donpcevent "WOE_CONTROL::OnWOEEnd";
                    mes "WOE session terminated.";
                }
                next;
                break;
            case 5:
                set .@d,1; break;
            }
            if (.@d) { set .@d,0; break; }
            } break;
        case 5:
            close;
        } }
    }

     

  5.    Here's my ItemInfo.lua or Description of item.

    Can you make a item script for this?

    Quote

     },
        [40252] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Alchemist Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Alchemists and Creators, giving them special buffs for the skill's duration.",
                "- Increases effectiveness of Potion Pitcher by Soul Linker's BaseLV% (if the Soul Linker is BaseLV 68, Potion Pitcher heals +68%.",
                "- Allows usage of Berserk Pitcher skill.",
                "- Alchemists having PharmacyLV 10 are allowed to use Twilight Alchemy I.",
                "- If there is a Super Novice in the party the Alchemist is further allowed to use Twilight Alchemy II.",
                "- If there is a TaeKwon/Padawan in the party the Alchemist is further allowed to use Twilight Alchemy III.",
                "- Increases effectiveness of Aid Potion by (INT/13)%.",
                "- All offensive skills and attacks have a (INT/25)% chance of inflicting Burning Status on the target.",
                "- Acid Terror becomes a splash skill in an area of 4x4 around the targeted player or mob.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40253] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Star Gladiator Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Star Gladiators allowing the usage of the 'Union of the Sun, Moon and Stars' skill.",
                "- Enable to use Level 10 Lord of Vermillion and Parry.",
                "- Additional 10 Perfect Dodge.",
                "- Increase Damage to Boss and Holy Monster by 100%.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40254] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Assassin Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Assassins and Assassins Cross.",
                "- Boosting their Sonic Blow by doubling its damage and halving the Cool Down for the skill's duration.",
                "- However, the bonuses are reduced to +25% bonus damage and no Cool Down bonus when in Siege Mode (WoE).",
                "- Boosting their Throw Venom Knife by 100%.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40255] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Crusader Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Crusaders and Paladins.", 
                "- Making their Shield Boomerang never miss, do double the damage, and halving its after cast delay.",
                "- Increase Shield Charge damage by 60% per skill Level.",
                "- Increase Shield Chain damage by 150%.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40256] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Artist Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Bards, Clowns, Dancers and Gypsies, giving them special buffs for the skill's duration.",
                "- All singing/dancing skills affect the Bard/Dancer him/herself.",
                "- While singing/dancing the walking speed is increased.",
                "- A Whistle and Humming linked.",
                "- Assassin Cross of Sunset and Please Don't Forget Me linked.",
                "- A Poem of Bragi and Fortune's Kiss linked.",
                "- The Apple of Idun and Service for You linked.",
                "Linked means, if X skill is mastered, then Y skill can be used too while in 'Spirit' mode. ",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40257] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Super Novice Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Super Novices giving them special buffs for the skill's duration.",
                "- Super Novices above LV 90 will be temporarily able to equip ALL Upper/Middle/Lower headgears.",
                "- Super Novices above LV 90 have 1% chance to 'erase' the death record - which means, the last 1% EXP loss will be recovered.",
                "- Super Novices above LV 96 will be temporarily able to equip LV 4 Daggers, 1H Swords, Axes, Maces, and Staffs.",
                "- You can use the skill 'Act Dead' during the buff.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40258] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Blacksmith Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Blacksmiths and Whitesmiths.", 
                "- Allowing them to use Full Adrenaline Rush if they have Adrenaline Rush LV5 for the skill's duration.",
                "- Full Adrenaline Rush gives Str +10, Dex +10 and Flee +15.",
                "- Maximum Power Thrust is buffed with +100% ATK, giving 300% ATK at Level 5.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40259] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Soul Linker Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to other Soul Linkers.",
                "- Cannot Soul Link yourself.", 
                "- Allowing them to use 'Ka- Type' skills on any other class, for the skill's duration.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40260] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Rogue Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Rogues and Stalkers giving them special buffs for the skill's duration.",
                "- Dispell no longer removes your buffs.",
                "- Potions created by someone who is high on the alchemist rank have their effect increased.",
                "- STR bonus from Tunnel Drive will last 5 minutes and walking speed will also increase.",
                "- Increase Double Strafe damage by (STR/2)%.",
                "- You can divest through Full Protection by consuming one Glistening Coat for each attempt (only when the target has Full Protection activated). It doesn't work with Full Divest but only with Divest Weapon, Shield, Armor or Helm.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40261] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Knight Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Knights and Lord Knights.",
                "- Allowing those who have Two-Hand Quicken LV 10 to use One-Hand Quicken for the skill's duration.",
                "- Enable to use Level 10 Parrying with One-Hand Weapon with a block chance of 2*SkillLV%.",
                "- All skills have their after delay reduced by 40%.",
                "- Increase Spear Boomerang damage by 200%.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40262] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Hunter Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Hunters and Snipers giving them special buffs for the skill's duration.",
                "- Effectiveness of Beast Bane is increased by Hunters/Snipers STR.",
                "- If Double Strafing is Level 10, a new skill, Beast Strafing, will be available.",
                "- There is a low chance of Falcon Assault occurring automatically per shot with a bow.",
                "- Making their Sharp Shooting halving its after cast delay.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40263] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Monk Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Monks and Champions giving them special buffs for the skill's duration.",
                "- The Combo Finish attack becomes a 5x5 cell splash attack.",
                "- SP Cost of combo skills is decreased.",
                "- Allow SP regeneration in Critical Explosion state.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40264] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Sage Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Sages and Professors.",
                "- Allowing their Auto Spell Skill to always produce LV 10 Bolts if the Sage has learned that much in the Bolt Skill.",
                "- The Sage's HP will also increase by BaseLV * 100 HP and his/her VIT will increase by 35.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40265] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Priest Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Priests and High Priests.", 
                "- Boosting the power of Holy Light by +400% but also increasing its SP Cost by +400% for the skill's duration.",
                "- Returns some damage dealt to you back to the enemy. Melee attacks only. Reflected Damage 30% of received damage.",
                "- Increase Heal skill's effectiveness by 300%.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },
        [40266] = {
            unidentifiedDisplayName = "",
            unidentifiedResourceName  = "",
            unidentifiedDescriptionName = {
            },
            identifiedDisplayName = "Wizard Talisman",
            identifiedResourceName = "Çà¿îÀǺÎÀû",
            identifiedDescriptionName = {
                "Soul Links to Wizards and High Wizards.";
                "- Allowing them to cast all Gemstone requiring Skills without using them up (however, it still requires the Wizard to have at least one of the respective Gemstone) for the skill's duration.",
                "- When the Wizard has a 'Crystal Fragment' while under this skill's effect, the item will be used, and any spells that were reflected back to you via Kaite will simply disappear instead of hitting you.",
                "- The Wizard's HP will also increase by BaseLvl * 200 HP and his/her Vit will increase by Int/5. For example, 255 Int will give you an additional bonus of 255/5 = 51 Vit.",
                "- Increase Magic Crasher Damage by 150%.",
                "^FFFFFF_^000000",
                "Weight:^009900 1 ^000000",
            },
            slotCount = 0,
            ClassNum = 0
        },

     

  6. 9 minutes ago, BeWan said:

    src/map/battle.cpp
    Find : 

    { "at_timeout",                         &battle_config.at_timeout,                      0,      0,      INT_MAX,        },

    Add [ Below ] :

    { "afk_timeout",                        &battle_config.afk_timeout,                     0,      0,      INT_MAX,        },

     

    src/map/battle.hpp

    Find : 
    int at_timeout;

    Add [ Below ] :

    int afk_timeout;

    Find :
    mail_show_status: 0

    Add [ Below ] :

    // Set this to the amount of minutes afk chars will be kicked from the server.
    afk_timeout: 0

    where can i find mail_show_status: 0?

  7. 1 minute ago, Kakaroto said:

    Oh como'n man, there are several of this system here in rA, please use the search button.

     

    CSJLXHy.png

    Hi, Thanks.

    But my problem is i find outdated files of @afk command and not working.

    I can't find the latest @afk command. ?

  8. Like this?

    On 11/8/2019 at 12:55 AM, Katakuri said:

    Did you ever read the syntax comment? it states there the location where you can put the skill if you are using pre-renewal or renewal

    So i will add MO_EXTREMITYFIST ?

    Quote

    `        if (sc->data[SC_EDP]) {
                switch(skill_id) {
                    case AS_SPLASHER:
                    case ASC_METEORASSAULT:
                    case MO_EXTREMITYFIST:
                    // Pre-Renewal only: Soul Breaker ignores EDP
                    // Renewal only: Grimtooth and Venom Knife ignore EDP
                    // Both: Venom Splasher and Meteor Assault ignore EDP [helvetica]
    #ifndef RENEWAL
                    case ASC_BREAKER:
    #else
                    case AS_GRIMTOOTH:
                    case AS_VENOMKNIFE:
    #endif
                        break; // skills above have no effect with EDP

    LIKE THIS?

  9. On 11/8/2019 at 12:50 AM, Katakuri said:

    Add the specific skill of champion you want to nerf on EDP

    Click

    And after that recompile.

    What will i add?

    Find This on Battle.c or battle.cpp
    
    	if (sc->data[SC_EDP]) {
    			switch(skill_id) {
    				case AS_SPLASHER:
    				// Pre-Renewal only: Soul Breaker and Meteor Assault ignores EDP
    				// Renewal only: Grimtooth and Venom Knife ignore EDP
    				// Both: Venom Splasher ignores EDP [helvetica]
    #ifndef RENEWAL
    				case ASC_BREAKER:
    				case ASC_METEORASSAULT:
    #else
    				case AS_GRIMTOOTH:
    				case AS_VENOMKNIFE:
    #endif
    					break; // skills above have no effect with edp

    That's the source mode but what code i will add there's no +

  10. 2 minutes ago, Disabled LOOLP said:
    
    Following what you said the rates are correct, your refinement NPC is incorrect.
    
    Use the standard refinement NPCs and test the following in DB / refine.y
    
    set the refinements to total values = 100, RECOMPILE, and test again if you are going to be totally successful.
    
    If successful, rates are OK.

    Yes, there's wrong with her NPC script, so I'm asking her if he wants to post the script so we can fix it.

×
×
  • Create New...