Publicidad

Resultados 1 al 1 de 1
  1. #1
    [IG] Aprendiz Avatar de ClockG
    Ingreso
    15 dic, 11
    Mensajes
    47
    País
    Gracias
    5
    84 gracias en 22 Posts

    Como agregar comando Post al GS

    Bueno, en esta guia les voy a enseñar como implementar un nuevo comando al GS.
    Para esto, vamos a nececitar el Source de la DLL que esta Hookeada al GS.
    En el ejemplo, voy a implementar un comando al GS .90


    Abrimos el Source con el VS 2010 o cualquier VS, en el ejemplo uso el 2010.


    En este caso voy a implementar el comando "/Post"


    1.-Creamos un elemento .CPP llamado "Comandos"
    2.-Creamos un elemento .H llamado "Comandos"
    3.-Nos dirigimos al elemento CPP
    4.-Insertamos:


    Código:
    #include "StdAfx.h"
    void Post(DWORD PlayerID,char * msg)
    {
    	gObj_GetNick(PlayerID,Character);
    	int IsPost = GetPrivateProfileInt("GameServerInfo","PostEnabled",1,".\\Extras\\Commands.ini");
    	int Level = GetPrivateProfileInt ("GameServerInfo","PostLevelReq",100,".\\Extras\\Commands.ini");
    	if (IsPost == 0)
    	{
    	GCServerMsgStringSend("Function temporarily disabled.",PlayerID,1);
    	return;
    	}
    	if(!_strcmpi("/post",msg))
    	{
    	GCServerMsgStringSend("Usage: /post <msg>",PlayerID,1);
    	return;
    	}
    	if(strlen(msg)<1)
    	{
    	GCServerMsgStringSend("Usage: /post <msg>",PlayerID,1);
    	return;
    	}
    	if((int)gObj_GetInt(PlayerID,gObjLvl)<Level)
    	{
    	char levelmsg[100];
    	sprintf(levelmsg,"You haven't fulfilled the required level %d.",Level);
    	GCServerMsgStringSend(levelmsg,PlayerID,1);
    	return;
    	}
    	{
    	GCServerMsgStringSend("Function only available for GameMasters.",PlayerID,1);
    	return;
    	}
    	short int Cost = GetPrivateProfileInt("GameServerInfo","PostCost",1,".\\Extras\\Commands.ini");
    	DWORD Price = GetPrivateProfileInt("GameServerInfo","PostPrice",100000,".\\Extras\\Commands.ini");
    	if (Cost == 1)
    	{
    	if ((DWORD)gObj_GetInt(PlayerID,gObjZen) < Price)
    	{
    	if (Price > 0)
    	{
    	char OutputZenFalha[200];
    	sprintf_s(OutputZenFalha,"You don't have enough zen.",Price);
    	GCServerMsgStringSend(OutputZenFalha,PlayerID,1);
    	return;
    	}
    	else
    	{
    	GCServerMsgStringSend("Incorrect configurations.",PlayerID,1);
    	return;
    	}
    	}
    	}
    	ServerMsgSend(0,1,Character,"[Global]%s",msg);
    	if (Cost == 1)
    	{
    	if ((DWORD)gObj_GetInt(PlayerID,gObjZen) >= Price)
    	{
    	if (Price > 0)
    	{
    	gObj_Write(PlayerID,gObjZen,gObj_GetInt(PlayerID,gObjZen) - Price);
    	GCMoneySend(PlayerID,gObj_GetInt(PlayerID,gObjZen));
    	}
    	}
    	}
    }

    Vamos a explicar mas o menos esto:


    void Post(DWORD PlayerID,char * msg) Establecemos la seccion y definimos los identificadores de la misma
    gObj_GetNick(PlayerID,Character); Almacenamos el personaje en la estructura GetPrivateProfileInt("GameServerInfo","PostEnabled ",1,".\\Extras\\Commands.ini"); Definimos de donde se toma si el Post esta activado o desactivado
    int Level = GetPrivateProfileInt ("GameServerInfo","PostLevelReq",100,".\\Extras\\C ommands.ini"); Definimos de donde se toma el nivel requerido para el Post


    Unas lineas mas abajo agregamos:


    Código:
    void ChatDataSend(DWORD PlayerID,LPBYTE Protocol)
    char CommandPost[] = "/post";
    	if(!memcmp(&Protocol[13],CommandPost,strlen(CommandPost)))
    	{
    	Post(PlayerID,(char*)Protocol+13+strlen(CommandPost));
    	}

    void ChatDataSend(DWORD PlayerID,LPBYTE Protocol) Establecemos la seccion y declaramos sus identificadores
    char CommandPost[] = "/post"; Definimos el "String" del comando


    5.-Nos dirigimos al elemento Header
    6.-Insertamos:


    Código:
    #include "StdAfx.h"
    void ChatDataSend(DWORD gObjId,LPBYTE Protocol);

    Creditos:


    -ClockG: Guia
    -CzF: Source del comando
    Última edición por ClockG; 08/01/2012 a las 19:15

  2.    Publicidad


  3. Los siguientes 6 usuarios te han agradecido ClockG , por tu grandioso post:



 

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •