void CLobbyApp::SendGameInfo() { ZGameServerInfoMsg* gameInfo = GetGameServerInfoMsg(); SetVariableGameInfo(); //must do endian so both side of network get correct numbers //gameinfo used on Unix and Intel boxes //note that doing this once will invalidate all numbers //so set gameInfo->info[0] numbers again. ZGameInstanceInfoMsgEndian( gameInfo->info ); //send, usually to many Ip addresses which are Zone Web servers, so add this to your game configuration for (int i = 0; i < m_cReportServers; i++) ZGameInfoSendTo(m_rgulIP[i], 2000, GetGameServerInfoMsg(), sizeof(m_GameInfoBuf)); //Imago 9/14 if (m_fmServers.GetConnections()->GetCount() > 0) { int offset = 0; char * PostData = new char[BUFFSIZE]; ZeroMemory(PostData,BUFFSIZE); ListConnections::Iterator iterCnxn(*m_fmServers.GetConnections()); while (!iterCnxn.End()) { CFLServer * pServerT = CFLServer::FromConnection(*iterCnxn.Value()); MissionList::Iterator iterMission(*pServerT->GetMissions()); while (!iterMission.End()){ CFLMission* mission = iterMission.Value(); FMD_LS_LOBBYMISSIONINFO *info = mission->GetMissionInfo(); if (info) { memcpy(PostData + offset, info, info->cbmsg); offset += info->cbmsg; iterMission.Next(); } } iterCnxn.Next(); } if (offset > 0) { pHTTP settings; Strcpy(settings.hdrs,"Content-Type: application/octet-stream\r\n"); Strcpy(settings.verb,"POST"); Strcpy(settings.uri,"/lobbyinfo.ashx"); Strcpy(settings.host,"allegiancezone.com"); ZeroMemory(settings.data,BUFFSIZE); memcpy(settings.data,PostData,offset); settings.size = offset; DWORD lpExitCode; GetExitCodeThread(m_threadPost,&lpExitCode); if (lpExitCode != STILL_ACTIVE) { debugf("Creating post thread.\n"); DWORD dum; m_threadPost = CreateThread(NULL, 0, PostThread, (void*)&settings, 0, &dum); } else debugf("Post thread was still running...\n"); } } }
void CLobbyApp::SetVariableGameInfo() { ZGameServerInfoMsg* gameInfo = GetGameServerInfoMsg(); gameInfo->info[0].order = 1; //used for Web page order of view gameInfo->info[0].blobsize = 0; //reserved for internal Zone use gameInfo->info[0].maxPopulation = 1000; gameInfo->info[0].gameAddr = 0; //inet_addr ("127.0.0/1"); gameInfo->info[0].gamePort = 0; //2803; //your game port gameInfo->info[0].serviceType = GAMEINFO_SERVICE_TYPE_GAME; gameInfo->info[0].gameState = zGameStateActive; gameInfo->info[0].gameVersion = 1; SYSTEMTIME systime; GetSystemTime (&systime); SystemTimeToFileTime(&systime, &(gameInfo->info[0].timeGameStart)); gameInfo->info[0].numPlayers = m_pCounters->cPlayersMissions + m_pCounters->cPlayersLobby; gameInfo->info[0].numSysops = 0; gameInfo->info[0].numNotPlaying = m_pCounters->cPlayersLobby; gameInfo->info[0].numGamesServed = m_pCounters->cMissions; // relies on perf counters being updated // can not use interlocked calls here b/c they're 16bit values gameInfo->info[0].numTables = 1; gameInfo->info[0].numTablesInUse = 1; }
void CLobbyApp::SetConstantGameInfo() { ZGameServerInfoMsg* gameInfo = GetGameServerInfoMsg(); gameInfo->protocolSignature = zGameInfoSignature; gameInfo->protocolVersion = zGameInfoCurrentProtocolVersion; gameInfo->numEntries = 1; ZGameServerInfoMsgEndian(gameInfo); strcpy(gameInfo->info[0].gameInternalName, m_fFreeLobby ? "sOBLI_xx_x02" : "sOBLI_xx_x01"); strcpy(gameInfo->info[0].gameFriendlyName, "Allegiance"); strcpy(gameInfo->info[0].gameRoomDescription, "Am I supposed to put something here?"); strcpy(gameInfo->info[0].setupToken, ""); //reserverd for internal Zone use }
void CLobbyApp::SendGameInfo() { // BT - 7/15 - Send currently connected players to the CSS webservice. if (g_pLobbyApp->GetCssGameInfoEnabled() == true) SendGameInfoToCss(); if (g_pLobbyApp->GetAzGameInfoEnabled() == true) SendGameInfoToAz(); ZGameServerInfoMsg* gameInfo = GetGameServerInfoMsg(); SetVariableGameInfo(); //must do endian so both side of network get correct numbers //gameinfo used on Unix and Intel boxes //note that doing this once will invalidate all numbers //so set gameInfo->info[0] numbers again. ZGameInstanceInfoMsgEndian( gameInfo->info ); //send, usually to many Ip addresses which are Zone Web servers, so add this to your game configuration for (int i = 0; i < m_cReportServers; i++) ZGameInfoSendTo(m_rgulIP[i], 2000, GetGameServerInfoMsg(), sizeof(m_GameInfoBuf)); }