Перейти к содержанию
Авторизация  
Red_Devils

Вопрос по sscanf и zcmd

Рекомендуемые сообщения

Red_Devils

Всем привет. У меня нарисовался может и странный вопрос, но все же.

Хотелось бы узнать правильно ли здесь происходит использование sscanf

new ololo[256],  id;
if(sscanf(params,"ds[256]",id, ololo))

Просто очень часто у меня возникает проблема с перезагрузкой сервера. Я установил crashdetect плагин, и он постоянно указывает что проблема в sscanf'е. Даже для примера могу кинуть строки, вчера был рестарт, в чат логе указано что ошибка была в команде "вопрос администратору", и показаны были строки с sscanf.

[22:54:49] [debug] Server crashed while executing NewGT.amx
[22:54:49] [debug] AMX backtrace:
[22:54:49] [debug] #0 native sscanf () from sscanf.so
[22:54:49] [debug] #1 002fb844 in public cmd_support (playerid=1, params[]=@0x003b6414 "") at D:\GreenTech\gamemodes\NewGT.pwn:8139
[22:54:49] [debug] #2 002fb6bc in public cmd_atalk (playerid=1, params[]=@0x003b6414 "") at D:\GreenTech\gamemodes\NewGT.pwn:8133
[22:54:49] [debug] #3 native CallLocalFunction () from sampsvr
[22:54:49] [debug] #4 00000a54 in public OnPlayerCommandText (playerid=1, cmdtext[]=@0x003b63d8 "/atalk ") at D:\GreenTech\pawno\include\zcmd.inc:108
[22:54:49] [debug] Native backtrace:
[22:54:49] [debug] #0 b6f7a93b in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[22:54:49] [debug] #1 b6f7368f in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[22:54:49] [debug] #2 b6f7485c in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[22:54:49] [debug] #3 b6f74ca6 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[22:54:49] [debug] #4 b6f7a58c in ?? () from plugins/crashdetect.so
[22:54:49] [debug] #5 b7f148f0 in ?? () from /lib/libpthread.so.0
[22:54:49] [debug] #6 b7b99c63 in ?? () from plugins/sscanf.so
[22:54:49] [debug] #7 080503e4 in ?? () from ./sampsvr
[22:54:49] [debug] #8 b6f7639e in _ZN11CrashDetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[22:54:49] [debug] #9 b6f79398 in ?? () from plugins/crashdetect.so
[22:54:49] [debug] #10 b6f7ccb5 in amx_Exec () from plugins/crashdetect.so

При это сервер тупо падает. Посмотрел в строки

if(sscanf(params,"s[512]", text)) return SendClientMessage(playerid, 0xFF993300,"[INFO]: {FFFFFF}/atalk [текст вопроса]");

и ничего толком не увидел. Что может быть не так?

Изменено пользователем Red_Devils

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
st1vka

Если используешь ZCMD, зачем переменные объявляешь? Используй params[0], params[1] и т.д, а по теме: версия sscanf какая?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Если используешь ZCMD, зачем переменные объявляешь? Используй params[0], params[1] и т.д, а по теме: версия sscanf какая?

Переменные использую лишь потому что ориентироваться легче мне с ними. Использую sscanf2, если ты об этом.

По началу я вообще подумал что это из за этой строки "s[512]", так как в вики вообще такого нет, мод из сампа, там изначально так было, по этому и не переделывал. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
st1vka

Всю команду кидай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Всю команду кидай.

Дело не в команде если что) Перезагрузка был из за разных команд, и кругом ругается на sscanf. Ну на всякий случай вот команда.

COMMAND:atalk(playerid, params[])
{
    if(PlayerLogin[playerid] != 1) return 1;
    if(Player[playerid][pMuteTime] > 0) return SendClientMessage(playerid, -1, "У вас бан чата, вы не можете говорить.");
new text[512], string[128];
if(sscanf(params,"s[512]", text)) return SendClientMessage(playerid, 0xFF993300,"[INFO]: {FFFFFF}/atalk [текст вопроса]");
format(string,sizeof(string), "[Вопрос] {FFFF00}%s: %s", Names(playerid), text);
SendClientMessage(playerid, 0xFF0000FF,string);
format(string,sizeof(string), "[Вопрос] {FFFF00}%s: %s [/an [ID:%i] [Ответ]]", Names(playerid), text, playerid);
SendAdminMessage(0xFF0000FF, string);
  return 1;
}
Изменено пользователем Red_Devils

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SAPPHIRE

Для массива text у тебя выделяется 512 ячеек, да? А для форматирования строки 128. Где логика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Для массива text у тебя выделяется 512 ячеек, да? А для форматирования строки 128. Где логика?

Причем тут сейчас это, вопрос в другом состоит. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SAPPHIRE

Если у тебя изначально команда не правильно построена, какой смысл дальше копать? Ты ждешь когда тебе скинут готовое решение? Ну, жди, жди..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Если у тебя изначально команда не правильно построена, какой смысл дальше копать? Ты ждешь когда тебе скинут готовое решение? Ну, жди, жди..

Какое ещё готовое решение. Откуда ты взялся умный такой? Мне нужен адекватный ответ, правильно ли используется sscanf. Зачем мне готовые решения? Я хочу знать в чем ошибка, ругается crashdetect именно на строки со sscanf.

 

 

+К тому что я изначально написал, что мод из samp, эту команду и другие делал не я, по этому и создал данную тему. Читать учись

Изменено пользователем Red_Devils

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SAPPHIRE

Чем неадекватен мой ответ? Вполне возможно что проблема именно из-за этого, а ты, вместо того, чтобы исправить и проверить, пытаешься переговорить меня. Если ты не понял, я тебе ещё раз повторю. Команда изначально построена неверно, у тебя массив под text больше, чем под само форматирование строки. Максимальная длина SendClientMessage - 144, и вообще, можно не создавать отдельный массив, а на прямую использовать params[0] 

 

Откуда ты взялся умный такой? - в принципе, я теперь начинаю понимать, почему такая ситуация складывается.

Изменено пользователем SAPPHIRE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Чем неадекватен мой ответ? Вполне возможно что проблема именно из-за этого, а ты, вместо того, чтобы исправить и проверить, пытаешься переговорить меня. Если ты не понял, я тебе ещё раз повторю. Команда изначально построена неверно, у тебя массив под text больше, чем под само форматирование строки. Максимальная длина SendClientMessage - 144, и вообще, можно не создавать отдельный массив, а на прямую использовать params[0] 

 

Откуда ты взялся умный такой? - в принципе, я теперь начинаю понимать, почему такая ситуация складывается.

Кто тебя пытается переговорить то? Причем тут правильность построение команды, почитай суть обращения моего. Меня интересует правильно ли используется sscanf. Повторюсь ещё раз, команду делал не я. Переделать не проблема её. Мне нужен ответ был о sscanf'e, а ты мне о команде впариваешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SAPPHIRE

Неправильно используется у тебя sscanf. В логах жалуется на команды, строка в 1-ом посте это подтверждает (/atalk).

Изменено пользователем SAPPHIRE
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Неправильно используется у тебя sscanf. В логах жалуется на команды, строка в 1-ом посте это подтверждает (/atalk).

Ну вот так бы и сразу. Спасибо за ответ.

 

 

Тему можно закрывать!

Изменено пользователем Red_Devils

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

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