- Плагин
- MyCommand
- Ядро сервера
- Paper
- Версия сервера
- 1.21
- Память сервера ОЗУ
- 4Gb
История:
Решил я значит написать небольшую систему уровней. Референс я брал с сампа и мне в принципе даже было понятно как это сделать. Есть 3 переменные: stats_exp, stats_exp_needed и stats_level. Всё это нужно чтобы нубасы не могли пользоваться вещами до определённого уровня, вступать в кланы и чтобы добавить смысл в прохождение начальных квестов. Так вот, суть была в том, чтобы каждую секунду команда проверяла сколько у игрока stats_exp, сколько у игрока stats_exp_needed и если stats_exp равен stats_exp_needed добавляла к stats_exp_needed stats_level и после stats_level увеличивала на 1. Так вот суть проблемы... Команда от консоли вообще никак не может проверять переменную игрока напрямую ($Playerdata%<var>%), тогда я решил использовать как бы сам плейсхолдер mycommand (%mycommand_playerdata_<var>%), но она сука тоже не работает и причём что я заметил так если выполнить команду
YAML:
mycmd tellto $player %mycommand_playerdata_stats_exp%
Я бы хотел просветления от таких же обывателей как и я.
JavaScript:
// Псевдокод MyCommand (как я это представляю):
public String getPlaceholder(String placeholder) {
// Если placeholder содержит "mycommand_playerdata_"
if (placeholder.startsWith("mycommand_playerdata_")) {
String varName = placeholder.replace("mycommand_playerdata_", "");
// НЕТ ПРОВЕРКИ КОНТЕКСТА ИГРОКА!
return getConsolePlayerData(varName); // Всегда у консоли!
}
}
Вот примерный код, который должен работать, но почему-то не работает (executefor: ONLINE_PLAYERS и execute_mode: CONSOLE_ONLY и всё вместе тоже пробовал)
YAML:
experience_system:
type: RUN_COMMAND_TASK
command: /experiencesystem
permission-required: true
permission-node: admin.ga
permission-error: "&l&5 ABYSSAL | Что-то вы не похожи на ГА))"
register: true
task_repeat_every_sec: 1
task_run_n_times: -1
runcmd:
- '$Script$%if%$mycommand_playerdata_stats_exp$==$mycommand_playerdata_stats_exp_needed$'
- '$Script$%if%$mycommand_playerdata_stats_level$==10'
- '$broadcasttext$ '
- "$broadcasttext$ &l&5ABYSSAL | LEVEL"
- "$broadcasttext$ &l&5Мы с уверенностью можем поздравить $player!"
- "$broadcasttext$ &l&5Ведь он получил 10-й уровень!"
- '$broadcasttext$ '
- '$Script$%elseif%$mycommand_playerdata_stats_level$==50'
- '$broadcasttext$ '
- "$broadcasttext$ &l&5ABYSSAL | LEVEL"
- "$broadcasttext$ &l&5Мы с уверенностью можем поздравить $player!"
- "$broadcasttext$ &l&5Ведь он получил 50-й уровень!"
- '$broadcasttext$ '
- '$Script$%elseif%$mycommand_playerdata_stats_level$==100'
- '$broadcasttext$ '
- "$broadcasttext$ &l&5ABYSSAL | LEVEL"
- "$broadcasttext$ &l&5Мы с уверенностью можем поздравить $player!"
- "$broadcasttext$ &l&5Ведь он получил 100-й уровень!"
- '$broadcasttext$ '
- '$Script$%endif%'
- '/mycmd-playedata add $player stats_level 1'
- '/mycmd-playerdata set $player stats_exp 0'
- '/mycmd-playerdata add $player stats_needed $mycommand_playerdata_stats_level$'
- '$Script$%endif%'
Итог такой, либо я дегенерат, либо дегенерат именно автор плагина.
В этом экземпляре кода могут быть ошибки, которые на тот момент я не убрал, но я исправил всё что могло мешать и команда спокойно вставала не вызывая никаких ошибок. Переписывал этот код я раз 10 и в итоге просто удалил, нашёл 1 экземпляр, который я скинул другу и именно его сюда вставил.