Advertisement
tensador125

Magic Gem Interlude (Item Spawn Npc Services -L2JOrion)

Mar 17th, 2023 (edited)
1,413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.46 KB | Gaming | 0 0
  1.  
  2. ItemHandler.java
  3.  
  4. agregar esto
  5. +       registerItemHandler(new MagicGem());
  6.  
  7.  
  8.  
  9.  
  10. MagicGem.java
  11. package l2jorion.game.handler.item;
  12.  
  13. import l2jorion.Config;
  14. import l2jorion.game.handler.IItemHandler;
  15. import l2jorion.game.managers.GrandBossManager;
  16. import l2jorion.game.model.L2World;
  17. import l2jorion.game.model.actor.instance.L2ItemInstance;
  18. import l2jorion.game.model.actor.instance.L2PcInstance;
  19. import l2jorion.game.model.actor.instance.L2PlayableInstance;
  20. import l2jorion.game.model.zone.ZoneId;
  21. import l2jorion.game.taskmanager.AttackStanceTaskManager;
  22.  
  23. public class MagicGem implements IItemHandler
  24. {
  25.    
  26.     private static final int[] ITEM_IDS =
  27.     {
  28.         Config.ITEM_SPAWNID
  29.     };
  30.    
  31.     @Override
  32.     public void useItem(L2PlayableInstance playable, L2ItemInstance magicGem)
  33.     {
  34.         if (!(playable instanceof L2PcInstance))
  35.         {
  36.             return;
  37.         }
  38.        
  39.         L2PcInstance player = (L2PcInstance) playable;
  40.        
  41.         if (player.isMoving())
  42.         {
  43.             player.sendMessage("You cannot use a Magic Gem right now.");
  44.             return;
  45.         }
  46.        
  47.         if (player.inObserverMode())
  48.         {
  49.             player.sendMessage("You cannot use a Magic Gem right now.");
  50.             return;
  51.         }
  52.        
  53.         if (player.isCastingNow())
  54.         {
  55.             player.sendMessage("You cannot use a Magic Gem right now.");
  56.             return;
  57.         }
  58.        
  59.         if ((player.isMounted()))
  60.         {
  61.             player.sendMessage("You cannot use a Magic Gem right now.");
  62.             return;
  63.         }
  64.        
  65.         if (player.isAttackingNow())
  66.         {
  67.             player.sendMessage("You cannot use a Magic Gem right now.");
  68.             return;
  69.         }
  70.        
  71.         if (player.isSpawnHelperEnabled())
  72.         {
  73.             player.unspawnServitors();
  74.             player.setspawnhelper(false);
  75.     //      player.setInstanceId(0);
  76.            
  77.         }
  78.        
  79.         if (!GrandBossManager.getInstance().checkIfInZone(null, player) && !player.isInsideZone(ZoneId.ZONE_PVP) && (!player.isInsideZone(ZoneId.ZONE_NOSUMMONFRIEND) && !player.isInsideZone(ZoneId.ZONE_SIEGE)) && !player.isInOlympiadMode()
  80.             && !AttackStanceTaskManager.getInstance().getAttackStanceTask(player) && player.getPvpFlag() == 0 && !player.isSpawnHelperEnabled())
  81.         {
  82.            
  83.             player.spawnServitors();
  84.             player.getAppearance().setInvisible();
  85.             player.decayMe();
  86.             L2World.getInstance().addPlayerToWorld(player);
  87.             player.broadcastUserInfo();
  88.             player.spawnMe();
  89.             player.setspawnhelper(true);
  90.             player.sendMessage("You use a Magic Gem.");
  91.            
  92.         }
  93.         else
  94.         {
  95.             player.sendMessage("You cannot use a Magic Gem right now.");
  96.         }
  97.        
  98.     }
  99.    
  100.     @Override
  101.     public int[] getItemIds()
  102.     {
  103.         return ITEM_IDS;
  104.     }
  105. }
  106.  
  107.  
  108. Config.java
  109.  
  110.     public static int ITEM_SPAWNID;
  111.     public static int NPC1_SPAWN_MAGIC_GEM;
  112.     public static int NPC2_SPAWN_MAGIC_GEM;
  113.     public static int NPC3_SPAWN_MAGIC_GEM;
  114.     public static int NPC4_SPAWN_MAGIC_GEM;
  115.  
  116.  
  117.  
  118.             ITEM_SPAWNID = Integer.parseInt(L2jOrionSettings.getProperty("ItemIdSpawn", "5072"));
  119.             NPC1_SPAWN_MAGIC_GEM = Integer.parseInt(L2jOrionSettings.getProperty("NpcIdSpawn1", "31228"));
  120.             NPC2_SPAWN_MAGIC_GEM = Integer.parseInt(L2jOrionSettings.getProperty("NpcIdSpawn2", "7077"));
  121.             NPC3_SPAWN_MAGIC_GEM = Integer.parseInt(L2jOrionSettings.getProperty("NpcIdSpawn3", "4"));
  122.             NPC4_SPAWN_MAGIC_GEM = Integer.parseInt(L2jOrionSettings.getProperty("NpcIdSpawn4", "7"));
  123.  
  124.  
  125.  
  126. Config/main/L2jOrion.ini
  127.  
  128. ItemIdSpawn = 5072
  129. NpcIdSpawn1 = 31228
  130. NpcIdSpawn2 = 7077
  131. NpcIdSpawn3 = 4
  132. NpcIdSpawn4 = 7
  133.  
  134.  
  135. L2PcInstance.java
  136.  
  137.     private boolean _spawnhelper = false;
  138.    
  139.     public boolean isSpawnHelperEnabled()
  140.     {
  141.         return _spawnhelper;
  142.     }
  143.    
  144.     public void setspawnhelper(boolean val)
  145.     {
  146.         _spawnhelper = val;
  147.     }
  148.  
  149.  
  150.     // Magic Gem
  151.     private L2Spawn[] _npcServitors = new L2Spawn[4];
  152.    
  153.     private L2Spawn getNpcServitor(int id)
  154.     {
  155.         if (_npcServitors[id] != null)
  156.         {
  157.             return _npcServitors[id];
  158.         }
  159.         L2Spawn spawn = null;
  160.         try
  161.         {
  162.             L2NpcTemplate tmpl;
  163.             switch (id)
  164.             {
  165.                 case 0:
  166.                     tmpl = NpcTable.getInstance().getTemplate(Config.NPC1_SPAWN_MAGIC_GEM);
  167.                     break;
  168.                 case 1:
  169.                     tmpl = NpcTable.getInstance().getTemplate(Config.NPC2_SPAWN_MAGIC_GEM);
  170.                     break;
  171.                 case 2:
  172.                     tmpl = NpcTable.getInstance().getTemplate(Config.NPC3_SPAWN_MAGIC_GEM);
  173.                     break;
  174.                 default:
  175.                     tmpl = NpcTable.getInstance().getTemplate(Config.NPC4_SPAWN_MAGIC_GEM);
  176.             }
  177.             spawn = new L2Spawn(tmpl);
  178.         }
  179.         catch (Exception e)
  180.         {
  181.             e.printStackTrace();
  182.         }
  183.         _npcServitors[id] = spawn;
  184.         return _npcServitors[id];
  185.     }
  186.    
  187. //  public Instance _instance = null;
  188.    
  189.     public void spawnServitors()
  190.     {
  191. //      /** The _player. */
  192. //      final L2PcInstance _player;
  193. //      _player = L2PcInstance.this;
  194.        
  195. //      InstanceManager.getInstance().createInstance(getObjectId());
  196.         L2Spawn servitor;
  197.         float angle = Rnd.get(1000);
  198.         int sCount = 4;
  199.        
  200.         for (int i = 0; i < sCount; i++)
  201.         {
  202.             servitor = getNpcServitor(i);
  203.             if (servitor != null)
  204.             {
  205.     //          servitor.setInstanceId(getObjectId());
  206.     //          _player.setInstanceId(getObjectId());
  207.                 servitor.setLocx(Math.round(getX() + (float) Math.cos(angle / 1000 * 2 * Math.PI) * 30));
  208.                 servitor.setLocy(Math.round(getY() + (float) Math.sin(angle / 1000 * 2 * Math.PI) * 65));
  209.                 servitor.setLocz(getZ());
  210.                 int heading = (int) Math.round(Math.atan2(getY() - servitor.getLocy(), getX() - servitor.getLocx()) / Math.PI * 32768);
  211.                 if (heading < 0)
  212.                 {
  213.                     heading = 65535 + heading;
  214.                 }
  215.                 servitor.setHeading(heading);
  216.                
  217. //              if (InstanceManager.getInstance().getInstance(getObjectId()) != null)
  218. //              {
  219.                     servitor.doSpawn();
  220.                     servitor.getNpc().setTitle(_player.getName());
  221.                    
  222. //              }
  223.                
  224.             }
  225.             angle += 1000 / sCount;
  226.         }
  227.     }
  228.    
  229.     public void unspawnServitors()
  230.     {
  231.        
  232.         L2Spawn servitor;
  233.        
  234.         int sCount = 4;
  235.        
  236.         for (int i = 0; i < sCount; i++)
  237.         {
  238.             servitor = getNpcServitor(i);
  239.             if (servitor != null)
  240.             {
  241.                
  242.                 servitor.getLastSpawn().deleteMe();
  243.                
  244.             }
  245.            
  246.         }
  247.     }
  248.  
  249.  
  250. l2jorion.game.ai.AbstractAI
  251.  
  252.  
  253.     public void moveTo(int x, int y, int z)
  254.     {
  255.         if (!_actor.isMovementDisabled())
  256.         {
  257.             _clientMoving = true;
  258.             _clientMovingToPawnOffset = 0;
  259.             _actor.moveToLocation(x, y, z, 0);
  260.             _actor.broadcastPacket(new CharMoveToLocation(_actor));
  261.         }
  262.         else
  263.         {
  264.             clientActionFailed();
  265.         }
  266.  
  267. +       if (_actor instanceof L2PcInstance)
  268. +       {
  269. +           if (((L2PcInstance) _actor).isSpawnHelperEnabled() && _actor.isMoving())
  270. +           {
  271. +               ((L2PcInstance) _actor).unspawnServitors();
  272. +               ((L2PcInstance) _actor).setspawnhelper(false);
  273. //              _actor.setInstanceId(0);
  274. +               ((L2PcInstance) _actor).getAppearance().setVisible();
  275. +               ((L2PcInstance) _actor).broadcastUserInfo();
  276. +           }
  277. +       }
  278.  
  279.  
  280.  
  281.  
  282.  
Tags: l2j
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement