(RuneScape Private Server) sem hamachi

Como prometido, hoje eu vo ensinar a fazer um RSPS (RuneScape Private Server) sem hamachi.

Primeiro, os links de download.

CLIENT = BAIXAR CLIENT
SOURCE(Todos os dupes corrigidos) = 
BAIXAR SOURCE
NO IP = 
BAIXAR NO-IP
JAVA = BAIXAR JAVA
JDK = BAIXAR JDK
NOTEPAD ++ = BAIXAR NOTEPAD++



TUTORIAL

1) Depois de ter baixado tudo extraia o client e o source.


2) Instale o NO-IP. 


3) Vá no site www.no-ip.com


4) Criar uma conta 

Para criar uma conta com o No-IP.com simplesmente clique no link "Sign-up Now!"
tno topo da página, ou clique aqui.
Preencha o formulário de nova conta completando os campos necessários. Por favor note que as nossas Condições de Serviço
requerem 
informação válida relativamente ao seu contacto de forma a manter a sua
conta connosco. Qualquer conta encontrada com informação incompleta ou 
fraudulenta será cancelada. 

Quando tiver preenchido a informação necessária e
aceite as nossas condiçoes de serviço, clique no botão "Sign Up Now!" 
no fundo da página.
Qunado tiver submetido a informação da sua conta para o formulário do novo usuário, nós mandar-lhe-emos um email de 
confirmação para o endereço que forneceu.Terá que verificar essa conta e procurar 
o email de No-IP.com O email contem um link que terá que clicar para confirmar a sua conta.

Agora que já confirmou a sua conta, pode aceder ao No-IP.com. No topo da página base do No-IP, debaixo do logotipo do 
No-IP, verá um sítio para inserir o
seu endereço de correio electrónico e password. Insira a informação com
que assinou e clique "Login." 




  • Preencha o Hostname: caixa com um nome de sua escolha. 
    Poderá ser o que quiser. Se escolher um nome que já está a ser 
    utilizado, será gerado um erro e depois poderá tentar um hostname 
    diferente. Visto os hostnames serem únicos por domínio, poderá tentar 
    utilizar o mesmo hostname e apenas seleccionar um domínio diferente do 
    menu suspenso em baixo de forma a ver se essa combinação está 
    disponível.
  • 2. Seleccione um domínio disponível do menu suspenso.Note que alguns domínios estão reservados exclusivamente a clients No-IP Enhanced.
  • Escolha o Host Type. A escolha por defeito, DNS Host 
    A, é normalmente a correcta. Não escolha outros host types a não ser que
    esteja a tentar resolver um 
    problema específico que uma DNS A record não acomodará. Se o seu ISP 
    bloquear o Port 80 por exemplo, e está a tentar correr um servidor da 
    internet ou outro serviço no port 80, 
    então poderá escolher o Port 80 Redirect (altura em que lhe será pedido
    para especificar o port a utilizar para a redirecção). Se não estiver a
    correr um servidor da internet, então não escolha esta opção pois 
    poderá impedi-lo de se ligar correctamente.
  • No campo IP Address: Deverá já ver o seu endereço IP 
    corrente. Se desjar colocar o endereço IP do host noutro sítio sem ser o
    seu actual local, poderá inserir esse endereço agora.
  • As próximas duas opções não são utilizadas para a criação de 
    uma conta básica, daí não nos preocuparmos com as mesmas neste artigo.
  • Quando tiver preenchido a informação para o seu novo 
    hostname,simplesmente clique no botão "Create Host" no fundo da página 
    para o guardar.

5) Extraia o client e o source. Abra o [PI]Client, e procure por client(Extensão java). Aperte o Ctrl+F e procure por "127.0.0.1", se estiver bagunçado, use o Notepad++ para ajuda-lo. Entao, mude todos os 127.0.0.1 pelo host criado no No-IP.


6) Clique com o botão direito no 2.Compile, e clique em EDITAR. Apague tudo que estiver escrito. E copie-cole isto nele.

SPOILER:


Se funcionar , irá aparecer isto


Se falar que o caminh nao foi especificado , mude o "1.6.0_21" pela versão do seu JDK.


7) Abra o No-IP e digite o email e senha usados no passo 4.

8) Abra a pasta [PI~]Server , e abra o 1.Run.

9) Abra a pasta [PI]Client e abra o 1.Run.

10) Logue e tenha um bom jogo.

SE TIVER ERROS , POSTE-OS AQUI!!! =)

Como Adicionar Nex Para Seu Server De Runescape Privado

Olá Pessoal da Bomba Games, Esse guia serve para como adicionar nex para seu server de runescape privado como o titulo do falava, esse guia so funciona para servervidos com a versao 718/734+, antes que voce pergunte o codigo foi feito por min, se achar um diferente nao diga que esta errado pois cada Developer faz seus tipos de Codigos Diferentes

