Здраствуйте, придумал систему помощи игроку
Например: /sos <text> - Команда создает тикет (Одновременно можно только 1 тикет)
/sosd - удаляет тикет
Для хелперов или Модераторов:
/ticket accept <nick> - Чтобы принять заявку
Код:
- 'MSG=&8Игрок &3&o%var:%varp:target_player%.target_player% &8отправил заявку на помощь с текстом: &f&o%var:%varp:target_player%.text% player:{group:gl}'
Но дело в том, что при создании данной системы возник вопрос.
Мне нужно создать команду /ticket list
Которая будет показывать список всех заявок, которые отправляли игроки, но вообще не представляю как это сделать.
(Если что написал не понятно, я перепишу) (Неужели через MySQL?)
(Не хотелось бы давать весь код)
Код:
Do_create:
override: true
regex: true
command: do .+ +.*
actions:
- VAR_PLAYER_SET=id:player value:%arg1%
- VAR_PLAYER_SET=id:text value:{%args1%}
Вводить список можно рекуррентно в переменную. Но тогда с удалением будет проблема - это вам не строковую константу в string искать, тут нельзя сравнивать содержание string[5], например, с запросом на удаление.
Костыльно-велосипедное решение:
1) Заводите новую переменную с инкрементом её индекса в её имени при новой заявке.
2) При поступлении заявки на удаление запускайте цикл из EXEC на перебор этих переменных по их индексу. Итератором цикла будет служить ещё одна отдельная переменная.
P.S. Обрабатывать пустые места после удаления переменной не вижу смысла - лишние костыли многим повредили.
P.P.S. Учитывайте, что при таком переборе и краше сервера одновременно, список переменных может самопроизвольно дропнуться, что повлечёт его обнуление при обращении к нему вновь.
P.P.P.S. ReActions всё ещё не умеет работать с файлами и делать на этой основе бекап чего-либо.
@fromgate, я повторюсь, но как насчёт пересмотреть фундамент плагина? Изначально он создавался для телепортов, чтобы сделать оплату более удобной. Теперь плагин вырос и позволяет более удобно создавать ивенты и мелкие заплатки. Предлагаю вырости до версии 1.0.0: добавить основные конструкции из программирования (циклы, итераторы, массивы, функции), но упростить с ними работу до такого элементарного уровня, чтобы задание выше решалось в одну строку:
Код:
for(i = 0, maxTicket, +): if(ticket[i] = delete): delete[i] ticket
Как-никак, но я, полюбивший Ваше творение, теперь изучаю С++ с большим энтузиазмом, чем если бы я не знал о ReActions. И полагаю, что большая часть тех, кто заинтересован скриптингом на ReActions, пойдёт дальше и станет полноценными разработчиками. Конструкция FLAG-THAN-ELSE интересна и позволила мне легко стартануть на первых лекциях. Однако, чем больше я знаю С++, тем больше я хочу, чтобы новички не испытывали тех излишних (с точки зрения не-программистов) манипуляций, которые встречаются мне на каждом шагу, при работе с Вашим плагином
