Ir para conteúdo
  • Anúncios

    • AiroN

      Anuncie no L2JBrasil

      Deseja anunciar aqui no fórum, no Top L2JBrasil ou em nossa página no Facebook? Confira: www.l2jbrasil.com/anunciar
    • Grundor

      Método de login alterado   08-10-2017

      Com a atualização do fórum para versão  IPB 4.2 não é mais possível fazer login usando username, ao invés disso você deve usar e-mail ou seu Display Name (nome como é exibido no forum).      
    • AiroN

      Tenha seu clube formalmente no L2JBrasil!   18-10-2017

      Você tem amigos que estão sempre juntos contigo na alegria e na tristeza, na saúde e na doença, em todos os desenvolvimentos de suas vida, no pvp, nas quests? rsrs   Monte seu clube formalmente na L2J Brasil!
      Criar um clube é muito fácil, basta você entrar nesse tópico e se interar do assunto:    Dominem o mundo!


      Atenciosamente,
      Administração L2jBrasil.
  • 0
l2triedge

PLAYER FAKE ON

Pergunta

ola pessoal estava querendo muito um mod chamado phantom system que tem no youtube é um mod q vc deixa players fakes online se movimentando e farmando...procurei procurei ate q achei umas coisas q um cara liberou gostaria de saber se alguem sabe mecher modificar ou editar algo e aonde coloco isso,, obrigado 

OBS: ele ta pra INTERLUDE eu gostaria de ter para GRACIA FINAL alguem sabe modificar?

 

package l2f.gameserver.model.Phantoms;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;

import javolution.text.TextBuilder;
import javolution.util.FastList;
import javolution.util.FastMap;

import org.apache.log4j.Logger;

import l2f.commons.util.Rnd;
import l2f.gameserver.model.actor.instances.player.ShortCut;
import l2f.gameserver.model.base.InvisibleType;
import l2f.gameserver.model.base.Race;
import l2f.gameserver.Config;
import l2f.gameserver.ThreadPoolManager;
import l2f.gameserver.database.DatabaseFactory;
import l2f.gameserver.ai.CtrlIntention;
import l2f.gameserver.ai.PlayableAI.nextAction;
import l2f.gameserver.skills.AbnormalEffect;
import l2f.gameserver.skills.effects.EffectTemplate;
import l2f.gameserver.stats.Env;
import l2f.gameserver.tables.ClanTable;
import l2f.gameserver.tables.SkillTable;
import l2f.gameserver.geodata.GeoEngine;
import l2f.gameserver.model.instances.NpcInstance;
import l2f.gameserver.model.items.ItemInstance;
import l2f.gameserver.utils.ItemFunctions;
import l2f.gameserver.model.Effect;
import l2f.gameserver.model.GameObject;
import l2f.gameserver.model.GameObjectsStorage;
import l2f.gameserver.model.Skill;
import l2f.gameserver.model.World;
import l2f.gameserver.utils.Location;
import l2f.gameserver.model.Player;
import l2f.gameserver.network.serverpackets.MagicSkillUse;
import l2f.gameserver.network.serverpackets.Say2;
import l2f.gameserver.network.serverpackets.components.ChatType;
import l2f.gameserver.templates.PlayerTemplate;
import l2f.gameserver.templates.item.CreateItem;
import l2f.gameserver.templates.item.ItemTemplate;

