Create your own macros on player creating/Как делать свои макросы при создании игрока

Deazer

Head Developer
Staff member
Here you go, I shit extension. While the puzzles don’t fit in my head at all, how to throw it out is normal in XML
Вот держите я насрал экстеншен. Пока в голове вообще ни как пазлы не сложатся как выкинуть нормально это в XML нет
Code:

Classic/Legacy revision
Java:
package services;

import l2.gameserver.listener.actor.player.OnPlayerEnterListener;
import l2.gameserver.model.Player;
import l2.gameserver.model.actor.instances.player.Macro;
import l2.gameserver.model.actor.instances.player.ShortCut;
import l2.gameserver.model.actor.listener.CharListenerList;
import l2.gameserver.network.l2.s2c.MacroUpdateType;
import l2.gameserver.network.l2.s2c.SendMacroList;
import l2.gameserver.network.l2.s2c.ShortCutRegister;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;

import java.util.ArrayList;
import java.util.List;

public class RegMacros extends Functions implements ScriptFile, OnPlayerEnterListener
{
  @Override
  public void onPlayerEnter(Player player)
  {
    if(player.getOnlineTime() == 0)
    {
      List<Macro.L2MacroCmd> commands = new ArrayList<>();
      List<Macro.L2MacroCmd> commands1 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands2 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands3 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands4 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands5 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands6 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands7 = new ArrayList<>();

      Macro.L2MacroCmd mc = new Macro.L2MacroCmd(1, 3, 0, 0, ".menu");
      Macro.L2MacroCmd mc1 = new Macro.L2MacroCmd(2, 3, 0, 0, ".pa");
      Macro.L2MacroCmd mc2 = new Macro.L2MacroCmd(2, 3, 0, 0, ".acp");
      Macro.L2MacroCmd mc3 = new Macro.L2MacroCmd(2, 3, 0, 0, ".epic");
      Macro.L2MacroCmd mc4 = new Macro.L2MacroCmd(2, 3, 0, 0, ".relog");
      Macro.L2MacroCmd mc5 = new Macro.L2MacroCmd(2, 3, 0, 0, ".rb");
      Macro.L2MacroCmd mc6 = new Macro.L2MacroCmd(2, 3, 0, 0, ".autofarm");
      Macro.L2MacroCmd mc7 = new Macro.L2MacroCmd(2, 3, 0, 0, ".achiv");
      commands.add(mc);
      commands1.add(mc1);
      commands2.add(mc2);
      commands3.add(mc3);
      commands4.add(mc4);
      commands5.add(mc5);
      commands6.add(mc6);
      commands7.add(mc7);
      //Авто фарм - .autofarm
      Macro m = new Macro(1, 1000, "MENU", "Open player settings panel", "MENU", commands.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m1 = new Macro(2, 1000, "PREM", "Check premium status of PA", "PA", commands1.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m2 = new Macro(3, 1000, "ACP", "Open acp settings panel", "ACP", commands2.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m3 = new Macro(4, 1000, "EPIC", "Check Epic Boss status", "EPIC", commands3.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m4 = new Macro(5, 1000, "FPS", "Clear FPS cache", "FPS", commands4.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m5 = new Macro(6, 1000, "RAID", "Check Boss status", "RAID", commands5.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m6 = new Macro(7, 1000, "FARM", "Open farming settings panel", "FARM", commands6.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m7 = new Macro(8, 1000, "ACHI", "Open achievements panel", "ACHIV", commands7.toArray(new Macro.L2MacroCmd[commands.size()]));


      player.registerMacro(m);
      player.registerMacro(m1);
      player.registerMacro(m2);
      player.registerMacro(m3);
      player.registerMacro(m4);
      player.registerMacro(m5);
      player.registerMacro(m6);
      player.registerMacro(m7);

      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m1));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m2));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m3));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m4));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m5));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m6));
      player.sendPacket(new SendMacroList(MacroUpdateType.ADD, 1, m7));

      // Slot, Page, Type ( Macro = 4), id (Macro ID), level player, class
      ShortCut shortCut = new ShortCut( 0,  2,4,1, 0, player.getClassId().getId());
      ShortCut shortCut1 = new ShortCut(1, 2, 4, 2, 0, player.getClassId().getId());
      ShortCut shortCut2 = new ShortCut(2, 2, 4, 3, 0, player.getClassId().getId());
      ShortCut shortCut3 = new ShortCut(3, 2, 4, 4, 0, player.getClassId().getId());
      ShortCut shortCut4 = new ShortCut(4, 2, 4, 5, 0, player.getClassId().getId());
      ShortCut shortCut5 = new ShortCut(5, 2, 4, 6, 0, player.getClassId().getId());
      ShortCut shortCut6 = new ShortCut(6, 2, 4, 7, 0, player.getClassId().getId());
      ShortCut shortCut7 = new ShortCut(7, 2, 4, 8, 0, player.getClassId().getId());

      player.sendPacket(new ShortCutRegister(player, shortCut));
      player.sendPacket(new ShortCutRegister(player, shortCut1));
      player.sendPacket(new ShortCutRegister(player, shortCut2));
      player.sendPacket(new ShortCutRegister(player, shortCut3));
      player.sendPacket(new ShortCutRegister(player, shortCut4));
      player.sendPacket(new ShortCutRegister(player, shortCut5));
      player.sendPacket(new ShortCutRegister(player, shortCut6));
      player.sendPacket(new ShortCutRegister(player, shortCut7));

      player.registerShortCut(shortCut);
      player.registerShortCut(shortCut1);
      player.registerShortCut(shortCut2);
      player.registerShortCut(shortCut3);
      player.registerShortCut(shortCut4);
      player.registerShortCut(shortCut5);
      player.registerShortCut(shortCut6);
      player.registerShortCut(shortCut7);
    }
  }

  @Override
  public void onLoad()
  {
    CharListenerList.addGlobal(this);
  }

  @Override
  public void onReload()
  {

  }

  @Override
  public void onShutdown()
  {

  }
}

Interlude
Java:
package services;

import l2.gameserver.listener.actor.player.OnPlayerEnterListener;
import l2.gameserver.model.Player;
import l2.gameserver.model.actor.instances.player.Macro;
import l2.gameserver.model.actor.instances.player.ShortCut;
import l2.gameserver.model.actor.listener.CharListenerList;
import l2.gameserver.network.l2.s2c.ShortCutRegister;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;

import java.util.ArrayList;
import java.util.List;

public class RegMacros extends Functions implements ScriptFile, OnPlayerEnterListener
{
@Override
  public void onPlayerEnter(Player player)
  {
if(player.getOnlineTime() == 0)
    {
List<Macro.L2MacroCmd> commands = new ArrayList<>();
      List<Macro.L2MacroCmd> commands1 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands2 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands3 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands4 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands5 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands6 = new ArrayList<>();
      List<Macro.L2MacroCmd> commands7 = new ArrayList<>();

      Macro.L2MacroCmd mc  = new Macro.L2MacroCmd(1, 3, 0, 0, ".menu");
      Macro.L2MacroCmd mc1 = new Macro.L2MacroCmd(1, 3, 0, 0, ".pa");
      Macro.L2MacroCmd mc2 = new Macro.L2MacroCmd(1, 3, 0, 0, ".acp");
      Macro.L2MacroCmd mc3 = new Macro.L2MacroCmd(1, 3, 0, 0, ".epic");
      Macro.L2MacroCmd mc4 = new Macro.L2MacroCmd(1, 3, 0, 0, ".relog");
      Macro.L2MacroCmd mc5 = new Macro.L2MacroCmd(1, 3, 0, 0, ".rb");
      Macro.L2MacroCmd mc6 = new Macro.L2MacroCmd(1, 3, 0, 0, ".autofarm");
      Macro.L2MacroCmd mc7 = new Macro.L2MacroCmd(1, 3, 0, 0, ".achiv");

      commands.add(mc);
      commands1.add(mc1);
      commands2.add(mc2);
      commands3.add(mc3);
      commands4.add(mc4);
      commands5.add(mc5);
      commands6.add(mc6);
      commands7.add(mc7);

      Macro m = new Macro (1001, 0, "Menu", "Open player settings panel", "MENU", commands.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m1 = new Macro(1002, 0, "Premium", "Check Premium status of PA", "PA", commands1.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m2 = new Macro(1003, 0, "Acp", "Open Acp settings panel", "ACP", commands2.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m3 = new Macro(1004, 0, "Epic Boss", "Check Epic Boss status", "EPIC", commands3.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m4 = new Macro(1005, 0, "FPS", "Clear FPS cache", "FPS", commands4.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m5 = new Macro(1006, 0, "Raid Boss", "Check Raid Boss status", "RAID", commands5.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m6 = new Macro(1007, 0, "Autofarm", "Open Autofarm settings panel", "FARM", commands6.toArray(new Macro.L2MacroCmd[commands.size()]));
      Macro m7 = new Macro(1008, 0, "Achievements", "Open Achievements panel", "ACHIV", commands7.toArray(new Macro.L2MacroCmd[commands.size()]));


      player.registerMacro(m);
      player.registerMacro(m1);
      player.registerMacro(m2);
      player.registerMacro(m3);
      player.registerMacro(m4);
      player.registerMacro(m5);
      player.registerMacro(m6);
      player.registerMacro(m7);

      // Slot, Page, Type ( Macro = 4), id (Macro ID), level player, class
      ShortCut shortCut = new ShortCut( 0, 2, 4,1001, 0, player.getClassId().getId());
      ShortCut shortCut1 = new ShortCut(1, 2, 4,1002, 0, player.getClassId().getId());
      ShortCut shortCut2 = new ShortCut(2, 2, 4,1003, 0, player.getClassId().getId());
      ShortCut shortCut3 = new ShortCut(3, 2, 4,1004, 0, player.getClassId().getId());
      ShortCut shortCut4 = new ShortCut(4, 2, 4,1005, 0, player.getClassId().getId());
      ShortCut shortCut5 = new ShortCut(5, 2, 4,1006, 0, player.getClassId().getId());
      ShortCut shortCut6 = new ShortCut(6, 2, 4,1007, 0, player.getClassId().getId());
      ShortCut shortCut7 = new ShortCut(7, 2, 4,1008, 0, player.getClassId().getId());

      player.sendPacket(new ShortCutRegister(player, shortCut));
      player.sendPacket(new ShortCutRegister(player, shortCut1));
      player.sendPacket(new ShortCutRegister(player, shortCut2));
      player.sendPacket(new ShortCutRegister(player, shortCut3));
      player.sendPacket(new ShortCutRegister(player, shortCut4));
      player.sendPacket(new ShortCutRegister(player, shortCut5));
      player.sendPacket(new ShortCutRegister(player, shortCut6));
      player.sendPacket(new ShortCutRegister(player, shortCut7));

      player.registerShortCut(shortCut);
      player.registerShortCut(shortCut1);
      player.registerShortCut(shortCut2);
      player.registerShortCut(shortCut3);
      player.registerShortCut(shortCut4);
      player.registerShortCut(shortCut5);
      player.registerShortCut(shortCut6);
      player.registerShortCut(shortCut7);
    }
  }

@Override
  public void onLoad()
  {
     CharListenerList.addGlobal(this);
  }

@Override
  public void onReload()
  {

  }

@Override
  public void onShutdown()
  {

  }
}

How to build: https://lucera2.com/threads/how-to-add-your-quests-or-subsystems-to-an-assembly.1406/
 
Last edited:
Back
Top