Написание плагинов

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
а если убрать кавычки вокруг куска с абракадаброй?
Сообщения автоматически склеены:

у тебя вообще строка конфига читается как key_create "fdghje4323hfdhtre" 0 1 vip_add "VIP GIRL (в конце нет кавычки ^_^), если читается полностью
Если убирать то читает до 2 пробела, потом опять не читает, т.е. key_cteate key (дальше пусто)
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
А если внутренние кавычки заменить на '
Помогло, спасибо
Сообщения автоматически склеены:

Всем доброго утра, подскажите пожалуйста в чем разница между
GetClientOfUserId(hEvent.GetInt("userid"));
и
hEvent.GetInt("userid");
Что из этого и где лучше применять
 

Ice_Sochi

Участник
Сообщения
709
Реакции
413
GetClientOfUserId(hEvent.GetInt("userid"));
Ты получаешь этим самым индекс игрока (номер слота), а именно преобразуешь юзерид в индекс
Большинство случаев происходит как раз по индексу (переменные param[maxplayers+1], циклы по всем игрокам for int i=1…)

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

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Ты получаешь этим самым индекс игрока (номер слота), а именно преобразуешь юзерид в индекс
Большинство случаев происходит как раз по индексу (переменные param[maxplayers+1], циклы по всем игрокам for int i=1…)


А тут сам юзерид (уникальное число для каждого игрока, присваемое при первом заходе на сервер после его рестарта). Используется, например, в таймерах (чтоб если игрок выйдет за время срабатывания, не потерять его).
Спасибо огромное
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
Привет всем. Подскажите, пожалуйста, возможно ли и как (желательно примером) выполнить команду от лица игрока, через консоль сервера, даже если его на нем нет? Чтобы сервер принимал, как будто клиент выполнил команду, будучи на сервере и отработали необходимые плагины.

Пример (игрока нет на сервере), и отправляется в серверную консоль мной команда sm_test "STEAM_0:0:25117956" "sm_resetrank" и она выполняется, якобы клиент ее отправил, будучи на сервере.
Видел много плагинов( [FUN] Fexec, Force CMD и прочее, не подходят). Необходима оправка именно по команде, как на примере :)
 

Ice_Sochi

Участник
Сообщения
709
Реакции
413
Привет всем. Подскажите, пожалуйста, возможно ли и как (желательно примером) выполнить команду от лица игрока, через консоль сервера, даже если его на нем нет? Чтобы сервер принимал, как будто клиент выполнил команду, будучи на сервере и отработали необходимые плагины.

Пример (игрока нет на сервере), и отправляется в серверную консоль мной команда sm_test "STEAM_0:0:25117956" "sm_resetrank" и она выполняется, якобы клиент ее отправил, будучи на сервере.
Видел много плагинов( [FUN] Fexec, Force CMD и прочее, не подходят). Необходима оправка именно по команде, как на примере :)
Если на сервере игрока нет, то выполнить абсолютно любую команду, мне кажется, не получится.
Если же речь только о плагине статистики, то можно сделать сброс клиента отдельным модулем под конкретный плагин. Можно сделать ядро плагина с такими командами, и делать уже модули для каждой команды (т.е. для каждого плагина, которому принадлежит команда).
Ядро в данном случае нужно будет только для того, чтобы команда на такие случаи (sm_test) была единой.

Если же игрок онлайн, то через FakeClientCommand

Мб кто более опытный найдет иное решение
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
Если на сервере игрока нет, то выполнить абсолютно любую команду, мне кажется, не получится.
Если же речь только о плагине статистики, то можно сделать сброс клиента отдельным модулем под конкретный плагин. Можно сделать ядро плагина с такими командами, и делать уже модули для каждой команды (т.е. для каждого плагина, которому принадлежит команда).
Ядро в данном случае нужно будет только для того, чтобы команда на такие случаи (sm_test) была единой.

Если же игрок онлайн, то через FakeClientCommand

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

В своей идее, ты имеешь ввиду делать подключение к плагину и выполнять именно его функцию, указывая стим? Не совсем понял честно :)
 
Последнее редактирование:

Ice_Sochi

Участник
Сообщения
709
Реакции
413
Да вопрос не именно глобальный, чтобы прям ядро делать, а речь идет что бы обмануть другой плагин 😃, вводя стим и команду, и якобы это отправил он.
Статистику я в примере указал просто так, чтобы по этому примеру уже под себя переделать.

