Garry's Mod

Garry's Mod

Metadmin Extended
This topic has been locked
MrFras [RUS] 13 Dec, 2019 @ 3:15pm
Поломка тестов в METADMIN
:lunar2019wavingpig:Добрых времени суток, возникла не приятная проблема с данным аддоном. Поставив данный аддон к себе на приватный сервер. По началу аддон вызывал ошибку которая убивала мой ULX и меню самого Metadmin(Его нельзя было коректно открыть и выдать игроку проезд на запрещающий сигнал или срыв пломбы, и другое в этом стиле, но работали профили игроков в котором писались нарушения, талоны), но полазив по коду самого аддона удалось его вернуть в нормальное состояние. И вместе с этим работало все кроме, тестов. Их можно создавать и редактировать, но он не сохраняет вопросы, и уже проверенные тесты не ставит что их проверяли, соответсвенно тесты нельзя было запускать для их главной цели. При этом Metadmin оригинальный выдавал более сложную ошибку, которую не удавалось исправить т.к. это уже рушала внутренние коды игры. Прошу помочь с данной проблемой... (Если что удалял я metadmin/client.lua 513 строчка -
for k,v in pairs(metadmin.providers) do provider:AddChoice(k) end
:lunar2019deadpanpig:
Last edited by MrFras [RUS]; 13 Dec, 2019 @ 4:20pm
< >
Showing 1-10 of 10 comments
Alexell  [developer] 14 Dec, 2019 @ 12:17am 
Здравствуйте.
Вопрос #1: какую БД подключали к метадмину? MySQL или SQL
Вопрос #2: вы добавляли этот метадмин на чистую БД? Т.е. там не было таблиц от основного метадмина?
Вопрос #3: какую строчку в итоге удаляли, 513 или 515?

Потому что на вашем скрине цикл, внутри которого строка 515
provider:AddChoice(k)

А 513 строка:
provider:SetValue(metadmin.provider)

Весь этот блок отвечает за выбор MySQL или SQL.
Last edited by Alexell; 14 Dec, 2019 @ 12:17am
MrFras [RUS] 14 Dec, 2019 @ 6:19am 
И так... После загрузки на сервер вашего Metadmin. Сервер обнуляет меня в ранге и выдает помощника машиниста(Что говорит о поломке ULX в том числе), а не разработчика как должно(Вроде я понял что за это отвечает функция перезаписи, но она так же все это время моих мучений не работает корректно). Я сам прописываю себе обратно разработчика и пытаюсь открыть меню Metadmin. Меню открывается, но без возможности редактирования самих настроек Metadmin, только список игроков, и выбор действий (Профиль, проезд, пломбы), если закрыть меню и попытаться открыть повторно, меню не открывается. Но после первого открытия возникает ошибка...
[ERROR] lua/vgui/dcombobox.lua:231: bad argument #1 to 'SetText' (string expected, got nil) 1. SetText - [C]:-1 2. SetValue - lua/vgui/dcombobox.lua:231 3. menu - addons/metadmin (updated 2019)/lua/metadmin/client.lua:513 4. fn - addons/metadmin (updated 2019)/lua/metadmin/client.lua:1223 5. unknown - addons/ulib/lua/ulib/shared/hook.lua:109
Лезть в lua/vgui/dcombobox.lua:231 я не рискую т.к. это уже сервер(игра вроде). И лезу в сам Metadmin удаляю...
provider:SetValue(metadmin.provider)
После ошибка остается, но друго-во плана...
[ERROR] addons/metadmin (updated 2019)/lua/metadmin/client.lua:513: bad argument #1 to 'pairs' (table expected, got nil) 1. pairs - [C]:-1 2. menu - addons/metadmin (updated 2019)/lua/metadmin/client.lua:513 3. fn - addons/metadmin (updated 2019)/lua/metadmin/client.lua:1222 4. unknown - addons/ulib/lua/ulib/shared/hook.lua:109
Здесь я уже удаляю оставшийся...
for k,v in pairs(metadmin.providers) do provider:AddChoice(k) end
И алилуя Metadmin вернулся в более хорошие состояние. Меню открывается и кое-какие функции теперь доступны. Но у меня по прежнему не работает ULX и не работают тесты.
В настройках самого Metadmin, я прописывал только нужные ранги и их группы. (После Вашего ответа, я попробовал настроить и основные настройки как Вы и указали выбор SQL или MySQL стал недоступен, настройка MySQL работает, но т.к я не совсем еще понимаю что именно такое SQL и MySQL и поэтому не могу корректно сказать точно как он работает. Далее как я понял у меня все время соответственно стоял внутренний SQL Metadmin. Опять повторю что я ранее не изучал SQL и его работу, и поэтому не разбирался с этой настройкой и выбором БД) Проделав обратный путь по возвращению c 513 до 516 строчек...
provider:SetValue(metadmin.provider) for k,v in pairs(metadmin.providers) do provider:AddChoice(k) end
К моему удивлению на сей раз Metadmin не сломался, и стал доступен выбор SQL и MySQL, но ULX и тесты так и не заработали. То-есть могу сказать что стандартный SQL может сохранять, нарушения, талоны и др. но не сохраняет вопросы и сдал игрок или нет. Каким образом он убивает мой ULX не понимаю. Может в этом помогут ошибки которые я тоже не до конца понимаю...

P.S. Сервер этот я не первый раз переделывал и удаляю, даже пробовал сделать с нуля. Добавляя только ULX, Metadmin, Metrostroi, но там такая же проблема. Возможно из за того что я не разбираюсь с SQL и не вижу что это что-то важное...
Alexell  [developer] 14 Dec, 2019 @ 7:59am 
1. Мой метадмин не совместим с оригинальным Метадмином по части MySQL. Точнее, если его поставить после того как использовали оригинальный Метадмин с MySQL, надо будет изменить структуру таблиц.

2. SQL хранит данные в стандартном файле sv.db вашего сервера, MySQL нужно подключать тогда, когда вам это нужно и если у вас есть внешний MySQL сервер. В ином случае вы должны оставить SQL и не трогать эту настройку.

3. Судя по некоторым вашим высказываниям, я пришел к выводу, что вы понятия не имеете как устроен Метадмин. То что Метадмин обнуляет вас в ранге - это нормально и тут нет поломки ULX. Нужно убрать галочку "Перезапись" где-то в настройках Метадмина, а также настроить полный синхрон должностей ULX и Метадмина.

Это значит, что все группы, созданные в ULX должны быть созданы как ранги в Метадмине с точно такими же английскими названиями. В Метадмине все ранги должны быть зелеными, это будет означать что они соответствуют группам ULX. Только после этого вы можете через Метадмин установить себе ранг и попробовать перезайти. Ранги надо устанавливать через Метадмин или же через ULX, но только командой setrank, прежний способ с adduser нельзя использовать с Метадмин!

4. Возможно в моей версии Метадмина сейчас есть проблемы, но исправить я их в ближайшее время не смогу, поэтому я рекомендую собирать сервер на базе оригинального метадмина.

P.S. Я могу сегодня-завтра попробовать собрать вам сервер, чтобы всё работало, но мне понадобится ссылка на вашу коллекцию.

В коллекцию необходимо добавить:
- Все аддоны Метростроя
- ULX, ULib (обязательно)
- оригинальный Metadmin
- также рекомендую мои Metrostroi Advanced и Metrostroi Scoreboard Pro
- какую-нибудь не тяжелую отдельную карту, например PLL или VIRUS

Мне будет проще работать с неполной коллекцией, ибо скачивать придется меньше.
Когда я соберу вам сервер, я пришлю вам архив с сервером и bat-файлами для запуска и обновления.
Lesm7937 18 Dec, 2019 @ 2:02am 
У меня проблемка, у меня пропала кнопка выдачи теста,что делать?
MrFras [RUS] 22 Dec, 2019 @ 12:36am 
Поработал я над изучением Lua Script и SQL . И выяснил почему не сохранялись тесты, и не выдавался статус проверенно. Оказалось проблема не в client.lua , а в sql.lua .На строках 128(Функция сохранения теста) и 176(Функция установки статуса теста). Были установлены лишнее кавычки(те что синим далее).
128(Функция сохранения теста)
sql.Query("UPDATE `ma_questions` SET `questions` =
'
"..sql.SQLStr(questions).."
'
WHERE `id`="..id)
176(Функция установки статуса теста)
sql.Query("UPDATE `ma_answers` SET `status` = '"..status.."',`ssadmin` =
'
"..sql.SQLStr(ssadmin).."
'
WHERE `id`='"..tonumber(id).."'")
Удалив их как в оригинальном metadmin. Тесты заработали. А удалив в client.lua настройки выбора SQL и MySQL за ненадобностью. Успешно заработал и ULX. + я знал как работает функция "Перезаписи" и она не влияла на обнуление ранга (будь она вкл. или выкл.) А больше указывало на поломку ULX тот факт что многие настройки такие как изменение прав и регулировку спавна пропов не работали, они просто исчезли. Ломал ULX именно 513 строчка, как? не знаю, но это факт... так что спасибо за помощь в пояснение работу некоторых функций... и надеюсь что никто больше не встретиться с данной проблемой!:steamhappy:
Last edited by MrFras [RUS]; 22 Dec, 2019 @ 12:42am
Alexell  [developer] 22 Dec, 2019 @ 12:56am 
MrFrazers, спасибо за информацию, я учту это, когда доберусь наконец до обновления аддона!
MrFras [RUS] 23 Dec, 2019 @ 12:21pm 
Что ж удивительно, но продолжение следует...) Все бы хорошо, казалось бы, убрал я лишнее здесь кавычки и все заработало, но нет, по началу меня насторожил тот факт что перестали отображаться экзамены и нарушения как ранее, я не предал этому значения и снова поработав с sql.lua смог добиться того что экзамены и нарушения начали появляться. Опять я убрал несколько кавычек и все. Но тут меня ожидало новое разочарование... после смены карты или перезапуска сервера, все нарушения, экзамены, тесты в профилях игроков, не сохранялись и исчезали, но не совсем так, они как бы есть, но их как бы нет. Пройдя новый тест, или экзамен, или получив новое нарушение старые возвращались, но опять же после перезапуска все пропадало. И узнать старые тесты у игрока можно было только после того как он пройдет новое, и это бред. Так что убрать кавычки, не убрало проблему и не дало решение или выход. Оно просто изменило его в другое русло... как теперь мне быть я не знаю, я заменил sql.lua с оригинального metadmin , и теперь тоже какая то фигня... экзамены, нарушения, тесты в профилях сохраняется, но вопросы, они так же есть, но их нет, только после создания новых вопросов старые появляются и начинают работать... но ULX опять ломается и не сохраняет должности, и нельзя редактировать некоторые параметры... и основные настройки metadmin тоже не сохраняются... так что проблема еще в силе... и вертится с разных сторон как может... это просто дурдом... надеюсь на новую поддержку((:lunar2019shockedpig:
Last edited by MrFras [RUS]; 23 Dec, 2019 @ 12:25pm
Alexell  [developer] 24 Dec, 2019 @ 2:52am 
MrFrazers, я потратил час на то чтобы поднять чистый тестовый сервер и проверить SQL + MySQL оригинального Метадмина. Как оказалось, весь дурдом заключается в вашей кривости рук, уж извините. Речь пойдет только об оригинальном Метадмине. Свою версию я обновлю позже, в ней действительно есть ошибки.

Похоже вы не понимаете как надо правильно запускать Метадмин. Посему, я прошу вас сделать следующее и сделать СТРОГО как я написал:
1. Удалите из папки addons сервера любой Метадмин.
2. Убедитесь что в коллекции вашего сервера присутствует ОРИГИНАЛЬНЫЙ Метадмин, а также ULX и ULIB. Распаковывать ничего не надо!
3. Открываете папку сервера, удаляете всё из папки garrysmod\data (если есть), а также файл garrysmod\sv.db (если есть)
4. Открываете конфиг сервера garrysmod\cfg\server.cfg и проверяете чтобы вверху была строчка rcon_password "любой пароль". Если нету - надо добавить.
5. Запускаете сервер.
6. Запускаете игру, подключаетесь к серверу, открываете консоль в игре и пишете туда:
сначала:
rcon_password "пароль из конфига"
затем:
rcon ulx setrank "MrFrazers" superadmin
7. Профит!

После этого Метадмин прекрасно работает, ваша должность сохранена и не пропадет после перезагрузки, работают все нарушения, создание, сохранение, выдача и проверка тестов - в общем работает и сохраняется весь функционал.

Вам останется только создать нужные группы в ULX, создать и присвоить им Teams (чтобы в Scoreboard отображался цвет), затем в самом Metadmin исправить ранги и сделать их совпадающими с ULX. Когда все ранги в Metadmin будут зелеными - значит всё полностью соответствует.
Last edited by Alexell; 24 Dec, 2019 @ 2:52am
MrFras [RUS] 24 Dec, 2019 @ 4:22am 
Должен сказать что у меня действительно кривые руки...:lunar2019crylaughingpig:
На этот раз все заработало) Огромное Вам спасибо! Я понял почему ломался ULX и Metadmin. Я не выдавал себе ранг, а просто ставил его в ULX, а не в Metadmin, из за чего получалась путаница... в ULX я superadmin, а в Metadmin я user. Я не знал что надо выдавать ранг командой:
ulx setrank "MrFrazers" superadmin
А выдавал в ULX:
ulx adduser "MrFrazers" superadmin
И все ломалось. Скорее сказалось моё не знание по этой части))
========================================================
Хочу пока есть возможно сказать на счет Metrostroi Advenced
  • (Возможная ошибка...) Когда игроку запрещено спавнить состав который он пытается спавнить ему в чате выдает надпись что он не может спавнить этот состав и список доступных ему составов, но из за не правильных переменных, он два раза выдает одну и туже надпись "Разрешено спавнить только следующие составы:" прошу исправить, пришлось мне самому исправлять...
  • (ПО ВОЗМОЖНОСТИ!!!)Далее желательно добавить функцию, возможность ограничивать кол-во вагонов для составов на разных картах.
    Пример:
    На карте Imagine line
    Общее кол-во макс 6 вагонов на человека
    81-717 только 4 вагона макс.
    81-722 все 6 вагонов.
    А на карте Surfacemetro
    Общее кол-во менялось на макс 4 вагона на человека
    81-717 все 4
    81-722 только 3

    (Сделать это по причине, что разные составы по разному нагружают сервер на разных картах, и можно чтоб некоторые составы спавнили по 4, а некоторые все 6)
Еще раз огромное спасибо за помощь и аддоны которые Вы делаете):steamhappy:
Last edited by MrFras [RUS]; 24 Dec, 2019 @ 4:24am
Alexell  [developer] 24 Dec, 2019 @ 6:21am 
MrFrazers, ошибку в Metrostroi Advanced исправил.
А касательно идей и предложений - давайте будем писать их к самому аддону, а не где попало)
< >
Showing 1-10 of 10 comments
Per page: 1530 50