Bom Vamos Comecar. (Obs : Se achar dificil achar os lugares baixe o Eclipse, Para o Source nao para o Client.

Primeiro Abra Nex.java, e procure por :

CÓDIGO:
setNextForceTalk(new ForceTalk("NOW, THE POWER OF ZAROS!"));


Substitua isso Por :

CÓDIGO:
setNextAnimation(new Animation(17410));


Agora vá para NexCombat.java e tiro tudo oque esta lá e Ponha :

CÓDIGO:
package com.rs.game.npc.combat.impl;
 
import java.util.ArrayList;
import java.util.HashMap;
 
import com.rs.cache.loaders.NPCDefinitions;
import com.rs.game.Animation;
import com.rs.game.Entity;
import com.rs.game.ForceMovement;
import com.rs.game.ForceTalk;
import com.rs.game.Graphics;
import com.rs.game.Hit;
import com.rs.game.Hit.HitLook;
import com.rs.game.World;
import com.rs.game.WorldObject;
import com.rs.game.WorldTile;
import com.rs.game.npc.NPC;
import com.rs.game.npc.combat.CombatScript;
import com.rs.game.npc.combat.NPCCombatDefinitions;
import com.rs.game.npc.godwars.zaros.Nex;
import com.rs.game.player.Player;
import com.rs.game.player.cutscenes.NexCutScene;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
import com.rs.utils.Utils;
 
public class NexCombat extends CombatScript {
 
    @Override
    public Object[] getKeys() {
        return new Object[] {
            "Nex"
        };
    }
 
    public WorldTile[] NO_ESCAPE_TELEPORTS = {
        new WorldTile(2924, 5213, 0), // north
        new WorldTile(2934, 5202, 0), // east,
        new WorldTile(2924, 5192, 0), // south
        new WorldTile(2913, 5202, 0),
    }; // west
 
    @Override
    public int attack(final NPC npc, final Entity target) {
        final NPCCombatDefinitions defs = npc.getCombatDefinitions();
        final Nex nex = (Nex) npc;
        int size = npc.getSize();
        // attacks close only
        if (nex.isFollowTarget()) {
            int distanceX = target.getX() - npc.getX();
            int distanceY = target.getY() - npc.getY();
            if (distanceX > size || distanceX < -1 || distanceY > size || distanceY < -1) return 0;
            nex.setFollowTarget(Utils.getRandom(1) == 0);
            // first stage close attacks
            if (nex.getAttacksStage() == 0) {
                // virus 1/3 probability every 1min
                if (nex.getLastVirus() < Utils.currentTimeMillis() && Utils.getRandom(2) == 0) {
                    nex.setLastVirus(Utils.currentTimeMillis() + 60000);
                    npc.setNextForceTalk(new ForceTalk("Let the virus flow through you."));
                    nex.playSound(3296, 2);
                    npc.setNextAnimation(new Animation(17413));
                    nex.sendVirusAttack(new ArrayList < Entity > (),
                    npc.getPossibleTargets(), target);
                    return defs.getAttackDelay();
                }
            }
            // no escape, 1/10 probability doing it
            if (Utils.getRandom(nex.getStage() == 4 ? 5 : 10) == 0) {
                npc.setNextForceTalk(new ForceTalk("There is..."));
                nex.playSound(3294, 2);
                npc.setCantInteract(true);
                npc.getCombat().removeTarget();
                final int idx = Utils.random(NO_ESCAPE_TELEPORTS.length);
                final WorldTile dir = NO_ESCAPE_TELEPORTS[idx];
                final WorldTile center = new WorldTile(2924, 5202, 0);
                WorldTasksManager.schedule(new WorldTask() {
                    private int count;
 
                    @Override
                    public void run() {
                        if (count == 0) {
                            npc.setNextAnimation(new Animation(17411));
                            npc.setNextGraphics(new Graphics(1216));
                        } else if (count == 1) {
                            nex.setNextWorldTile(dir);
                            nex.setNextForceTalk(new ForceTalk("NO ESCAPE!"));
                            nex.playSound(3292, 2);
                            nex.setNextForceMovement(new ForceMovement(dir, 1,
                            center, 3, idx == 3 ? 1 : idx == 2 ? 0 : idx == 1 ? 3 : 2));
                            for (Entity entity: nex.calculatePossibleTargets(
                            center, dir, idx == 0 || idx == 2)) {
                                if (entity instanceof Player) {
                                    Player player = (Player) entity;
                                    player.getCutscenesManager().play(
                                    new NexCutScene(dir, idx));
                                    player.applyHit(new Hit(
                                    npc,
                                    Utils.getRandom(nex.getStage() == 4 ? 800 : 650),
                                    HitLook.REGULAR_DAMAGE));
                                    player.setNextAnimation(new Animation(17408));
                                    player.setNextForceMovement(new ForceMovement(
                                    player, 1, idx == 3 ? 3 : idx == 2 ? 2 : idx == 1 ? 1 : 0));
                                }
                            }
                        } else if (count == 3) {
                            nex.setNextWorldTile(center);
                        } else if (count == 4) {
                            nex.setTarget(target);
                            npc.setCantInteract(false);
                            stop();
                        }
                        count++;
                    }
                }, 0, 1);
                return defs.getAttackDelay();
            }
            // normal melee attack
            int damage = getRandomMaxHit(npc, defs.getMaxHit(),
            NPCCombatDefinitions.MELEE, target);
            delayHit(npc, 0, target, getMeleeHit(npc, damage));
            npc.setNextAnimation(new Animation(defs.getAttackEmote()));
            return defs.getAttackDelay();
            // far attacks
        } else {
            nex.setFollowTarget(Utils.getRandom(1) == 0);
            // drag a player to center
            if (Utils.getRandom(15) == 0) {
                int distance = 0;
                Entity settedTarget = null;
                for (Entity t: npc.getPossibleTargets()) {
                    if (t instanceof Player) {
                        int thisDistance = Utils.getDistance(t.getX(),
                        t.getY(), npc.getX(), npc.getY());
                        if (settedTarget == null || thisDistance > distance) {
                            distance = thisDistance;
                            settedTarget = t;
                        }
                    }
                }
                if (settedTarget != null && distance > 10) {
                    final Player player = (Player) settedTarget;
                    player.lock(3);
                    player.setNextAnimation(new Animation(17408));
                    player.setNextForceMovement(new ForceMovement(nex, 2, Utils.getMoveDirection(
                    npc.getCoordFaceX(player.getSize()) - player.getX(),
                    npc.getCoordFaceY(player.getSize()) - player.getY())));
                    npc.setNextAnimation(new Animation(17414));
                    npc.setTarget(player);
                    player.setNextAnimation(new Animation(17408));
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            player.setNextWorldTile(nex);
                            player.getPackets()
                                .sendGameMessage("You've been injured and you can't use protective curses!");
                            player.setPrayerDelay(Utils.getRandom(20000) + 5); // random
                            // 20
                            // seconds
                            player.getPackets().sendGameMessage("You're stunned.");
                        }
                    });
                    return defs.getAttackDelay();
                }
            }
            // first stage close attacks
            if (nex.getAttacksStage() == 0) {
                npc.setNextAnimation(new Animation(17413));
                for (Entity t: npc.getPossibleTargets()) {
                    World.sendProjectile(npc, t, 471, 41, 16, 41, 35, 16, 0);
                    int damage = getRandomMaxHit(npc, defs.getMaxHit(),
                    NPCCombatDefinitions.MAGE, t);
                    delayHit(npc, 1, t, getMagicHit(npc, damage));
                    if (damage > 0 && Utils.getRandom(5) == 0) // 1/6
                    // probability
                    // poisoning
                    t.getPoison().makePoisoned(80);
                }
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 1) {
                if (!nex.isEmbracedShadow()) {
                    nex.setEmbracedShadow(true);
                    npc.setNextForceTalk(new ForceTalk("Embrace darkness!"));
                    nex.playSound(3322, 2);
                    npc.setNextAnimation(new Animation(17412));
                    npc.setNextGraphics(new Graphics(1217));
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            if (nex.getAttacksStage() != 1 || nex.hasFinished()) {
                                for (Entity entity: nex.getPossibleTargets()) {
                                    if (entity instanceof Player) {
                                        Player player = (Player) entity;
                                        player.getPackets().sendGlobalConfig(
                                        1435, 255);
                                    }
                                }
                                stop();
                                return;
                            }
                            if (Utils.getRandom(2) == 0) {
                                for (Entity entity: nex.getPossibleTargets()) {
                                    if (entity instanceof Player) {
                                        Player player = (Player) entity;
                                        int distance = Utils.getDistance(
                                        player.getX(), player.getY(),
                                        npc.getX(), npc.getY());
                                        if (distance > 30) distance = 30;
                                        player.getPackets().sendGlobalConfig(
                                        1435, (distance * 255 / 30));
                                    }
                                }
                            }
                        }
                    }, 0, 0);
                    return defs.getAttackDelay();
                }
                if (!nex.isTrapsSettedUp() && Utils.getRandom(2) == 0) {
                    nex.setTrapsSettedUp(true);
                    npc.setNextForceTalk(new ForceTalk("Fear the Shadow!"));
                    nex.playSound(3314, 2);
                    npc.setNextAnimation(new Animation(17407));
                    npc.setNextGraphics(new Graphics(1215));
                    ArrayList < Entity > possibleTargets = nex.getPossibleTargets();
                    final HashMap < String, int[] > tiles = new HashMap < String, int[] > ();
                    for (Entity t: possibleTargets) {
                        String key = t.getX() + "_" + t.getY();
                        if (!tiles.containsKey(t.getX() + "_" + t.getY())) {
                            tiles.put(key, new int[] {
                                t.getX(), t.getY()
                            });
                            World.spawnTemporaryObject(new WorldObject(57261,
                            10, 0, t.getX(), t.getY(), 0), 2400);
                        }
                    }
                    WorldTasksManager.schedule(new WorldTask() {
                        private boolean firstCall;
 
                        @Override
                        public void run() {
                            if (!firstCall) {
                                ArrayList < Entity > possibleTargets = nex.getPossibleTargets();
                                for (int[] tile: tiles.values()) {
                                    World.sendGraphics(null, new Graphics(383),
                                    new WorldTile(tile[0], tile[1], 0));
                                    for (Entity t: possibleTargets)
                                    if (t.getX() == tile[0] && t.getY() == tile[1]) t.applyHit(new Hit(npc, Utils.getRandom(400) + 400,
                                    HitLook.REGULAR_DAMAGE));
                                }
                                firstCall = true;
                            } else {
                                nex.setTrapsSettedUp(false);
                                stop();
                            }
                        }
 
                    }, 3, 3);
                    return defs.getAttackDelay();
                }
                npc.setNextAnimation(new Animation(17413));
                for (final Entity t: npc.getPossibleTargets()) {
                    int distance = Utils.getDistance(t.getX(), t.getY(),
                    npc.getX(), npc.getY());
                    if (distance <= 10) {
                        int damage = 800 - (distance * 800 / 11);
                        World.sendProjectile(npc, t, 380, 41, 16, 41, 35, 16, 0);
                        delayHit(
                        npc,
                        1,
                        t,
                        getRangeHit(
                        npc,
                        getRandomMaxHit(npc, damage,
                        NPCCombatDefinitions.RANGE, t)));
                        WorldTasksManager.schedule(new WorldTask() {@Override
                            public void run() {
                                t.setNextGraphics(new Graphics(471));
                            }
                        }, 1);
                    }
                }
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 2) {
                if (Utils.getRandom(4) == 0 && target instanceof Player) {
                    npc.setNextForceTalk(new ForceTalk("I demand a blood sacrifice!"));
                    nex.playSound(3293, 2);
                    final Player player = (Player) target;
                    player.getAppearence().setGlowRed(true);
                    player.getPackets().sendGameMessage("Nex has marked you as a sacrifice, RUN!");
                    final int x = player.getX();
                    final int y = player.getY();
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            player.getAppearence().setGlowRed(false);
                            if (x == player.getX() && y == player.getY()) {
                                player.getPackets()
                                    .sendGameMessage("You didn't make it far enough in time - Nex fires a punishing attack!");
                                npc.setNextAnimation(new Animation(17413));
                                for (final Entity t: npc.getPossibleTargets()) {
                                    World.sendProjectile(npc, t, 374, 41, 16,
                                    41, 35, 16, 0);
                                    final int damage = getRandomMaxHit(npc,
                                    290, NPCCombatDefinitions.MAGE, t);
                                    delayHit(npc, 1, t,
                                    getMagicHit(npc, damage));
                                    WorldTasksManager.schedule(new WorldTask() {@Override
                                        public void run() {
                                            t.setNextGraphics(new Graphics(376));
                                            nex.heal(damage / 4);
                                            if (t instanceof Player) {
                                                Player p = (Player) t;
                                                p.getPrayer()
                                                    .drainPrayerOnHalf();
                                            }
                                        }
                                    }, 1);
                                }
                            }
                        }
                    }, defs.getAttackDelay());
                    return defs.getAttackDelay() * 2;
                }
                if (nex.getLastSiphon() < Utils.currentTimeMillis() && npc.getHitpoints() <= 18000 && Utils.getRandom(2) == 0) {
                    nex.setLastSiphon(Utils.currentTimeMillis() + 30000);
                    nex.killBloodReavers();
                    npc.setNextForceTalk(new ForceTalk("A siphon will solve this!"));
                    nex.playSound(3317, 2);
                    npc.setNextAnimation(new Animation(17409));
                    npc.setNextGraphics(new Graphics(1201));
                    nex.setDoingSiphon(true);
                    int bloodReaverSize = NPCDefinitions.getNPCDefinitions(13458).size;
                    int respawnedBloodReaverCount = 0;
                    int maxMinions = Utils.getRandom(3);
                    if (maxMinions != 0) {
                        int[][] dirs = Utils.getCoordOffsetsNear(bloodReaverSize);
                        for (int dir = 0; dir < dirs[0].length; dir++) {
                            final WorldTile tile = new WorldTile(new WorldTile(
                            target.getX() + dirs[0][dir], target.getY() + dirs[1][dir], target.getPlane()));
                            if (World.canMoveNPC(tile.getPlane(), tile.getX(),
                            tile.getY(), bloodReaverSize)) { // if found
                                // done
                                nex.getBloodReavers()[respawnedBloodReaverCount++] = new NPC(
                                13458, tile, - 1, true, true);
                                if (respawnedBloodReaverCount == maxMinions) break;
                            }
                        }
                    }
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            nex.setDoingSiphon(false);
                        }
                    }, 8);
                    return defs.getAttackDelay();
                }
                npc.setNextAnimation(new Animation(17414));
                World.sendProjectile(npc, target, 374, 41, 16, 41, 35, 16, 0);
                delayHit(
                npc,
                1,
                target,
                getMagicHit(
                npc,
                getRandomMaxHit(npc, defs.getMaxHit(),
                NPCCombatDefinitions.MAGE, target)));
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 3) {
                npc.setNextAnimation(new Animation(17414));
                for (final Entity t: npc.getPossibleTargets()) {
                    World.sendProjectile(npc, t, 362, 41, 16, 41, 35, 16, 0);
                    int damage = getRandomMaxHit(npc, defs.getMaxHit(),
                    NPCCombatDefinitions.MAGE, t);
                    delayHit(npc, 1, t, getMagicHit(npc, damage));
                    if (damage > 0 && Utils.getRandom(5) == 0) { // 1/6
                        // probability
                        // freezing
                        WorldTasksManager.schedule(new WorldTask() {@Override
                            public void run() {
                                t.addFreezeDelay(18000);
                                t.setNextGraphics(new Graphics(369));
                            }
                        }, 2);
 
                    }
                }
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 4) {
                npc.setNextAnimation(new Animation(17413));
                for (Entity t: npc.getPossibleTargets()) {
                    World.sendProjectile(npc, t, 471, 41, 16, 41, 35, 16, 0);
                    int damage = getRandomMaxHit(npc, defs.getMaxHit(),
                    NPCCombatDefinitions.MAGE, t);
                    delayHit(npc, 1, t, getMagicHit(npc, damage));
                }
                return defs.getAttackDelay();
            }
        }
        return defs.getAttackDelay();
    }
}


