Jump to content
  • 0

PVP Arena script help


Question

Posted (edited)
guys i have my new private server ragnarok im having hard time scripting my pvp arena

 

i want that my arena would announce if a player enters and also announce if the player kill someone

 

if you can add dota like announcements i would be very happy

 

here's the script that i use,

 


// Made by iTouch
// ----------------------------------------------------------------------------
// Ultimate PvP Warper ver. 1
// Features:
// Baby PvP Room
// PvP Square(Every 2 days Random PvP Room)
// PvP Nightmare
// PvP Lowlvl( Supports 1 - 150 Lvl)
// PvP No Potion (Berrys , Ygg seed , Any potions , etc. are restricted)
// PvP Non Donator (Got Items are restricted here)
// -----------------------------------------------------------------------------
// ver. 2 update idea:
// Adding a PvP Room that removes the buffs of the player when entering the room
// Adding a PvP Room for GM's Only so GM's will have fun
// -----------------------------------------------------------------------------
// Special thanks to:
// icescope of eAthena for helping me configuring the error at PvP Square
// -----------------------------------------------------------------------------

prontera,155,188,6 script Ultimate PvP Warper 753,{
if (.pvp_square$=="") donpcevent "Ultimate PVP warper::OnClock0000";

mes "[PvP Warper]";
mes "Which arena do you want to go to?";
switch(select("PVP Square ["+getmapusers(.pvp_square$)+"/100]:PVP Nightmare ["+getmapusers("guild_vs3")+"/100]:PVP LowLevel ["+getmapusers("guild_vs1")+"/100]:PVP NoPotion ["+getmapusers("pvp_y_8-2")+"/100]:Non Donator PVP ["+getmapusers("1@orcs")+"/100]:Baby PvP Room ["+getmapusers("pvp_y_1-2")+"/100]")) {
case 1: // PVP Square
if (getmapusers(.pvp_square$) > 99) callsub S_full;
callsub S_payment;
warp .pvp_square$,0,0;
end;

case 2: // PVP Nightmare
if (getmapusers("guild_vs3") > 99) callsub S_full;
callsub S_payment;
warp "guild_vs3",0,0;
end;

case 3: // PVP LowLevel
if (getmapusers("guild_vs1") > 99) callsub S_full;
if (BaseLevel > 150) { // Edit 150 to any maximum Lvl of a player can enter this room
mes "only Base Level 1 - 150 may enter.";
close;
}
callsub S_payment;
warp "guild_vs1",0,0;
end;

case 4: // PVP NoPotion
if (getmapusers("pvp_y_8-2") > 99) callsub S_full;
for( set .@i,0; .@i<getarraysize(.NoPotion_ids); set .@i,.@i+1 ) {
if (countitem(.NoPotion_ids[.@i])) {
mes "You can not bring potions in this pvp.";
close;
}
}
callsub S_payment;
warp "pvp_y_8-2",0,0;
end;

case 5: // Non Donator PVP
if (getmapusers("1@orcs") > 99) callsub S_full;
for( set .@i,0; .@i<getarraysize(.NoDonator_ids); set .@i,.@i+1 ) {
if (countitem(.NoDonator_ids[.@i])) {
mes "You can not bring God items in this pvp.";
close;
}
}
callsub S_payment;
warp "1@orcs",0,0;
end;
Case 6: // Baby PvP Room
if (getmapusers("pvp_y_1-2") > 99) callsub S_full;
if (class < 4023 || class > 4045) goto L_NotBaby;
callsub S_payment;
warp "pvp_y_1-2",0,0;
end;
L_NotBaby:
mes "Only baby can enter this room";
close;

}

S_full:
mes " ";
mes "I'm sorry, this arena is full. Please try again later...";
close;
S_payment:
if (Zeny < (200*BaseLevel + 800)) {
mes "You don't have enough zeny.";
mes "It costs "+(200*BaseLevel + 800)+" zeny for you to enter.";
close;
}
set Zeny, Zeny - (200*BaseLevel + 800);
return;

OnInit:
waitingroom "PvP Warper",0;
end;
OnClock0000:
// set the "PVP Square" map, based on day of the weeek
switch(gettime(4)) {
case 0: // Sunday
case 1: // Monday
set .pvp_square$, "guild_vs2";
break;
case 2: // Tuesday
case 3: // Wednesday
set .pvp_square$, "guild_vs5";
break;
case 4: // Thursday
case 5: // Friday
set .pvp_square$, "guild_vs4";
break;
case 6: // Saturday
set .pvp_square$, "guild_vs1-2";
break;
}

// items not allowed in PVP NoPotion
setarray .NoPotion_ids[0], 607, 608;

// items not allowed in Non Donator PVP
setarray .NoDonator_ids[0], 2410, 1530;
end;
}

