• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.
GameCMS API

Плагин АМХХ GameCMS API 5.6.1

Нет прав для скачивания

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
вообще зачем он если все можно самому сделать без него
Сам задаюсь подобным вопросом. Пожалуй, он бесполезен и не стоит вашего внимания. Извнините, что потратили драгоценное время на чтение темы с бесполезной поделкой.
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
zhorzh78, ты пофикси хотя бы SQL_Execute в функции FnGetServerId которая вызывается в plugin_cfg на асинхронный запрос, при плохой бд каждый плагин что при загрузке вызывает SQL_Execute тормозит сервер на время ответа. Если берут хостинг на regru или 101host где не игровая mysql то там при превышении лимита, сервер отдает ответы только через секунд 5-10 и сервер сталкивается с проблемой долгой смены карты (где часть игроков иногда выкидывает)
 

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
Karaulov, Говорю прямо- меня не интересуют подобные проблемы. Если админ хочет продавать админки и не тратить на хостинг больше 50р, то это его проблемы. Плагин не вызывает никаких проблем, т.к. таймаут соединения- 10 секунд. За это не время не то что вылететь- ресурсы скачать не успеют. И т.к. запрос выполняется после чтения конфига, к долгой смене карты он точно не имеет никакого отношения.
Впредь, предлагаю обсуждать плагин, а не ваших "особенных" админов.
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
zhorzh78, я конкретно написал что плохие вебхостинги выставляют лимит на CPU и при превышении идет огромная задержка, а у тебя в твоем плагине в FnGetServerId вызывается не асинхронная функция SQL_Execute, сервер останавливается на время выполнения это функции. И если mysql сервер перегружен, то сервер зависнет из-за твоего плагина на несколько секунд в зависимости от времени ожидания ответа. То есть при смене карты пойдет окошко "Повторное соединение с сервером 1,2,3"...
 

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
что плохие вебхостинги выставляют лимит на CPU
Я тоже конкретно написал. Подобные хостинги выбирают админы и плагин не виноват в плохом качестве БД. При получении ответа с индексом сервера будут направлены одновременно 32 запроса (при 32х игроках) от которых такие хостинги тоже умрут. Можете считать, что подобная мера была принята с целью отсечь подобные хостинги и не ломать голову, почему там что-то не работает.
 

RockTheStreet

Пользователь
Сообщения
234
Решения
1
Реакции
44
Баллы
28
Это не относится к теме обсуждения
а что твой плагин делает вообще зачем он если все можно самому сделать без него?
Делай, никто не запрещает. Жаль только что твои 'продукты' используют лишь те, кто не может открыть сурсы и понять что это хардкод уровня неугомона. Мы уже видели уровень твоей компетенции что на данном форуме, что на дев-кс. Потому, твои слова не более чем детский трёп.

Здоровья тебе и твоим близким.
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
RockTheStreet, и тебе тоже, желаю не заболеть раком легких и мозга. Думаешь скальпель лучше пишет код? ты же не видел на сколько там мощная оптимизация своими глазами) Я тоже могу публиковать только amxx файл, например как делает вот этот скальпель, и все будут считать что я лучший кодер))))

но не знаю зачем тут про здоровье писать, и обсуждать мои плагины которые работают нормально не смотря на мой уникальный стиль написания кода, разве это не считается флудом?)

Я же конкретно пишу что API х*реноватый не хватает самых необходимых функций таких как регистрация и обновление услуг из плагина, автор пишет что "делай сам" вместо того что бы расширить функциональность, и отказывается исправлять говнокод sql_execute на асинхронный запрос, по твоему допустимо в 21 веке использовать sql_execute?
 

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
Karaulov, Блокирующий запрос используется с соответствующей целью- временно заблокировать загрузку до получения информации из БД. Это вынужденная мера именно из-за "ваших" плагинов, которые куда-то торопятся получать информацию от других плагинов еще до того, как эта информация будет доступна.
И я не вижу ни одной темы, связанной с блокировкой сервера из-за данной функции. Все пользователи плагина имеют достаточно ресурсов на хостинге для корректной работы. Пользователи из вашей истории меня не интересуют.
Добавлено:

