Ничего не получается? Хм...наверное надо было хотя бы попытаться...
[pwn]#include <a_samp> #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(fakecmd,7,cmdtext);
return 0;
}
dcmd_fakecmd(playerid,params[]) {
if(IsPlayerAdmin(playerid)) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, 0xFF0000AA, " ПРАВКА: /fakecmd [id игрока] [команда]");
new player1 = strval(tmp);
if(IsPlayerAdmin(player1)) return SendClientMessage(playerid, 0xFF0000AA," ОШИБКА: Нельзя применить на админа");
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
CallRemoteFunction("OnPlayerCommandText", "is", player1, tmp2);
return SendClientMessage(playerid, 0xFF0000AA," Команда у указанного игрока сработала");
} else return SendClientMessage(playerid, 0xFF0000AA," ОШИБКА: Нет такого игрока");
} else return SendClientMessage(playerid, 0xFF0000AA," ОШИБКА: Вы должны быть админом чтобы использовать эту команду");
}
stock strtok(const string[], &index, seperator=' ')
{
new length = strlen(string);
new offset = index;
new result[255];
while((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
if((index < length) && (string[index] == seperator))
{
index++;
}
return result;
}
[/pwn]