Agora va Para ZarosGodwars e substitua tudo por :

CÓDIGO:
package com.rs.game.minigames;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
 
import com.rs.cores.CoresManager;
import com.rs.game.Animation;
import com.rs.game.Entity;
import com.rs.game.ForceTalk;
import com.rs.game.Graphics;
import com.rs.game.World;
import com.rs.game.WorldTile;
import com.rs.game.npc.godwars.zaros.Nex;
import com.rs.game.npc.godwars.zaros.NexMinion;
import com.rs.game.player.Player;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
import com.rs.utils.Utils;
 
public final class ZarosGodwars {
 
    private static final List < Player > playersOn = Collections.synchronizedList(new ArrayList < Player > ());
    // private static final Object LOCK = new Object();
 
    public static Nex nex;
    public static NexMinion fumus;
    public static NexMinion umbra;
    public static NexMinion cruor;
    public static NexMinion glacies;
 
    public static int getPlayersCount() {
        return playersOn.size();
    }
 
    public static void breakFumusBarrier() {
        // synchronized(LOCK) {
        if (fumus == null) return;
        fumus.breakBarrier();
        // }
    }
 
    public static void breakUmbraBarrier() {
        // synchronized(LOCK) {
        if (umbra == null) return;
        umbra.breakBarrier();
        // }
    }
 
    public static void breakCruorBarrier() {
        // synchronized(LOCK) {
        if (cruor == null) return;
        cruor.breakBarrier();
        // }
    }
 
    public static void breakGlaciesBarrier() {
        // synchronized(LOCK) {
        if (glacies == null) return;
        glacies.breakBarrier();
        // }
    }
 
    public static void addPlayer(Player player) {
        // synchronized(LOCK) {
        if (playersOn.contains(player)) {
            // System.out.println("ERROR DOUBLE ENTRY!");
            return;
        }
        playersOn.add(player);
        startWar();
        // }
    }
 
    public static void removePlayer(Player player) {
        // synchronized(LOCK) {
        playersOn.remove(player);
        cancelWar();
        // }
    }
 
    public static void deleteNPCS() {
        if (nex != null) {
            nex.killBloodReavers();
            nex.finish();
            nex = null;
        }
        if (fumus != null) {
            fumus.finish();
            fumus = null;
        }
        if (umbra != null) {
            umbra.finish();
            umbra = null;
        }
        if (cruor != null) {
            cruor.finish();
            cruor = null;
        }
        if (glacies != null) {
            glacies.finish();
            glacies = null;
        }
    }
 
    private static void cancelWar() {
        if (getPlayersCount() == 0) deleteNPCS();
    }
 
    public static ArrayList < Entity > getPossibleTargets() {
        // synchronized(LOCK) {
        ArrayList < Entity > possibleTarget = new ArrayList < Entity > (
        playersOn.size());
        for (Player player: playersOn) {
            if (player == null || player.isDead() || player.hasFinished() || !player.isRunning()) continue;
            possibleTarget.add(player);
            /*
            * if (player.getFamiliar() != null &&
            * player.getFamiliar().isAgressive())
            * possibleTarget.add(player.getFamiliar());
            */
        }
        return possibleTarget;
        // }
    }
 
    public static void moveNextStage() {
        // synchronized(LOCK) {
        if (nex == null) return;
        nex.moveNextStage();
        // }
    }
 
    public static void endWar() {
        // synchronized(LOCK) {
        deleteNPCS();
        CoresManager.slowExecutor.schedule(new Runnable() {
 
            @Override
            public void run() {
                startWar();
            }
 
        }, 1, TimeUnit.MINUTES);
        // }
    }
 
    private static void startWar() {
        if (getPlayersCount() >= 1) {
            if (nex == null) {
                World.spawnNPC(13447, new WorldTile(2924, 5202, 0), - 1, true,
                true);
                WorldTasksManager.schedule(new WorldTask() {
                    private int count = 0;
 
                    @Override
                    public void run() {
                        // synchronized(LOCK) {
                        if (nex == null) {
                            stop();
                            return;
                        }
                        if (count == 1) {
                            nex.setNextForceTalk(new ForceTalk("AT LAST!"));
                            nex.setNextAnimation(new Animation(17412));
                            nex.setNextGraphics(new Graphics(1217));
                            nex.playSound(3295, 2);
                        } else if (count == 3) {
                            World.spawnNPC(13451, new WorldTile(2913, 5215, 0), - 1, true, true);
                            fumus.setDirection(Utils.getFaceDirection(1, - 1));
                            nex.setNextFaceWorldTile(new WorldTile(fumus.getCoordFaceX(fumus.getSize()), fumus.getCoordFaceY(fumus.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Fumus!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(fumus, nex, 2244, 18, 18, 60,
                            30, 0, 0);
                            nex.playSound(3325, 2);
                        } else if (count == 5) {
                            World.spawnNPC(13452, new WorldTile(2937, 5215, 0), - 1, true, true);
                            umbra.setDirection(Utils.getFaceDirection(-1, - 1));
                            nex.setNextFaceWorldTile(new WorldTile(umbra.getCoordFaceX(umbra.getSize()), umbra.getCoordFaceY(umbra.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Umbra!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(umbra, nex, 2244, 18, 18, 60,
                            30, 0, 0);
                            nex.playSound(3313, 2);
                        } else if (count == 7) {
                            World.spawnNPC(13453, new WorldTile(2937, 5191, 0), - 1, true, true);
                            cruor.setDirection(Utils.getFaceDirection(-1, 1));
                            nex.setNextFaceWorldTile(new WorldTile(cruor.getCoordFaceX(cruor.getSize()), cruor.getCoordFaceY(cruor.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Cruor!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(cruor, nex, 2244, 18, 18, 60,
                            30, 0, 0);
                            nex.playSound(3299, 2);
                        } else if (count == 9) {
                            World.spawnNPC(13454, new WorldTile(2913, 5191, 0), - 1, true, true);
                            glacies.setNextFaceWorldTile(new WorldTile(glacies.getCoordFaceX(glacies.getSize()), glacies.getCoordFaceY(glacies.getSize()), 0));
                            glacies.setDirection(Utils.getFaceDirection(1, 1));
                            nex.setNextFaceWorldTile(new WorldTile(glacies.getCoordFaceX(glacies.getSize()), glacies.getCoordFaceY(glacies.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Glacies!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(glacies, nex, 2244, 18, 18,
                            60, 30, 0, 0);
                            nex.playSound(3304, 2);
                        } else if (count == 11) {
                            nex.setNextForceTalk(new ForceTalk("Fill my soul with smoke!"));
                            World.sendProjectile(fumus, nex, 2244, 18, 18, 60,
                            30, 0, 0);
 
                            nex.playSound(3310, 2);
                        } else if (count == 13) {
                            nex.setCantInteract(false);
                            stop();
                            return;
                        }
                        count++;
                    }
                    // }
                }, 0, 1);
            }
        }
    }
 
    private ZarosGodwars() {
 
    }
}


Estamos Quase Lá!, Va para NPCCombat.java e procure por :

CÓDIGO:
tile.getY() - npc.getY())));


Abaixo Disso ponha :

CÓDIGO:
npc.setNextAnimation(new Animation(17408));


Caso Nao tenho os Anim do Nex, Geralmente tera mas caso nao tenha va para unpackedCombatDefinitionsList.txt e ponha isso :

CÓDIGO:
//Nex - 1001
 13447 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE
//Nex - 1001
 13448 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE
//Nex - 1001
 13449 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE
//Nex -1001
 13450 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE


Delete o combate packed definitions nao o unpacked e clique para run seu server e o packed voltara com o Nex e seus anims

Antes que postem algo, nao fiz esse code hoje, nao e copia de ninguem e meu pois ja tive meu private server, e futuramente estarei postando mas coisas de Servervido Privado de runescape, estava acabando a roleta maluca mas estou com um bug na interface.

Bom E isso Ai, Valeu Pessoal.

20 de dez. de 2012

(RuneScape Private Server) sem hamachi


Como prometido, hoje eu vo ensinar a fazer um RSPS (RuneScape Private Server) sem hamachi.

Primeiro, os links de download.

CLIENT = BAIXAR CLIENT
SOURCE(Todos os dupes corrigidos) = 
BAIXAR SOURCE
NO IP = 
BAIXAR NO-IP
JAVA = BAIXAR JAVA
JDK = BAIXAR JDK
NOTEPAD ++ = BAIXAR NOTEPAD++



TUTORIAL

1) Depois de ter baixado tudo extraia o client e o source.


2) Instale o NO-IP. 


3) Vá no site www.no-ip.com


4) Criar uma conta 

Para criar uma conta com o No-IP.com simplesmente clique no link "Sign-up Now!"
tno topo da página, ou clique aqui.
Preencha o formulário de nova conta completando os campos necessários. Por favor note que as nossas Condições de Serviço
requerem 
informação válida relativamente ao seu contacto de forma a manter a sua
conta connosco. Qualquer conta encontrada com informação incompleta ou 
fraudulenta será cancelada. 

Quando tiver preenchido a informação necessária e
aceite as nossas condiçoes de serviço, clique no botão "Sign Up Now!" 
no fundo da página.
Qunado tiver submetido a informação da sua conta para o formulário do novo usuário, nós mandar-lhe-emos um email de 
confirmação para o endereço que forneceu.Terá que verificar essa conta e procurar 
o email de No-IP.com O email contem um link que terá que clicar para confirmar a sua conta.

Agora que já confirmou a sua conta, pode aceder ao No-IP.com. No topo da página base do No-IP, debaixo do logotipo do 
No-IP, verá um sítio para inserir o
seu endereço de correio electrónico e password. Insira a informação com
que assinou e clique "Login." 




  • Preencha o Hostname: caixa com um nome de sua escolha. 
    Poderá ser o que quiser. Se escolher um nome que já está a ser 
    utilizado, será gerado um erro e depois poderá tentar um hostname 
    diferente. Visto os hostnames serem únicos por domínio, poderá tentar 
    utilizar o mesmo hostname e apenas seleccionar um domínio diferente do 
    menu suspenso em baixo de forma a ver se essa combinação está 
    disponível.
  • 2. Seleccione um domínio disponível do menu suspenso.Note que alguns domínios estão reservados exclusivamente a clients No-IP Enhanced.
  • Escolha o Host Type. A escolha por defeito, DNS Host 
    A, é normalmente a correcta. Não escolha outros host types a não ser que
    esteja a tentar resolver um 
    problema específico que uma DNS A record não acomodará. Se o seu ISP 
    bloquear o Port 80 por exemplo, e está a tentar correr um servidor da 
    internet ou outro serviço no port 80, 
    então poderá escolher o Port 80 Redirect (altura em que lhe será pedido
    para especificar o port a utilizar para a redirecção). Se não estiver a
    correr um servidor da internet, então não escolha esta opção pois 
    poderá impedi-lo de se ligar correctamente.
  • No campo IP Address: Deverá já ver o seu endereço IP 
    corrente. Se desjar colocar o endereço IP do host noutro sítio sem ser o
    seu actual local, poderá inserir esse endereço agora.
  • As próximas duas opções não são utilizadas para a criação de 
    uma conta básica, daí não nos preocuparmos com as mesmas neste artigo.
  • Quando tiver preenchido a informação para o seu novo 
    hostname,simplesmente clique no botão "Create Host" no fundo da página 
    para o guardar.

5) Extraia o client e o source. Abra o [PI]Client, e procure por client(Extensão java). Aperte o Ctrl+F e procure por "127.0.0.1", se estiver bagunçado, use o Notepad++ para ajuda-lo. Entao, mude todos os 127.0.0.1 pelo host criado no No-IP.


6) Clique com o botão direito no 2.Compile, e clique em EDITAR. Apague tudo que estiver escrito. E copie-cole isto nele.

SPOILER:


Se funcionar , irá aparecer isto


Se falar que o caminh nao foi especificado , mude o "1.6.0_21" pela versão do seu JDK.


7) Abra o No-IP e digite o email e senha usados no passo 4.

8) Abra a pasta [PI~]Server , e abra o 1.Run.

9) Abra a pasta [PI]Client e abra o 1.Run.