Касаемо функций. Сначала, вносятся предложения, затем уже высказывают возмущения, почему их нет. Подобных предложений я не видел. Кроме вас и ваших особенных админов данные функции никому не нужны.
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
zhorzh78, а разве так важно в какое время будут получены данные с базы данных, API форварды, выставление флагов ведь все равно выполняться будут после загрузки данных, пускай разработчики подстраиваются под API, это хоть немного но ускорит смену карты. А то привыкнут использовать SQL_Execute, потом жди пока каждый плагин в начале выполнит запрос, ну если 1, то ничего, а если 10 плагинов так делают
Добавлено:

А что изменится если я напишу это ввиде предложения?

Ну вот предлагаю добавить API для регистрации на сайте.

***register_user(name[], ingamename[], password[])

Пример использования: Игрок входит, ему дается временный никнейм и пароль в консоль, а потом уже на сайте может изменить на свои.

Предлагаю добавить API для регистрации новой услуги из плагина.

Пример использования:
Кодер пишет плагин на двойной прыжок, в OnRegisterService форварде вызывает нативку RegisterNewService(стандартное название, стандартное описание, стандартная стоимость, кодовое_имя_услуги). API к примеру должно записать эту услугу в базу данных пометив ее как записанное из плагина, после вызова OnRegisterService удалить услуги которые не были обновлены, и если потребуется вернуть монеты на счет игроков)

Логика вполне неплохая, я думаю многие захотят использовать такой функионал ведь онтлегко и просто позволит писать кучу аддонов,

zhorzh78, представь админ ставит 100 аддонов каждый из которых требует вручную вводить настройки услуги, тебе к примеру это в удовольствие будет? каждый раз при удалении или добавлении плагина лазить в настройках и настраивать удалять услуги? или же проще когда не надо ничего вводить вручную?
 
Последнее редактирование:

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
А что изменится если я напишу это ввиде предложения?
Я его рассмотрю. Если предложение будет интересным и, самое главное, реализуемым, я приму его к работе.
Ваше предложение по услугам не может быть реализовано на уровне плагина. Вы даже не представляете, что вся ваша мысль в процессе реализации остановится на действии "написать заголовок натива". Попробуйте зайти дальше...
Добавлено:

а разве так важно в какое время будут получены данные с базы данных
Это было важно во время создания плагина и, к сожалению, по сей день. Я вижу десятки плагинов, которые до сих пор получают флаги при коннекте игрока.
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
zhorzh78, даже не знал что так много их.

А почему нельзя на уровне плагина реализовать добавление новых услуг в базу данных? Запрещено политикой движка?
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
zhorzh78, да если бы плагин был на гитхабе с открытым кодом, прислал бы PR, а раз страшно код показывать то что поделать;(
 

k1stj

Пользователь
Сообщения
14
Реакции
0
Баллы
1
Добрый день!
Как можно скачать?
 

Sokol

Участник
Сообщения
277
Реакции
61
Баллы
28
k1stj, Здравствуйте. В самой первой ветке форума есть топик по скачиванию плагина . А вот ссылка тык
 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
В OnAPIAdminsLoaded функция cmsapi_get_user_services возвращает пустой массив

В OnAPISendChatPrefix уже есть данные

Где использовать cmsapi_get_user_services что бы гарантированно получить данные?
Добавлено:

Как правильно использовать cmsapi_get_user_services что бы получить список услуг, потому что:

Код:
new Array:found = cmsapi_get_user_services(iAdminIndex);
    if (found)
    {
        new aAdminData[281];
        for(new i = 0; i < ArraySize(found);i++)
        {
            ArrayGetArray(found, i, aAdminData, 281);
            if (aAdminData[0] != EOS)
            {
                log_amx("Service:%s",aAdminData);
            }
        }
    }

Выдает каждый раз просто SteamID.

в инклуде ничего не сказано про работу этой функции и видимо это только автору известно как ей пользоваться для получения списка услуг : )
 
