Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

tutoriais Adicionando Novos Comandos de adm em seu GunZ [NEW]


SØPA
 Compartilhar

Posts Recomendados

1º Crie Seu Servidor

[video=youtube;mLjxUgjyos4]

É necessário se cadastrar para acessar o conteúdo.

Atenção isso não é para novatos você tem que ter algum conhecimento de programação!

 

1. Vá para a solução GunZ -> Interface - Base> -> ZChat_Cmds.cpp

 

2. Olhe para a primeira onda de "ChatCmd_ vazio ..." código. (Deve estar perto do topo)

 

3. Adicionar um que se encaixa para o seu nome do comando. Eu vou estar usando isso:

 

Código:

vazio ChatCmd_CharInfo (const char * linha, const int argc, char ** const argv);

4. Vá para o ZChat :: InitCmds () e vá até o final dela.

 

5. Adicione esta linha:

 

Código:

_CC_AC ("Charinfo", e ChatCmd_CharInfo, CCF_ADMIN, ARGVNoMin, 2, true, "/ charinfo", "");

 

/ *

1 param = nome do comando

Param callback = 2 para o comando

Param terceira flag = (admin usar apenas, lobby usar apenas, etc)

4 = param argumentos mínimos

5 = param argumentos máximos

Param 6 = Repita Habilitado

Param = 7 Uso

Param 8 = Ajuda

* /

6. Percorra todo o caminho até a parte inferior do arquivo e adicione isto:

 

Código:

vazio ChatCmd_CharInfo (const char * linha, const int argc, char ** argv const)

{

}

 

7. Ir para CSCommon -> pasta SharedCommand -> MSharedCommandTable.h

 

