Нужна помощь со скриптом

MasterOfLineageII

Heir
Customer
Доброго времени суток всем.

Решил создать скрипт и скилл который должен вызывать через скилл например .testscript, но что-то не получается. Может кто нибудь может помочь советом как правильно сделать или тыкнуть где у меня ошибка?

(Команда вызывается если написать в чат)

вот скрипт команды
package services;

import l2.gameserver.handler.voicecommands.IVoicedCommandHandler;
import l2.gameserver.handler.voicecommands.VoicedCommandHandler;
import l2.gameserver.model.Player;
import l2.gameserver.scripts.ScriptFile;

public class TestVoiceCommand implements IVoicedCommandHandler, ScriptFile {

private static final String[] _commandList = new String[] {
"testscript"
};

@Override
public boolean useVoicedCommand(String command, Player player, String args) {
if (command.equalsIgnoreCase("testscript")) {
if (player != null) {
player.sendMessage("✅ Скрипт работает! Команда .testscript активна.");
}
return true;
}
return false;
}

@Override
public String[] getVoicedCommandList() {
return _commandList;
}

@Override
public void onLoad() {
VoicedCommandHandler.getInstance().registerVoicedCommandHandler(this);
System.out.println("TestVoiceCommand: загружен и зарегистрирован для .testscript");
}

@Override
public void onReload() {
}

@Override
public void onShutdown() {
}
}

вот скрипт как должен скилл вызывать команду
package services;

import l2.gameserver.model.Player;
import l2.gameserver.model.Skill;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.handler.voicecommands.VoicedCommandHandler;
import l2.gameserver.handler.voicecommands.IVoicedCommandHandler;

public class InvokeVoiceCommand extends Functions implements ScriptFile {

@Override
public void onLoad() {
System.out.println("✔ InvokeVoiceCommand загружен успешно (handler for skill 9061).");
}

@Override
public void onReload() {}

@Override
public void onShutdown() {}

public void useSkill(Player player, Skill skill) {
if (player == null || skill == null)
return;

player.sendMessage("✔ Скрипт InvokeVoiceCommand вызван.");

String command = "testscript";
IVoicedCommandHandler handler = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);

if (handler != null) {
handler.useVoicedCommand(command, player, "");
} else {
player.sendMessage("⚠ Команда ." + command + " не найдена.");
}
}
}

вот скилл
<skill id="9061" levels="1" name="Call ACP">
<set name="skillType" val="NOTDONE"/>
<set name="isHandler" val="true"/>
<set name="handlerName" val="TestVoiceCommand"/>
<set name="target" val="TARGET_SELF"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="icon" val="icon.skill0000"/>
<for/>
</skill>
 
В консоли загружается твоя воис команда?
Возможно некорректно зарегистрирована воис команда.
 
В консоли загружается твоя воис команда?
Возможно некорректно зарегистрирована воис команда.
в консоли пишет всё окей
✔ InvokeVoiceCommand загружен успешно (handler for skill 9061)
TestVoiceCommand: загружен и зарегистрирован для .testscript
 
В консоли загружается твоя воис команда?
Возможно некорректно зарегистрирована воис команда.
1746698154423.webp
вот что пишет в игре когда юзаешь скилл
а вот что в логгах
WARN NOTDONE skill: 9061, used byGameMaster[268476908]
 
Сделай нормальный скилл, у тебя проблема очевидно в его типе и сам скил выглядит неполным. Что ты хочешь не понятно.
 
Сделай нормальный скилл, у тебя проблема очевидно в его типе и сам скил выглядит неполным. Что ты хочешь не понятно.
сделал нормальный скилл
<skill id="9061" levels="1" name="Call ACP">
<set name="skillType" val="BUFF"/>
<set name="target" val="TARGET_SELF"/>
<set name="isHandler" val="true"/>
<set name="handlerName" val="InvokeVoiceCommand"/>
<set name="reuseDelay" val="1000"/>
<set name="hitTime" val="500"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="magicLevel" val="1"/>
<set name="displayId" val="9061"/>
<set name="displayLevel" val="1"/>
<set name="icon" val="icon.skill1050"/>
<for/>
</skill>
но смысла нет, юзает скилл но команду не вызывает. проблема где то в скрипте
 
Back
Top