Jump to content
  • 0
chadness

Automated GVG Event Improvement

Question

hi everyone i would like to ask if how can i add more teams/guild allowed to join in Sir @Mabuhay Automated GvG event Script. thanks in advance  
Automated GvG Event v2 - PvP, GvG, WoE, Battleground - rAthena

Script:/

/ Automated GvG Event 2.0 Beta version
// Event runs every hour via OnMinute timer.
// Feel free to edit as you wish
// By : Mabuhay
// Free release
// Dont remove credit
// Updated to v 2.0
/*
    - Added gepard support and check to every members
    - More flexible options
    - Can set cash, members, timer, and winpoints if gm starts the command.
    
    New mechanics.
    
    - When using @gvgeventjoin, all your members must be around you by 5x5 cell.
    
    NOTE:
        item rewards are only to be set here in script because adding them
        in the GM option would be quite troublesome for me 
*/
//
-    script    gvg_event    -1,{
OnInit:
    // How many guild members are required?
    .membercount = 1; 
    
    // registration timer in mins.
    .timer = 3; 
    
    // how much points to win? Points is earned per kill
    .win_points = 2; 
    
    // item reward
    // <item_id>, <amount>
    setarray .item,
        7179, 20,
        14003, 5;
    
    // how much cash points earned
    // set to 0 to disable
    .cash = 0; 
    
    .size = getarraysize(.item);
    bindatcmd "gvgeventstart", strnpcinfo(0)+"::OnStartEvent",60,60;
    bindatcmd "gvgeventend", strnpcinfo(0)+"::OnEndEvent",60,60;
    bindatcmd "gvgeventjoin", strnpcinfo(0)+"::OnJoinEvent";
    end;
    
OnStartEvent:
    mes "Hi GM, what do you want to do?";
    mes "Current settings :";
    mes "Member count : "+ $gvgevent_mem;
    mes "Registration time : "+ $gvgevent_time;
    mes "Win points : "+ $gvgevent_winpts;
    mes "Cashpoint reward : "+ $gvgevent_cash;
    next;
    switch(select("Start Event:Set Mem Count:Set Reg timer:Set Win Points:Set Cashpoint Reward")) {
    case 1:
        mes "Starting event..";
        close2;
        break;
    case 2: 
        mes "Enter member count value";
        mes "current : "+ $gvgevent_mem;
        next;
        input [email protected], 1;
        mes "Do you want to set member count to "+ [email protected] +"?";
        next;
        select("Yes");
        mes "Done!";
        close2;
        $gvgevent_mem = [email protected];
        end;
    case 3:
        mes "Enter registration time value";
        mes "current : "+ $gvgevent_time;
        next;
        input [email protected], 1;
        mes "Do you want to set registration time to "+ [email protected] +"?";
        next;
        select("Yes");
        mes "Done!";
        close2;
        $gvgevent_time = [email protected];
        end;
    case 4:
        mes "Enter win points value";
        mes "current : "+ $gvgevent_winpts;
        next;
        input [email protected], 1;
        mes "Do you want to set win points to "+ [email protected] +"?";
        next;
        select("Yes");
        mes "Done!";
        close2;
        $gvgevent_winpts = [email protected];
        end;
    case 5:
        mes "To disable, set to zero (0)";
        mes "current : "+ $gvgevent_cash;
        next;
        input [email protected];
        mes "Do you want to set cashpoints to "+ [email protected] +"?";
        next;
        select("Yes");
        mes "Done!";
        close2;
        $gvgevent_cash = [email protected];
        end;
    }
OnMinute00: // runs every hour..
    if ( .start ) end;
    .start = 1;
    [email protected] = $gvgevent_mem;
    gvgoff "guild_vs1";
    for ( [email protected] = 1; [email protected] < 9; [email protected]++ )
        enablenpc "#bari0"[email protected];
    setwall "guild_vs1", 12, 48, 4, DIR_NORTH, 0, "wonderwall_1";
    setwall "guild_vs1", 87, 48, 4, DIR_NORTH, 0, "wonderwall_2";
    for ( [email protected] = $gvgevent_time; [email protected] > 0; [email protected] ) {
        if ( .start < 2 ) {
            announce "<"[email protected]+"v"[email protected]+" Guild Event> Event start in "[email protected]+" min(s) until slots are taken. Register now.", bc_all;
            sleep 60000;
        }
    }
    if ( !.slot1 || !.slot2 ) {
        announce "<"[email protected]+"v"[email protected]+" Guild Event> Event is cancelled. Not enough participants.", bc_all; 
        donpcevent strnpcinfo(0)+"::OnEndEvent";
        end;
    }
    announce "<"[email protected]+"v"[email protected]+" Guild Event> Guild ["+getguildname(.slot1)+"] vs Guild ["+getguildname(.slot2)+"].", bc_all;
    end;

OnJoinEvent:
    [email protected] = getcharid(2);
    if ([email protected] == 0) {
        mes "Sorry, you are not in a guild.";
        close;
    }
    if (!is_guild_leader([email protected])) {
        mes "Sorry, only your guild master can register.";
        close;
    }
    if ( !.start ) {
        mes "Event has not started.";
        close;
    } else if ( .start == 2 ) {
        mes "Event is still on-going.";
        close;
    } else {
        if ( .slot1 && .slot2 ) {
            mes "All slots has been taken.";
            close;
        }
        if ( !.slot1 ) [email protected] = 1;
        else if ( !.slot2) [email protected] = 2;
        if ( .slot1 == [email protected] ) {
            mes "You're guild has already registered.";
            close;
        }
        getmapxy([email protected]$, [email protected], [email protected], BL_PC);
        getareaunits(BL_PC,[email protected]$,[email protected]+5,[email protected]+5,[email protected],[email protected],[email protected]_name$[0]);
        freeloop(true);
        for([email protected]=0;[email protected]<getarraysize([email protected]_name$);[email protected]++)
        if ( getcharid(2, [email protected]_name$[[email protected]] ) == [email protected] ) {
            if ( .gepard ) {
                query_sql("SELECT `last_unique_id` FROM `login` WHERE `account_id` = '"+ getcharid(3, [email protected]_name$[[email protected]] ) +"'", [email protected]_id$);
                [email protected]_gepard$[[email protected]++] = [email protected]_id$;
                if ( countinarray( [email protected]_gepard$[0], [email protected]_id$ ) > 1 ) [email protected]++;
            }
            [email protected]_mem++;
            [email protected][[email protected]++] = convertpcinfo([email protected]_name$[[email protected]], CPC_ACCOUNT);
            [email protected]$[[email protected]++] = [email protected]_name$[[email protected]];
        }
        freeloop(false);    
        if ( [email protected]_mem < $gvgevent_mem ) {
            mes "You need at least "+$gvgevent_mem+" guild members around you"+(.gepard ? " with unique gepard id":"")+".";
            close;
        }
        if ( [email protected]_mem > $gvgevent_mem ) {
            mes "You need only need "+$gvgevent_mem+" guild members around you"+(.gepard ? " with unique gepard id":"")+".";
            close;
        }
        if ( .gepard && [email protected] ) {
            mes "Gepard ID duplicate detected.";
            mes "A member around you is using dual account.";
            close;
        }
        mes "Participating members are :";
        for ( [email protected] = 0; [email protected] < [email protected]; [email protected]++)
            mes "~ "+ [email protected]$[[email protected]];
        next;
        mes "Are you ready ?";
        next; 
        select("Yes");
        switch ( [email protected] ) {
            case 1: .slot1 = [email protected]; break;
            case 2: .slot2 = [email protected]; break;
        }
        for ( [email protected] = 0; [email protected] < [email protected]; [email protected]++ ) {
            attachrid([email protected][[email protected]]);
            [email protected] = getcharid(2);
            sc_end SC_ALL; // remove all status buffs
            percentheal 100,100; // heals before warp
            warp "guild_vs1", ( .slot1 == [email protected] ) ? 7 : 92, 50;
        }
        detachrid;
        if ( .slot1 && .slot2 ) {
            .start = 2;
            awake strnpcinfo(0);
            sleep 3000;
            mapannounce "guild_vs1", "Get ready !~", bc_blue;
            sleep 2000;
            for ( [email protected] = 5; [email protected] > 0; [email protected] ) {
                mapannounce "guild_vs1", [email protected] +" !~", bc_blue;
                sleep 1000;
            }
            mapannounce "guild_vs1", "Start !~", bc_blue;
            gvgon "guild_vs1";
            for ( [email protected] = 1; [email protected] < 9; [email protected]++ )
                disablenpc "#bari0"[email protected];
            delwall "wonderwall_1";
            delwall "wonderwall_2";
        }
    }
    end;
    
OnPCKillEvent:
    if ( .start && strcharinfo(3) == "guild_vs1" ) {
        [email protected] = getcharid(2);
        if ( [email protected] == .slot1 ) .guild1_score++;
        else if ( [email protected] == .slot2 ) .guild2_score++;
        mapannounce "guild_vs1", strcharinfo(0) +" of Guild ["+getguildname([email protected])+"] has pawned "+ rid2name(killedrid), bc_blue;
        mapannounce "guild_vs1", "Guild ["+getguildname(.slot1)+"] - "+.guild1_score+" || Guild ["+getguildname(.slot2)+"] - "+.guild2_score+"", bc_blue;
        if ( .guild1_score == $gvgevent_winpts || .guild2_score == $gvgevent_winpts ) {
            gvgoff "guild_vs1";
            if ( .guild1_score > .guild2_score ) { .winner = .slot1; .loser = .slot2; }
            else { .winner = .slot2; .loser = .slot1; }
            [email protected] = $gvgevent_mem;
            announce "<"[email protected]+"v"[email protected]+" Guild Event> Guild ["+getguildname(.winner)+"] is victorious against Guild ["+getguildname(.loser)+"] !", bc_all;
            mapannounce "guild_vs1", "Rewards will be delivered in few seconds before warping out.", bc_blue;
            sleep 8000; // 8 sec pause so participating members can re-warp if dead
            getmapunits(BL_PC, "guild_vs1", [email protected][0]);
            for([email protected]=0;[email protected]<getarraysize([email protected]);[email protected]++) {
                attachrid([email protected][[email protected]]);
                if ( getcharid(2) == .winner ) { // if winner
                    for ( [email protected] = 0; [email protected] < .size; [email protected]+=2 )
                        getitem .item[[email protected]], .item[[email protected]+1]; 
                    if ( $gvgevent_cash ) {
                        #CASHPOINTS += $gvgevent_cash;
                        dispbottom "You have gained "+$gvgevent_cash+" cashpoints. Total : "+ #CASHPOINTS;
                    }
                } else if ( getcharid(2) == .loser ) { // if loser
                    dispbottom "Thank you for participating GvG Event."; 
                }
            }            
            detachrid;
            sleep 2000; // 2 sec pause..
            donpcevent strnpcinfo(0)+"::OnEndEvent";
            end;
        }
        attachrid( killedrid );
        [email protected] = getcharid(2);
        if ( [email protected] == .slot1 || [email protected] == .slot2 ) {
            dispbottom "You will be warped back to the battle area in few secs.";
            sleep2 4000; // return to battle in 5 sec
            warp "guild_vs1", ([email protected] == .slot1) ? 7:([email protected] == .slot2) ? 92:50, 50;
            sleep2 1000; // heal in 1 sec
            percentheal 100,100;
        }
    }
    end;
    
OnEndEvent:
    if ( !.start ) end;
    .start = .slot1 = .slot2 = .loser = .winner = .guild1_score = .guild2_score = false;
    mapwarp "guild_vs1", "prontera", 150, 180;
    end;
}

