uaa007
Junior Developer
Пытаюсь написать следующий алгоритм: игрок вводит команду "/viewer true" и после этого при нажатии и удерживании на клавишу N рендерится текст "Отпусти кнопку N". Если клавишу N отпускаем - текст "Отпусти кнопку N" исчезает. После чего, вводится команда "/viewer false" и теперь при нажатии на клавишу N текст "Отпусти кнопку N" больше не рендерится.
Проблема: при вводе команды "/viewer false" если используем mp.events.remove(), то текст продолжает отображаться при нажатии на клавишу N, если используем mp.events.reset(), то все события удаляются и, соответственно, команды "/viewer false" и "/viewer true" больше не обрабатываются на клиенте.
Код на сервере:
Код на клиенте:
Примечание: пробовал через класс создавать событие и использовать eventName.destroy() или eventName.enable() - ничего не изменяется. Просто код этот удалил, если нужно - напишу еще раз, дайте знать)
Проблема: при вводе команды "/viewer false" если используем mp.events.remove(), то текст продолжает отображаться при нажатии на клавишу N, если используем mp.events.reset(), то все события удаляются и, соответственно, команды "/viewer false" и "/viewer true" больше не обрабатываются на клиенте.
Код на сервере:
JavaScript:
mp.events.add({
playerCommand: (player, command) => {
const parameters = command.split(/[ ]+/);
const commandName = parameters[0];
if (commandName === "viewer") {
if (parameters[1] === "true") {
player.call("viewer_client", [true]);
player.outputChatBox(`При нажатии [N] будет выводиться надпись`);
} else if (parameters[1] === "false") {
player.call("viewer_client", [false]);
player.outputChatBox(`При нажатии [N] надпись выводиться не будет`);
}
}
},
});
Код на клиенте:
Код:
mp.events.add({
"viewer_client": (bool) => {
if (bool) {
mp.events.call("renderOn", renderOn);
mp.gui.chat.push("Включили");
} else if (!bool) {
mp.events.remove("renderOn", renderOn); // Если используем это, то ничего не отключается
mp.events.reset(); // Если используем это, то событие "gunViewer_client" больше не срабатывает
mp.gui.chat.push("Выключили");
}
},
});
mp.events.add("renderOn", renderOn);
function renderOn() {
mp.events.add("render", () => {
if (mp.keys.isDown(78) === true) {
mp.game.graphics.drawText(`Нажата кнопка N`, [0.5, 0.005], {
font: 7,
color: [255, 255, 255, 185],
scale: [0.5, 0.5],
outline: false,
});
}
});
}
Примечание: пробовал через класс создавать событие и использовать eventName.destroy() или eventName.enable() - ничего не изменяется. Просто код этот удалил, если нужно - напишу еще раз, дайте знать)