PDA

Просмотр полной версии : [Вопрос] Sscanf неправильно выдает данные



StevenH
06.03.2017, 20:25
Всем привет. Не могу понять что за проблема, вот что в команде /offban:



if(sscanf(params, "s[24]ds[26]", params[0], params[1], params[2])) return SendClientMessage(playerid, -1, "Введите: /offban [ник] [кол-во дней] [причина]");
printf("nick - %s, time - %d, reason - %s", params[0], params[1], params[2]);


Когда ввожу /offban Steven_Hamilton 21 Test

В логи выводит:
[19:20:00] nick - SТест, time - 21, reason - Тест

В чем проблема?

DeimoS
06.03.2017, 20:27
В том, что ты используешь params для вывода данных.
Прочти вот это (http://pro-pawn.ru/showthread.php?12988).
И сделай так:

new nickname[MAX_PLAYER_NAME],
days;
if(sscanf(params, "s["#MAX_PLAYER_NAME"]ds[26]", nickname, days, params))
return SendClientMessage(playerid, -1, "Введите: /offban [ник] [кол-во дней] [причина]");
printf("nick - %s, time - %d, reason - %s", nickname, days, params);

StevenH
06.03.2017, 20:34
В том, что ты используешь params для вывода данных.
Прочти вот это (http://pro-pawn.ru/showthread.php?12988).
И сделай так:

new nickname[MAX_PLAYER_NAME],
days;
if(sscanf(params, "s["#MAX_PLAYER_NAME"]ds[26]", nickname, days, params))
return SendClientMessage(playerid, -1, "Введите: /offban [ник] [кол-во дней] [причина]");
printf("nick - %s, time - %d, reason - %s", nickname, days, params);

Спасибо.. но вот еще проблемка, сделал проверку:

if(IsPlayerConnected(nickname)) return SendClientMessage(playerid, COLOR_GREY, "Игрок находится в игре!");

В итоге error 035

DeimoS
06.03.2017, 20:45
Ну так не удивительно же. Аргументом IsPlayerConnected должен быть ID игрока.
Можно так сделать:

new nickname[MAX_PLAYER_NAME],
days;
if(sscanf(params, "s["#MAX_PLAYER_NAME"]ds[26]", nickname, days, params))
return SendClientMessage(playerid, -1, "Введите: /offban [ник] [кол-во дней] [причина]");
new giveplayerid;
sscanf(nickname, "u", giveplayerid);
if(giveplayerid != INVALID_PLAYER_ID)
return SendClientMessage(playerid, COLOR_GREY, "Игрок находится в игре!");