10) Logue e tenha um bom jogo.

SE TIVER ERROS , POSTE-OS AQUI!!! =)

Como Adicionar Nex Para Seu Server De Runescape Privado


Olá Pessoal da Bomba Games, Esse guia serve para como adicionar nex para seu server de runescape privado como o titulo do falava, esse guia so funciona para servervidos com a versao 718/734+, antes que voce pergunte o codigo foi feito por min, se achar um diferente nao diga que esta errado pois cada Developer faz seus tipos de Codigos Diferentes

Bom Vamos Comecar. (Obs : Se achar dificil achar os lugares baixe o Eclipse, Para o Source nao para o Client.

Primeiro Abra Nex.java, e procure por :

CÓDIGO:
setNextForceTalk(new ForceTalk("NOW, THE POWER OF ZAROS!"));


Substitua isso Por :

CÓDIGO:
setNextAnimation(new Animation(17410));


Agora vá para NexCombat.java e tiro tudo oque esta lá e Ponha :

CÓDIGO:
package com.rs.game.npc.combat.impl;
 
import java.util.ArrayList;
import java.util.HashMap;
 
import com.rs.cache.loaders.NPCDefinitions;
import com.rs.game.Animation;
import com.rs.game.Entity;
import com.rs.game.ForceMovement;
import com.rs.game.ForceTalk;
import com.rs.game.Graphics;
import com.rs.game.Hit;
import com.rs.game.Hit.HitLook;
import com.rs.game.World;
import com.rs.game.WorldObject;
import com.rs.game.WorldTile;
import com.rs.game.npc.NPC;
import com.rs.game.npc.combat.CombatScript;
import com.rs.game.npc.combat.NPCCombatDefinitions;
import com.rs.game.npc.godwars.zaros.Nex;
import com.rs.game.player.Player;
import com.rs.game.player.cutscenes.NexCutScene;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
import com.rs.utils.Utils;
 
public class NexCombat extends CombatScript {
 
    @Override
    public Object[] getKeys() {
        return new Object[] {
            "Nex"
        };
    }
 
    public WorldTile[] NO_ESCAPE_TELEPORTS = {
        new WorldTile(2924, 5213, 0), // north
        new WorldTile(2934, 5202, 0), // east,
        new WorldTile(2924, 5192, 0), // south
        new WorldTile(2913, 5202, 0),
    }; // west
 
    @Override
    public int attack(final NPC npc, final Entity target) {
        final NPCCombatDefinitions defs = npc.getCombatDefinitions();
        final Nex nex = (Nex) npc;
        int size = npc.getSize();
        // attacks close only
        if (nex.isFollowTarget()) {
            int distanceX = target.getX() - npc.getX();
            int distanceY = target.getY() - npc.getY();
            if (distanceX > size || distanceX < -1 || distanceY > size || distanceY < -1) return 0;
            nex.setFollowTarget(Utils.getRandom(1) == 0);
            // first stage close attacks
            if (nex.getAttacksStage() == 0) {
                // virus 1/3 probability every 1min
                if (nex.getLastVirus() < Utils.currentTimeMillis() && Utils.getRandom(2) == 0) {
                    nex.setLastVirus(Utils.currentTimeMillis() + 60000);
                    npc.setNextForceTalk(new ForceTalk("Let the virus flow through you."));
                    nex.playSound(3296, 2);
                    npc.setNextAnimation(new Animation(17413));
                    nex.sendVirusAttack(new ArrayList < Entity > (),
                    npc.getPossibleTargets(), target);
                    return defs.getAttackDelay();
                }
            }
            // no escape, 1/10 probability doing it
            if (Utils.getRandom(nex.getStage() == 4 ? 5 : 10) == 0) {
                npc.setNextForceTalk(new ForceTalk("There is..."));
                nex.playSound(3294, 2);
                npc.setCantInteract(true);
                npc.getCombat().removeTarget();
                final int idx = Utils.random(NO_ESCAPE_TELEPORTS.length);
                final WorldTile dir = NO_ESCAPE_TELEPORTS[idx];
                final WorldTile center = new WorldTile(2924, 5202, 0);
                WorldTasksManager.schedule(new WorldTask() {
                    private int count;
 
                    @Override
                    public void run() {
                        if (count == 0) {
                            npc.setNextAnimation(new Animation(17411));
                            npc.setNextGraphics(new Graphics(1216));
                        } else if (count == 1) {
                            nex.setNextWorldTile(dir);
                            nex.setNextForceTalk(new ForceTalk("NO ESCAPE!"));
                            nex.playSound(3292, 2);
                            nex.setNextForceMovement(new ForceMovement(dir, 1,
                            center, 3, idx == 3 ? 1 : idx == 2 ? 0 : idx == 1 ? 3 : 2));
                            for (Entity entity: nex.calculatePossibleTargets(
                            center, dir, idx == 0 || idx == 2)) {
                                if (entity instanceof Player) {
                                    Player player = (Player) entity;
                                    player.getCutscenesManager().play(
                                    new NexCutScene(dir, idx));
                                    player.applyHit(new Hit(
                                    npc,
                                    Utils.getRandom(nex.getStage() == 4 ? 800 : 650),
                                    HitLook.REGULAR_DAMAGE));
                                    player.setNextAnimation(new Animation(17408));
                                    player.setNextForceMovement(new ForceMovement(
                                    player, 1, idx == 3 ? 3 : idx == 2 ? 2 : idx == 1 ? 1 : 0));
                                }
                            }
                        } else if (count == 3) {
                            nex.setNextWorldTile(center);
                        } else if (count == 4) {
                            nex.setTarget(target);
                            npc.setCantInteract(false);
                            stop();
                        }
                        count++;
                    }
                }, 0, 1);
                return defs.getAttackDelay();
            }
            // normal melee attack
            int damage = getRandomMaxHit(npc, defs.getMaxHit(),
            NPCCombatDefinitions.MELEE, target);
            delayHit(npc, 0, target, getMeleeHit(npc, damage));
            npc.setNextAnimation(new Animation(defs.getAttackEmote()));
            return defs.getAttackDelay();
            // far attacks
        } else {
            nex.setFollowTarget(Utils.getRandom(1) == 0);
            // drag a player to center
            if (Utils.getRandom(15) == 0) {
                int distance = 0;
                Entity settedTarget = null;
                for (Entity t: npc.getPossibleTargets()) {
                    if (t instanceof Player) {
                        int thisDistance = Utils.getDistance(t.getX(),
                        t.getY(), npc.getX(), npc.getY());
                        if (settedTarget == null || thisDistance > distance) {
                            distance = thisDistance;
                            settedTarget = t;
                        }
                    }
                }
                if (settedTarget != null && distance > 10) {
                    final Player player = (Player) settedTarget;
                    player.lock(3);
                    player.setNextAnimation(new Animation(17408));
                    player.setNextForceMovement(new ForceMovement(nex, 2, Utils.getMoveDirection(
                    npc.getCoordFaceX(player.getSize()) - player.getX(),
                    npc.getCoordFaceY(player.getSize()) - player.getY())));
                    npc.setNextAnimation(new Animation(17414));
                    npc.setTarget(player);
                    player.setNextAnimation(new Animation(17408));
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            player.setNextWorldTile(nex);
                            player.getPackets()
                                .sendGameMessage("You've been injured and you can't use protective curses!");
                            player.setPrayerDelay(Utils.getRandom(20000) + 5); // random
                            // 20
                            // seconds
                            player.getPackets().sendGameMessage("You're stunned.");
                        }
                    });
                    return defs.getAttackDelay();
                }
            }
            // first stage close attacks
            if (nex.getAttacksStage() == 0) {
                npc.setNextAnimation(new Animation(17413));
                for (Entity t: npc.getPossibleTargets()) {
                    World.sendProjectile(npc, t, 471, 41, 16, 41, 35, 16, 0);
                    int damage = getRandomMaxHit(npc, defs.getMaxHit(),
                    NPCCombatDefinitions.MAGE, t);
                    delayHit(npc, 1, t, getMagicHit(npc, damage));
                    if (damage > 0 && Utils.getRandom(5) == 0) // 1/6
                    // probability
                    // poisoning
                    t.getPoison().makePoisoned(80);
                }
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 1) {
                if (!nex.isEmbracedShadow()) {
                    nex.setEmbracedShadow(true);
                    npc.setNextForceTalk(new ForceTalk("Embrace darkness!"));
                    nex.playSound(3322, 2);
                    npc.setNextAnimation(new Animation(17412));
                    npc.setNextGraphics(new Graphics(1217));
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            if (nex.getAttacksStage() != 1 || nex.hasFinished()) {
                                for (Entity entity: nex.getPossibleTargets()) {
                                    if (entity instanceof Player) {
                                        Player player = (Player) entity;
                                        player.getPackets().sendGlobalConfig(
                                        1435, 255);
                                    }
                                }
                                stop();
                                return;
                            }
                            if (Utils.getRandom(2) == 0) {
                                for (Entity entity: nex.getPossibleTargets()) {
                                    if (entity instanceof Player) {
                                        Player player = (Player) entity;
                                        int distance = Utils.getDistance(
                                        player.getX(), player.getY(),
                                        npc.getX(), npc.getY());
                                        if (distance > 30) distance = 30;
                                        player.getPackets().sendGlobalConfig(
                                        1435, (distance * 255 / 30));
                                    }
                                }
                            }
                        }
                    }, 0, 0);
                    return defs.getAttackDelay();
                }
                if (!nex.isTrapsSettedUp() && Utils.getRandom(2) == 0) {
                    nex.setTrapsSettedUp(true);
                    npc.setNextForceTalk(new ForceTalk("Fear the Shadow!"));
                    nex.playSound(3314, 2);
                    npc.setNextAnimation(new Animation(17407));
                    npc.setNextGraphics(new Graphics(1215));
                    ArrayList < Entity > possibleTargets = nex.getPossibleTargets();
                    final HashMap < String, int[] > tiles = new HashMap < String, int[] > ();
                    for (Entity t: possibleTargets) {
                        String key = t.getX() + "_" + t.getY();
                        if (!tiles.containsKey(t.getX() + "_" + t.getY())) {
                            tiles.put(key, new int[] {
                                t.getX(), t.getY()
                            });
                            World.spawnTemporaryObject(new WorldObject(57261,
                            10, 0, t.getX(), t.getY(), 0), 2400);
                        }
                    }
                    WorldTasksManager.schedule(new WorldTask() {
                        private boolean firstCall;
 
                        @Override
                        public void run() {
                            if (!firstCall) {
                                ArrayList < Entity > possibleTargets = nex.getPossibleTargets();
                                for (int[] tile: tiles.values()) {
                                    World.sendGraphics(null, new Graphics(383),
                                    new WorldTile(tile[0], tile[1], 0));
                                    for (Entity t: possibleTargets)
                                    if (t.getX() == tile[0] && t.getY() == tile[1]) t.applyHit(new Hit(npc, Utils.getRandom(400) + 400,
                                    HitLook.REGULAR_DAMAGE));
                                }
                                firstCall = true;
                            } else {
                                nex.setTrapsSettedUp(false);
                                stop();
                            }
                        }
 
                    }, 3, 3);
                    return defs.getAttackDelay();
                }
                npc.setNextAnimation(new Animation(17413));
                for (final Entity t: npc.getPossibleTargets()) {
                    int distance = Utils.getDistance(t.getX(), t.getY(),
                    npc.getX(), npc.getY());
                    if (distance <= 10) {
                        int damage = 800 - (distance * 800 / 11);
                        World.sendProjectile(npc, t, 380, 41, 16, 41, 35, 16, 0);
                        delayHit(
                        npc,
                        1,
                        t,
                        getRangeHit(
                        npc,
                        getRandomMaxHit(npc, damage,
                        NPCCombatDefinitions.RANGE, t)));
                        WorldTasksManager.schedule(new WorldTask() {@Override
                            public void run() {
                                t.setNextGraphics(new Graphics(471));
                            }
                        }, 1);
                    }
                }
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 2) {
                if (Utils.getRandom(4) == 0 && target instanceof Player) {
                    npc.setNextForceTalk(new ForceTalk("I demand a blood sacrifice!"));
                    nex.playSound(3293, 2);
                    final Player player = (Player) target;
                    player.getAppearence().setGlowRed(true);
                    player.getPackets().sendGameMessage("Nex has marked you as a sacrifice, RUN!");
                    final int x = player.getX();
                    final int y = player.getY();
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            player.getAppearence().setGlowRed(false);
                            if (x == player.getX() && y == player.getY()) {
                                player.getPackets()
                                    .sendGameMessage("You didn't make it far enough in time - Nex fires a punishing attack!");
                                npc.setNextAnimation(new Animation(17413));
                                for (final Entity t: npc.getPossibleTargets()) {
                                    World.sendProjectile(npc, t, 374, 41, 16,
                                    41, 35, 16, 0);
                                    final int damage = getRandomMaxHit(npc,
                                    290, NPCCombatDefinitions.MAGE, t);
                                    delayHit(npc, 1, t,
                                    getMagicHit(npc, damage));
                                    WorldTasksManager.schedule(new WorldTask() {@Override
                                        public void run() {
                                            t.setNextGraphics(new Graphics(376));
                                            nex.heal(damage / 4);
                                            if (t instanceof Player) {
                                                Player p = (Player) t;
                                                p.getPrayer()
                                                    .drainPrayerOnHalf();
                                            }
                                        }
                                    }, 1);
                                }
                            }
                        }
                    }, defs.getAttackDelay());
                    return defs.getAttackDelay() * 2;
                }
                if (nex.getLastSiphon() < Utils.currentTimeMillis() && npc.getHitpoints() <= 18000 && Utils.getRandom(2) == 0) {
                    nex.setLastSiphon(Utils.currentTimeMillis() + 30000);
                    nex.killBloodReavers();
                    npc.setNextForceTalk(new ForceTalk("A siphon will solve this!"));
                    nex.playSound(3317, 2);
                    npc.setNextAnimation(new Animation(17409));
                    npc.setNextGraphics(new Graphics(1201));
                    nex.setDoingSiphon(true);
                    int bloodReaverSize = NPCDefinitions.getNPCDefinitions(13458).size;
                    int respawnedBloodReaverCount = 0;
                    int maxMinions = Utils.getRandom(3);
                    if (maxMinions != 0) {
                        int[][] dirs = Utils.getCoordOffsetsNear(bloodReaverSize);
                        for (int dir = 0; dir < dirs[0].length; dir++) {
                            final WorldTile tile = new WorldTile(new WorldTile(
                            target.getX() + dirs[0][dir], target.getY() + dirs[1][dir], target.getPlane()));
                            if (World.canMoveNPC(tile.getPlane(), tile.getX(),
                            tile.getY(), bloodReaverSize)) { // if found
                                // done
                                nex.getBloodReavers()[respawnedBloodReaverCount++] = new NPC(
                                13458, tile, - 1, true, true);
                                if (respawnedBloodReaverCount == maxMinions) break;
                            }
                        }
                    }
                    WorldTasksManager.schedule(new WorldTask() {@Override
                        public void run() {
                            nex.setDoingSiphon(false);
                        }
                    }, 8);
                    return defs.getAttackDelay();
                }
                npc.setNextAnimation(new Animation(17414));
                World.sendProjectile(npc, target, 374, 41, 16, 41, 35, 16, 0);
                delayHit(
                npc,
                1,
                target,
                getMagicHit(
                npc,
                getRandomMaxHit(npc, defs.getMaxHit(),
                NPCCombatDefinitions.MAGE, target)));
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 3) {
                npc.setNextAnimation(new Animation(17414));
                for (final Entity t: npc.getPossibleTargets()) {
                    World.sendProjectile(npc, t, 362, 41, 16, 41, 35, 16, 0);
                    int damage = getRandomMaxHit(npc, defs.getMaxHit(),
                    NPCCombatDefinitions.MAGE, t);
                    delayHit(npc, 1, t, getMagicHit(npc, damage));
                    if (damage > 0 && Utils.getRandom(5) == 0) { // 1/6
                        // probability
                        // freezing
                        WorldTasksManager.schedule(new WorldTask() {@Override
                            public void run() {
                                t.addFreezeDelay(18000);
                                t.setNextGraphics(new Graphics(369));
                            }
                        }, 2);
 
                    }
                }
                return defs.getAttackDelay();
            } else if (nex.getAttacksStage() == 4) {
                npc.setNextAnimation(new Animation(17413));
                for (Entity t: npc.getPossibleTargets()) {
                    World.sendProjectile(npc, t, 471, 41, 16, 41, 35, 16, 0);
                    int damage = getRandomMaxHit(npc, defs.getMaxHit(),
                    NPCCombatDefinitions.MAGE, t);
                    delayHit(npc, 1, t, getMagicHit(npc, damage));
                }
                return defs.getAttackDelay();
            }
        }
        return defs.getAttackDelay();
    }
}


Agora va Para ZarosGodwars e substitua tudo por :

CÓDIGO:
package com.rs.game.minigames;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
 
import com.rs.cores.CoresManager;
import com.rs.game.Animation;
import com.rs.game.Entity;
import com.rs.game.ForceTalk;
import com.rs.game.Graphics;
import com.rs.game.World;
import com.rs.game.WorldTile;
import com.rs.game.npc.godwars.zaros.Nex;
import com.rs.game.npc.godwars.zaros.NexMinion;
import com.rs.game.player.Player;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
import com.rs.utils.Utils;
 
public final class ZarosGodwars {
 
    private static final List < Player > playersOn = Collections.synchronizedList(new ArrayList < Player > ());
    // private static final Object LOCK = new Object();
 
    public static Nex nex;
    public static NexMinion fumus;
    public static NexMinion umbra;
    public static NexMinion cruor;
    public static NexMinion glacies;
 
    public static int getPlayersCount() {
        return playersOn.size();
    }
 
    public static void breakFumusBarrier() {
        // synchronized(LOCK) {
        if (fumus == null) return;
        fumus.breakBarrier();
        // }
    }
 
    public static void breakUmbraBarrier() {
        // synchronized(LOCK) {
        if (umbra == null) return;
        umbra.breakBarrier();
        // }
    }
 
