viewing paste Unknown #8135 | 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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276
/*====================================================================================*/
/*==============================Monster Invasion Event================================*/
/*====================================================================================*/
/*==============================By:Night Terror=======================================*/
/*====================================================================================*/
/*===Inspired by: Automated MVP Event by xMachina / Acetito and Emistry===============*/
/*====================================================================================*/
/*=== v0.9 ================================================English Version============*/
 
 
function    script  F_IsMapValid    {               //Check if Map is set
    if(getarg(0)!="")
        return "["+getarg(0)+"]";
    else
        return "";
}
 
function    script  F_IsItemValid   {               //Check if Item is set
    if(getarg(0)!=0)
        return "["+getitemname(getarg(0))+" x "+$@Amount+"]";
    else
        return "";
}
 
function    script  F_IsMobValid    {               //Check if Monster is set
    if(getarg(0)!=0)
        return "["+getmonsterinfo(getarg(0),0) + " x " +getarg(1)+"]";
    else
        return "";
}
 
function    script  F_ChooseMob {                   //Monster & Monster amount list 
 
    
    switch(select("Weaker Monsters:Stronger Monsters")){
    
        Case 1:
        
        set @Monsters[getarg(0)],$@Monsteridstrong[select("Arclouse:Baba Yaga:Baby Leopard:Baphomet Jr.:Bloody Butterfly:Dark Frame:Dragon Tail:Evil Cloud Hermit:Giant Whisper:Grand Peco:Greatest General:High Orc:Hill Wind:Hyegun:Hylozoist:Li Me Mang Ryang / Jing Guai:Live Peach Tree / Enchanted Peach Tree:Marine Sphere:Miyabi Ningyo / Miyabi Doll:Myst Case:Nereid:Orc Archer:Orc Baby:Raydric Archer:Remover:Sea Otter:Side Winder:Stone Shooter:Wanderer:Wind Ghost:Wooden Golem")]; 
 
        break;
            
        
        Case 2: 
        
        set @Monsters[getarg(0)],$@Monsteridweak[select("Am Mut:Ancient Mummy:Firelock Soldier:Armeyer Dinze:Bloody Knight:Bloody Murderer:Bow Guardian:Cat o' Nine Tails:Dark Illusion:Eremes Guile:Errende Ebecee:Howard Alt-Eisen:Ice Titan:Imp:Kavach Icarus:Knight of Abyss:Loli Ruri:Margaretha Sorin:Mutant Dragonoid:Observation:Owl Duke:Ragged Zombie:Laurell Weinder:Retribution:Sword Guardian:The Paper:Tirfing/Ogretooth:Wickebine Tres:Wicked Nymph:Zealotus:Zombie Prisoner")]; 
 
        break;
    }   
    for (set @i,0; @i < 7; set @i,@i+1) {           //Check if Monster is already chosen
        if (@Monsters[getarg(0)]==@Monsters[@i] && @i!=getarg(0)){          //Clean Monster from list if Monster is already chosen
            set @Monsters[getarg(0)],0;
        }
    }
    
    input @MobAmount[getarg(0)],20,300;
 
    return 0;
 
 
}
 