public class PhantomPlayers
{
   private static final Logger _log= Logger.getLogger(PhantomPlayers.class.getName());
   private static String _phantomAcc = Config.PHANTOM_PLAYERS_AKK;
   private static int _PhantomsLimit = 0;
   private static int _setsCount = 0;
   private static int _setsCountClan = 0;
   private volatile int _PhantomsTownTotal = 0;
   private static int _nameColCount = 0;
   private static int _titleColCount = 0;
   private static FastList<Integer> _nameColors = new FastList<Integer>();
   private static FastList<Integer> _titleColors = new FastList<Integer>();
   private static FastList<L2Set> _sets = new FastList<L2Set>();
   private static int _setsArcherCount = 0;
   private static FastList<L2Set> _setsArcher = new FastList<L2Set>();
   private static PhantomPlayers _instance;
   private static int _setsOlyCount = 0;
   private static FastList<L2Set> _setsOly = new FastList<L2Set>();
   private static int _locsCount = 0;
   private static FastList<Location> _PhantomsTownLoc = new FastList<Location>();
   private static FastMap<Integer, L2Fantome> _phantoms = new FastMap<Integer, L2Fantome>();
   private static int _PhantomssayPhantomsCount = 0;
   private static FastList<String> _PhantomssayPhantoms = new FastList<String>();
   private static int _PhantomsdeadtalkCount = 0;
   private static FastList<String> _Phantomsdeadtalk = new FastList<String>();
   private static Map<Integer, ConcurrentLinkedQueue<Player>> _PhantomsTown = new ConcurrentHashMap<Integer, ConcurrentLinkedQueue<Player>>();
   private static Map<Integer, ConcurrentLinkedQueue<Player>> _PhantomsTownClan = new ConcurrentHashMap<Integer, ConcurrentLinkedQueue<Player>>();
   private static Map<Integer, ConcurrentLinkedQueue<Integer>> _PhantomsTownClanList = new ConcurrentHashMap<Integer, ConcurrentLinkedQueue<Integer>>();
   
   private static int buffs[][] = { // id, lvl, group
      { 306, 1, 2 },
      { 308, 1, 2 },
      { 307, 1, 2 },
      { 309, 1, 2 },
      { 266, 1, 2 },
      { 529, 1, 2 },
      { 530, 1, 2 },
      { 1303, 2, 2 },
      { 1085, 3, 2 },
      { 1040, 3, 2 },
      { 1062, 2, 2 },
      { 4703, 3, 2 },
      { 1389, 3, 2 },
      { 1461, 1, 2 },
      { 1413, 1, 2 },
      { 1191, 3, 2 },
      { 1182, 3, 2 },
      { 1189, 3, 2 },
      { 1392, 3, 2 },
      { 1035, 4, 2 },
      { 1259, 4, 2 },
      { 1460, 1, 2 },
      { 1044, 3, 2 },
      { 1078, 6, 2 },
      { 1259, 4, 2 },
      { 264, 1, 2 },
      { 265, 1, 2 },
      { 267, 1, 2 },
      { 268, 1, 2 },
      { 304, 1, 2 },
      { 349, 1, 2 },
      { 363, 1, 2 },
      { 273, 1, 2 },
      { 276, 1, 2 },
      { 365, 1, 2 },
      { 270, 1, 2 },
      { 830, 1, 2 },
      { 1500, 1, 2 },
      { 1503, 1, 2 },
      { 1501, 1, 2 },
      { 1504, 1, 2 },
      { 1323, 1, 1 },
      { 1240, 3, 1 },
      { 1501, 1, 1 },
      { 1036, 2, 1 },
      { 1062, 2, 1 },
      { 4699, 3, 1 },
      { 1388, 3, 1 },
      { 1461, 1, 1 },
      { 1191, 3, 1 },
      { 1182, 3, 1 },
      { 1189, 3, 1 },
      { 1392, 3, 1 },
      { 1352, 1, 1 },
      { 1035, 4, 1 },
      { 264, 1, 1 },
      { 265, 1, 1 },
      { 267, 1, 1 },
      { 268, 1, 1 },
      { 269, 1, 1 },
      { 304, 1, 1 },
      { 349, 1, 1 },
      { 363, 1, 1 },
      { 364, 1, 1 },
      { 271, 1, 1 },
      { 274, 1, 1 },
      { 275, 1, 1 },
      { 270, 1, 1 },
      { 269, 1, 1 },
      { 306, 1, 1 },
      { 308, 1, 1 },
      { 272, 1, 1 },
      { 307, 1, 1 },
      { 309, 1, 1 },
      { 310, 1, 1 },
      { 266, 1, 1 },
      { 529, 1, 1 },
      { 530, 1, 1 },
      { 1502, 1, 1 },
      { 1503, 1, 1 },
      { 1517, 1, 1 },
      { 1259, 4, 1 },
      { 1519, 1, 1 },
      { 1323, 1, 1 },
      { 1363, 1, 1 }, // Chant of Victory
      { 1504, 1, 1 }
      };

