Просмотр полной версии : [Вопрос] Команда /cmd
_MegaMix_
20.08.2017, 21:10
Здравствуйте, делаю команду /cmd текст - и затруднила проверка на ввод существующей команды:
COMMAND:cmd(playerid,params[])
{
extract params -> new string: cmd_[32]; else
{
return SendClientMessage(playerid, COLOR_WHITE,
!"Введите /cmd [команда]");
}
for(new i; cmd_[i] != 0x0; i++)
{
switch(cmd_[i])
{
case "ban": return true;
}
}
return true;
}
Чтобы не делать 100 проверок через strcmp может есть альтернативы как можно реализовать данную систему, так скажем через switch и т.п?
Что команда должна делать то?
Для твоего случае во многих командных процессорах существует обработчик команд.
OnPlayerCommandPerformed(playerid, cmdtext[], success); //DC_CMD
OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags) //Pawn.CMD
Примерно так можно реализовать:
CMD:cmd(playerid, params[])
{
if(isnull(params))
{
return SendClientMessage(playerid, -1, !"Введите /cmd [команда]");
}
SetPVarInt(playerid, !"check_for_command", 1);
DC_CMD(playerid, params); //для DC_CMD
return 1;
}
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(GetPVarInt(playerid, !"check_for_command"))
{
SendClientMessage(playerid, -1,
(success) ? (!"Команда существует!") : ("Команда не существует!"));
DeletePVar(playerid, !"check_for_command");
return 0;
}
return 1;
}
_MegaMix_
21.08.2017, 20:11
Для твоего случае во многих командных процессорах существует обработчик команд.
OnPlayerCommandPerformed(playerid, cmdtext[], success); //DC_CMD
OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags) //Pawn.CMD
Примерно так можно реализовать:
CMD:cmd(playerid, params[])
{
if(isnull(params))
{
return SendClientMessage(playerid, -1, !"Введите /cmd [команда]");
}
SetPVarInt(playerid, !"check_for_command", 1);
DC_CMD(playerid, params); //для DC_CMD
return 1;
}
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(GetPVarInt(playerid, !"check_for_command"))
{
SendClientMessage(playerid, -1,
(success) ? (!"Команда существует!") : ("Команда не существует!"));
DeletePVar(playerid, !"check_for_command");
return 0;
}
return 1;
}
Оо интересненько, спасибо)
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot