viewing paste topic/15913-a instanced_bg_emp | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
prontera,150,185,5  script  bg_emp  1_F_MARIA,{
    .@it = queueiterator( .qid );
    for ( .@aid = qiget(.@it); qicheck(.@it); .@aid = qiget(.@it) ) {
        if ( .@aid == getcharid(3) ) {
            mes "You already join the queue.";
            qiclear .@it;
            close;
        }
    }
    qiclear .@it;
    select "join";
    mes "you have to stick to this map";
    close2;
    queueadd .qid, getcharid(3);
    if ( queuesize(.qid) < .minplayer2start *2 ) {
        announce queuesize(.qid) +" players join", bc_npc | bc_area;
        end;
    }
    if ( ( .@ins = instance_create( "bg_emp", 0, IOT_NONE ) ) < 0 ) {
        announce "Fail to create instanced battleground.", bc_all;
        end;
    }
    if ( !getstrlen( instance_attachmap( "bat_a02", .@ins, true, .@ins +"BG_EMP" ) ) ) {
        announce "Fail to create instanced battleground.", bc_all;
        end;
    }
    instance_set_timeout .eventlasting * 60 +30, 0, .@ins;
    instance_init .@ins;
    queuedel .qid;
L_QueueRegister:
    .qid = queue();
    queueopt .qid, QUEUEOPT_LOGOUT, strnpcinfo(0)+"::OnQuitRegister";
    queueopt .qid, QUEUEOPT_MAPCHANGE, strnpcinfo(0)+"::OnQuitRegister";
    end;
OnQuitRegister:
    queueremove .qid, getcharid(3);
    end;
OnInit:
    .minplayer2start = 2;      // minimum players to start (ex. if 3vs3, set to 3)
    .eventlasting    = 20*60;  // event duration before auto-reset (20 minutes * seconds)
    setarray .rewarditem[0],   // rewards for the winning team: <item>,<amount>,...
        501, 10;
    goto L_QueueRegister;
}
 
bat_a02,0,0,0   script  bg_emp#ins  FAKE_NPC,{
    end;
OnInstanceInit:
    'map$ = strnpcinfo(NPC_MAP);
    'main$ = "bg_emp";
    'red = bg_create_team( 'map$, 157,347 );
    'blue = bg_create_team( 'map$, 142,51 );
    'qred = queue();
    'qblue = queue();
    queueopt 'qred, QUEUEOPT_DEATH, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnRedDead";
    queueopt 'qred, QUEUEOPT_LOGOUT, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnRedQuit";
    queueopt 'qblue, QUEUEOPT_DEATH, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnBlueDead";
    queueopt 'qblue, QUEUEOPT_LOGOUT, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnBlueQuit";
    .@it = queueiterator( getvariableofnpc( .qid, 'main$ ) );
    for ( .@num = qiget(.@it); qicheck(.@it); .@num = qiget(.@it) )
        .@aid[.@size++] = .@num;
    qiclear .@it;
    callfunc "F_ShuffleNumbers", 0, .@size -1, .@r;
    for ( .@i = 0; .@i < .@size; ++.@i ) {
        bg_join_team ( .@i % 2 )? 'red : 'blue, .@aid[ .@r[.@i] ];
        queueadd ( .@i % 2 )? 'qred : 'qblue, .@aid[ .@r[.@i] ];
    }
    bg_warp 'red, 'map$, 171,346;
    bg_warp 'blue, 'map$, 162,50;
    queueopt 'qred, QUEUEOPT_MAPCHANGE, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnRedMapChange";
    queueopt 'qblue, QUEUEOPT_MAPCHANGE, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnBlueMapChange";
    setwall 'map$, 164,347, 6, 4, 0, "bg_emp_red"+ 'red;
    setwall 'map$, 154,51, 6, 4, 0, "bg_emp_blue"+ 'blue;
    sleep 6000;
    instance_announce -1, "The rules are simple. The first team to break the opponent's Emperium wins!", bc_map;
    sleep 3000;
    for ( .@i = 5; .@i > 0; --.@i ) {
        instance_announce -1, "["+ .@i +"]", bc_map;
        sleep 1000;
    }
    instance_announce -1, "Start!", bc_map;
    .@red_crystal = bg_monster( 'red, 'map$, 171,346, "--ja--", 1915, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnRedDown" );
    .@blue_crystal = bg_monster( 'blue, 'map$, 162,50, "--ja--", 1914, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnBlueDown" );
//  setunitdata .@red_crystal, UDT_HP, 5;
//  setunitdata .@blue_crystal, UDT_HP, 5;
    delwall "bg_emp_red"+ 'red;
    delwall "bg_emp_blue"+ 'blue;
    sleep getvariableofnpc( .eventlasting, 'main$ ) * 1000;
    killmonster 'map$, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnRedDown";
    killmonster 'map$, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnBlueDown";
    if ( 'winside ) {
        instance_announce -1, "- "+( ('winside == 'qred)? "Red" : "Blue" )+" Team is victorious! -", bc_map;
        .@it = queueiterator('winside);
        for ( .@aid = qiget(.@it); qicheck(.@it); .@aid = qiget(.@it) )
            getitem getvariableofnpc( .rewarditem[0], 'main$ ), getvariableofnpc( .rewarditem[1], 'main$ ), .@aid;
        qiclear .@it;
    } else
        instance_announce -1, "- The match has ended in a draw! -", bc_map;
    sleep 5000;
    bg_warp 'red, "prontera", 150,182;
    bg_warp 'blue, "prontera", 150,182;
    bg_destroy 'red;
    bg_destroy 'blue;
    queuedel 'qred;
    queuedel 'qblue;
    instance_destroy;
    end;
OnRedDown:  callsub L_EmpDown, "Red", 'qblue;
OnBlueDown: callsub L_EmpDown, "Blue", 'qred;
L_EmpDown:
    instance_announce -1, strcharinfo(0) +" has destroyed "+ getarg(0) +" Team's Emperium.", bc_map;
    'winside = getarg(1);
    awake instance_npcname( strnpcinfo(0) );
    end;
OnRedDead:
OnBlueDead:
    sleep2 1250;
    percentheal 100,100;
    end;
OnRedMapChange: OnRedQuit:   callsub L_Quit, 'qred, "Red", 'qblue;
OnBlueMapChange: OnBlueQuit: callsub L_Quit, 'qblue, "Blue", 'qred;
L_Quit:
    bg_leave;
    queueremove getarg(0), getcharid(3);
    percentheal 100, 100;
    if ( !queuesize( getarg(0) ) ) {
        instance_announce -1, "All "+ getarg(1) +" team members have quit!", bc_map, C_RED;
        'winside = getarg(2);
        awake instance_npcname( strnpcinfo(0) );
    }
    end;
}
bat_a02 mapflag battleground
bat_a02 mapflag nosave  SavePoint
bat_a02 mapflag nowarp
bat_a02 mapflag nowarpto
bat_a02 mapflag noteleport
bat_a02 mapflag nomemo
bat_a02 mapflag nopenalty
bat_a02 mapflag nobranch
bat_a02 mapflag noicewall
Viewed 1046 times, submitted by AnnieRuru.