// Barricades
guild_vs1,12,48,0    script    #bari01    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,12,49,0    script    #bari02    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,12,50,0    script    #bari03    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,12,51,0    script    #bari04    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,87,48,0    script    #bari05    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,87,49,0    script    #bari06    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,87,50,0    script    #bari07    1906,{ end; OnInit: disablenpc strnpcinfo(0); }
guild_vs1,87,51,0    script    #bari08    1906,{ end; OnInit: disablenpc strnpcinfo(0); }

 

Edited by Mael
Use codebox

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Increase slots will do. atm i can see on your script it only allow 2 guild to participate. Just increase the slots it will do.

  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0
39 minutes ago, Cookie-rae said:

Increase slots will do. atm i can see on your script it only allow 2 guild to participate. Just increase the slots it will do.

thanks sir did you mean here? 

 

} else {
        if ( .slot1 && .slot2 ) {
            mes "All slots has been taken.";
            close;
        }
        if ( !.slot1 ) [email protected] = 1;
        else if ( !.slot2) [email protected] = 2;
        if ( .slot1 == [email protected] ) {
            mes "You're guild has already registered.";
            close;

Share this post


Link to post
Share on other sites
  • 0
Just now, Cookie-rae said:

Yes correct. not only that just check all slots info.

thank you sir i will try it hope i can fix it alone thanks again godbless you

 

Share this post


Link to post
Share on other sites
  • 0
29 minutes ago, Cookie-rae said:

Yes correct. not only that just check all slots info.

i already add the slots but the problem is all of them are warping in the same room 

warpinsameroom.PNG

Share this post


Link to post
Share on other sites
  • 0
8 hours ago, chadness said:

warp "guild_vs1", ( .slot1 == [email protected] ) ? 7 : 92, 50;

You need to check this.

 

8 hours ago, chadness said:

if ( [email protected] == .slot1 || [email protected] == .slot2 ) {             dispbottom "You will be warped back to the battle area in few secs.";             sleep2 4000; // return to battle in 5 sec             warp "guild_vs1", ([email protected] == .slot1) ? 7:([email protected] == .slot2) ? 92:50, 50;             sleep2 1000; // heal in 1 sec             percentheal 100,100;         }

Then this please do warp coordinations.

Edited by Cookie-rae
Edit

Share this post


Link to post
Share on other sites
  • 0
7 minutes ago, Cookie-rae said:

You need to check this.

 

Then this please do warp coordinations.

            percentheal 100,100; // heals before warp
            warp "guild_vs1", ( .slot1 == [email protected] ) ? 7 : 92, 50:([email protected] == .slot3) ? 49:90, 50:([email protected] == .slot4) ? 49:7, 50;

            sleep2 4000; // return to battle in 5 sec
            warp "guild_vs1", ([email protected] == .slot1) ? 7:([email protected] == .slot2) ? 92:50, 50:([email protected] == .slot3) ? 49:90, 50:([email protected] == .slot4) ? 49:7, 50;

i didnt get what does the yellow 50 means since so i just copied it in my next coordinations can you help me?

error.PNG

Share this post


Link to post
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...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.