Zcmd - вопрос по поводу вызова команд
#1

Приветствую. Стандартным образом можно вызвать команды из любого другого места путем:
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(playeridcmdtext[])
{
if (!
strcmp(cmdtext"/command"true))
{
SendClientMessage(playerid0x00FFFFFF"command");
return 
0;
}
SendClientMessage(playerid0xFFFFFFFF"SERVER: Unknown command");
return 
1;

Вопрос: Значит чтобы вызвать с другого места (например в диалоге) команду, я должен все переводить на strcmp и пихать в public ? И если это так, тогда для чего CMD:command(playerid...) ? Если их нельзя вызвать с любого другого места. Подскажите пожалуйста как можно было бы вызвать просто CMD не впихивая их в паблик и возможно ли это? Заранее спасибо за ответ.
Reply
#2

Попробуй вызывать так: cmd_команда(...)
Reply
#3

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");
?
Reply
#4

pawn Код:
CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext);
Reply
#5

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 будет обратно разбирать) Не знаю на сколько умно это будет.
Reply
#6

OKStyle - Спасибо за помощь, но команда не вызывается, возможно это будет работать только в том случаи когда сама команда будет в public'е, так?

stabker - На данный момент мне нужно вызывать команды без всяких параметров, работает. Кстати, протестировал действие /me:
Код:
cmd_me(playerid,"заводит двигатель");
работает). Если же вызывать команду через диалог и параметр вводишь через него же, думаю так будет работать:

Код:
cmd_test(playerid,strval(inputtext));
Еще раз большое спасибо за помощь .
Reply
#7

Если в диалоге нужно вводить текст, то не strval, а просто inputtext.
Reply
#8

OKStyle - Да, я в курсе , но все равно спасибо за помощь .
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)