moscovia.gat,226,198,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#1 871
//askydun.gat,96,113,3 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#2 871 // Kliwa
alberta.gat,110,140,3 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#3 871 // Kliwa
aldebaran.gat,147,115,1 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#4 871 // Kliwa
amatsu.gat,207,86,3 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#5 871 // Kliwa
ayothaya.gat,155,117,2 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#6 871 // Kliwa
comodo.gat,206,80,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#7 871 // Kliwa
einbech.gat,198,83,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#8 871 // Taas Kaliwa
einbroch.gat,174,172,5 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#9 871 // Taas Kaliwa
geffen.gat,125,71,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#10 871
gonryun.gat,162,120,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#11 871
hugel.gat,89,151,5 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#12 871
izlude.gat,134,90,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#13 871
lighthalzen.gat,166,101,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#14 871
louyang.gat,214,120,5 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#15 871
xmas.gat,154,136,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#16 871
morocc.gat,160,97,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#17 871
payon.gat,148,226,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#18 871
rachel.gat,135,115,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#19 871
veins.gat,219,127,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#20 871
yuno.gat,163,170,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#21 871
umbala.gat,106,159,3 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#22 871
poring_c02,139,81,4 duplicate(Ultimate PvP Warper) Ultimate PvP Warper#23 871

// Mapflags (No commands)
pvp_y_1-2 mapflag nocommand 99
guild_vs2 mapflag nocommand 99
guild_vs3 mapflag nocommand 99

// Will disable players using @go
pvp_y_1-2 mapflag nowarpto
guild_vs2 mapflag nowarpto
guild_vs3 mapflag nowarpto

// Will disable players using @go
pvp_y_1-2 mapflag nowarp
guild_vs2 mapflag nowarp
guild_vs3 mapflag nowarp

// Will disable players using @go
pvp_y_1-2 mapflag pvp_noparty
guild_vs2 mapflag pvp_noparty
guild_vs3 mapflag pvp_noparty

// Will disable players using @go
pvp_y_1-2 mapflag nobranch
guild_vs2 mapflag nobranch
guild_vs3 mapflag nobranch

// Will disable players using @go
pvp_y_1-2 mapflag nomemo
guild_vs2 mapflag nomemo
guild_vs3 mapflag nomemo

// Will disable players using @go
pvp_y_1-2 mapflag pvp
guild_vs2 mapflag pvp
guild_vs3 mapflag pvp

Edited by gmmontoy
change to code bbcode. Do not use FULL CAPS.

5 answers to this question

Recommended Posts

Posted

