Vou mostrar como usar OnPlayerCommandText com Zcmd sem ter q converter seu GM...
Abra a Include ZCMD limpe ela toda e cole isso:
pawn Код:Abra a Include ZCMD limpe ela toda e cole isso:
- Código:
/**********************************
* *
* @Author: ZeeX *
* @Version: 0.3.1 *
* @Released: 31/10/2009 *
* *
**********************************/
#if defined _zcmd_included
#endinput
#endif
#define _zcmd_included
#define MAX_FUNC_NAME (32)
#define COMMAND:%1(%2) \
forward cmd_%1(%2); \
public cmd_%1(%2)
#define CMD:%1(%2) \
COMMAND:%1(%2)
#define command(%1,%2,%3) \
COMMAND:%1(%2, %3)
#define cmd(%1,%2,%3) \
COMMAND:%1(%2, %3)
#if !defined isnull
#define isnull(%1) \
((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif
forward OnPlayerCommandReceived(playerid, cmdtext[]);
forward OnPlayerCommandPerformed(playerid, cmdtext[], success);
forward OnCommandText(playerid,cmdtext[]);
static
bool:zcmd_g_HasOPCS = false,
bool:zcmd_g_HasOPCE = false;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
return CallLocalFunction("zcmd_OnFilterScriptInit", "");
}
#if defined _ALS_OnFilterScriptInit
#undef OnFilterScriptInit
#else
#define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit zcmd_OnFilterScriptInit
forward zcmd_OnFilterScriptInit();
#else /*not a filterscript*/
public OnGameModeInit()
{
zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
if (funcidx("zcmd_OnGameModeInit") != -1)
{
return CallLocalFunction("zcmd_OnGameModeInit", "");
}
return 1;
}
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit zcmd_OnGameModeInit
forward zcmd_OnGameModeInit();
#endif /*if defined FILTERSCRIPT*/
public OnPlayerCommandText(playerid, cmdtext[])
{
if(CallLocalFunction("OnCommandText","is",playerid,cmdtext) == 1) return 1;
if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
{
return 1;
}
new
pos,
funcname[MAX_FUNC_NAME];
while (cmdtext[++pos] > ' ')
{
funcname[pos-1] = tolower(cmdtext[pos]);
}
format(funcname, sizeof(funcname), "cmd_%s", funcname);
while (cmdtext[pos] == ' ') pos++;
if (!cmdtext[pos])
{
if (zcmd_g_HasOPCE)
{
return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
}
return CallLocalFunction(funcname, "is", playerid, "\1");
}
if (zcmd_g_HasOPCE)
{
return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
}
return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
}
#if defined _ALS_OnPlayerCommandText
#undef OnPlayerCommandText
#else
#define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText OnCommandText
Caso nao queira modificar a include entao crie um nova(recomendo criar uma nova),outra coisa, sempre coloque return 1; em todos comandos com strcmp, o return 0; do fim da OnPlayerCommandText de Seu GM/FS pode deixar pq o zcmd irб verificar se retornou a 1 caso retorne a 0(ou o valor a ser retornado no fim do OnPlayerCommandtext) veja o teste queu fiz:
pawn Код:- Código:
#include <a_samp>
#include <zcmd>
public OnPlayerCommandText(playerid,cmdtext[]){
if(!strcmp(cmdtext,"/teste",true)){
SendClientMessage(playerid,-1,"Zcmd & OnPlayerCommandText \"Processando o Comando Em OnPlayerCommandText\"");
return 1;
}
return 0;
}
CMD:testee(playerid,params[]){
SendClientMessage(playerid,-1,"Zcmd Com OnPlayerCommandText \"Processando o Comando em Zcmd\"");
if(!isnull(params))SendClientMessage(playerid,-1,params);
return 1;
}
Obs: se duplicar um comando, o primeiro a ser executado й o q esta no OnPlayerCommandText
ObsІ: Nгo Percebi Isso Antes
pawn Код:ObsІ: Nгo Percebi Isso Antes
- Código:
public OnPlayerCommandReceived(playerid,cmdtext[])
{
// todos comando do OnPlayerCommandText Aquii
}
public OnPlayerCommandPerformed(playerid,cmdtext[],sucess)
{
// todos comando do OnPlayerCommandText Aquii
}
Isso nгo foi sу falta de antenзгo minha, como de todos q nгo conseguem usar ZCMD em GMs que contйm o OnPlayerCommandText.