своя кнопка с байпассом

Роман

Heir
Customer
10 Years Anniversary
QA Engineer
Всем привет, подскажите, пожалуйста, смогу ли я создать свой ext.jar скрипт со своей кнопкой?
Например - при нажатии на кнопку будет проверять актуальную зону и возвращать ответ, что зона не активна, либо телепортировать по указанным координатам, если зона активна?
Что-то пытаюсь уже 4 часа, скрипт подгружается, но при нажатии на кнопку получаю ошибку:
ERROR Scripts: No such method services.ZoneTeleporter.doTeleport()!

Пока что, всё сводится к тому, что сборка не поддерживает вызов байпассов из внешних .ext.jar через scripts_ префикс.
 
Last edited:
Всем привет, подскажите, пожалуйста, смогу ли я создать свой ext.jar скрипт со своей кнопкой?
Например - при нажатии на кнопку будет проверять актуальную зону и возвращать ответ, что зона не активна, либо телепортировать по указанным координатам, если зона активна?
Что-то пытаюсь уже 4 часа, скрипт подгружается, но при нажатии на кнопку получаю ошибку:
ERROR Scripts: No such method services.ZoneTeleporter.doTeleport()!

Пока что, всё сводится к тому, что сборка не поддерживает вызов байпассов из внешних .ext.jar через scripts_ префикс.
Тг в лс дай
 
1. Пробую добавить свою кнопку для теста, вот такой код:

package services;

import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;

public class TestHandler extends Functions implements ScriptFile {

@Override
public void onLoad() {
System.out.println("[TestHandler] Loaded successfully.");
}

@Override
public void onReload() { }

@Override
public void onShutdown() { }

public void hello(NpcInstance npc, Player player, String[] args) {
player.sendMessage("Привет! Метод hello() успешно вызван.");
System.out.println("[TestHandler] hello() triggered for: " + player.getName());
}
}

2. скрипт подгружается: [TestHandler] Loaded successfully.

3. Вот такая кнопка в игре: button value="Тест" action="bypass -h scripts_services.TestHandler:hello"

4. Вот такая ошбка в логах: ERROR Scripts: No such method services.TestHandler.hello()!

может я байпасс не верно указываю?
 
package services;

import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;

/**
* Простейший пример: выводит сообщение игроку при нажатии кнопки.
* Bypass: scripts_services.TestHandler:hello
*/
public class TestHandler extends Functions implements ScriptFile {

/* ===== ScriptFile ===== */

@Override
public void onLoad() {
System.out.println("[TestHandler] Loaded successfully.");
}

@Override
public void onReload() { }

@Override
public void onShutdown() { }

/* ===== Bypass-методы ===== */

/**
* ищет по bypass-строке «…:hello».
*/
public void hello() {
Player player = getSelf(); // игрок, нажавший кнопку
NpcInstance npc = getNpc(); // NPC, если вызов шёл из диалога

if (player == null) // защита от NullPointer
return;

player.sendMessage("Привет! Метод hello() успешно вызван.");
System.out.println("[TestHandler] hello() triggered for: " + player.getName()
+ (npc != null ? " (via " + npc.getName() + ")" : ""));
}
}


<button value="Тест"
action="bypass -h scripts_services.TestHandler:hello"
width=90 height=22
back="L2UI_CT1.Button_DF_Down"
fore="L2UI_CT1.Button_DF">
 
package services;

import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;

/**
* Простейший пример: выводит сообщение игроку при нажатии кнопки.
* Bypass: scripts_services.TestHandler:hello
*/
public class TestHandler extends Functions implements ScriptFile {

/* ===== ScriptFile ===== */

@Override
public void onLoad() {
System.out.println("[TestHandler] Loaded successfully.");
}

@Override
public void onReload() { }

@Override
public void onShutdown() { }

/* ===== Bypass-методы ===== */

/**
* ищет по bypass-строке «…:hello».
*/
public void hello() {
Player player = getSelf(); // игрок, нажавший кнопку
NpcInstance npc = getNpc(); // NPC, если вызов шёл из диалога

if (player == null) // защита от NullPointer
return;

player.sendMessage("Привет! Метод hello() успешно вызван.");
System.out.println("[TestHandler] hello() triggered for: " + player.getName()
+ (npc != null ? " (via " + npc.getName() + ")" : ""));
}
}


<button value="Тест"
action="bypass -h scripts_services.TestHandler:hello"
width=90 height=22
back="L2UI_CT1.Button_DF_Down"
fore="L2UI_CT1.Button_DF">
Благодарю!
 
Back
Top