Change the case part by this :

    case 1:    // PVP Square
        if (getmapusers(.pvp_square$) > 99) callsub S_full;
        callsub S_payment;
        warp .pvp_square$,0,0;
        announce strcharinfo(0)+ " enter " +.pvp_square$+ "",0;
        end;
    case 2:    // PVP Nightmare
        if (getmapusers("guild_vs3") > 99) callsub S_full;
        callsub S_payment;
        warp "guild_vs3",0,0;
        announce strcharinfo(0)+ " enter guild_vs3",0;
        end;
    case 3:    // PVP LowLevel
        if (getmapusers("guild_vs1") > 99) callsub S_full;
        if (BaseLevel > 150) { // Edit 150 to any maximum Lvl of a player can enter this room
            mes "only Base Level 1 - 150 may enter.";
            close;
        }
        callsub S_payment;
        warp "guild_vs1",0,0;
        announce strcharinfo(0)+ " enter guild_vs1",0;
        end;
    case 4:    // PVP NoPotion
        if (getmapusers("pvp_y_8-2") > 99) callsub S_full;
        for( set .@i,0; .@i<getarraysize(.NoPotion_ids); set .@i,.@i+1 ) {
            if (countitem(.NoPotion_ids[.@i])) {
                mes "You can not bring potions in this pvp.";
                close;
            }
        }
        callsub S_payment;
        warp "pvp_y_8-2",0,0;
        announce strcharinfo(0)+ " enter pvp_y_8-2",0;
        end;
    case 5:    // Non Donator PVP
        if (getmapusers("1@orcs") > 99) callsub S_full;
        for( set .@i,0; .@i<getarraysize(.NoDonator_ids); set .@i,.@i+1 ) {
            if (countitem(.NoDonator_ids[.@i])) {
                mes "You can not bring God items in this pvp.";
                close;
            }
        }
        callsub S_payment;
        warp "1@orcs",0,0;
        announce strcharinfo(0)+ " enter 1@orcs",0;
        end;
    Case 6: // Baby PvP Room
        if (getmapusers("pvp_y_1-2") > 99) callsub S_full;
        if (class < 4023 || class > 4045) goto L_NotBaby;
        callsub S_payment;
        warp "pvp_y_1-2",0,0;
        announce strcharinfo(0)+ " enter pvp_y_1-2",0;
        end;
also announce if the player kill someone

Put this :

OnPCKillEvent:
    if ( strcharinfo(3) == "your_pvp_map" )
        announce strcharinfo(0)+ " killed " +rid2name(killedrid);
    end;
Posted (edited)

Change the case part by this :

    case 1:    // PVP Square
        if (getmapusers(.pvp_square$) > 99) callsub S_full;
        callsub S_payment;
        warp .pvp_square$,0,0;
        announce strcharinfo(0)+ " enter " +.pvp_square "",0;
        end;
    case 2:    // PVP Nightmare
        if (getmapusers("guild_vs3") > 99) callsub S_full;
        callsub S_payment;
        warp "guild_vs3",0,0;
        announce strcharinfo(0)+ " enter guild_vs3",0;
        end;
    case 3:    // PVP LowLevel
        if (getmapusers("guild_vs1") > 99) callsub S_full;
        if (BaseLevel > 150) { // Edit 150 to any maximum Lvl of a player can enter this room
            mes "only Base Level 1 - 150 may enter.";
            close;
        }
        callsub S_payment;
        warp "guild_vs1",0,0;
        announce strcharinfo(0)+ " enter guild_vs1",0;
        end;
    case 4:    // PVP NoPotion
        if (getmapusers("pvp_y_8-2") > 99) callsub S_full;
        for( set .@i,0; .@i<getarraysize(.NoPotion_ids); set .@i,.@i+1 ) {
            if (countitem(.NoPotion_ids[.@i])) {
                mes "You can not bring potions in this pvp.";
                close;
            }
        }
        callsub S_payment;
        warp "pvp_y_8-2",0,0;
        announce strcharinfo(0)+ " enter pvp_y_8-2",0;
        end;
    case 5:    // Non Donator PVP
        if (getmapusers("1@orcs") > 99) callsub S_full;
        for( set .@i,0; .@i<getarraysize(.NoDonator_ids); set .@i,.@i+1 ) {
            if (countitem(.NoDonator_ids[.@i])) {
                mes "You can not bring God items in this pvp.";
                close;
            }
        }
        callsub S_payment;
        warp "1@orcs",0,0;
        announce strcharinfo(0)+ " enter 1@orcs",0;
        end;
    Case 6: // Baby PvP Room
        if (getmapusers("pvp_y_1-2") > 99) callsub S_full;
        if (class < 4023 || class > 4045) goto L_NotBaby;
        callsub S_payment;
        warp "pvp_y_1-2",0,0;
        announce strcharinfo(0)+ " enter pvp_y_1-2",0;
        end;

 

also announce if the player kill someone

Put this :

OnPCKillEvent:
    if ( strcharinfo(3) == "your_pvp_map" )
        announce strcharinfo(0)+ " killed " +rid2name(killedrid);
    end;

Thanks a lot sir now it is working but then i dunno how or where should i place the OnPCKillEvent for it to work properly, can you please make it for me sir?

I place it somewhere on the script but it is now working well :(

THANKS IN ADVANCE :)

Edited by gmmontoy

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...