PDA

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



Romavend
21.02.2014, 16:08
if(strcmp(cmd, "/ans", true) == 0)
{
if(PlayerInfo[playerid][pHelper] == 1)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /ans [id] [текст]");
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
new length = strlen(cmdtext);
while((idx < length) && (cmdtext[idx] <= ' ')) idx ++;
new offset = idx;
new result[64];
while((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx ++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "Ââåäèòå: /ans [id] [îòâåò]");
format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
SendClientMessage(giveplayerid, 0xD97700AA, string);
format(string, sizeof(string), "<-Ответ к %s[%d]: %s", giveplayer, giveplayerid, (result));
SBroadCast(0xD97700AA, string, 1);
}
}
else return SendClientMessage(playerid, COLOR_GREY, "Игрок не найден");
}
return true;
}

Как его перевести на DC_CMD и SSCANF ?

Я пробовал так


CMD:ans(playerid, params[])
{
if(PlayerInfo[playerid][pHelper] == 0) return SendClientMessage(playerid, COLOR_GREY , " {F70000}x {ADAEAD}Вы не хелпер! ");
if(sscanf(params, "s[128]" , params[0])) return SendClientMessage(playerid, COLOR_RED, " Введите /ans [id] [текст]");
if(sscanf(params, "u" , params[0])) return SendClientMessage(playerid, COLOR_RED, " Игрок не найден ");
new sendername[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new string[128];
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName("u", giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, params[0]);
SendClientMessage("u", 0xD97700AA, string);
format(string, sizeof(string), "<-Ответ к %s[%d]: %s", giveplayer, "u", params[0]);
SBroadCast(0xD97700AA, string, 1);
return true;
}

Ну меня появляются эрроры

(39721) : error 035: argument type mismatch (argument 1)
(39723) : error 035: argument type mismatch (argument 1)

Строчки

GetPlayerName("u", giveplayer, sizeof(giveplayer));


SendClientMessage("u", 0xD97700AA, string);

Работаю с DC_CMD и sscanf второй день. Пока ещё всей структуры не изучил.

Я знаю в каких аргументах допустил ошибку,но я не понимаю,как в sscanf использовать функцию подобную

giveplayerid = ReturnUser(tmp);

DeimoS
21.02.2014, 19:30
CMD:ans(playerid, params[])
{
if(PlayerInfo[playerid][pHelper] == 0) return SendClientMessage(playerid, COLOR_GREY , " {F70000}x {ADAEAD}Вы не хелпер! ");
if(sscanf(params, "us[128]", params[0], params[1])) return SendClientMessage(playerid, COLOR_RED, " Введите /ans [id] [текст]");
if(!IsPlayerConnected(strval(params[0]))) return SendClientMessage(playerid, COLOR_GREY, "Игрок не найден");
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(strval(params[0]), giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, params[1]);
SendClientMessage(strval(params[0]), 0xD97700AA, string);
format(string, sizeof(string), "<-Ответ к %s[%d]: %s", giveplayer, strval(params[0]), params[1]);
SBroadCast(0xD97700AA, string, 1);
return true;
}
И прочти о sscanf. В интернете полно информации о данной функции

Romavend
21.02.2014, 19:39
Гуглил,нормальной ( полезной ) не нашел.
Большое спасибо за помощь в решении проблемы.

^_^
21.02.2014, 19:40
Гуглил,нормальной ( полезной ) не нашел.
Большое спасибо за помощь в решении проблемы.
КЛАЦ (http://forum.sa-mp.com/showthread.php?t=120356).

Salvacore
21.02.2014, 19:43
Гуглил,нормальной ( полезной ) не нашел.
Большое спасибо за помощь в решении проблемы.
Проблема решена.
Закрыто.