Как использовать dcmd?
dcmd создана для того, чтобы компактнее и быстрее писать команды.
Обычная команда выглядит так:
if(strcmp(cmdtext, "/cmd", true)==0) { SendClientMessage(playerid, COLOR_GREEN, "*** Bla bla bla это хелп"); return 1; }
а с использованием dcmd вот так:
dcmd_cmd(playerid, cmdtext[]) { #pragma unused cmdtext SendClientMessage(playerid, COLOR_GREEN, "*** Bla bla bla это хелп"); }
это только сама команда, нужно еще кое-что сделать:
В начале скрипта прописать строчку:
#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1
эта команда отдельная ее не надо вставлять ни в какую функцию (вставляйте перед функцие OnPlayerCommandText)
dcmd_cmd(playerid, cmdtext[]) { #pragma unused cmdtext SendClientMessage(playerid, COLOR_GREEN, "*** Bla bla bla это хелп"); }
А функция OnPlayerCommandText будет выглядеть уже по-другому:
public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(cmd,3,cmdtext); return 0; }
разберем эту строчку:
dcmd(cmd,3,cmdtext);
в основном главное тут запомнить это цифру 3
эта цифра означает длинну команды (цифра может быть любой в зависимости от команды)
например:
dcmd(cmd,3,cmdtext); dcmd(command,7,cmdtext); dcmd(give,4,cmdtext);
вот и все
строка: #pragma unused cmdtext
означает, что мы не используем cmdtext
да чуть не забыл cmd - это название самой функции т.е. в игре мы будем писать /cmd