    public static void breakCruorBarrier() {
        // synchronized(LOCK) {
        if (cruor == null) return;
        cruor.breakBarrier();
        // }
    }
 
    public static void breakGlaciesBarrier() {
        // synchronized(LOCK) {
        if (glacies == null) return;
        glacies.breakBarrier();
        // }
    }
 
    public static void addPlayer(Player player) {
        // synchronized(LOCK) {
        if (playersOn.contains(player)) {
            // System.out.println("ERROR DOUBLE ENTRY!");
            return;
        }
        playersOn.add(player);
        startWar();
        // }
    }
 
    public static void removePlayer(Player player) {
        // synchronized(LOCK) {
        playersOn.remove(player);
        cancelWar();
        // }
    }
 
    public static void deleteNPCS() {
        if (nex != null) {
            nex.killBloodReavers();
            nex.finish();
            nex = null;
        }
        if (fumus != null) {
            fumus.finish();
            fumus = null;
        }
        if (umbra != null) {
            umbra.finish();
            umbra = null;
        }
        if (cruor != null) {
            cruor.finish();
            cruor = null;
        }
        if (glacies != null) {
            glacies.finish();
            glacies = null;
        }
    }
 
    private static void cancelWar() {
        if (getPlayersCount() == 0) deleteNPCS();
    }
 