function    script  F_ClearGarbagez {               //Clean previous inputs
 
    cleararray @Monsters,0,7;
    cleararray @MobAmount,0,7;
    set $@ItemID,0;
    set $@Map$,"prontera";
    return 0;
}
 
 
prontera,159,165,5  script  Monster Invasion Helper::MonsterInvasion    402,{ 
 
 
    //define monsterlist and itemlist
    setarray $@Monsteridweak[1],1301,1297,1403,1654,1268,1507,1830,1307,1302,1635,1655,1636,1777,1837,1656,1219,1502,1637,1262,1700,1320,1865,1657,1702,1829,1375,1204,1653,1416,1200,1197;
    setarray $@Monsteridstrong[1],1194,1882,1415,1101,1408,1260,1321,1412,1186,1369,1277,1213,1680,1512,1510,1517,1410,1142,1404,1249,1255,1189,1686,1276,1682,1323,1037,1495,1208,1236,1497;
    setarray $@Healitem[1],521,12321,505,548,547,12123,12299,12320,12016,607;
    setarray $@Useableitem[1],662,12354,12257,12704,14598,12212,12135,14607,12268,12128,12266,12310,14601,12019;
    
    if(getgmlevel() < 20)               //check if GM Lvl is high enough
        warp "prontera",156,184;
        
    if($@Event!=0){                                 //Check if Event is already running
        mes "[ ^0C66C0Event Helper^000000 ]";
        mes "Event is already running!";
        close;
    }
    set $@Map$,"prontera";              //default map=prontera
    while(1)
    {
        mes "[ ^0C66C0Event Helper^000000 ]";
        mes "Please choose your parameters.";
        next;
        switch(select("Item "+callfunc("F_IsItemValid",$@ItemID)+":Map " +callfunc("F_IsMapValid",$@Map$)+":Monster:Clear current values:Start Event!")){
            Case 1:   
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "The reward for the top 10 killers.";
                    mes "The player with the most kills gets the amount of items you choose, the following ranks get 10% less per rank.";
                    next;
                    message strcharinfo(0),"Please choose the item!";
                    switch(select("RMS Healing Items:RMS Useable Items")){          //Item & Item amount list, sorted like rms does
                        Case 1:
                        
                            set $@ItemID,$@Healitem[select("Aloe Leaflet:Arunafeltz Desert Sandwich:Blue Potion:Cheese:White Slim Potion:Honey Pastry:Status Resist Potion:Poison Bottle:Schwartzwald Pine Jubilee:Speed Potion:Yggdrasil Berry")];     
        
                            break;
                        Case 2:
                                            
                            set $@ItemID,$@Useableitem[select("Authoritative Badge:Buche De Noel:Cold Medicine:Elixir of Life:Ghostring Scroll:Giant Fly Wing:Green Ale:Luxurious Western Food:Rainbow Cake:Royal Cooking Kit:Sesame Pastry:Spray Of Flowers:Tyr's Blessing:Holy Egg")];
                        
                            break;
                            
                    }
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "Choose the desired amount, 1 is the minimum, 100 the maximum.";
                    next;
                    input $@Amount,1,100;                               
                    break;                      
            Case 2:
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "Please choose your desired map!";
                    mes "Obviously, the map has to be valid.";    
                    next;
                    do{                             //Loop to ensure valid map
                    input $@Map$;}while(getmapmobs($@Map$) == -1 );
                    break;
            Case 3:
            
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "Which monster do you want to spawn?";
                    mes "You can spawn 7 different monsters.";
                    mes "Minimum monster amount is 20, maximum is 300";
                    next;
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "Please choose the desired monster and the desired amount.";
                    next;
                    //Stay in menu until player has chosen all monsters he wants
                    while(1){
                        set @ChosenPlace,select("Mob 1 - "+callfunc("F_IsMobValid",@Monsters[0],@MobAmount[0])+":Mob 2 - "+callfunc("F_IsMobValid",@Monsters[1],@MobAmount[1])+":Mob 3 - "+callfunc("F_IsMobValid",@Monsters[2],@MobAmount[2])+":Mob 4 - "+callfunc("F_IsMobValid",@Monsters[3],@MobAmount[3])+":Mob 5 - "+callfunc("F_IsMobValid",@Monsters[4],@MobAmount[4])+":Mob 6 - "+callfunc("F_IsMobValid",@Monsters[5],@MobAmount[5])+":Mob 7 - "+callfunc("F_IsMobValid",@Monsters[6],@MobAmount[6])+":No more monsters.")-1;
                        
                        if(@ChosenPlace>6) break;
                            callfunc("F_ChooseMob",@ChosenPlace);
                    }
                    break
                        
                
            Case 4: 
                    callfunc("F_ClearGarbagez");
                    break;
            Case 5:    
 
                    if( $@Map$ == "" || @Monsters[0] == 0){             //Check if Map and Monsters are set
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "Please check your parameters.";
                    next;
                    break;
                    }
 
                    setarray $@randnum[0],rand(30,60),rand(200,300),rand(450,500),rand(900,1000);
                    mes "[ ^0C66C0Event Helper^000000 ]";
                    mes "The Event has been started!";
                    set $@Event,1;
                    
 
                    close2;
                    announce "Monsters have been sighted at "+$@Map$+"! Keep pushing them back!",bc_all,0xFFFF86;
                    if ($@ItemID != 0)
                    announce "The reward for the best killer will be "+$@Amount+" x "+getitemname($@ItemID)+". Subsequent killers receive 10% less per rank until rank 10." ,bc_all,0xFFFF86;
                    sleep2 2500;
                    announce "The following monsters have been sighted:",bc_all,0xB7D2E9;
                    sleep2 1000;
                    for (set @i,0; @i < 7; set @i,@i+1){                //Spawn Monsters and announce them
                        if(@Monsters[@i]!=0){
                        announce getmonsterinfo(@Monsters[@i],0)+" x "+@MobAmount[@i],bc_all,0xB7D2E9;
                        monster $@Map$,0,0,"--ja--",@Monsters[@i],@MobAmount[@i],strnpcinfo(3)+"::OnMobKill";
                        }
                    }
 
                    end;
                
                
        }
        
        
    }
            
        
    OnMobKill:  
        if (mobcount($@Map$,strnpcinfo(3)+"::OnMobKill") <= $@randnum[0] && mobcount($@Map$,strnpcinfo(3)+"::OnMobKill") > 5 || mobcount($@Map$,strnpcinfo(3)+"::OnMobKill") == $@randnum[1] || mobcount($@Map$,strnpcinfo(3)+"::OnMobKill") == $@randnum[2] || mobcount($@Map$,strnpcinfo(3)+"::OnMobKill") == $@randnum[3]) 
        announce "Only "+mobcount($@Map$,strnpcinfo(3)+"::OnMobKill")+" Monsters left to kill.",bc_all,0xFFFF46;        //announce remaining monsters
        
        for(set @i,0; @i < 127; set @i,@i+1){                           //Register the killer and add points
            if($@killer$[@i] == ""){
                    
                for (set @j,0; @j < 127; set @j,@j+1){
                    if($@killer$[@i]==$@killer$[@j] && $@killer$[@i]!= "")
                        goto Nameexists;            
                }
 
                set $@killer$[@i],strcharinfo(0);
                set $@kills[@i],$@kills[@i]+1
                
                break;
            
            }
            else if($@killer$[@i] == strcharinfo(0)){
                Nameexists:
                set $@kills[@i],$@kills[@i]+1;
                break;
            }
 
        }
        
        
        if(mobcount($@Map$,strnpcinfo(3)+"::OnMobKill") <=5){           //If 5 or less mobs remain: kill all mobs, bubblesort the top 15 killers,announce the top 15 killers and give items (if set) to the Top 10.
            killmonster $@Map$,"All";
            announce "Most of the monsters have been defeated!",bc_all,0xFFFF46;
            sleep2 2000;
            announce "Our local guards managed to fend the remaining monsters off.",bc_all,0xFFFF46;
            sleep2 2000;
            announce "Let's look at the results:",bc_all,0xFFFF46;
            sleep2 1000;
            
            for (set @i,0; @i < 15; set @i,@i+1){                       //Do the Bubblesort
                for (set @j,0; @j < 15; set @j,@j+1){                   
                    if ($@kills[@j] < $@kills[@j+1]){                   
                        set @tmpkills, $@kills[@j+1];
                        set @tmpkillers$, $@killer$[@j+1];
                        set $@kills[@j+1], $@kills[@j];
                        set $@killer$[@j+1],$@killer$[@j];
                        set $@kills[@j], @tmpkills;
                        set $@killer$[@j], @tmpkillers$;
                    }
                }
             }
             
            for(set @i,0; @i < 15; set @i,@i+1){                        //Announce Top 15
                if($@killer$[@i] != "")
                announce @i+1+". Place: "+$@killer$[@i]+" with "+$@kills[@i]+" Monsters killed.",bc_all,0xB7D2E9;
            }   
            
            
            if ($@ItemID != 0){                                         //Give item if set, 10% less per rank
                for(set @i,0; @i < 10; set @i,@i+1){
                    if ($@killer$[@i]!=""){ 
                        getitem $@ItemID,$@Amount-$@Amount*@i/10,getcharid(3,$@killer$[@i]);    
                        
                    }
                }
            }
            
            
            logmes "Monster Invasion complete, the Top 1 Killer is " + $@killer$[0] + " with "+$@kills[0]+ " Kills. The reward was " +getitemname($@ItemID)+ " x "+$@Amount+". This was the "+$Invasioncount+". custom Monster Invasion.";
            set $Invasioncount,$Invasioncount+1;
            
            //Clear variables
            cleararray $@kills[0],0,200;
            cleararray $@killer$[0],"",200;
            cleararray $@flag[0],0,10;
            set $@Event,0; 
 
        }       
    
}
 
 
 
 
 
 
 
 
 
 
Viewed 1074 times, submitted by Guest.