   public static PhantomPlayers getInstance()
   {
      return _instance;
   }

   public static void init()
   {
      _instance = new PhantomPlayers();
      _instance.load();
   }

   private void load()
   {
      parceArmors();
      parceArcherArmors();
      parceOlyArmors();
      parceColors();
      cachedeadtalk();
      if(Config.ALLOW_PHANTOM_PLAYERS)
      {
         parceTownLocs();
         parceTownClans();
         //parceTownRecs();
         cacheFantoms();
         cachesayPhantoms();
         _PhantomsLimit = Config.PHANTOM_PLAYERS_COUNT_FIRST + Config.PHANTOM_PLAYERS_COUNT_NEXT + 10;
         _PhantomsTown.put(1, new ConcurrentLinkedQueue<Player>());
         _PhantomsTown.put(2, new ConcurrentLinkedQueue<Player>());
      }
   }

   private void cacheFantoms()
   {
      new Thread(new Runnable()
    {
      @SuppressWarnings("unused")
      public void run()
      {
         String name = "";
         String new_name = "";
         Connection con = null;
         Player fantom = null;
         try
         {
            con = DatabaseFactory.getInstance().getConnection();
            con.setTransactionIsolation(1);
            PreparedStatement st = con.prepareStatement("SELECT obj_Id,char_name,title,x,y,z,clanid FROM characters WHERE account_name = ?");
            st.setString(1, _phantomAcc);
            ResultSet rs = st.executeQuery();
            rs.setFetchSize(250);
            while(rs.next())
            {
               name = rs.getString("char_name");
               _phantoms.put(Integer.valueOf(rs.getInt("obj_Id")), new L2Fantome(name, rs.getString("title"), rs.getInt("x"), rs.getInt("y"), rs.getInt("z"), rs.getInt("clanid")));
            }
            st.close();
            rs.close();
            con.close();
            _log.info("PhantomPlayers: Cached " + _phantoms.size() + " players.");
         }
         catch (Exception e)
         {
            _log.warn("PhantomPlayers: could not load chars from DB: " + e);
         }
         finally
         {
            if(con != null)
               con = null;
         }
         if (!_phantoms.isEmpty())
         {
            ThreadPoolManager.getInstance().schedule(new FantomTask(1), Config.PHANTOM_PLAYERS_DELAY_FIRST * 1000);
         }
      }
      }).start();
   }

   private void parceArmors()
   {
      if (!_sets.isEmpty())
         _sets.clear();

      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/town_sets.properties");
         if (!Data.exists())
            return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         String line;
         while ((line = lnr.readLine()) != null)
         {
            if(line.trim().length() == 0 || line.startsWith("#"))
               continue;
            String[] items = line.split(",");
            int custom = 0;
            try
            {
               custom = Integer.parseInt(items[6]);
            }
            catch (Exception e)
            {
               custom = 0;
            }
            _sets.add(new L2Set(Integer.parseInt(items[0]), Integer.parseInt(items[1]), Integer.parseInt(items[2]), Integer.parseInt(items[3]), Integer.parseInt(items[4]), Integer.parseInt(items[5]), Integer.parseInt(items[6]), Integer.parseInt(items[7]),  custom));
         }
         _setsCount = _sets.size() - 1;
         _log.info("Load " + _setsCount + " phantom armor sets");
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch(Exception e)
         {
         }
      }
   }

   private void parceArcherArmors()
   {
      if (!_setsArcher.isEmpty())
         _setsArcher.clear();

      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/archer_sets.properties");
         if (!Data.exists())
            return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         String line;
         while ((line = lnr.readLine()) != null)
         {
            if(line.trim().length() == 0 || line.startsWith("#"))
               continue;
            String[] items = line.split(",");
            int custom = 0;
            try
            {
               custom = Integer.parseInt(items[5]);
            }
            catch (Exception e)
            {
               custom = 0;
            }
            _setsArcher.add(new L2Set(Integer.parseInt(items[0]), Integer.parseInt(items[1]), Integer.parseInt(items[2]), Integer.parseInt(items[3]), Integer.parseInt(items[4]), Integer.parseInt(items[5]), Integer.parseInt(items[6]), Integer.parseInt(items[7]), custom));
         }
         _setsArcherCount = _setsArcher.size() - 1;
         _log.info("Load " + _setsArcherCount + " Aecher phantom armor sets");
      }
      catch(IOException | NumberFormatException e)
      {
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch(Exception e)
         {
         }
      }
   }

   private void parceOlyArmors()
   {
      if (!_setsOly.isEmpty())
         _setsOly.clear();

      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/oly_sets.properties");
         if (!Data.exists())
            return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         String line;
         while ((line = lnr.readLine()) != null)
         {
            if(line.trim().length() == 0 || line.startsWith("#"))
               continue;
            String[] items = line.split(",");
            int custom = 0;
            try
            {
               custom = Integer.parseInt(items[6]);
            }
            catch (Exception e)
            {
               custom = 0;
            }
            _setsOly.add(new L2Set(Integer.parseInt(items[0]), Integer.parseInt(items[1]), Integer.parseInt(items[2]), Integer.parseInt(items[3]), Integer.parseInt(items[4]), Integer.parseInt(items[5]), Integer.parseInt(items[6]), Integer.parseInt(items[7]), custom));
         }
         _setsOlyCount = _setsOly.size() - 1;
         _log.info("Load " + _setsOlyCount + " phantom Only armor sets");
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch(Exception e)
         {
         }
      }
   }

   @SuppressWarnings({ "unchecked", "rawtypes" })
   private void parceTownClans()
   {
      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/town_clans.properties");
            if (!Data.exists())
               return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         int clanId = 0;
         String line;
         while((line = lnr.readLine()) != null)
         {
            if (line.trim().length() == 0 || line.startsWith("#"))
               continue;
            String[] items = line.split(":");
            clanId = Integer.parseInt(items[0]);
            String[] pls = items[1].split(",");
            ConcurrentLinkedQueue players = new ConcurrentLinkedQueue();
            for (String plid : pls)
               players.add(Integer.valueOf(Integer.parseInt(plid)));
            _PhantomsTownClanList.put(Integer.valueOf(clanId), players);
         }
         _setsCountClan = _PhantomsTownClanList.size() - 1;
         _log.info("Load " + _setsCountClan + " phantom Clans");
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch (Exception e1)
         {
         }
      }
   }

   private void parceTownLocs()
   {
      _PhantomsTownLoc.clear();
      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/town_locs.properties");
         if (!Data.exists())
            return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         String line;
         while ((line = lnr.readLine()) != null)
         {
            if (line.trim().length() == 0 || line.startsWith("#"))
               continue;
            String[] items = line.split(",");
            _PhantomsTownLoc.add(new Location(Integer.parseInt(items[0]), Integer.parseInt(items[1]), Integer.parseInt(items[2])));
         }
         _locsCount = _PhantomsTownLoc.size() - 1;
         _log.info("Load " + _locsCount + " phantom Town Locations");
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch (Exception e1)
         {
         }
      }
   }

   public void startWalk(Player phantom)
   {
      ThreadPoolManager.getInstance().schedule(new PhantomWalk(phantom), 10000);
   }

   private class PhantomWalk implements Runnable
   {
      Player _phantom;
      public PhantomWalk(Player phantom)
      {
         _phantom = phantom;
      }

      public void run()
      {
         if (_phantom.isDead())
         {    if (Config.ALLOW_PHANTOM_CHAT)
            {
            if(Rnd.get(100) < 90)
            {   
            switch (Rnd.get(1, 5))
            {
            case 1:
               Say2 cs = new Say2(_phantom.getObjectId(), ChatType.SHOUT, _phantom.getName(), getRandomdeadtalk());
               for(Player player : World.getAroundPlayers(_phantom, 10000, 3000))
                  if(player != null)
                     if(!player.isBlockAll())
                        player.sendPacket(cs);
               _phantom.kick();
               break;
            case 2:
               _phantom.kick();
               break;
            case 3:
               Say2 cs3 = new Say2(_phantom.getObjectId(), ChatType.ALL, _phantom.getName(), getRandomdeadtalk());
               for(Player player : World.getAroundPlayers(_phantom, 1200, 1000))
                  if(player != null)
                     if(!player.isBlockAll())
                        player.sendPacket(cs3);
               _phantom.kick();
               break;
            }
            }
            }
         }
            
         if (_phantom.isInWater())
            _phantom.teleToClosestTown();
         if(Rnd.get(100) < 10)
            if(Rnd.get(100) < 20)
               if (_phantom.isSitting())
                  _phantom.standUp();
         // баф фантомов
         Skill skill;
         if(Rnd.get(100) < 50)
         {
            // баф воинов
            if (!_phantom.getClassId().isMage() || _phantom.getClassId().getRace() == Race.orc)
            {
            for(int buff[] : buffs)
               if(buff[2] == 1)
               {
                     skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
                     for(EffectTemplate et : skill.getEffectTemplates())
                     {
                        Env env = new Env(_phantom, _phantom, skill);
                        Effect effect = et.getEffect(env);
                        effect.setPeriod(36000);
                        _phantom.getEffectList().addEffect(effect);
                     }
               }
            }
            //баф магов
            if (_phantom.getClassId().isMage() && _phantom.getClassId().getRace() != Race.orc)
            {
               for(int buff[] : buffs)
                  if(buff[2] == 2)
                  {
                        skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
                        for(EffectTemplate et : skill.getEffectTemplates())
                        {
                           Env env = new Env(_phantom, _phantom, skill);
                           Effect effect = et.getEffect(env);
                           effect.setPeriod(36000);
                           _phantom.getEffectList().addEffect(effect);
                        }
                  }
               
            }
            
         }
         
            
            
            /*
            for(NpcInstance npc : World.getAroundNpc(_phantom, 100, 100))
               for(int buffers_id : _buffers)
               if(npc.getNpcId() == buffers_id && !_phantom.isSitting())
               {
                  if (!_phantom.getClassId().isMage() || _phantom.getClassId().getRace() == Race.orc)
                     for(int[] buff : _warrBuff)
                        npc.broadcastPacket(new MagicSkillUse(npc, _phantom, buff[2], buff[3], 0, 0));
                  if (_phantom.getClassId().isMage() && _phantom.getClassId().getRace() != Race.orc)
                     for(int[] buff : _mageBuff)
                        npc.broadcastPacket(new MagicSkillUse(npc, _phantom, buff[2], buff[3], 0, 0));               
               }*/

         // писдеж в чат
         if (Config.ALLOW_PHANTOM_CHAT)
         {
            if(Rnd.get(100) < Config.PHANTOM_CHAT_CHANSE)
            {   
               switch (Rnd.get(1, 3))
               {
               case 1:
                  Say2 cs = new Say2(_phantom.getObjectId(), ChatType.SHOUT, _phantom.getName(), getRandomSayPhantoms());
                  for(Player player : World.getAroundPlayers(_phantom, 10000, 3000))
                     if(player != null)
                        if(!player.isBlockAll())
                           player.sendPacket(cs);
                  break;
               case 2:
                  Say2 cs2 = new Say2(_phantom.getObjectId(), ChatType.TRADE, _phantom.getName(), getRandomSayPhantoms());
                  for(Player player : World.getAroundPlayers(_phantom, 5000, 2000))
                     if(player != null)
                        if(!player.isBlockAll())
                           player.sendPacket(cs2);
                  break;
               case 3:
                  Say2 cs3 = new Say2(_phantom.getObjectId(), ChatType.ALL, _phantom.getName(), getRandomSayPhantoms());
                  for(Player player : World.getAroundPlayers(_phantom, 1200, 1000))
                     if(player != null)
                        if(!player.isBlockAll())
                           player.sendPacket(cs3);
                  break;
               }
            }
         }
         // использование анимации сосок Ы грейда
         if(Rnd.get(100) < 10)
         {
            if (!_phantom.getClassId().isMage() || _phantom.getClassId().getRace() == Race.orc)
               _phantom.broadcastPacket(new MagicSkillUse(_phantom, _phantom, 2154, 1, 0, 0));
            if (_phantom.getClassId().isMage() && _phantom.getClassId().getRace() != Race.orc)
               _phantom.broadcastPacket(new MagicSkillUse(_phantom, _phantom, 2159, 1, 0, 0));
         }
         
         // примитивная атака скилами
         if(Rnd.get(100) < 70)
         {
            if (!_phantom.getClassId().isMage() || _phantom.getClassId().getRace() == Race.orc)
               for(Player player : World.getAroundPlayers(_phantom, 100, 100))
                  if (GeoEngine.canSeeTarget(_phantom, player, false) && !player.isDead() && !player.isInZonePeace() && !_phantom.isInZonePeace() && (player.getKarma() != 0 || player.getPvpFlag() > 0))
                  {
                     if(_phantom.getRealDistance3D(player) <= _phantom.getPhysicalAttackRange() + 40)
                     {
                        _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
                        try {
                           Thread.sleep(500L);
                        } catch (InterruptedException e) {
                           // TODO Auto-generated catch block
                           e.printStackTrace();
                        }
                        if (_phantom.getClassId().getRace() == Race.human)
                           _phantom.doCast(SkillTable.getInstance().getInfo(3, 2), player, true);
                        if (_phantom.getClassId().getRace() == Race.elf)
                           _phantom.doCast(SkillTable.getInstance().getInfo(3, 2), player, true);
                        if (_phantom.getClassId().getRace() == Race.darkelf)
                           _phantom.doCast(SkillTable.getInstance().getInfo(3, 2), player, true);
                        if (_phantom.getClassId().getRace() == Race.orc)
                           _phantom.doCast(SkillTable.getInstance().getInfo(29, 2), player, true);
                        if (_phantom.getClassId().getRace() == Race.dwarf)
                           _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
                        if (_phantom.getClassId().getRace() == Race.kamael)
                           _phantom.doCast(SkillTable.getInstance().getInfo(468, 2), player, true);
                        try {
                           Thread.sleep(2000L);
                        } catch (InterruptedException e)
                        {
                           e.printStackTrace();
                        }
                        _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
                     }
                     else
                        try {
                           Thread.sleep(500L);
                        } catch (InterruptedException e)
                         {
                           e.printStackTrace();
                        }
                        _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
                  }
            if (_phantom.getClassId().isMage() && _phantom.getClassId().getRace() != Race.orc)
               for(Player player : World.getAroundPlayers(_phantom, 100, 100))
                  if (GeoEngine.canSeeTarget(_phantom, player, false) && !player.isDead() && !player.isInZonePeace() && !_phantom.isInZonePeace() && (player.getKarma() != 0 || player.getPvpFlag() > 0))
                  {
                     _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
                     _phantom.doCast(SkillTable.getInstance().getInfo(1177, 2), player, true);
                  }
         }
         // атака мобов ?? Оо=)
         if(Rnd.get(100) < 40)
         {
            if (!_phantom.getClassId().isMage() || _phantom.getClassId().getRace() == Race.orc)
               for(NpcInstance npc : World.getAroundNpc(_phantom, 800, 200))
                  if (GeoEngine.canSeeTarget(_phantom, npc, false) && npc.isMonster() && !npc.isDead())
                     _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, npc);
                        _phantom.broadcastPacket(new MagicSkillUse(_phantom, _phantom, 2154, 1, 0, 0));
            if (_phantom.getClassId().isMage() && _phantom.getClassId().getRace() != Race.orc)
               for(NpcInstance npc : World.getAroundNpc(_phantom, 800, 200))
                  if (GeoEngine.canSeeTarget(_phantom, npc, false) && npc.isMonster() && !npc.isDead())
                  {
                     _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, npc);
                     _phantom.broadcastPacket(new MagicSkillUse(_phantom, _phantom, 2159, 1, 0, 0));
                     _phantom.doCast(SkillTable.getInstance().getInfo(1177, 2), npc, true);
                  }
         }
         
         // атака игроков??
         if(Rnd.get(100) < 10)
         {
            if (!_phantom.getClassId().isMage() || _phantom.getClassId().getRace() == Race.orc)
               for(Player player : World.getAroundPlayers(_phantom, 600, 200))
                  if (GeoEngine.canSeeTarget(_phantom, player, false) && !player.isDead() && !player.isInZonePeace() && !_phantom.isInZonePeace())
                     _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
            
            if (_phantom.getClassId().isMage() && _phantom.getClassId().getRace() != Race.orc)
               for(Player player : World.getAroundPlayers(_phantom, 600, 200))
                  if (GeoEngine.canSeeTarget(_phantom, player, false) && !player.isDead() && !player.isInZonePeace() && !_phantom.isInZonePeace())
                  {
                     _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
                     _phantom.doCast(SkillTable.getInstance().getInfo(1177, 2), player, true);
                  }
         }
         
         // подбор предметов
         if(Rnd.get(100) < 10)
            if(_phantom.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK || _phantom.getAI().getIntention() != CtrlIntention.AI_INTENTION_CAST)
               for(GameObject obj : World.getAroundObjects(_phantom, 800, 200))
                  if (obj.isItem())
                  _phantom.getAI().setIntention(CtrlIntention.AI_INTENTION_PICK_UP, obj);
         
         // движение
         if(Rnd.get(1000) < 1)
         {
            if(_phantom.getAI().getIntention() != CtrlIntention.AI_INTENTION_ATTACK || _phantom.getAI().getIntention() != CtrlIntention.AI_INTENTION_CAST)
               _phantom.rndWalk();   
         }
         startWalk(_phantom);
      }
   }

   // кеш фраз фантомов
   private void cachesayPhantoms()
   {
      _PhantomssayPhantoms.clear();
      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/sayPhantoms.talk");
         if (!Data.exists())
            return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         String line;
         while ((line = lnr.readLine()) != null)
         {
            if (line.trim().length() == 0 || line.startsWith("#"))
               continue;
            _PhantomssayPhantoms.add(line);
         }
         _PhantomssayPhantomsCount = _PhantomssayPhantoms.size() - 1;
         _log.info("Load " + _PhantomssayPhantomsCount + " phantom say");
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch (Exception e1)
         {
         }
      }
   }

   private void cachedeadtalk()
   {
      _Phantomsdeadtalk.clear();
      LineNumberReader lnr = null;
      BufferedReader br = null;
      FileReader fr = null;
      try
      {
         File Data = new File("./config/mod/Phantom/dead.talk");
         if (!Data.exists())
            return;
         fr = new FileReader(Data);
         br = new BufferedReader(fr);
         lnr = new LineNumberReader(br);
         String line;
         while ((line = lnr.readLine()) != null)
         {
            if (line.trim().length() == 0 || line.startsWith("#"))
               continue;
            _Phantomsdeadtalk.add(line);
         }
         _PhantomsdeadtalkCount = _Phantomsdeadtalk.size() - 1;
         _log.info("Load " + _PhantomsdeadtalkCount + " phantom Last");
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
      finally
      {
         try
         {
            if (fr != null)
               fr.close();
            if (br != null)
               br.close();
            if (lnr != null)
               lnr.close();
         }
         catch (Exception e1)
         {
         }
      }
   }

   private void parceColors()
   {
      _nameColors = Config.PHANTOM_PLAYERS_NAME_CLOLORS;
      _titleColors = Config.PHANTOM_PLAYERS_TITLE_CLOLORS;
      _nameColCount = _nameColors.size() - 1;
      _titleColCount = _titleColors.size() - 1;
   }

   private L2Set getRandomSet()
   {
      return _sets.get(Rnd.get(_setsCount));
   }

   @SuppressWarnings("unused")
   private L2Set getRandomArcherSet()
   {
      return _setsArcher.get(Rnd.get(_setsArcherCount));
   }

   @SuppressWarnings("unused")
   private int getRandomPhantom()
   {
      return Rnd.get(600000000, 600006081);
   }

   private int getRandomPhantomNext()
   {
      int obj = 0;
      for (int i = 6; i > 0; i--)
      {
         obj = Rnd.get(600000000, 600006081);
         if (!_PhantomsTown.get(1).contains(obj) && !_PhantomsTown.get(2).contains(obj))
            return obj;
      }
      return getRandomPhantomNext();
   }
   @SuppressWarnings("unused")
   private int getRandomClan()
   {
      return Rnd.get(600000000, 600006081);
   }

   private Location getRandomLoc()
   {
      Location loc = null;
      if(loc == null)
         loc = _PhantomsTownLoc.get(Rnd.get(0, _locsCount));
      return loc;
   }

   static class L2Set
   {
      public int _body;
      public int _gaiters;
      public int _gloves;
      public int _boots;
      public int _weapon;
      public int _custom;
      public int _shield;
      public int _cloak;
      public int _grade;
      L2Set(int bod, int gaiter, int glove, int boot, int weapon, int shield, int cloak, int grade, int custom)
      {
         _body = bod;
         _gaiters = gaiter;
         _gloves = glove;
         _boots = boot;
         _weapon = weapon;
         _shield = shield;
         _cloak = cloak;
         _grade = grade;
         _custom = custom;
      }
   }

   static class L2Fantome
   {
      public String name;
      public String title;
      public int x;
      public int y;
      public int z;
      public int clanId;
      L2Fantome(String name, String title, int x, int y, int z, int clanId)
      {
         this.name = name;
         this.title = title;
         this.x = x;
         this.y = y;
         this.z = z;
         this.clanId = clanId;
      }
   }

   public class FantomTask implements Runnable
   {
      public int _task;
      public FantomTask(int task)
      {
         _task = task;
      }
      public void run()
      {
         int count = 0;
         int count2 = 0;
         int PhantomObjId = 0;
         int PhantomObjId2 = 0;
         switch (_task)
         {
            case 1:
            {
               _log.info("PhantomPlayers: 1st wave, spawn started.");
               while(count < Config.PHANTOM_PLAYERS_COUNT_FIRST)
               {
                  Player fantom = null;
                  PhantomObjId = getRandomPhantomNext();
                  if(!(_PhantomsTown.get(1).contains(PhantomObjId)))
                  {
                     fantom = loadPhantom(PhantomObjId);
                     if(fantom == null)
                        continue;
                     _PhantomsTown.get(1).add(fantom);
                     if(Config.PHANTOM_PLAYERS_SOULSHOT_ANIM && Rnd.get(100) < 45)
                     {
                        try
                        {
                           Thread.sleep(900);
                        }
                        catch (InterruptedException e)
                        {}
                        fantom.broadcastPacket(new MagicSkillUse(fantom, fantom, 2154, 1, 0, 0));
                        if (Rnd.get(100) < 5)
                           fantom.sitDown(null);
                        if (Rnd.get(100) < 30)
                           fantom.startAbnormalEffect(AbnormalEffect.S_NAVIT);
                        try
                        {
                           Thread.sleep(300);
                        }
                        catch(InterruptedException e)
                        {
                        }
                        fantom.broadcastPacket(new MagicSkillUse(fantom, fantom, 2164, 1, 0, 0));
                     }
                     try
                     {
                        Thread.sleep(Config.PHANTOM_PLAYERS_DELAY_SPAWN_FIRST);
                     }
                     catch (InterruptedException e)
                     {
                     }
                     count++;
                  }
  &nb

Compartilhar este post


Link para o post
Compartilhar em outros sites

7 respostass a esta questão

Posts recomendados

  • 0
17 horas atrás, l2triedge disse:

 

Amigao esse codigo ta imcompleto ainda, falta a o codigo do config.java, e os arquivos das configs

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

to com uma rev russa aqui que tem esse mod, porem os char so ficam parados, quando coloca nas configs para da spawm em áreas de mods agressivos o coro come kk, ai eles meche da skill etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
21 horas atrás, SaYmOn Cordeiro disse:

to com uma rev russa aqui que tem esse mod, porem os char so ficam parados, quando coloca nas configs para da spawm em áreas de mods agressivos o coro come kk, ai eles meche da skill etc...

pode me arrumar pra da uma olhada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora




     



Anuncie em nossa página no Facebook!
Confira o regulamento.
Contate-nos através do e-mail: [email protected] para mais informações.


  • Quem Está Navegando

    Nenhum usuário registrado visualizando esta página.

×