Ты смотри, а то ещё ТС не поймёт шутки и точно так же сделает.
Что касается причины бана, макс. длина params - 128 символов (вспомнил бы раньше, если бы не писал всё это параллельно с решением задач по бух. учёту на парах), следовательно в sscanf следует указывать для строки с причиной 128-1-1+1 = 127 ячеек (-1 на мин. длину числа, -1 на пробел и +1 на нуль-символ).
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Я не нуб в pawn. Так точно не сделаю. Я так понимаю в sscanf нужно всегда прописывать 127? Раз ты говоришь, что словить warning можно. То есть получается следующим образом: Независимо от того, что SendClientMessage ограниченно 144 символами, если в sscanf допустим ввести 50 символов (Типо предела (типо не хватает 50 до 144 символов)), а в игре причину ввести больше 50-ти символов, то вылетит warning?Ты смотри, а то ещё ТС не поймёт шутки и точно так же сделает.
Последний раз редактировалось Vano_Glad; 09.02.2016 в 12:32.
______________________________________________
Услуги Pawn
Конкретный ответ на мой вопрос можно получить?Если Вы выйдете за 127 символов, Вам плагин, просто отрежет строку.
______________________________________________
Услуги Pawn
Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman
Это не совсем то что я хотел услышать :) Да и вообще, с чего пошли разговоре о бане? :D Речь шла о кике игрока с сервера. Мне всегда писать в sscanf длину 127, независимо от того, сколько символов останется в SendClientMessage или же записывать нужно именно остаток?
______________________________________________
Услуги Pawn
Окей.
1) MAX_CHATBUBBLE_LENGTH (144) + 1 - MAX_SIZE_PARAMS(127) = 18.
2) Идем дальше, у нас остается 18, но у нас ещё 2 выхлопа на ники.
3) То есть: (MAX_PLAYER_NAME + 1 + MAX_PLAYER_NAME + 1)
4) Получается так: на 2 ника нам нужно зарезервировать 50 ячеек в памяти.
5) 50 - 18 = 32
6) MAX_CHATBUBBLE_LENGTH (144) + 1 - MAX_SIZE_PARAMS(127) + 32 (Плохая практика, конечно, программирования -_-. Magic number -_-)
7) Ну и я ещё не учел спецификаторы (думаю, доработаешь)
В итоге получаем расчет по формуле:
PHP код:
new fmt_str[(MAX_CHATBUBBLE_LENGTH + 1 - MAX_SIZE_PARAMS + 7) * 2 + 1)];
Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman
Vano_Glad (09.02.2016)
Зависит от того, какие ещё будут параметры, кроме строки с причиной бана. Читайте мой пост выше, там расписана формула.
Он не бесконечный и с помощью goto обходится присваивание нуля в cmd_end. Если честно, уже не помню, почему я сделал именно так, а не присвоил переменной cmd_end значение 0 в ветке "else if(cmdtext[pos] == ' ')", скорее всего, это осталось от старого кода отделения параметров от команды. Впрочем, это исходники от старой версии DC_CMD, в 2.6 этот код был пересмотрен ещё раз и таких извращений с goto там нет.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)