Как использовать 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




Описание dcmd_%cmd(playerid, cmdtext[]) нужно проводить в отдельном блоке. return 1 в конце ставить не нужно, как видишь, он уже отдефайнен.