Resultados 1 al 4 de 4

Tema: Enviar Packets...

  1. #1 [Helbreath] Mucha info alguien ayuda? 
    Iniciado
    Fecha de ingreso
    Dec 2005
    Mensajes
    8
    Descargas
    0
    Uploads
    0
    Bien antes que nada me introduzco bien...

    Mi nombre es manuel calderon, y vengo para ver si me podrian dar una mano con...un juego llamado helbreath.

    Bien el sistema de login del juego, el que maneja los datos de los jugadores/characters (no las cuentas) es denominado WorldServer.exe el cual tambien acepta todos los mapas del juego los cuales se ponen online mediante un archivo llamado GameServer el cual carga los archivos de los mapas y establece la conexion con el WorldServer para que el jugador pueda pasar al GameServer o mapa. Esta conexion se efectua mediante el puerto 2501, osea el GameServer se conecta al WorldServer mediante el port 2501.

    Bien, cada GameServer.exe (hosteador de mapas) cuando te sales del juego le manda tu informacion de tu jugador al WorldServer para que este a su vez la grabe. Ahora bien lo que ando buscando es como mandar ese "packet" que manda el GameServer.exe mandarlo yo editado o cambiado al WorldServer.exe para que este lo grabe. En este caso podria hacerle todo tipo de cambios a los datos del jugador...

    Bien aca les dejo los 3 packets que creo que son los que debería usar o que ustedes deberian saber...

    Packets del HGserver.exe
    MSGID_REQUEST_REGISTERGAMESERVER (para registrarse en el WorldServer)
    MSGID_REQUEST_PLAYERDATA (para obtener la informacion del jugador)
    MSGID_REQUEST_SAVEPLAYERDATA (para grabar la informacion del jugador)

    MSGID = MSGID_REQUEST_REGISTERGAMESERVER (0x0512A3F4, DWORD)
    MSGTYPE = DEF_MSGTYPE_CONFIRM (0x0F14, WORD)

    SERVER NAME = 10 bytes (char)
    SERVER IP ADDRESS = 16 bytes (char)
    SERVER PORT = 2 bytes (WORD)
    TOTAL MAPS = 1 byte (char)
    y para cada mapa (osea hay que poner MAPNAME = nombredelmapa):
    MAPNAME = 11 bytes (char)

    MSGID = MSGID_REQUEST_PLAYERDATA (0x0C152210, DWORD)
    MSGTYPE = DEF_MSGTYPE_CONFIRM (0x0F14, WORD)
    CHARNAME = 10 bytes (char)
    ACCOUNT NAME = 10 bytes (char)
    PASSWORD = 10 bytes (char)
    CLIENT IP ADDRESS = 15 bytes (char)

    MSGID = MSGID_REQUEST_SAVEPLAYERDATA (0x0DF3076F, DWORD)
    MSGTYPE = DEF_MSGTYPE_CONFIRM (0x0F14, WORD)
    CHARACTER NAME = 10 bytes (char)
    ACCOUNT NAME = 10 bytes (char)
    PASSWORD = 10 bytes (char)
    FLAG = 1 byte (char)
    CHARACTER FILE DATA = various bytes (char)
    Última edición por locobans; 17-12-2005 a las 03:22
    Citar  
     

  2. #2  
    Iniciado
    Fecha de ingreso
    Dec 2005
    Mensajes
    8
    Descargas
    0
    Uploads
    0
    Aca les dejo los codigos fuentes del GameServer.exe (hosteador de mapas)

    case MSGID_REQUEST_REGISTERGAMESERVER:
    Código:
    		wsprintf(cTxt, "(!) Try to register game server(%s) - GateServer", m_cServerName);
    		PutLogList(cTxt);
    		
    		dwp  = (DWORD *)(cData + DEF_INDEX4_MSGID);
    		*dwp = MSGID_REQUEST_REGISTERGAMESERVER;
    		wp   = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
    		*wp  = DEF_MSGTYPE_CONFIRM;
    		
    		cp = (char *)(cData + DEF_INDEX2_MSGTYPE + 2);
    
    		memcpy(cAccountName, m_cServerName, 10);
    		memcpy(cAddress, m_cGameServerAddr, strlen(m_cGameServerAddr));
    
    		memcpy(cp, cAccountName, 10);
    		cp += 10;
    
    		memcpy(cp, cAddress, 16);
    		cp += 16;
    
    		wp  = (WORD *)cp;
    		*wp = m_iGameServerPort;
    		cp += 2;
    
    		*cp = m_iTotalMaps;
    		cp++;
    
    		for (i = 0; i < m_iTotalMaps; i++) {
    			memcpy(cp, m_pMapList[i]->m_cName, 11);
    			cp += 11;
    		}
    
    		dwp = (DWORD *)cp;
    		*dwp = (DWORD)GetCurrentProcessId();	 // ÇÁ·Î¼¼½º ÇÚµéÀ» ±â·ÏÇÑ´Ù.
    		cp += 4;
    
    		dwp  = (DWORD *)cp;
    		*dwp = (DWORD)DEF_BUILDDATE;
    		cp += 4;
    
    		iRet = m_pGateSock->iSendMsg(cData, 39 + m_iTotalMaps*11 + 4);
    		break;


    case MSGID_REQUEST_PLAYERDATA:
    Código:
    		
    		if (_bCheckSubLogSocketIndex() == FALSE) return FALSE;
    
    		if (m_pClientList[iClientH] == NULL) return FALSE;
    
    		dwp  = (DWORD *)(G_cData50000 + DEF_INDEX4_MSGID);
    		*dwp = MSGID_REQUEST_PLAYERDATA;
    		wp   = (WORD *)(G_cData50000 + DEF_INDEX2_MSGTYPE);
    		*wp  = DEF_MSGTYPE_CONFIRM;
    
    		cp = (char *)(G_cData50000 + DEF_INDEX2_MSGTYPE + 2);
    
    		if (strlen(m_pClientList[iClientH]->m_cCharName) == 0) PutLogList("(X) CharName NULL!");
    
    		memcpy(cCharName, m_pClientList[iClientH]->m_cCharName, 10);
    		memcpy(cAccountName, m_pClientList[iClientH]->m_cAccountName, 10);
    		memcpy(cAccountPassword, m_pClientList[iClientH]->m_cAccountPassword, 10);
    
    		memcpy((char *)cp, cCharName, 10);
    		cp += 10;
    
    		memcpy((char *)cp, cAccountName, 10);
    		cp += 10;
    
    		memcpy((char *)cp, cAccountPassword, 10);
    		cp += 10;
    
    		ZeroMemory(cTemp, sizeof(cTemp));
    		iRet = m_pClientList[iClientH]->m_pXSock->iGetPeerAddress(cTemp);
    		memcpy((char *)cp, cTemp, 15);
    		cp += 15;
    		
    		iRet = m_pSubLogSock[m_iCurSubLogSockIndex]->iSendMsg(G_cData50000, 52);
    		iSendSize = 52;
    		break;


    case MSGID_REQUEST_SAVEPLAYERDATA_REPLY:
    case MSGID_REQUEST_SAVEPLAYERDATA:
    case MSGID_REQUEST_SAVEPLAYERDATALOGOUT:

    Código:
    		if (_bCheckSubLogSocketIndex() == FALSE) return FALSE;
    		
    		if (m_pClientList[iClientH] == NULL) return FALSE;
    		
    		dwp  = (DWORD *)(G_cData50000 + DEF_INDEX4_MSGID);
    		*dwp = dwMsg;
    		wp   = (WORD *)(G_cData50000 + DEF_INDEX2_MSGTYPE);
    		*wp  = DEF_MSGTYPE_CONFIRM;
    
    		cp = (char *)(G_cData50000 + DEF_INDEX2_MSGTYPE + 2);
    
    		memcpy(cCharName, m_pClientList[iClientH]->m_cCharName, 10);
    		memcpy(cAccountName, m_pClientList[iClientH]->m_cAccountName, 10);
    		memcpy(cAccountPassword, m_pClientList[iClientH]->m_cAccountPassword, 10);
    
    		memcpy((char *)cp, cCharName, 10);
    		cp += 10;
    
    		memcpy((char *)cp, cAccountName, 10);
    		cp += 10;
    
    		memcpy((char *)cp, cAccountPassword, 10);
    		cp += 10;
    Citar  
     

  3. #3  
    Iniciado
    Fecha de ingreso
    Dec 2005
    Mensajes
    8
    Descargas
    0
    Uploads
    0
    Este es un ejemplo de un archivo, osea del archivo de un jugador...

    http://hb-zion.com/Info.txt

    Ese es un ejemplo, lo que me gustaria ser es enviar un archivo como este (cambiando varios valores) al servidor del juego, que en este caso se puede enviar hacia el WorldServer.exe que es el que los graba...

    P.D: Gracias por leer, y esperaré por respuetas!
    Citar  
     

  4. #4  
    Iniciado
    Fecha de ingreso
    Dec 2005
    Mensajes
    8
    Descargas
    0
    Uploads
    0
    Nadie mas?
    Citar  
     

Temas similares

  1. Enviar SMS GRATIS
    Por LUK en el foro TELEFONIA
    Respuestas: 20
    Último mensaje: 05-09-2008, 15:24
  2. Enviar SMS gratis
    Por jamj453 en el foro TELEFONÍA MOVIL
    Respuestas: 2
    Último mensaje: 04-05-2008, 05:18
  3. Enviar paquetes!!
    Por omarpa en el foro GENERAL
    Respuestas: 4
    Último mensaje: 02-09-2007, 16:28
  4. Enviar Ringtones
    Por Inarus Logan en el foro TELEFONIA
    Respuestas: 1
    Último mensaje: 29-11-2004, 17:11

Marcadores

Marcadores

Permisos de publicación

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