В своей идее, ты имеешь ввиду делать подключение к плагину и выполнять именно его функцию, указывая стим? Не совсем понял честно :)
В 99% (если не в 100) плагинов команды выполняются либо по отношению к онлайн игроку, либо от лица онлайн игрока, и сделать иначе ты это в уже написанном плагине методом из-вне не сможешь.
Возьмем за пример плагин статистики. Тебе нужно сбросить стату игрока. Почему бы просто не сделать модуль, который сможет обнулять оффлайн игроков? Ведь нет разницы, каким именно способом его обнулить: при помощи самого плагина статистики, каким-то образом обойдя его алгоритмы, если такое возможно, или модулем, написанным за 15 минут на коленке?)
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
В 99% (если не в 100) плагинов команды выполняются либо по отношению к онлайн игроку, либо от лица онлайн игрока, и сделать иначе ты это в уже написанном плагине методом из-вне не сможешь.
Возьмем за пример плагин статистики. Тебе нужно сбросить стату игрока. Почему бы просто не сделать модуль, который сможет обнулять оффлайн игроков? Ведь нет разницы, каким именно способом его обнулить: при помощи самого плагина статистики, каким-то образом обойдя его алгоритмы, если такое возможно, или модулем, написанным за 15 минут на коленке?)
Думаю если б такое было возможно, то ядра бы не писали и не пилили под них модули, а просто выполняли нужный функционал простым подключением к плагину из вне
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
В 99% (если не в 100) плагинов команды выполняются либо по отношению к онлайн игроку, либо от лица онлайн игрока, и сделать иначе ты это в уже написанном плагине методом из-вне не сможешь.
Возьмем за пример плагин статистики. Тебе нужно сбросить стату игрока. Почему бы просто не сделать модуль, который сможет обнулять оффлайн игроков? Ведь нет разницы, каким именно способом его обнулить: при помощи самого плагина статистики, каким-то образом обойдя его алгоритмы, если такое возможно, или модулем, написанным за 15 минут на коленке?)
Очень интересно. А на примере сможешь показать?) И ты наверное имеешь ввиду работу напрямую с базой, да? (внеший модуль, подключается к базе статистки, и работает по steam_id с базой)
 

Ice_Sochi

Участник
Сообщения
709
Реакции
413
И ты наверное имеешь ввиду работу напрямую с базой, да? (внеший модуль, подключается к базе статистки, и работает по steam_id с базой)
Конкретно в этом случае - да. Получить копию соединения с бд и отправлять нужные запросы.

На выходных могу поискать, если нужно еще будет. Во многих плагинах есть натив из разряда VIP_GetDatabase.
 
Последнее редактирование:

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
Конкретно в этом случае - да. Получить копию соединения с бд и отправлять нужные запросы.

На выходных могу поискать, если нужно еще будет. Во многих плагинах есть натив из разряда VIP_GetDatabase.
Спасибо, я понял суть, увы вариант с базой данных не подходит, так как вопрос/идея не просто в запросах к бд, а выполнение функции уже существующего плагина, или же ее изменения на похожую стандартную, но с сохранением функционала и получение данных игрока не из сервера (при онлайне), а использование по команде в консоли, и вводя его так же текстом.

Неужели нельзя так сделать?) Данные об игроке не получать, и выполнять над ним действие, а присвоить в ручную командой, и уже выполнять какой-нибудь действие.
 
Последнее редактирование:

Synd1qate

Участник
Сообщения
745
Реакции
259
Спасибо, я понял суть, увы вариант с базой данных не подходит, так как вопрос/идея не просто в запросах к бд, а выполнение функции уже существующего плагина, или же ее изменения на похожую стандартную, но с сохранением функционала и получение данных игрока не из сервера (при онлайне), а использование по команде в консоли, и вводя его так же текстом.

Неужели нельзя так сделать?) Данные об игроке не получать, и выполнять над ним действие, а присвоить в ручную командой, и уже выполнять какой-нибудь действие.
Можно, берешь Стим из бд и выполняешь на этом Стиме действие)
Иначе не получится.
В любом случае тебе придется брать Стим из бд
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
Можно, берешь Стим из бд и выполняешь на этом Стиме действие)
Иначе не получится.
В любом случае тебе придется брать Стим из бд
А если выполнение команды от имени игрока не связано с базой данных ?
Тогда:
1. Брать подключение к статистике
2. Вводя в консоль стим, находить его в базе
3. Использовать полученные данные, для другого плагина
Так ? 😁
 

Synd1qate

Участник
Сообщения
745
Реакции
259
А если выполнение команды от имени игрока не связано с базой данных ?
Тогда:
1. Брать подключение к статистике
2. Вводя в консоль стим, находить его в базе
3. Использовать полученные данные, для другого плагина
Так ? 😁
Условно +- так
 

DarkerZ

Участник
Сообщения
395
Реакции
175
А если выполнение команды от имени игрока не связано с базой данных ?
Тогда:
1. Брать подключение к статистике
2. Вводя в консоль стим, находить его в базе
3. Использовать полученные данные, для другого плагина
Так ? 😁
В чём проблема допилить api для плагина и уже юзать нативы из другого?
Сообщения автоматически склеены:

И возможно нужное вам уже реализовали, см. include
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
В чём проблема допилить api для плагина и уже юзать нативы из другого?
Сообщения автоматически склеены:

И возможно нужное вам уже реализовали, см. include
Отличная идея 💡, действительно не додумался до этого.
 

Gaivor

Участник
Сообщения
185
Реакции
18
Пофиксите пожалуйста плагин. Ошибка при компиляции

// C:\Users\admin\Desktop\sdfg\scripting\hl_challenge.sp(384) : error 181: function argument named 'rankingQueue' differs from prototype
 

Вложения

  • hl_challenge.sp
    18.9 КБ · Просмотры: 6

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Пофиксите пожалуйста плагин. Ошибка при компиляции

// C:\Users\admin\Desktop\sdfg\scripting\hl_challenge.sp(384) : error 181: function argument named 'rankingQueue' differs from prototype
не знаю будет ли работать, но ошибка ушла 😁
 

Вложения

  • hl_challenge.smx
    15 КБ · Просмотры: 3
  • hl_challenge.sp
    18.9 КБ · Просмотры: 9
Сверху Снизу