Последнее редактирование:

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
В OnAPIAdminsLoaded функция cmsapi_get_user_services возвращает пустой массив
C++:
/**
* Выполняется после успешной загрузки данных об услугах из базы
*/
forward OnAPIAdminsLoaded(eQueryStatus:status, iAdminIndex);
У вас здесь игроков нет, если это начальная загрузка при старте карты! Вы чей список услуг запрашиваете?

В OnAPISendChatPrefix уже есть данные
Логично, потому что вызывается от игрока.
Где использовать cmsapi_get_user_services что бы гарантированно получить данные?
C++:
/**
* Выполняется при выдаче флагов игроку (авторизация админа)
*/
forward OnAPIAdminConnected(id, const szName[], adminID, Flags);

Выдает каждый раз просто SteamID.
cms_debug "3". Логи рулят.
видимо это только автору известно как ей пользоваться
И тем, кто читает и задает вопросы. Вероятнее, дело в unreal-коде, ибо я не знаю, что такое iAdminIndex у вас

 

Karaulov

Участник
Сообщения
73
Реакции
6
Баллы
8
zhorzh78, в инклуде указано индекс админа, что бы это значило может стоит пояснить что "индекс админа но не индекс игрока" или как-то так:)
Добавлено:

* Выполняется после успешной загрузки данных об услугах из базы
*/
forward OnAPIAdminsLoaded(eQueryStatus:status, iAdminIndex);[/CODE]
У вас здесь игроков нет, если это начальная загрузка при старте карты! Вы чей список услуг запрашиваете?
Может стоило упомянуть что "Игроков здесь нет" , а то логично подумать что услуги загрузились из базы значит их можно уже получить для админа :)
Добавлено:

Код:
public OnAPIAdminConnected(id, const szName[], adminID, Flags)
{
    new Array:found = cmsapi_get_user_services(id);
    if (found)
    {
        new aAdminData[281];
        for(new i = 0; i < ArraySize(found);i++)
        {
            ArrayGetArray(found, i, aAdminData, 281);
            if (aAdminData[0] != EOS)
            {
                log_amx("Service: %s", aAdminData);
            }
        }
    }
}

Все равно в списке STEAMID каждый раз выдает


Вот чего точно нет в описании, то это как именно получить список услуг через cmsapi_get_user_services
 

zhorzh78

Администратор
Сообщения
2,753
Решения
15
Реакции
1,097
Баллы
113
индекс админа но не индекс игрока
Здесь все ясно написано.
а то логично подумать что услуги загрузились из базы
Так и есть. Получайте, что вам нужно. Только данные вы получаете по индексу игрока или по его стиму, а игроков на сервере нет. Включайте уже голову или задавайте вопросы, а не высказывайте претензии, что вы чего-то не понимаете.

Все равно в списке STEAMID каждый раз выдает
Уже ответил
cms_debug "3". Логи рулят.
К тому же, не вижу вывод ваших результатов. Если вам нужна помощь по коду- создавайте тему, описывайте действия и цель. Не вижу причин не помочь тому, кто хочет разобраться.
Вот чего точно нет в описании, то это как именно получить список услуг через cmsapi_get_user_services
Array со структурой enum _:eAdminInfo

C++:
public OnAPIAdminConnected(id, const szName[], adminID, Flags)
{
    new Array:found = cmsapi_get_user_services(id);
    if(found)
    {
        new aAdminData[eAdminInfo];
        for(new i = 0; i < ArraySize(found);i++)
        {
            if(ArrayGetArray(found, i, aAdminData, sizeof(aAdminData));
                log_amx("Service: %s", aAdminData[AdminServiceName]);
        }
    }
}
 
Сверху