Zcmd - вопрос по поводу вызова команд -
Maikkk - 27.08.2012
Приветствую. Стандартным образом можно вызвать команды из любого другого места путем:
PHP код:
OnPlayerCommandText(playerid,"/command");
В zcmd:
PHP код:
OnPlayerCommandReceived(playerid,"/command");
Команды в моде у меня так:
PHP код:
CMD:command(playerid,params[])
{
/*code*/
return 1;
}
И когда я хочу вызвать через OnPlayerCommandRecceived я получаю это:
Quote:
function "OnPlayerCommandReceived" is not implemented
|
Объявляю функцию (public), ошибок нет, но команда не вызывается. Где-то прочитал что вызываются только те, которые в самом паблике:
PHP код:
public OnPlayerCommandReceived(playerid, cmdtext[])
{
if (!strcmp(cmdtext, "/command", true))
{
SendClientMessage(playerid, 0x00FFFFFF, "command");
return 0;
}
SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: Unknown command");
return 1;
}
Вопрос: Значит чтобы вызвать с другого места (например в диалоге) команду, я должен все переводить на strcmp и пихать в public ? И если это так, тогда для чего CMD:command(playerid...) ? Если их нельзя вызвать с любого другого места. Подскажите пожалуйста как можно было бы вызвать просто CMD не впихивая их в паблик и возможно ли это? Заранее спасибо за ответ.
Re: Zcmd - вопрос по поводу вызова команд -
stabker - 27.08.2012
Попробуй вызывать так: cmd_команда(...)
Re: Zcmd - вопрос по поводу вызова команд -
Maikkk - 28.08.2012
stabker - Спасибо, команда вызывается, но тут одно "но", при компилировании мода, варнинг, что несовпадение кол-во аргументов:
Quote:
warning 202: number of arguments does not match definition
|
сделал так:
Код:
cmd_command(playerid);
хотя в самом inc:
Код:
#define COMMAND:%1(%2) \
forward cmd_%1(%2); \
public cmd_%1(%2)
... не подскажите в чем проблема?
p.s. Когда делаю так:
Код:
cmd_command(playerid,"");
Никаких варнингов нет, 2-й аргумент для параметров? Т.е. если у меня команда /test id я делаю атак?:
Код:
cmd_test(playerid,"i");
?
Re: Zcmd - вопрос по поводу вызова команд -
OKStyle - 28.08.2012
pawn Код:
CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext);
Re: Zcmd - вопрос по поводу вызова команд -
stabker - 28.08.2012
Quote:
Originally Posted by Maikkk
stabker - Спасибо, команда вызывается, но тут одно "но", при компилировании мода, варнинг, что несовпадение кол-во аргументов:
сделал так:
Код:
cmd_command(playerid);
хотя в самом inc:
Код:
#define COMMAND:%1(%2) \
forward cmd_%1(%2); \
public cmd_%1(%2)
... не подскажите в чем проблема?
p.s. Когда делаю так:
Код:
cmd_command(playerid,"");
Никаких варнингов нет, 2-й аргумент для параметров? Т.е. если у меня команда /test id я делаю атак?:
Код:
cmd_test(playerid,"i");
?
|
Да, для параметров.
Я думаю можно еще через format собирать их в одно, вставлять во второй аргумент. Хотя потом их sscanf будет обратно разбирать) Не знаю на сколько умно это будет.
Re: Zcmd - вопрос по поводу вызова команд -
Maikkk - 28.08.2012
OKStyle - Спасибо за помощь, но команда не вызывается, возможно это будет работать только в том случаи когда сама команда будет в public'е, так?
stabker - На данный момент мне нужно вызывать команды без всяких параметров, работает. Кстати, протестировал действие /me:
Код:
cmd_me(playerid,"заводит двигатель");
работает). Если же вызывать команду через диалог и параметр вводишь через него же, думаю так будет работать:
Код:
cmd_test(playerid,strval(inputtext));
Еще раз большое спасибо за помощь

.
Re: Zcmd - вопрос по поводу вызова команд -
OKStyle - 28.08.2012
Если в диалоге нужно вводить текст, то не strval, а просто inputtext.
Re: Zcmd - вопрос по поводу вызова команд -
Maikkk - 28.08.2012
OKStyle - Да, я в курсе

, но все равно спасибо за помощь

.