ПАМАГИТЕ !!! bypass через L2GameClientPacket

Thatgun

Vagabond
Как поймать админский макрос ?

Сдеал так. Не работает.

package test2;

import l2.gameserver.handler.admincommands.AdminCommandHandler;
import l2.gameserver.model.Player;
import l2.gameserver.network.l2.c2s.L2GameClientPacket;import l2.gameserver.scripts.ScriptFile;

public class L2Dev_bypass extends L2GameClientPacket implements ScriptFile
{

private String _command;

@Override
protected void readImpl() throws Exception
{
_command = readS();

if(_command != null)
_command = _command.trim();
//return true;

}
@Override
protected void runImpl() throws Exception
{

Player activeChar = getClient().getActiveChar();

if(activeChar == null)
return;


if (_command.equals("test1"))
{

activeChar.teleToLocation(116474, -182904, -1536);

return;


}


}


@Override
public void onLoad()
{
System.out.println("!!! L2Dev_bypass.onLoad()");
}

@Override
public void onReload()
{
System.out.println("!!! L2Dev_bypass.onReload()");
}
@Override
public void onShutdown()
{
System.out.println("!!! L2Dev_bypass.onShutdown()");
}

}
 
Как поймать админский макрос ?

Сдеал так. Не работает
Подробнее опиши что именно нужно? Макрос- какую то команду, которая будет работать только у админов?
 
Если bypass хочешь новый сделать то тебе нужно имплементировать класс другой . Вечером могу скинуть пример
 
Java:
public class testBypass implements IBypassHandler, ScriptFile {
    private String[] command = new String[]{"_blablabla"};
    @Override
    public String[] getBypasses() {
        return command;
    }

    @Override
    public void onBypassFeedback(NpcInstance npcInstance, Player player, String s) {

    }

    @Override
    public void onLoad() {
        BypassHandler.getInstance().registerBypass(this);
    }

    @Override
    public void onReload() {

    }

    @Override
    public void onShutdown() {

    }
}

в onBypassFeedback уже обработка твоей команды и нужные условия.
 
Java:
import l2.gameserver.Announcements;
import l2.gameserver.handler.bbs.CommunityBoardManager;
import l2.gameserver.handler.bbs.ICommunityBoardHandler;
import l2.gameserver.handler.bypass.BypassHandler;
import l2.gameserver.handler.bypass.IBypassHandler;
import l2.gameserver.handler.chat.IChatHandler;
import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.scripts.ScriptFile;

public class BypassTest implements ICommunityBoardHandler, ScriptFile {
    private String[] command = new String[]{"_autotest2","_autotest1"};

    @Override
    public String[] getBypassCommands() {
        return command;
    }

    @Override
    public void onBypassCommand(Player player, String s) {
        String[] strings = s.split(" ");
        if(strings.length>1){
            int x = Integer.parseInt(strings[1]);
            int y = Integer.parseInt(strings[2]);
            int z = Integer.parseInt(strings[3]);
            if(player != null){
                player.teleToLocation(x,y,z);
            }
        }
    }

    @Override
    public void onWriteCommand(Player player, String s, String s1, String s2, String s3, String s4, String s5) {

    }
    @Override
    public void onLoad() {
        CommunityBoardManager.getInstance().registerHandler(this);






    }

    @Override
    public void onReload() {

    }

    @Override
    public void onShutdown() {

    }


}

Это работает из КБ например bypass _autotest2 12321 2231 -2332

телепорт по координатам.
Но надо еще проверок засунуть .

Но это я взял ICommunityBoardHandler

IBypassHandler как будто не рабочий. либо я регаю его не там. незнаю

Я просто обычно пользуюсь не байпассами а вызовом скрипта с передачей нужных параметров

например :
bypass -h scripts_farmZone.event.FarmZone:teleport 1

farmZone.event это pakage
FarmZone это класс
teleport это метод в классе.
если далее стоит параметр какой то
то метод должен быть
teleport(Strings[] strgs){
}

а если без параметра, то просто teleport(){}
 
Да и не надо.
Разобрались уже.
Спасибо всем огромное.
Впервый раз заюзал экстендер.
 
а зачем байпасс если можно просто передать .offline?
ExecuteCommand(".offline")
В интерфейсе? Хм, не видел такой функии раньше, попробую
 
Back
Top