Просмотр полной версии : [Вопрос] Sscanf неправильно выдает данные
Всем привет. Не могу понять что за проблема, вот что в команде /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 - Тест
В чем проблема?
В том, что ты используешь 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);
В том, что ты используешь 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
Ну так не удивительно же. Аргументом 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, "Игрок находится в игре!");
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot