示例#1
0
文件: Main.cpp 项目: Mateuus/devsrc
// This function called by engine before main app window created, before any IO initialized.
void game::PreInit()
{
	//MessageBox(NULL,"ถ้าคุณเจอคำว่า 'โปรแกรมกำลังอัพเดท โปรดเข้าเกมใหม่อีกครั้ง' ให้ลบโปรแกรมพวก Hamachi ออก","Allright Client",MB_OK);
#ifdef FINAL_BUILD // Client
	//runantihack();
	//Sleep(5000);
#else
	//Sleep(5000);
#endif
	//antihack();
	//@FOR STEAM- SetCurrentDirectory("Z:\\tsg\\WarOnline\\bin\\");

	u_srand(GetTickCount());

	g_HardwareInfo.Grab();

	win::hWinIcon  = NULL;
	win::szWinName = GetBuildVersionString();
	//#ifdef FINAL_BUILD
#ifdef Q_PROTECT
	//antihack();
#endif

#ifdef FINAL_BUILD
	win::hWinIcon = ::LoadIcon(win::hInstance, MAKEINTRESOURCE(IDI_WARZ));
	if(strstr(__r3dCmdLine, "-UDBRASILMTs") == NULL && strstr(__r3dCmdLine, "-gna") == NULL)
	{
		MessageBox(NULL, "Please run Undead Launcher launcher.", g_szApplicationName, MB_OK);
		ExitProcess(0);
	}
#endif	

#ifdef _DEBUG
	r3dOutToLog("cmd: %s\n", __r3dCmdLine);
#endif	
	// parse command line
	int argc = 0;
	char** argv = CommandLineToArgvA(__r3dCmdLine, &argc);
	for(int i=0; i<argc; i++) 
	{
		if(strcmp(argv[i], "-loginudbrasil157mts") == 0 && (i + 1) < argc)
		{
			r3dscpy(Login_PassedUser, argv[++i]);
			continue;
		}
		if(strcmp(argv[i], "-pwdudbrasilpwdmts") == 0 && (i + 1) < argc)
		{
			r3dscpy(Login_PassedPwd, argv[++i]);
			continue;
		}
		if(strcmp(argv[i], "-UDBRAuth") == 0 && (i + 1) < argc)
		{
			r3dscpy(Login_PassedAuth, argv[++i]);
			continue;
		}

		if(strcmp(argv[i], "-steam") == 0)
		{
			gSteam.IS_ENABLED = true;
			continue;
		}

		if(strcmp(argv[i], "-survey") == 0 && (i + 1) < argc)
		{
			gSurveyOutLink = argv[++i];
			continue;
		}
		//antihack();
#ifndef FINAL_BUILD
#if !DISABLE_PROFILER
		if (strcmp(argv[i], "-profile") == 0)
		{
			if (i + 1 >= argc)
				r3dError("Incorrect syntax for '-profile' option. Use '-profile level_name'");
			strcpy_s(LevelEditName, _countof(LevelEditName), argv[i + 1]);
			//	Set scheduled profile time to -1 to adjust it automatically after level will be loaded
			gScheduledProfileTime = -1.0f;
		}

		if (strcmp(argv[i], "-gprofile") == 0)
		{
			if (i + 1 >= argc)
				r3dError("Incorrect syntax for '-gprofile' option. Use '-gprofile level_name'");

			strcpy_s(LevelEditName, _countof(LevelEditName), argv[i + 1]);

			gProfileD3DFromCommandLine = true;
			gScheduledProfileTime = -1.0f;
		}
#endif

		if (strcmp(argv[i], "-camera") == 0)
		{
			if (i + 1 >= argc)
				r3dError("Incorrect syntax for '-camera' option. Use '-camera camera_spot_name'");

			strcpy_s(initialCameraSpotName, _countof(initialCameraSpotName), argv[i + 1]);
		}
#endif

	}
}
示例#2
0
// This function called by engine before main app window created, before any IO initialized. 
void game::PreInit()
{
	//@FOR STEAM- SetCurrentDirectory("Z:\\tsg\\WarOnline\\bin\\");

	u_srand(GetTickCount());

	g_HardwareInfo.Grab();

	win::hWinIcon  = NULL;
	win::szWinName = GetBuildVersionString();

#ifdef FINAL_BUILD
	win::hWinIcon = ::LoadIcon(win::hInstance, MAKEINTRESOURCE(IDI_WARZ));
	if(strstr(__r3dCmdLine, "-svchost") == NULL && strstr(__r3dCmdLine, "-gna") == NULL)//
	{
		MessageBox(NULL, "Please run UndeadBrasil launcher.", g_szApplicationName, MB_OK);
		ExitProcess(0);
	}
#endif	

#ifdef _DEBUG
	r3dOutToLog("cmd: %s\n", __r3dCmdLine);
#endif	
	
	// parse command line
	int argc = 0;
	char** argv = CommandLineToArgvA(__r3dCmdLine, &argc);
	for(int i=0; i<argc; i++) 
	{
		//if(strcmp(argv[i], "-login") == 0 && (i + 1) < argc)
		//{
		//	r3dscpy(Login_PassedUser, argv[++i]);
		//	continue;
		//}
		//if(strcmp(argv[i], "-pwd") == 0 && (i + 1) < argc)
		//{
		//	r3dscpy(Login_PassedPwd, argv[++i]);
		//	continue;
		//}
		if(strcmp(argv[i], "-WOLogin") == 0 && (i + 1) < argc)
		{
			r3dscpy(Login_PassedAuth, argv[++i]);
			continue;
		}
		
		//if(strcmp(argv[i], "-steam") == 0)
		//{
		//	gSteam.IS_ENABLED = true;
		//	continue;
		//}

		//if(strcmp(argv[i], "-survey") == 0 && (i + 1) < argc)
		//{
		//	gSurveyOutLink = argv[++i];
		//	continue;
		//}

#ifndef FINAL_BUILD
#if !DISABLE_PROFILER
		if (strcmp(argv[i], "-profile") == 0)
		{
			if (i + 1 >= argc)
				r3dError("Incorrect syntax for '-profile' option. Use '-profile level_name'");
			strcpy_s(LevelEditName, _countof(LevelEditName), argv[i + 1]);
			//	Set scheduled profile time to -1 to adjust it automatically after level will be loaded
			gScheduledProfileTime = -1.0f;
		}

		if (strcmp(argv[i], "-gprofile") == 0)
		{
			if (i + 1 >= argc)
				r3dError("Incorrect syntax for '-gprofile' option. Use '-gprofile level_name'");

			strcpy_s(LevelEditName, _countof(LevelEditName), argv[i + 1]);

			gProfileD3DFromCommandLine = true;
			gScheduledProfileTime = -1.0f;
		}
#endif

		if (strcmp(argv[i], "-camera") == 0)
		{
			if (i + 1 >= argc)
				r3dError("Incorrect syntax for '-camera' option. Use '-camera camera_spot_name'");

			strcpy_s(initialCameraSpotName, _countof(initialCameraSpotName), argv[i + 1]);
		}
#endif
	}
}
示例#3
0
void PlayGameServer()
{
  r3d_assert(gServerLogic.ginfo_.IsValid());
  switch(gServerLogic.ginfo_.mapId) 
  {
    default: 
      r3dError("invalid map id\n");
      break;
    case GBGameInfo::MAPID_Editor_Particles: 
      r3dGameLevel::SetHomeDir("WorkInProgress\\Editor_Particles"); 
      break;
    case GBGameInfo::MAPID_ServerTest:
      r3dGameLevel::SetHomeDir("WorkInProgress\\ServerTest");
      break;
    case GBGameInfo::MAPID_WZ_Colorado: 
      r3dGameLevel::SetHomeDir("WZ_Colorado"); 
      break;
	      case GBGameInfo::MAPID_Laskar: 
      r3dGameLevel::SetHomeDir("Laskar_Village_V2"); 
      break;
	      case GBGameInfo::MAPID_WZ_Cliffside_Farm: 
      r3dGameLevel::SetHomeDir("WZ_Cliffside_Farm"); 
      break;
	      case GBGameInfo::MAPID_WZ_RaccoonCity: 
      r3dGameLevel::SetHomeDir("WZ_RaccoonCity"); 
      break;
	     case GBGameInfo::MAPID_WZ_RaccoonCity_Premium: 
      r3dGameLevel::SetHomeDir("WZ_RaccoonCity_Premium"); 
      break;
	     case GBGameInfo::MAPID_WZ_CARCANFLY: 
      r3dGameLevel::SetHomeDir("WZ_CARCANFLY"); 
      break;
     case GBGameInfo::MAPID_WZ_Cliffside_PVP: 
      r3dGameLevel::SetHomeDir("WZ_Cliffside_PVP"); 
      break;
	  	case GBGameInfo::MAPID_wo_wasteland: 
		r3dGameLevel::SetHomeDir("wo_wasteland"); 
		break;
		case GBGameInfo::MAPID_wo_inferno: 
		r3dGameLevel::SetHomeDir("wo_inferno"); 
		break;
		case GBGameInfo::MAPID_wo_eastern_bunker_tdm: 
		r3dGameLevel::SetHomeDir("wo_eastern_bunker_tdm"); 
		break;
		case GBGameInfo::MAPID_WO_Grozny: 
		r3dGameLevel::SetHomeDir("WO_Grozny"); 
		break;
		case GBGameInfo::MAPID_wo_shippingyard: 
		r3dGameLevel::SetHomeDir("wo_shippingyard"); 
		break;
  }

  r3dResetFrameTime();
  
  GameWorld_Create();

  u_srand(timeGetTime());
  GameWorld().Init(OBJECTMANAGER_MAXOBJECTS, OBJECTMANAGER_MAXSTATICOBJECTS);
  ServerDummyWorld.Init(OBJECTMANAGER_MAXOBJECTS, OBJECTMANAGER_MAXSTATICOBJECTS);
  
  g_pPhysicsWorld = new PhysXWorld;
  g_pPhysicsWorld->Init();

  r3dTerrain::SetNeedShaders( false );
  LoadLevel_Objects( 1.f );

  gCollectionsManager.Init( 0, 1 );

  r3dOutToLog( "NavMesh.Load...\n" );
  gAutodeskNavMesh.Init();

  r3dResetFrameTime();
  GameWorld().Update();
  ServerDummyWorld.Update();

  r3dOutToLog("Spawning Vehicles... Count:%d\n",GameWorld().spawncar);
  gServerLogic.SpawnNewCar();

  r3dGameLevel::SetStartGameTime(r3dGetTime());
  
  r3dOutToLog("server main loop started\n");
  r3dResetFrameTime();
  gServerLogic.OnGameStart();
  
  gKeepAliveReporter.SetStarted(true);
  
  while(1) 
  {
    ::Sleep(20);		// limit to 100 FPS
    
    r3dEndFrame();
    r3dStartFrame();
    
    //if(GetAsyncKeyState(VK_F1)&0x8000) r3dError("r3dError test");
    //if(GetAsyncKeyState(VK_F2)&0x8000) r3d_assert(false && "r3d_Assert test");
    gKeepAliveReporter.Tick(gServerLogic.curPlayers_);

    gServerLogic.Tick();
    gMasterServerLogic.Tick();
    
    if(gMasterServerLogic.IsMasterDisconnected()) {
      r3dOutToLog("Master Server disconnected, exiting\n");
      gKeepAliveReporter.SetStarted(false);
      return;
    }

    GameWorld().StartFrame();
    GameWorld().Update();
    // fire few ticks of temporary world update, just for safety (physics init and stuff)
    static int TempWorldUpdateN = 0;
    if(TempWorldUpdateN < 20) {
      TempWorldUpdateN++;
      ServerDummyWorld.Update();
    }

    // start physics after game world update right now, as gameworld will move some objects around if necessary
    g_pPhysicsWorld->StartSimulation();
    g_pPhysicsWorld->EndSimulation();

#if ENABLE_AUTODESK_NAVIGATION
    const float t1 = r3dGetTime();
    gAutodeskNavMesh.Update();
    const float t2 = r3dGetTime() - t1;

    bool showSpd = (GetAsyncKeyState('Q') & 0x8000) && (GetAsyncKeyState('E') & 0x8000);
    bool showKys = false; //(GetAsyncKeyState('Q') & 0x8000) && (GetAsyncKeyState('R') & 0x8000);

    extern int _zstat_NumZombies;
    extern int _zstat_NavFails;
    extern int _zstat_Disabled;
    if(showKys) {
      gAutodeskNavMesh.perfBridge.Dump();
      r3dOutToLog("NavMeshUpdate %f sec, z:%d, bad:%d, f:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails);
    }
    if(showSpd) {
      r3dOutToLog("NavMeshUpdate %f sec, z:%d, bad:%d, f:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails);
    }
#ifndef _DEBUG    
    if((t2 > (1.0f / 60.0f))) {
      r3dOutToLog("!!!! NavMeshUpdate %f sec, z:%d, bad:%d, f:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails);
      //gAutodeskNavMesh.perfBridge.Dump();
      //r3dOutToLog("!!!! NavMeshUpdate %f sec, z:%d, bad:%d, f:%d, navPend:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails, _zstat_UnderProcess);
    }
#endif
#endif // ENABLE_AUTODESK_NAVIGATION

    GameWorld().EndFrame();
    
    if(gServerLogic.gameFinished_)
      break;
  }

  // set that we're finished
  gKeepAliveReporter.SetStarted(false);

  gMasterServerLogic.FinishGame();
  
  gServerLogic.DumpPacketStatistics();
  
  gCollectionsManager.Destroy();

  GameWorld_Destroy();
  ServerDummyWorld.Destroy();
  
  return;
}
示例#4
0
/*static unsigned int WINAPI NetworkThread( void * param )
{
	while(1)
	{
	::Sleep(1);
	gServerLogic.net_->Update();
	}
}*/
void PlayGameServer()
{
  r3d_assert(gServerLogic.ginfo_.IsValid());
  switch(gServerLogic.ginfo_.mapId) 
  {
    default: 
      r3dError("invalid map id\n");
      break;
    case GBGameInfo::MAPID_Editor_Particles: 
      r3dGameLevel::SetHomeDir("WorkInProgress\\Editor_Particles"); 
      break;
    case GBGameInfo::MAPID_ServerTest:
      r3dGameLevel::SetHomeDir("WorkInProgress\\ServerTest");
      break;
    case GBGameInfo::MAPID_WZ_Colorado:
      r3dGameLevel::SetHomeDir("WZ_Colorado");
      break;
	case GBGameInfo::MAPID_UB_Cliffside:
      r3dGameLevel::SetHomeDir("WZ_Cliffside");
      break;
    case GBGameInfo::MAPID_UB_CaliWood:
      r3dGameLevel::SetHomeDir("CaliWood");
      break;
    case GBGameInfo::MAPID_UB_Valley:
      r3dGameLevel::SetHomeDir("UB_Valley");
      break;
    case GBGameInfo::MAPID_UB_Area51:
      r3dGameLevel::SetHomeDir("UB_Deserto");
      break;
	case GBGameInfo::MAPID_UB_CryZ:
      r3dGameLevel::SetHomeDir("UB_CryZ");
      break;
  	case GBGameInfo::MAPID_UB_Terra:
      r3dGameLevel::SetHomeDir("UB_Terra");
      break;
  	case GBGameInfo::MAPID_UB_Mega:
      r3dGameLevel::SetHomeDir("UB_Mega");
      break;
  }

  r3dResetFrameTime();
  
  GameWorld_Create();

  u_srand(timeGetTime());
  GameWorld().Init(OBJECTMANAGER_MAXOBJECTS, OBJECTMANAGER_MAXSTATICOBJECTS);
  ServerDummyWorld.Init(OBJECTMANAGER_MAXOBJECTS, OBJECTMANAGER_MAXSTATICOBJECTS);
  
  g_pPhysicsWorld = new PhysXWorld;
  g_pPhysicsWorld->Init();

  r3dTerrain::SetNeedShaders( false );
  LoadLevel_Objects( 1.f );

  gCollectionsManager.Init( 0, 1 );

  r3dOutToLog( "NavMesh.Load...\n" );
  gAutodeskNavMesh.Init();

  r3dResetFrameTime();
  GameWorld().Update();
  ServerDummyWorld.Update();

  r3dGameLevel::SetStartGameTime(r3dGetTime());
  
  r3dOutToLog("server main loop started\n");
  r3dResetFrameTime();
  gServerLogic.OnGameStart();
  
  gKeepAliveReporter.SetStarted(true);
  
 // _beginthreadex ( NULL, 0, NetworkThread, NULL, 0, NULL );
  while(1) 
  {
    ::Sleep(20);		// limit to 100 FPS

	char text[64] ={0};
	sprintf(text,"WarZ Game Server [Running..] id:%d curPeer:%d players:%d/%d",gServerLogic.ginfo_.gameServerId,gServerLogic.curPeersConnected,gServerLogic.curPlayers_,gServerLogic.ginfo_.maxPlayers);
	SetConsoleTitle(text);

	gServerLogic.net_->Update();

    r3dEndFrame();
    r3dStartFrame();
    
    //if(GetAsyncKeyState(VK_F1)&0x8000) r3dError("r3dError test");
    //if(GetAsyncKeyState(VK_F2)&0x8000) r3d_assert(false && "r3d_Assert test");
    gKeepAliveReporter.Tick(gServerLogic.curPlayers_);

    gServerLogic.Tick();
	gServerLogic.UpdateNetId();
    gMasterServerLogic.Tick();
    
    if(gMasterServerLogic.IsMasterDisconnected()) {
      r3dOutToLog("Master Server disconnected, exiting\n");
      gKeepAliveReporter.SetStarted(false);
      return;
    }

    GameWorld().StartFrame();
    GameWorld().Update();
    // fire few ticks of temporary world update, just for safety (physics init and stuff)
    static int TempWorldUpdateN = 0;
    if(TempWorldUpdateN < 20) {
      TempWorldUpdateN++;
      ServerDummyWorld.Update();
    }

    // start physics after game world update right now, as gameworld will move some objects around if necessary
    g_pPhysicsWorld->StartSimulation();
    g_pPhysicsWorld->EndSimulation();

#if ENABLE_AUTODESK_NAVIGATION
    const float t1 = r3dGetTime();
    gAutodeskNavMesh.Update();
    const float t2 = r3dGetTime() - t1;

    bool showSpd = (GetAsyncKeyState('Q') & 0x8000) && (GetAsyncKeyState('E') & 0x8000);
    bool showKys = false; //(GetAsyncKeyState('Q') & 0x8000) && (GetAsyncKeyState('R') & 0x8000);

    extern int _zstat_NumZombies;
    extern int _zstat_NavFails;
    extern int _zstat_Disabled;
    if(showKys) {
      gAutodeskNavMesh.perfBridge.Dump();
      r3dOutToLog("NavMeshUpdate %f sec, z:%d, bad:%d, f:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails);
    }
    if(showSpd) {
      r3dOutToLog("NavMeshUpdate %f sec, z:%d, bad:%d, f:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails);
    }
#ifndef _DEBUG    
    if((t2 > (1.0f / 60.0f))) {
      r3dOutToLog("!!!! NavMeshUpdate %f sec, z:%d, bad:%d, f:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails);
      //gAutodeskNavMesh.perfBridge.Dump();
      //r3dOutToLog("!!!! NavMeshUpdate %f sec, z:%d, bad:%d, f:%d, navPend:%d\n", t2, _zstat_NumZombies, _zstat_Disabled, _zstat_NavFails, _zstat_UnderProcess);
    }
#endif
#endif // ENABLE_AUTODESK_NAVIGATION

    GameWorld().EndFrame();
    
    if(gServerLogic.gameFinished_)
      break;
  }

  // set that we're finished
  gKeepAliveReporter.SetStarted(false);

  gMasterServerLogic.FinishGame();
  
  gServerLogic.DumpPacketStatistics();
  
  gCollectionsManager.Destroy();

  GameWorld_Destroy();
  ServerDummyWorld.Destroy();
  
  return;
}