    public static ArrayList < Entity > getPossibleTargets() {
        // synchronized(LOCK) {
        ArrayList < Entity > possibleTarget = new ArrayList < Entity > (
        playersOn.size());
        for (Player player: playersOn) {
            if (player == null || player.isDead() || player.hasFinished() || !player.isRunning()) continue;
            possibleTarget.add(player);
            /*
            * if (player.getFamiliar() != null &&
            * player.getFamiliar().isAgressive())
            * possibleTarget.add(player.getFamiliar());
            */
        }
        return possibleTarget;
        // }
    }
 
    public static void moveNextStage() {
        // synchronized(LOCK) {
        if (nex == null) return;
        nex.moveNextStage();
        // }
    }
 
    public static void endWar() {
        // synchronized(LOCK) {
        deleteNPCS();
        CoresManager.slowExecutor.schedule(new Runnable() {
 
            @Override
            public void run() {
                startWar();
            }
 
        }, 1, TimeUnit.MINUTES);
        // }
    }
 
    private static void startWar() {
        if (getPlayersCount() >= 1) {
            if (nex == null) {
                World.spawnNPC(13447, new WorldTile(2924, 5202, 0), - 1, true,
                true);
                WorldTasksManager.schedule(new WorldTask() {
                    private int count = 0;
 
                    @Override
                    public void run() {
                        // synchronized(LOCK) {
                        if (nex == null) {
                            stop();
                            return;
                        }
                        if (count == 1) {
                            nex.setNextForceTalk(new ForceTalk("AT LAST!"));
                            nex.setNextAnimation(new Animation(17412));
                            nex.setNextGraphics(new Graphics(1217));
                            nex.playSound(3295, 2);
                        } else if (count == 3) {
                            World.spawnNPC(13451, new WorldTile(2913, 5215, 0), - 1, true, true);
                            fumus.setDirection(Utils.getFaceDirection(1, - 1));
                            nex.setNextFaceWorldTile(new WorldTile(fumus.getCoordFaceX(fumus.getSize()), fumus.getCoordFaceY(fumus.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Fumus!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(fumus, nex, 2244, 18, 18, 60,
                            30, 0, 0);
                            nex.playSound(3325, 2);
                        } else if (count == 5) {
                            World.spawnNPC(13452, new WorldTile(2937, 5215, 0), - 1, true, true);
                            umbra.setDirection(Utils.getFaceDirection(-1, - 1));
                            nex.setNextFaceWorldTile(new WorldTile(umbra.getCoordFaceX(umbra.getSize()), umbra.getCoordFaceY(umbra.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Umbra!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(umbra, nex, 2244, 18, 18, 60,
                            30, 0, 0);
                            nex.playSound(3313, 2);
                        } else if (count == 7) {
                            World.spawnNPC(13453, new WorldTile(2937, 5191, 0), - 1, true, true);
                            cruor.setDirection(Utils.getFaceDirection(-1, 1));
                            nex.setNextFaceWorldTile(new WorldTile(cruor.getCoordFaceX(cruor.getSize()), cruor.getCoordFaceY(cruor.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Cruor!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(cruor, nex, 2244, 18, 18, 60,
                            30, 0, 0);
                            nex.playSound(3299, 2);
                        } else if (count == 9) {
                            World.spawnNPC(13454, new WorldTile(2913, 5191, 0), - 1, true, true);
                            glacies.setNextFaceWorldTile(new WorldTile(glacies.getCoordFaceX(glacies.getSize()), glacies.getCoordFaceY(glacies.getSize()), 0));
                            glacies.setDirection(Utils.getFaceDirection(1, 1));
                            nex.setNextFaceWorldTile(new WorldTile(glacies.getCoordFaceX(glacies.getSize()), glacies.getCoordFaceY(glacies.getSize()), 0));
                            nex.setNextForceTalk(new ForceTalk("Glacies!"));
                            nex.setNextAnimation(new Animation(17413));
                            World.sendProjectile(glacies, nex, 2244, 18, 18,
                            60, 30, 0, 0);
                            nex.playSound(3304, 2);
                        } else if (count == 11) {
                            nex.setNextForceTalk(new ForceTalk("Fill my soul with smoke!"));
                            World.sendProjectile(fumus, nex, 2244, 18, 18, 60,
                            30, 0, 0);
 
                            nex.playSound(3310, 2);
                        } else if (count == 13) {
                            nex.setCantInteract(false);
                            stop();
                            return;
                        }
                        count++;
                    }
                    // }
                }, 0, 1);
            }
        }
    }
 
    private ZarosGodwars() {
 
    }
}


Estamos Quase Lá!, Va para NPCCombat.java e procure por :

CÓDIGO:
tile.getY() - npc.getY())));


Abaixo Disso ponha :

CÓDIGO:
npc.setNextAnimation(new Animation(17408));


Caso Nao tenho os Anim do Nex, Geralmente tera mas caso nao tenha va para unpackedCombatDefinitionsList.txt e ponha isso :

CÓDIGO:
//Nex - 1001
 13447 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE
//Nex - 1001
 13448 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE
//Nex - 1001
 13449 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE
//Nex -1001
 13450 - 30000 17407 17406 17415 5 3 150 369 SPECIAL -1 -1 AGRESSIVE


Delete o combate packed definitions nao o unpacked e clique para run seu server e o packed voltara com o Nex e seus anims

Antes que postem algo, nao fiz esse code hoje, nao e copia de ninguem e meu pois ja tive meu private server, e futuramente estarei postando mas coisas de Servervido Privado de runescape, estava acabando a roleta maluca mas estou com um bug na interface.

Bom E isso Ai, Valeu Pessoal.