8. Percorra todo o caminho até o fundo (mas antes do # endif) e acrescentar o seguinte:

 

Código:

# Define MC_ADMINCMD_REQUEST_CHAR_INFO 70000

# Define MC_ADMINCMD_RESPONSE_CHAR_INFO 70001

9. MSharedCommandTable.cpp aberto, percorrer todo o caminho até o fundo (mas antes do END_CMD_DESC () ;)

e acrescentar o seguinte:

 

Código:

C ("Whatever". MC_ADMINCMD_REQUEST_CHAR_INFO ", AdminCmd.Request.Char.Info", MCDT_MACHINE2MACHINE)

P (MPT_UID ", uidPlayer")

P (MPT_STR ", szName")

 

C ("Whatever". MC_ADMINCMD_RESPONSE_CHAR_INFO ", AdminCmd.Response.Char.Info", MCDT_MACHINE2MACHINE)

P (MPT_BLOB ", pBlob")

10. Ir para a Solução GunZ -> Rede -> ZPost.h, percorrer todo o caminho até o fundo (mas antes do # edif - por causa fode)

e acrescentar o seguinte:

 

Código:

inline void ZPostAdminCmdRequestCharInfo (MUID const & uidPlayer, const char szName *)

{

ZPOSTCMD2 (MC_ADMINCMD_REQUEST_CHAR_INFO, MCmdParamUID (uidPlayer), MCmdParamStr (szName));

}

11. Volte para ZChat_Cmds.cpp, volta para a última linha foi adicionada e adicione isto:

 

Código:

vazio ChatCmd_CharInfo (const char * linha, const int argc, char ** argv const)

{

if (argc <2)

{

OutputCmdWrongArgument (argv [0]);

voltar;

}

 

if (strlen (argv [1])> 16)

{

ZChatOutput ("Nome deve ter 16 letras ou menos.");

voltar;

}

 

caractere szPlayerName [16];

strcpy (szPlayerName, argv [1]);

 

ZPostAdminCmdRequestCharInfo (ZGetGameClient () -> GetPlayerUID (), szPlayerName);

}

A parte divertida.

12. Vá para a solução Gunz -> Rede -> ZGameClient.h, role perto do fundo da classe e adicione o seguinte:

 

Código:

OnAdminCmdResponseCharInfo vazio (void * pBlob);

(Note, colocá-lo abaixo de "OnAdminResponseMutePlayer (...);")

 

13. ZGameClient.cpp aberto, vá até o fundo e adicione o seguinte:

 

Código:

vazio ZGameClient :: OnAdminCmdResponseCharInfo (void pBlob *)

{

caractere szBuffer [128] = {0};

nCID unsigned long = 0;

unsigned long NBP = 0;

unsigned long NXP = 0;

 

nCID = MGetBlobArrayElement (unsigned long) (pBlob, 0);

NBP = MGetBlobArrayElement (unsigned long) (pBlob, 1);

NXP = (unsigned long) MGetBlobArrayElement (pBlob, 2);

 

sprintf (szBuffer, "CID:% d \ NBP:% d \ NXP:% d \ n", nCID, NBP, NXP);

ZChatOutput (szBuffer);

}

14. ZGameClient_OnCommand.cpp Abrir e vá até a cláusula switch "MC_ADMIN_RESPONSE_MUTE_PLAYER"

 

15. Debaixo dela, adicione isto:

 

Código:

MC_ADMINCMD_RESPONSE_CHAR_INFO caso:

{

/ / Void * pBlob = pCommand-> getParameter (0) -> GetPointer ();

/ / Nota, você provavelmente deve adicionar uma verificação para ver se é uma bolha em primeiro lugar. como assim.

MCommandParameter * pParam = pCommand-> getParameter (0);

if (pParam-> GetType ()! MPT_BLOB =)

quebrar;

 

OnAdminCmdResponseCharInfo (pParam-> GetPointer ());

}

16. Solução CSCommon Open -> MatchServer -> MMatchServer -> MMatchServer.h e

adicionar este perto do fim da classe:

 

Código:

vazio OnRequestAdminCmdCharInfo (MUID const & uidPlayer, const char * szPlayerName);

17. Abra MMatchServer.cpp e adicione esta perto do fim:

 

Código:

MMatchServer vazio :: OnRequestAdminCmdCharInfo (const MUID & uidPlayer, const char * szPlayerName)

{

MMatchObject * pObject = GetObject (uidPlayer);

 

if (pObject)

{

if (IsAdminGrade (pObject))

{

MMatchObject * pTarget = GetPlayerByName (szPlayerName);

 

if (pTarget)

{

unsigned nCID longo, NBP, a NXP = 0;

 

nCID = pTarget-> GetCharInfo () -> m_nCID;

NBP = pTarget-> GetCharInfo () -> m_nBP;

NXP = pTarget-> GetCharInfo () -> m_nXP;

 

void * pBlob = MMakeBlobArray (sizeof (unsigned long) * 3, 3);

 

unsigned char * PCPA = (unsigned char *) MGetBlobArrayElement (pBlob, 0);

CopyMemory (PCPA, e nCID, sizeof (unsigned long));

PCPA = (unsigned char *) MGetBlobArrayElement (pBlob, 1);

CopyMemory (PCPA, e NBP, sizeof (unsigned long));

PCPA = (unsigned char *) MGetBlobArrayElement (pBlob, 2);

CopyMemory (PCPA, e NXP, sizeof (unsigned long));

 

MCommand * pCmd = CreateCommand (MC_ADMINCMD_RESPONSE_CHAR_INFO, pObject-> getuid ());

 

if (pCmd)

{

pCmd-> ***Parameter (novo MCommandParameterBlob (pBlob, MGetBlobArraySize (pBlob)));

MEraseBlobArray (pBlob);

 

MMatchServer :: getInstance () -> RouteToListener (pObject, pCmd);

}

}

}

}

}

18. Ir para MMatchServer_OnCommand, role perto do fundo do interruptor e cláusula

acrescentar o seguinte:

 

Código:

MC_ADMINCMD_REQUEST_CHAR_INFO caso:

{

MUID uidPlayer;

caractere szPlayerName [16] = {0};

 

pCommand-> getParameter (& uidPlayer, 0, MPT_UID);

pCommand-> getParameter (szPlayerName, 1, MPT_STR, 16);

 

OnRequestAdminCmdCharInfo (uidPlayer, szPlayerName);

quebrar;

}

Eu acho que tudo marcado. Tomara que eu estou atrasado, pois é, se não, bem, você vai entender 99% dele lol. Olhe para os meus outros tutoriais próximos:

-Admin Console, AES em pacotes e SHA1 cheques

 

P.S: Só vai funcionar se o jogador está online.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas atrás...
Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.