这篇教程C++ Cvar_FullSet函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中Cvar_FullSet函数的典型用法代码示例。如果您正苦于以下问题:C++ Cvar_FullSet函数的具体用法?C++ Cvar_FullSet怎么用?C++ Cvar_FullSet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了Cvar_FullSet函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: FS_SetGamedir/*================FS_SetGamedirSets the gamedir and path to a different directory.================*/void FS_SetGamedir (const char *dir){ searchpath_t *next; if (strstr(dir, "..") || strchr(dir, '/') || strchr(dir, '//') || strchr(dir, ':') ) { Com_Printf ("Gamedir '%s' should be a single filename, not a path/n", LOG_GENERAL, dir); return; } // // free up any current game dir info // while (fs_searchpaths != fs_base_searchpaths) { if (fs_searchpaths->pack) { fclose (fs_searchpaths->pack->h.handle); //Z_Free (fs_searchpaths->pack->files); rbdestroy (fs_searchpaths->pack->rb); Z_Free (fs_searchpaths->pack); } next = fs_searchpaths->next; Z_Free (fs_searchpaths); fs_searchpaths = next; } // // flush all data, so it will be forced to reload // FS_FlushCache();#ifndef DEDICATED_ONLY#ifndef NO_SERVER if (!dedicated->intvalue) {#endif //Cbuf_AddText ("vid_restart/nsnd_restart/n"); Cmd_ExecuteString ("vid_restart"); Cmd_ExecuteString ("snd_restart");#ifndef NO_SERVER }#endif#endif if (!strcmp(dir,BASEDIRNAME) || (*dir == 0)) { Com_sprintf (fs_gamedir, sizeof(fs_gamedir), "%s/%s", fs_basedir->string, BASEDIRNAME); Cvar_FullSet ("gamedir", "", CVAR_SERVERINFO|CVAR_NOSET); Cvar_FullSet ("game", "", CVAR_LATCH|CVAR_SERVERINFO); } else { Com_sprintf (fs_gamedir, sizeof(fs_gamedir), "%s/%s", fs_basedir->string, dir); Cvar_FullSet ("gamedir", dir, CVAR_SERVERINFO|CVAR_NOSET); FS_AddGameDirectory (va("%s/%s", fs_basedir->string, dir) ); }}
开发者ID:Slipyx,项目名称:r1q2,代码行数:67,
示例2: NET_Init/*====================NET_Init====================*/void NET_Init (void){ char *ip = (*ps.params.ip) ? ps.params.ip : "0.0.0.0"; char port[64] = {0}; snprintf(port, sizeof(port), "%d", ps.params.port ? ps.params.port : QWFWD_DEFAULT_PORT); if (*ps.params.ip) // if cmd line - force it, so we have priority over cfg net_ip = Cvar_FullSet("net_ip", ip, CVAR_NOSET); else net_ip = Cvar_Get("net_ip", ip, CVAR_NOSET); if (ps.params.port) // if cmd line - force it, so we have priority over cfg net_port = Cvar_FullSet("net_port", port, CVAR_NOSET); else net_port = Cvar_Get("net_port", port, CVAR_NOSET);#ifdef _WIN32 { WSADATA winsockdata; if (WSAStartup(MAKEWORD (2, 1), &winsockdata)) Sys_Error("WinSock initialization failed"); }#endif if ((net_socket = NET_UDP_OpenSocket(net_ip->string, net_port->integer, true)) == INVALID_SOCKET) Sys_Error("NET_Init: failed to initialize socket"); // init the message buffer SZ_InitEx(&net_message, net_message_buffer, sizeof(net_message_buffer), false); Sys_DPrintf("UDP Initialized/n");}
开发者ID:deurk,项目名称:qwfwd,代码行数:39,
示例3: map/*==================SV_MapBackground_fSet background map (enable physics in menu)==================*/void SV_MapBackground_f( void ){ string mapname; int flags; if( Cmd_Argc() != 2 ) { Msg( "Usage: map_background <mapname>/n" ); return; } if( sv.state == ss_active && !sv.background ) { Msg( "SV_NewMap: can't set background map while game is active/n" ); return; } // hold mapname to other place Q_strncpy( mapname, Cmd_Argv( 1 ), sizeof( mapname )); flags = SV_MapIsValid( mapname, GI->sp_entity, NULL ); if(!( flags & MAP_IS_EXIST )) { Msg( "SV_NewMap: map %s doesn't exist/n", mapname ); return; } // background maps allow without spawnpoints (just throw warning) if(!( flags & MAP_HAS_SPAWNPOINT )) MsgDev( D_WARN, "SV_NewMap: map %s doesn't have a valid spawnpoint/n", mapname ); Q_strncpy( host.finalmsg, "", MAX_STRING ); SV_Shutdown( true ); NET_Config ( false ); // close network sockets sv.background = true; sv.loadgame = false; // set right state // reset all multiplayer cvars Cvar_FullSet( "coop", "0", CVAR_LATCH ); Cvar_FullSet( "teamplay", "0", CVAR_LATCH ); Cvar_FullSet( "deathmatch", "0", CVAR_LATCH ); Cvar_FullSet( "maxplayers", "1", CVAR_LATCH );#ifndef _DEDICATED SCR_BeginLoadingPlaque( true );#endif SV_SpawnServer( mapname, NULL ); SV_LevelInit( mapname, NULL, NULL, false ); SV_ActivateServer ();}
开发者ID:Xash3DLinux,项目名称:xash3dlinux,代码行数:59,
示例4: FS_SetGamedir/*================FS_SetGamedirSets the gamedir and path to a different directory.================*/void FS_SetGamedir(char *dir){ searchpath_t *next; if (strstr(dir, "..") || strstr(dir, "/") || strstr(dir, "//") || strstr(dir, ":")) { Com_Printf("Gamedir should be a single filename, not a path/n"); return; } // // free up any current game dir info // while (fs_searchpaths != fs_base_searchpaths) { if (fs_searchpaths->pack) { fclose(fs_searchpaths->pack->handle); Z_Free(fs_searchpaths->pack->files); Z_Free(fs_searchpaths->pack); } next = fs_searchpaths->next; Z_Free(fs_searchpaths); fs_searchpaths = next; } // // flush all data, so it will be forced to reload // if (dedicated && !dedicated->value) Cbuf_AddText("vid_restart/nsnd_restart/n"); Com_sprintf(fs_gamedir, sizeof(fs_gamedir), "%s/%s", fs_basedir->string, dir); if (!strcmp(dir, BASEDIRNAME) || (*dir == 0)) { Cvar_FullSet("gamedir", "", CVAR_SERVERINFO | CVAR_NOSET); Cvar_FullSet("game", "", CVAR_LATCH | CVAR_SERVERINFO); } else { Cvar_FullSet("gamedir", dir, CVAR_SERVERINFO | CVAR_NOSET); if (fs_cddir->string[0]) FS_AddGameDirectory(va("%s/%s", fs_cddir->string, dir)); FS_AddGameDirectory(va("%s/%s", fs_basedir->string, dir)); }}
开发者ID:qbism,项目名称:qbq2,代码行数:55,
示例5: CL_StopPlayback/*==============CL_StopPlaybackCalled when a demo file runs out, or the user starts a game==============*/void CL_StopPlayback( void ){ if( !cls.demoplayback ) return; // release demofile FS_Close( cls.demofile ); cls.demoplayback = false; demo.framecount = 0; cls.demofile = NULL; cls.olddemonum = max( -1, cls.demonum - 1 ); Mem_Free( demo.directory.entries ); demo.directory.numentries = 0; demo.directory.entries = NULL; demo.entry = NULL; cls.demoname[0] = '/0'; // clear demoname too menu.globals->demoname[0] = '/0'; S_StopAllSounds(); S_StopBackgroundTrack(); if( !cls.changedemo ) { // let game known about demo state Cvar_FullSet( "cl_background", "0", CVAR_READ_ONLY ); cls.state = ca_disconnected; cl.background = 0; cls.demonum = -1; }}
开发者ID:nekonomicon,项目名称:xash3d,代码行数:38,
示例6: Cvar_Set_f/*============Cvar_Set_fAllows setting and defining of arbitrary cvars from console============*/void Cvar_Set_f (void){ int c; int flags; c = Cmd_Argc(); if (c != 3 && c != 4) { Com_Printf ("usage: set <variable> <value> [u / s]/n"); return; } if (c == 4) { if (!strcmp(Cmd_Argv(3), "u")) flags = CVAR_USERINFO; else if (!strcmp(Cmd_Argv(3), "s")) flags = CVAR_SERVERINFO; else { Com_Printf ("flags can only be 'u' or 's'/n"); return; } Cvar_FullSet (Cmd_Argv(1), Cmd_Argv(2), flags); } else Cvar_Set (Cmd_Argv(1), Cmd_Argv(2));}
开发者ID:weimingtom,项目名称:quakesdl2,代码行数:35,
示例7: Cvar_Set_f/** * @brief Allows setting and defining of arbitrary cvars from console */static void Cvar_Set_f (void){ const int c = Cmd_Argc(); if (c != 3 && c != 4) { Com_Printf("Usage: %s <variable> <value> [u / s]/n", Cmd_Argv(0)); return; } if (c == 4) { const char* arg = Cmd_Argv(3); int flags = 0; while (arg[0] != '/0') { switch (arg[0]) { case 'u': flags |= CVAR_USERINFO; break; case 's': flags |= CVAR_SERVERINFO; break; case 'a': flags |= CVAR_ARCHIVE; break; default: Com_Printf("invalid flags %c given/n", arg[0]); break; } arg++; } Cvar_FullSet(Cmd_Argv(1), Cmd_Argv(2), flags); } else { Cvar_Set(Cmd_Argv(1), "%s", Cmd_Argv(2)); }}
开发者ID:drone-pl,项目名称:ufoai,代码行数:37,
示例8: Cvar_Switch_f/** * @brief Allows switching boolean cvars between zero and not-zero from console */static void Cvar_Switch_f (void){ const int c = Cmd_Argc(); if (c != 2 && c != 3) { Com_Printf("Usage: %s <variable> [u / s / a]/n", Cmd_Argv(0)); return; } if (c == 3) { const char* arg = Cmd_Argv(2); int flags = 0; while (arg[0] != '/0') { switch (arg[0]) { case 'u': flags |= CVAR_USERINFO; break; case 's': flags |= CVAR_SERVERINFO; break; case 'a': flags |= CVAR_ARCHIVE; break; default: Com_Printf("invalid flags %c given/n", arg[0]); break; } arg++; } Cvar_FullSet(Cmd_Argv(1), va("%i", !Cvar_GetInteger(Cmd_Argv(1))), flags); } else { Com_Printf("val: %i/n", Cvar_GetInteger(Cmd_Argv(1))); Cvar_Set(Cmd_Argv(1), "%i", !Cvar_GetInteger(Cmd_Argv(1))); }}
开发者ID:drone-pl,项目名称:ufoai,代码行数:38,
示例9: Cvar_SetWithFlag_fstatic void Cvar_SetWithFlag_f( cvar_flag_t flag ){ if( Cmd_Argc() != 3 ) { Com_Printf( "usage: %s <variable> <value>/n", Cmd_Argv( 0 ) ); return; } Cvar_FullSet( Cmd_Argv( 1 ), Cmd_Argv( 2 ), flag, qfalse );}
开发者ID:codetwister,项目名称:qfusion,代码行数:9,
示例10: SV_AntiCheat_ParseReadystatic void SV_AntiCheat_ParseReady (void){ //SV_BroadcastPrintf (PRINT_HIGH, ANTICHEATMESSAGE " Anticheat server connection established. Please reconnect if you are using an anticheat-capable client./n"); anticheat_ready = true; retryBackOff = DEFAULT_BACKOFF; Com_Printf ("ANTICHEAT: Ready to serve anticheat clients./n", LOG_ANTICHEAT); Cvar_FullSet ("anticheat", sv_require_anticheat->string, CVAR_SERVERINFO | CVAR_NOSET);}
开发者ID:Slipyx,项目名称:r1q2,代码行数:9,
示例11: SV_AntiCheat_Disconnectvoid SV_AntiCheat_Disconnect (void){ if (!acSocket) return; closesocket (acSocket); acSocket = 0; retryTime = 0; anticheat_ready = false; ping_pending = false; Cvar_FullSet ("anticheat", "0", CVAR_NOSET);}
开发者ID:Slipyx,项目名称:r1q2,代码行数:13,
示例12: Cvar_Set_f/*============Cvar_Set_fAllows setting and defining of arbitrary cvars from console============*/static void Cvar_Set_f (void){ int c; int flags; c = Cmd_Argc(); //if (c != 3 && c != 4) if (c < 3) { Com_Printf ("usage: set <variable> <value> [u / s] (line: set %s)/n", LOG_GENERAL, Cmd_Args()); return; } //r1: fixed so that 'set variable some thing' results in variable -> "some thing" //so that set command can be used in aliases to set things with spaces without //requring quotes. if (!strcmp(Cmd_Argv(c-1), "u")) flags = CVAR_USERINFO; else if (!strcmp(Cmd_Argv(3), "s")) flags = CVAR_SERVERINFO; else flags = 0; if (flags) { /*char string[2048]; int i; string[0] = 0; for (i=2 ; i<c-1 ; i++) { strcat (string, Cmd_Argv(i)); if (i+1 != c-1) strcat (string, " "); }*/ //note, we don't do the above to get the full string since userinfo vars //have to use same format as 3.20 (eg set undef $undef u should set undef "u") //for q2admin and other userinfo checking mods. Cvar_FullSet (Cmd_Argv(1), Cmd_Argv(2), flags); } else { Cvar_Set (Cmd_Argv(1), Cmd_Args2(2)); }}
开发者ID:turol,项目名称:webquake2,代码行数:56,
示例13: VID_StartupGammavoid VID_StartupGamma( void ){ // Device supports gamma anyway, but cannot do anything with it. fs_offset_t gamma_size; byte *savedGamma; size_t gammaTypeSize = sizeof(glState.stateRamp); // init gamma ramp Q_memset( glState.stateRamp, 0, gammaTypeSize); // force to set cvar Cvar_FullSet( "gl_ignorehwgamma", "1", CVAR_GLCONFIG ); glConfig.deviceSupportsGamma = false; // even if supported! BuildGammaTable( vid_gamma->value, vid_texgamma->value ); MsgDev( D_NOTE, "VID_StartupGamma: software gamma initialized/n" );}
开发者ID:Reedych,项目名称:xash3d,代码行数:17,
示例14: Sv_LoadMedia/* * @brief Loads the map or demo file and populates the server-controlled "config * strings." We hand off the entity string to the game module, which will * load the rest. */static void Sv_LoadMedia(const char *server, sv_state_t state) { int32_t i, map_size; strcpy(sv.name, server); strcpy(sv.config_strings[CS_NAME], server); if (state == SV_ACTIVE_DEMO) { // loading a demo sv.models[0] = Cm_LoadBsp(NULL, &map_size); sv.demo_file = Fs_OpenRead(va("demos/%s.dem", sv.name)); svs.spawn_count = 0; Com_Print(" Loaded demo %s./n", sv.name); } else { // loading a map g_snprintf(sv.config_strings[CS_MODELS], MAX_QPATH, "maps/%s.bsp", sv.name); sv.models[0] = Cm_LoadBsp(sv.config_strings[CS_MODELS], &map_size); const char *dir = Fs_RealDir(sv.config_strings[CS_MODELS]); if (g_str_has_suffix(dir, ".zip")) { g_strlcpy(sv.config_strings[CS_ZIP], Basename(dir), MAX_QPATH); } for (i = 1; i < Cm_NumModels(); i++) { char *s = sv.config_strings[CS_MODELS + i]; g_snprintf(s, MAX_QPATH, "*%d", i); sv.models[i] = Cm_Model(s); } sv.state = SV_LOADING; Sv_InitWorld(); svs.game->SpawnEntities(sv.name, Cm_EntityString()); Sv_CreateBaseline(); Com_Print(" Loaded map %s, %d entities./n", sv.name, svs.game->num_edicts); } g_snprintf(sv.config_strings[CS_BSP_SIZE], MAX_QPATH, "%i", map_size); Cvar_FullSet("map_name", sv.name, CVAR_SERVER_INFO | CVAR_NO_SET);}
开发者ID:devilx4,项目名称:quake2world,代码行数:50,
示例15: CL_ClearState/*=====================CL_ClearState=====================*/void CL_ClearState( void ){ S_StopAllSounds (); CL_ClearEffects (); CL_FreeEdicts (); CL_ClearPhysEnts (); // wipe the entire cl structure Q_memset( &cl, 0, sizeof( cl )); BF_Clear( &cls.netchan.message ); Q_memset( &clgame.fade, 0, sizeof( clgame.fade )); Q_memset( &clgame.shake, 0, sizeof( clgame.shake )); Cvar_FullSet( "cl_background", "0", CVAR_READ_ONLY ); cl.refdef.movevars = &clgame.movevars; cl.maxclients = 1; // allow to drawing player in menu Cvar_SetFloat( "scr_download", 0.0f ); Cvar_SetFloat( "scr_loading", 0.0f ); // restore real developer level host.developer = host.old_developer;}
开发者ID:ShaunNoWay,项目名称:xash3d,代码行数:29,
示例16: Host_SetServerState/*==================Host_SetServerState==================*/void Host_SetServerState( int state ){ Cvar_FullSet( "host_serverstate", va( "%i", state ), CVAR_INIT );}
开发者ID:ptitSeb,项目名称:xash3d,代码行数:9,
示例17: Host_InitCommon//.........这里部分代码省略......... host.change_game = bChangeGame; host.state = HOST_INIT; // initialization started host.developer = host.old_developer = 0; host.textmode = false; host.mempool = Mem_AllocPool( "Zone Engine" ); if( Sys_CheckParm( "-console" )) host.developer = 1; if( Sys_CheckParm( "-dev" )) { if( Sys_GetParmFromCmdLine( "-dev", dev_level )) { if( Q_isdigit( dev_level )) host.developer = abs( Q_atoi( dev_level )); else host.developer++; // -dev == 1, -dev -console == 2 } else host.developer++; // -dev == 1, -dev -console == 2 }#ifdef XASH_DEDICATED host.type = HOST_DEDICATED; // predict state#else if( Sys_CheckParm("-dedicated") || progname[0] == '#' ) host.type = HOST_DEDICATED; else host.type = HOST_NORMAL;#endif host.con_showalways = true; host.mouse_visible = false;#ifdef XASH_SDL if( SDL_Init( SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_EVENTS )) { SDL_Init( SDL_INIT_TIMER ); host.type = HOST_DEDICATED; }#endif if ( SetCurrentDirectory( host.rootdir ) != 0) MsgDev( D_INFO, "%s is working directory now/n", host.rootdir ); else Sys_Error( "Changing working directory to %s failed./n", host.rootdir ); // set default gamedir if( progname[0] == '#' ) progname++; Q_strncpy( SI.ModuleName, progname, sizeof( SI.ModuleName )); if( host.type == HOST_DEDICATED ) { Sys_MergeCommandLine( ); if( host.developer < 3 ) host.developer = 3; // otherwise we see empty console } else { // don't show console as default if( host.developer < D_WARN ) host.con_showalways = false; } host.old_developer = host.developer; if( !Sys_CheckParm( "-nowcon" ) ) Con_CreateConsole(); // first text message into console or log MsgDev( D_NOTE, "Sys_LoadLibrary: Loading Engine Library - ok/n" ); // startup cmds and cvars subsystem Cmd_Init(); Cvar_Init(); // share developer level across all dlls Q_snprintf( dev_level, sizeof( dev_level ), "%i", host.developer ); Cvar_Get( "developer", dev_level, CVAR_INIT, "current developer level" ); Cmd_AddCommand( "exec", Host_Exec_f, "execute a script file" ); Cmd_AddCommand( "memlist", Host_MemStats_f, "prints memory pool information" ); Cmd_AddCommand( "userconfigd", Host_Userconfigd_f, "execute all scripts from userconfig.d" ); cmd_scripting = Cvar_Get( "cmd_scripting", "0", CVAR_ARCHIVE, "enable simple condition checking and variable operations" ); FS_Init(); Image_Init(); Sound_Init(); FS_LoadGameInfo( NULL ); Q_strncpy( host.gamefolder, GI->gamefolder, sizeof( host.gamefolder ));#if !(defined(PANDORA) || defined(RPI)) if( GI->secure ) { // clear all developer levels when game is protected Cvar_FullSet( "developer", "0", CVAR_INIT ); host.developer = host.old_developer = 0; host.con_showalways = false; }#endif HPAK_Init(); IN_Init(); Key_Init();}
开发者ID:ptitSeb,项目名称:xash3d,代码行数:101,
示例18: CL_ParseServerData/*==================CL_ParseServerData==================*/void CL_ParseServerData( sizebuf_t *msg ){ string gamefolder; qboolean background; int i; MsgDev( D_NOTE, "Serverdata packet received./n" ); cls.demowaiting = false; // server is changed clgame.load_sequence++; // now all hud sprites are invalid // wipe the client_t struct if( !cls.changelevel && !cls.changedemo ) CL_ClearState (); cls.state = ca_connected; // parse protocol version number i = BF_ReadLong( msg ); cls.serverProtocol = i; if( i != PROTOCOL_VERSION ) Host_Error( "Server uses invalid protocol (%i should be %i)/n", i, PROTOCOL_VERSION ); cl.servercount = BF_ReadLong( msg ); cl.checksum = BF_ReadLong( msg ); cl.playernum = BF_ReadByte( msg ); cl.maxclients = BF_ReadByte( msg ); clgame.maxEntities = BF_ReadWord( msg ); clgame.maxEntities = bound( 600, clgame.maxEntities, 4096 ); Q_strncpy( clgame.mapname, BF_ReadString( msg ), MAX_STRING ); Q_strncpy( clgame.maptitle, BF_ReadString( msg ), MAX_STRING ); background = BF_ReadOneBit( msg ); Q_strncpy( gamefolder, BF_ReadString( msg ), MAX_STRING ); host.features = (uint)BF_ReadLong( msg ); if( cl.maxclients > 1 && host.developer < 1 ) host.developer++; // set the background state if( cls.demoplayback && ( cls.demonum != -1 )) { // re-init mouse host.mouse_visible = false; cl.background = true; } else cl.background = background; if( cl.background ) // tell the game parts about background state Cvar_FullSet( "cl_background", "1", CVAR_READ_ONLY ); else Cvar_FullSet( "cl_background", "0", CVAR_READ_ONLY ); if( !cls.changelevel ) { // continue playing if we are changing level S_StopBackgroundTrack (); }#if 0 // NOTE: this is not tested as well. Use with precaution CL_ChangeGame( gamefolder, false );#endif if( !cls.changedemo ) UI_SetActiveMenu( cl.background ); cl.refdef.viewentity = cl.playernum + 1; // always keep viewent an actual menu.globals->maxClients = cl.maxclients; Q_strncpy( menu.globals->maptitle, clgame.maptitle, sizeof( menu.globals->maptitle )); if( cl.maxclients > 1 && r_decals->value > mp_decals->value ) Cvar_SetFloat( "r_decals", mp_decals->value ); if( !cls.changelevel && !cls.changedemo ) CL_InitEdicts (); // re-arrange edicts // get splash name if( cls.demoplayback && ( cls.demonum != -1 )) Cvar_Set( "cl_levelshot_name", va( "levelshots/%s_%s", cls.demoname, glState.wideScreen ? "16x9" : "4x3" )); else Cvar_Set( "cl_levelshot_name", va( "levelshots/%s_%s", clgame.mapname, glState.wideScreen ? "16x9" : "4x3" )); Cvar_SetFloat( "scr_loading", 0.0f ); // reset progress bar if(( cl_allow_levelshots->integer && !cls.changelevel ) || cl.background ) { if( !FS_FileExists( va( "%s.bmp", cl_levelshot_name->string ), true )) Cvar_Set( "cl_levelshot_name", "*black" ); // render a black screen cls.scrshot_request = scrshot_plaque; // request levelshot even if exist (check filetime) } if( scr_dark->integer ) { screenfade_t *sf = &clgame.fade; client_textmessage_t *title; title = CL_TextMessageGet( "GAMETITLE" ); if( title )//.........这里部分代码省略.........
开发者ID:Reedych,项目名称:xash3d,代码行数:101,
示例19: Host_Main//.........这里部分代码省略......... } SV_Init(); CL_Init(); HTTP_Init(); // post initializations switch( host.type ) { case HOST_NORMAL: Con_ShowConsole( false ); // hide console // execute startup config and cmdline Cbuf_AddText( va( "exec %s.rc/n", SI.ModuleName )); // intentional fallthrough case HOST_DEDICATED: // if stuffcmds wasn't run, then init.rc is probably missing, use default if( !host.stuffcmdsrun ) Cbuf_AddText( "stuffcmds/n" ); Cbuf_Execute(); break; case HOST_UNKNOWN: break; } if( host.type == HOST_DEDICATED ) { char *defaultmap; Con_InitConsoleCommands (); Cmd_AddCommand( "quit", Sys_Quit, "quit the game" ); Cmd_AddCommand( "exit", Sys_Quit, "quit the game" ); SV_InitGameProgs(); Cbuf_AddText( "exec config.cfg/n" ); // dedicated servers are using settings from server.cfg file Cbuf_AddText( va( "exec %s/n", Cvar_VariableString( "servercfgfile" ))); Cbuf_Execute(); defaultmap = Cvar_VariableString( "defaultmap" ); if( !defaultmap[0] ) Msg( "Please add /"defaultmap/" cvar with default map name to your server.cfg!/n" ); else Cbuf_AddText( va( "map %s/n", defaultmap )); Cvar_FullSet( "xashds_hacks", "0", CVAR_READ_ONLY ); NET_Config( true ); } else { Cmd_AddCommand( "minimize", Host_Minimize_f, "minimize main window to taskbar" ); Cbuf_AddText( "exec config.cfg/n" ); // listenserver/multiplayer config. // need load it to update menu options. Cbuf_AddText( "exec game.cfg/n" ); } host.errorframe = 0; Cbuf_Execute(); host.change_game = false; // done Cmd_RemoveCommand( "setr" ); // remove potential backdoor for changing renderer settings Cmd_RemoveCommand( "setgl" ); // we need to execute it again here if( host.type != HOST_DEDICATED ) Cmd_ExecuteString( "exec config.cfg/n", src_command ); // exec all files from userconfig.d Host_Userconfigd_f(); oldtime = Sys_DoubleTime(); IN_TouchInitConfig(); SCR_CheckStartupVids(); // must be last#ifdef XASH_SDL SDL_StopTextInput(); // disable text input event. Enable this in chat/console?#endif if( host.state == HOST_INIT ) host.state = HOST_FRAME; // initialization is finished // main window message loop while( !host.crashed && !host.shutdown_issued ) {#ifdef XASH_SDL while( !host.crashed && !host.shutdown_issued && SDL_PollEvent( &event ) ) SDLash_EventFilter( &event );#endif newtime = Sys_DoubleTime (); Host_Frame( newtime - oldtime ); oldtime = newtime; } // never reached return 0;}
开发者ID:ptitSeb,项目名称:xash3d,代码行数:101,
示例20: SV_SpawnServer/* * Change the server to a new map, taking all connected * clients along with it. */void SV_SpawnServer(char *server, char *spawnpoint, server_state_t serverstate, qboolean attractloop, qboolean loadgame){ int i; unsigned checksum; if (attractloop) { Cvar_Set("paused", "0"); } Com_Printf("Server init/n"); Com_DPrintf("SpawnServer: %s/n", server); svs.spawncount++; /* any partially connected client will be restarted */ sv.state = ss_dead; Com_SetServerState(sv.state); /* wipe the entire per-level structure */ memset(&sv, 0, sizeof(sv)); svs.realtime = 0; sv.loadgame = loadgame; sv.attractloop = attractloop; /* save name for levels that don't set message */ strcpy(sv.configstrings[CS_NAME], server); if (Cvar_VariableValue("deathmatch")) { sprintf(sv.configstrings[CS_AIRACCEL], "%g", sv_airaccelerate->value); pm_airaccelerate = sv_airaccelerate->value; } else { strcpy(sv.configstrings[CS_AIRACCEL], "0"); pm_airaccelerate = 0; } SZ_Init(&sv.multicast, sv.multicast_buf, sizeof(sv.multicast_buf)); strcpy(sv.name, server); /* leave slots at start for clients only */ for (i = 0; i < maxclients->value; i++) { /* needs to reconnect */ if (svs.clients[i].state > cs_connected) { svs.clients[i].state = cs_connected; } svs.clients[i].lastframe = -1; } sv.time = 1000; strcpy(sv.name, server); strcpy(sv.configstrings[CS_NAME], server); if (serverstate != ss_game) { sv.models[1] = CM_LoadMap("", false, &checksum); /* no real map */ } else { Com_sprintf(sv.configstrings[CS_MODELS + 1], sizeof(sv.configstrings[CS_MODELS + 1]), "maps/%s.bsp", server); sv.models[1] = CM_LoadMap(sv.configstrings[CS_MODELS + 1], false, &checksum); } Com_sprintf(sv.configstrings[CS_MAPCHECKSUM], sizeof(sv.configstrings[CS_MAPCHECKSUM]), "%i", checksum); /* clear physics interaction links */ SV_ClearWorld(); for (i = 1; i < CM_NumInlineModels(); i++) { Com_sprintf(sv.configstrings[CS_MODELS + 1 + i], sizeof(sv.configstrings[CS_MODELS + 1 + i]), "*%i", i); sv.models[i + 1] = CM_InlineModel(sv.configstrings[CS_MODELS + 1 + i]); } /* spawn the rest of the entities on the map */ sv.state = ss_loading; Com_SetServerState(sv.state); /* load and spawn all other entities */ SpawnEntities(sv.name, CM_EntityString(), spawnpoint); /* run two frames to allow everything to settle */ G_RunFrame(); G_RunFrame(); /* verify game didn't clobber important stuff */ if ((int) checksum != (int) strtol(sv.configstrings[CS_MAPCHECKSUM], (char **) NULL, 10)) { Com_Error(ERR_DROP, "Game DLL corrupted server configstrings"); } /* all precaches are complete */ sv.state = serverstate; Com_SetServerState(sv.state); /* create a baseline for more efficient communications */ SV_CreateBaseline(); /* set serverinfo variable */ Cvar_FullSet("mapname", sv.name, CVAR_SERVERINFO | CVAR_NOSET);}
开发者ID:greck2908,项目名称:qengine,代码行数:99,
示例21: SV_Map/** * @brief Change the server to a new map, taking all connected clients along with it. * @note the full syntax is: @code map [day|night] [+]<map> [<assembly>] @endcode * @sa SV_AssembleMap * @sa CM_LoadMap * @sa Com_SetServerState */void SV_Map (qboolean day, const char *levelstring, const char *assembly){ int i; unsigned checksum = 0; char * map = SV_GetConfigString(CS_TILES); char * pos = SV_GetConfigString(CS_POSITIONS); mapInfo_t *randomMap = NULL; client_t *cl; /* any partially connected client will be restarted */ Com_SetServerState(ss_restart); /* the game is just starting */ SV_InitGame(); if (!svs.initialized) { Com_Printf("Could not spawn the server/n"); return; } assert(levelstring[0] != '/0'); Com_DPrintf(DEBUG_SERVER, "SpawnServer: %s/n", levelstring); /* save name for levels that don't set message */ SV_SetConfigString(CS_NAME, levelstring); SV_SetConfigString(CS_LIGHTMAP, day); Q_strncpyz(sv->name, levelstring, sizeof(sv->name)); /* set serverinfo variable */ sv_mapname = Cvar_FullSet("sv_mapname", sv->name, CVAR_SERVERINFO | CVAR_NOSET); /* notify the client in case of a listening server */ SCR_BeginLoadingPlaque(); if (assembly) Q_strncpyz(sv->assembly, assembly, sizeof(sv->assembly)); else sv->assembly[0] = '/0'; /* leave slots at start for clients only */ cl = NULL; while ((cl = SV_GetNextClient(cl)) != NULL) { /* needs to reconnect */ if (cl->state >= cs_spawning) SV_SetClientState(cl, cs_connected); } /* assemble and load the map */ if (levelstring[0] == '+') { randomMap = SV_AssembleMap(levelstring + 1, assembly, map, pos, 0); if (!randomMap) { Com_Printf("Could not load assembly for map '%s'/n", levelstring); return; } } else { SV_SetConfigString(CS_TILES, levelstring); SV_SetConfigString(CS_POSITIONS, assembly ? assembly : ""); } CM_LoadMap(map, day, pos, &sv->mapData, &sv->mapTiles); Com_Printf("checksum for the map '%s': %u/n", levelstring, sv->mapData.mapChecksum); SV_SetConfigString(CS_MAPCHECKSUM, sv->mapData.mapChecksum); checksum = Com_GetScriptChecksum(); Com_Printf("ufo script checksum %u/n", checksum); SV_SetConfigString(CS_UFOCHECKSUM, checksum); SV_SetConfigString(CS_OBJECTAMOUNT, csi.numODs); SV_SetConfigString(CS_VERSION, UFO_VERSION); SV_SetConfigString(CS_MAPTITLE, SV_GetMapTitle(randomMap, levelstring)); if (Q_strstart(SV_GetConfigString(CS_MAPTITLE), "b/")) { /* For base attack, CS_MAPTITLE contains too many chars */ SV_SetConfigString(CS_MAPTITLE, "Base attack"); SV_SetConfigString(CS_NAME, ".baseattack"); } /* clear random-map assembly data */ Mem_Free(randomMap); randomMap = NULL; /* clear physics interaction links */ SV_ClearWorld(); /* fix this! */ for (i = 1; i <= sv->mapData.numInline; i++) sv->models[i] = CM_InlineModel(&sv->mapTiles, va("*%i", i)); /* precache and static commands can be issued during map initialization */ Com_SetServerState(ss_loading);//.........这里部分代码省略.........
开发者ID:kevlund,项目名称:ufoai,代码行数:101,
示例22: SV_SpawnServer//.........这里部分代码省略......... fclose (sv.demofile); svs.spawncount++; // any partially connected client will be // restarted sv.state = ss_dead; Com_SetServerState (sv.state); // wipe the entire per-level structure memset (&sv, 0, sizeof(sv)); svs.realtime = 0; sv.loadgame = loadgame; sv.attractloop = attractloop; // save name for levels that don't set message strcpy (sv.configstrings[CS_NAME], server); if (Cvar_VariableValue ("deathmatch")) { sprintf(sv.configstrings[CS_AIRACCEL], "%g", sv_airaccelerate->value); pm_airaccelerate = sv_airaccelerate->value; } else { strcpy(sv.configstrings[CS_AIRACCEL], "0"); pm_airaccelerate = 0; } SZ_Init (&sv.multicast, sv.multicast_buf, sizeof(sv.multicast_buf)); strcpy (sv.name, server); // leave slots at start for clients only for (i=0 ; i<maxclients->value ; i++) { // needs to reconnect if (svs.clients[i].state > cs_connected) svs.clients[i].state = cs_connected; svs.clients[i].lastframe = -1; } sv.time = 1000; strcpy (sv.name, server); strcpy (sv.configstrings[CS_NAME], server); if (serverstate != ss_game) { sv.models[1] = CM_LoadMap ("", false, &checksum); // no real map } else { Com_sprintf (sv.configstrings[CS_MODELS+1],sizeof(sv.configstrings[CS_MODELS+1]), "maps/%s.bsp", server); sv.models[1] = CM_LoadMap (sv.configstrings[CS_MODELS+1], false, &checksum); } Com_sprintf (sv.configstrings[CS_MAPCHECKSUM],sizeof(sv.configstrings[CS_MAPCHECKSUM]), "%i", checksum); // // clear physics interaction links // SV_ClearWorld (); for (i=1 ; i< CM_NumInlineModels() ; i++) { Com_sprintf (sv.configstrings[CS_MODELS+1+i], sizeof(sv.configstrings[CS_MODELS+1+i]), "*%i", i); sv.models[i+1] = CM_InlineModel (sv.configstrings[CS_MODELS+1+i]); } // // spawn the rest of the entities on the map // // precache and static commands can be issued during // map initialization sv.state = ss_loading; Com_SetServerState (sv.state); // load and spawn all other entities ge->SpawnEntities ( sv.name, CM_EntityString(), spawnpoint ); // run two frames to allow everything to settle ge->RunFrame (); ge->RunFrame (); // all precaches are complete sv.state = serverstate; Com_SetServerState (sv.state); // create a baseline for more efficient communications SV_CreateBaseline (); // check for a savegame SV_CheckForSavegame (); // set serverinfo variable Cvar_FullSet ("mapname", sv.name, CVAR_SERVERINFO | CVAR_NOSET); Com_Printf ("-------------------------------------/n");}
开发者ID:1vanK,项目名称:Urho3DQuake2,代码行数:101,
示例23: SV_InitGame/*==============SV_InitGameA brand new game has been started==============*/void SV_InitGame (void){ int i; edict_t *ent; char idmaster[32]; if (svs.initialized) { // cause any connected clients to reconnect SV_Shutdown ("Server restarted/n", true); } else { // make sure the client is down CL_Drop (); SCR_BeginLoadingPlaque (); } // get any latched variable changes (maxclients, etc) Cvar_GetLatchedVars (); svs.initialized = true; if (Cvar_VariableValue ("coop") && Cvar_VariableValue ("deathmatch")) { Com_Printf("Deathmatch and Coop both set, disabling Coop/n"); Cvar_FullSet ("coop", "0", CVAR_SERVERINFO | CVAR_LATCH); } // dedicated servers are can't be single player and are usually DM // so unless they explicity set coop, force it to deathmatch if (dedicated->value) { if (!Cvar_VariableValue ("coop")) Cvar_FullSet ("deathmatch", "1", CVAR_SERVERINFO | CVAR_LATCH); } // init clients if (Cvar_VariableValue ("deathmatch")) { if (maxclients->value <= 1) Cvar_FullSet ("maxclients", "8", CVAR_SERVERINFO | CVAR_LATCH); else if (maxclients->value > MAX_CLIENTS) Cvar_FullSet ("maxclients", va("%i", MAX_CLIENTS), CVAR_SERVERINFO | CVAR_LATCH); } else if (Cvar_VariableValue ("coop")) { if (maxclients->value <= 1 || maxclients->value > 4) Cvar_FullSet ("maxclients", "4", CVAR_SERVERINFO | CVAR_LATCH);#ifdef COPYPROTECT if (!sv.attractloop && !dedicated->value) Sys_CopyProtect ();#endif } else // non-deathmatch, non-coop is one player { Cvar_FullSet ("maxclients", "1", CVAR_SERVERINFO | CVAR_LATCH);#ifdef COPYPROTECT if (!sv.attractloop) Sys_CopyProtect ();#endif } svs.spawncount = rand(); svs.clients = Z_Malloc (sizeof(client_t)*maxclients->value); svs.num_client_entities = maxclients->value*UPDATE_BACKUP*64; svs.client_entities = Z_Malloc (sizeof(entity_state_t)*svs.num_client_entities); // init network stuff NET_Config ( (maxclients->value > 1) ); // heartbeats will always be sent to the id master svs.last_heartbeat = -99999; // send immediately Com_sprintf(idmaster, sizeof(idmaster), "192.246.40.37:%i", PORT_MASTER); NET_StringToAdr (idmaster, &master_adr[0]); // init game SV_InitGameProgs (); for (i=0 ; i<maxclients->value ; i++) { ent = EDICT_NUM(i+1); ent->s.number = i+1; svs.clients[i].edict = ent; memset (&svs.clients[i].lastcmd, 0, sizeof(svs.clients[i].lastcmd)); }}
开发者ID:1vanK,项目名称:Urho3DQuake2,代码行数:93,
示例24: GL_InitExtensions//.........这里部分代码省略......... // we don't care if it's an extension or not, they are identical functions, so keep it simple in the rendering code if( pglDrawRangeElementsEXT == NULL ) pglDrawRangeElementsEXT = pglDrawRangeElements; GL_CheckExtension( "GL_ARB_texture_env_add", NULL, "gl_texture_env_add", GL_TEXTURE_ENV_ADD_EXT ); // vp and fp shaders GL_CheckExtension( "GL_ARB_shader_objects", shaderobjectsfuncs, "gl_shaderobjects", GL_SHADER_OBJECTS_EXT ); GL_CheckExtension( "GL_ARB_shading_language_100", NULL, "gl_glslprogram", GL_SHADER_GLSL100_EXT ); GL_CheckExtension( "GL_ARB_vertex_shader", vertexshaderfuncs, "gl_vertexshader", GL_VERTEX_SHADER_EXT ); GL_CheckExtension( "GL_ARB_fragment_shader", NULL, "gl_pixelshader", GL_FRAGMENT_SHADER_EXT ); GL_CheckExtension( "GL_ARB_depth_texture", NULL, "gl_depthtexture", GL_DEPTH_TEXTURE ); GL_CheckExtension( "GL_ARB_shadow", NULL, "gl_arb_shadow", GL_SHADOW_EXT ); GL_CheckExtension( "GL_ARB_texture_float", NULL, "gl_arb_texture_float", GL_ARB_TEXTURE_FLOAT_EXT ); GL_CheckExtension( "GL_ARB_depth_buffer_float", NULL, "gl_arb_depth_float", GL_ARB_DEPTH_FLOAT_EXT ); if( glw_state.extended ) GL_CheckExtension( "GL_ARB_debug_output", debugoutputfuncs, "gl_debug_output", GL_DEBUG_OUTPUT ); // occlusion queries GL_CheckExtension( "GL_ARB_occlusion_query", occlusionfunc, "gl_occlusion_queries", GL_OCCLUSION_QUERIES_EXT ); if( GL_Support( GL_SHADER_GLSL100_EXT )) { pglGetIntegerv( GL_MAX_TEXTURE_COORDS_ARB, &glConfig.max_texture_coords ); pglGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &glConfig.max_teximage_units ); } else { // just get from multitexturing glConfig.max_texture_coords = glConfig.max_teximage_units = glConfig.max_texture_units; } // rectangle textures support if( Q_strstr( glConfig.extensions_string, "GL_NV_texture_rectangle" )) { glConfig.texRectangle = GL_TEXTURE_RECTANGLE_NV; pglGetIntegerv( GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, &glConfig.max_2d_rectangle_size ); } else if( Q_strstr( glConfig.extensions_string, "GL_EXT_texture_rectangle" )) { glConfig.texRectangle = GL_TEXTURE_RECTANGLE_EXT; pglGetIntegerv( GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT, &glConfig.max_2d_rectangle_size ); } else glConfig.texRectangle = glConfig.max_2d_rectangle_size = 0; // no rectangle glConfig.max_2d_texture_size = 0; pglGetIntegerv( GL_MAX_TEXTURE_SIZE, &glConfig.max_2d_texture_size ); if( glConfig.max_2d_texture_size <= 0 ) glConfig.max_2d_texture_size = 256; Cvar_Get( "gl_max_texture_size", "0", CVAR_INIT, "opengl texture max dims" ); Cvar_Set( "gl_max_texture_size", va( "%i", glConfig.max_2d_texture_size )); pglGetIntegerv( GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &glConfig.max_vertex_uniforms ); pglGetIntegerv( GL_MAX_VERTEX_ATTRIBS_ARB, &glConfig.max_vertex_attribs ); // MCD has buffering issues#ifdef _WIN32 if(Q_strstr( glConfig.renderer_string, "gdi" )) Cvar_SetFloat( "gl_finish", 1 );#endif#ifdef XASH_GLES Cvar_FullSet( "gl_allow_mirrors", "0", CVAR_READ_ONLY); // No support for GLES#endif Cvar_Set( "gl_anisotropy", va( "%f", bound( 0, gl_texture_anisotropy->value, glConfig.max_texture_anisotropy ))); // software mipmap generator does wrong result with NPOT textures ... if( !GL_Support( GL_SGIS_MIPMAPS_EXT )) GL_SetExtension( GL_ARB_TEXTURE_NPOT_EXT, false ); if( GL_Support( GL_TEXTURE_COMPRESSION_EXT )) Image_AddCmdFlags( IL_DDS_HARDWARE ); // enable gldebug if allowed if( GL_Support( GL_DEBUG_OUTPUT )) { if( host.developer >= D_ERROR ) { MsgDev( D_NOTE, "Installing GL_DebugOutput.../n"); pglDebugMessageCallbackARB( GL_DebugOutput, NULL ); } // force everything to happen in the main thread instead of in a separate driver thread if( host.developer >= D_WARN ) pglEnable( GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB ); // enable all the low priority messages if( host.developer >= D_NOTE ) pglDebugMessageControlARB( GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_LOW_ARB, 0, NULL, true ); } glw_state.initialized = true; tr.framecount = tr.visframecount = 1;}
开发者ID:THE-Swank,项目名称:xash3d,代码行数:101,
示例25: TV_Init/** TV_Init* * Only called at plat.exe startup, not for each game*/void TV_Init( void ){ Com_Printf( "Initializing " APPLICATION " TV server/n" ); tv_mempool = Mem_AllocPool( NULL, "TV" ); TV_AddCommands(); Cvar_Get( "protocol", va( "%i", APP_PROTOCOL_VERSION ), CVAR_SERVERINFO | CVAR_NOSET ); Cvar_Get( "gamename", Cvar_String( "gamename" ), CVAR_SERVERINFO | CVAR_NOSET ); tv_password = Cvar_Get( "tv_password", "", 0 ); tv_ip = Cvar_Get( "tv_ip", "", CVAR_ARCHIVE | CVAR_NOSET ); tv_port = Cvar_Get( "tv_port", va( "%i", PORT_TV_SERVER ), CVAR_ARCHIVE | CVAR_NOSET ); tv_ip6 = Cvar_Get( "tv_ip6", "::", CVAR_ARCHIVE | CVAR_NOSET ); tv_port6 = Cvar_Get( "tv_port6", va( "%i", PORT_TV_SERVER ), CVAR_ARCHIVE | CVAR_NOSET );#ifdef TCP_ALLOW_TVCONNECT tv_udp = Cvar_Get( "tv_udp", "1", CVAR_SERVERINFO | CVAR_NOSET ); tv_tcp = Cvar_Get( "tv_tcp", "1", CVAR_SERVERINFO | CVAR_NOSET );#else tv_udp = Cvar_Get( "tv_udp", "1", CVAR_NOSET );#endif#ifndef TCP_ALLOW_TVCONNECT Cvar_FullSet( "tv_tcp", "0", CVAR_READONLY, true );#endif tv_reconnectlimit = Cvar_Get( "tv_reconnectlimit", "3", CVAR_ARCHIVE ); tv_timeout = Cvar_Get( "tv_timeout", "125", 0 ); tv_zombietime = Cvar_Get( "tv_zombietime", "2", 0 ); tv_name = Cvar_Get( "tv_name", APPLICATION "[TV]", CVAR_SERVERINFO | CVAR_ARCHIVE ); tv_compresspackets = Cvar_Get( "tv_compresspackets", "1", 0 ); tv_maxclients = Cvar_Get( "tv_maxclients", "32", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_NOSET ); tv_maxmvclients = Cvar_Get( "tv_maxmvclients", "4", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_NOSET ); tv_public = Cvar_Get( "tv_public", "1", CVAR_ARCHIVE | CVAR_SERVERINFO ); tv_rcon_password = Cvar_Get( "tv_rcon_password", "", 0 ); tv_autorecord = Cvar_Get( "tv_autorecord", "", CVAR_ARCHIVE ); tv_lobbymusic = Cvar_Get( "tv_lobbymusic", "", CVAR_ARCHIVE ); tv_masterservers = Cvar_Get( "tv_masterservers", DEFAULT_MASTER_SERVERS_IPS, CVAR_LATCH ); tv_masterservers_steam = Cvar_Get( "tv_masterservers_steam", DEFAULT_MASTER_SERVERS_STEAM_IPS, CVAR_LATCH ); // flood control tv_floodprotection_messages = Cvar_Get( "tv_floodprotection_messages", "10", 0 ); tv_floodprotection_messages->modified = true; tv_floodprotection_seconds = Cvar_Get( "tv_floodprotection_seconds", "4", 0 ); tv_floodprotection_seconds->modified = true; tv_floodprotection_penalty = Cvar_Get( "tv_floodprotection_delay", "20", 0 ); tv_floodprotection_penalty->modified = true; if( tv_maxclients->integer < 0 ) Cvar_ForceSet( "tv_maxclients", "0" ); if( tv_maxclients->integer ) { tvs.clients = ( client_t * )Mem_Alloc( tv_mempool, sizeof( client_t ) * tv_maxclients->integer ); } else { tvs.clients = NULL; } tvs.lobby.spawncount = rand(); tvs.lobby.snapFrameTime = 100; // IPv4 if( !NET_StringToAddress( tv_ip->string, &tvs.address ) ) Com_Error( ERR_FATAL, "Couldn't understand address of tv_ip cvar: %s/n", NET_ErrorString() ); NET_SetAddressPort( &tvs.address, tv_port->integer ); if( tv_udp->integer ) { if( !NET_OpenSocket( &tvs.socket_udp, SOCKET_UDP, &tvs.address, true ) ) { Com_Printf( "Error: Couldn't open UDP socket: %s/n", NET_ErrorString() ); Cvar_ForceSet( tv_udp->name, "0" ); } } // IPv6 if( !NET_StringToAddress( tv_ip6->string, &tvs.addressIPv6 ) ) Com_Error( ERR_FATAL, "Couldn't understand address of tv_ip6 cvar: %s/n", NET_ErrorString() ); NET_SetAddressPort( &tvs.addressIPv6, tv_port6->integer ); if( tvs.addressIPv6.type != NA_NOTRANSMIT ) { if( !NET_OpenSocket( &tvs.socket_udp6, SOCKET_UDP, &tvs.addressIPv6, true ) ) { Com_Printf( "Error: Couldn't open UDP6 socket: %s/n", NET_ErrorString() ); } }#ifdef TCP_ALLOW_TVCONNECT if( tv_tcp->integer ) {//.........这里部分代码省略.........
开发者ID:ultimatecode7,项目名称:qfusion,代码行数:101,
示例26: SV_InitGame/*==============SV_InitGameA brand new game has been started.If mvd_spawn is non-zero, load the built-in MVD game module.==============*/void SV_InitGame( unsigned mvd_spawn ) { int i, entnum; edict_t *ent; client_t *client; if( svs.initialized ) { // cause any connected clients to reconnect SV_Shutdown( "Server restarted/n", ERR_RECONNECT | mvd_spawn ); } else {#if USE_CLIENT // make sure the client is down CL_Disconnect( ERR_RECONNECT ); SCR_BeginLoadingPlaque();#endif CM_FreeMap( &sv.cm ); SV_FreeFile( sv.entitystring ); memset( &sv, 0, sizeof( sv ) );#if USE_FPS // set up default frametime for main loop sv.frametime = BASE_FRAMETIME;#endif } // get any latched variable changes (maxclients, etc) Cvar_GetLatchedVars ();#if !USE_CLIENT Cvar_Reset( sv_recycle );#endif if( mvd_spawn ) { Cvar_Set( "deathmatch", "1" ); Cvar_Set( "coop", "0" ); } else { if( Cvar_VariableInteger( "coop" ) && Cvar_VariableInteger( "deathmatch" ) ) { Com_Printf( "Deathmatch and Coop both set, disabling Coop/n" ); Cvar_Set( "coop", "0" ); } // dedicated servers can't be single player and are usually DM // so unless they explicity set coop, force it to deathmatch if( Com_IsDedicated() ) { if( !Cvar_VariableInteger( "coop" ) ) Cvar_Set( "deathmatch", "1" ); } } // init clients if( Cvar_VariableInteger( "deathmatch" ) ) { if( sv_maxclients->integer <= 1 ) { Cvar_SetInteger( sv_maxclients, 8, FROM_CODE ); } else if( sv_maxclients->integer > CLIENTNUM_RESERVED ) { Cvar_SetInteger( sv_maxclients, CLIENTNUM_RESERVED, FROM_CODE ); } } else if( Cvar_VariableInteger( "coop" ) ) { if( sv_maxclients->integer <= 1 || sv_maxclients->integer > 4 ) Cvar_Set( "maxclients", "4" ); } else { // non-deathmatch, non-coop is one player Cvar_FullSet( "maxclients", "1", CVAR_SERVERINFO|CVAR_LATCH, FROM_CODE ); } // enable networking if( sv_maxclients->integer > 1 ) { NET_Config( NET_SERVER ); } svs.client_pool = SV_Mallocz( sizeof( client_t ) * sv_maxclients->integer ); svs.num_entities = sv_maxclients->integer * UPDATE_BACKUP * MAX_PACKET_ENTITIES; svs.entities = SV_Mallocz( sizeof( entity_state_t ) * svs.num_entities );#if USE_MVD_SERVER // initialize MVD server if( !mvd_spawn ) { SV_MvdInit(); }#endif Cvar_ClampInteger( sv_reserved_slots, 0, sv_maxclients->integer - 1 );#if USE_ZLIB svs.z.zalloc = SV_Zalloc; svs.z.zfree = SV_Zfree; if( deflateInit2( &svs.z, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, 9, Z_DEFAULT_STRATEGY ) != Z_OK ) { Com_Error( ERR_FATAL, "%s: deflateInit2() failed", __func__ ); }//.........这里部分代码省略.........
开发者ID:Bad-ptr,项目名称:q2pro,代码行数:101,
示例27: VID_StartupGammavoid VID_StartupGamma( void ){ // Device supports gamma anyway, but cannot do anything with it. fs_offset_t gamma_size; byte *savedGamma; size_t gammaTypeSize = sizeof(glState.stateRamp); // init gamma ramp Q_memset( glState.stateRamp, 0, gammaTypeSize);#if defined(XASH_SDL) glConfig.deviceSupportsGamma = !SDL_GetWindowGammaRamp( host.hWnd, NULL, NULL, NULL);#endif if( !glConfig.deviceSupportsGamma ) { // force to set cvar Cvar_FullSet( "gl_ignorehwgamma", "1", CVAR_GLCONFIG ); MsgDev( D_ERROR, "VID_StartupGamma: hardware gamma unsupported/n"); } if( gl_ignorehwgamma->integer ) { glConfig.deviceSupportsGamma = false; // even if supported! BuildGammaTable( vid_gamma->value, vid_texgamma->value ); MsgDev( D_NOTE, "VID_StartupGamma: software gamma initialized/n" ); return; } // share this extension so engine can grab them GL_SetExtension( GL_HARDWARE_GAMMA_CONTROL, glConfig.deviceSupportsGamma ); savedGamma = FS_LoadFile( "gamma.dat", &gamma_size, false ); if( !savedGamma || gamma_size != (fs_offset_t)gammaTypeSize) { // saved gamma not found or corrupted file FS_WriteFile( "gamma.dat", glState.stateRamp, gammaTypeSize); MsgDev( D_NOTE, "VID_StartupGamma: gamma.dat initialized/n" ); if( savedGamma ) Mem_Free( savedGamma ); } else { GL_BuildGammaTable(); // validate base gamma if( !Q_memcmp( savedGamma, glState.stateRamp, gammaTypeSize)) { // all ok, previous gamma is valid MsgDev( D_NOTE, "VID_StartupGamma: validate screen gamma - ok/n" ); } else if( !Q_memcmp( glState.gammaRamp, glState.stateRamp, gammaTypeSize)) { // screen gamma is equal to render gamma (probably previous instance crashed) // run additional check to make sure for it if( Q_memcmp( savedGamma, glState.stateRamp, gammaTypeSize)) { // yes, current gamma it's totally wrong, restore it from gamma.dat MsgDev( D_NOTE, "VID_StartupGamma: restore original gamma after crash/n" ); Q_memcpy( glState.stateRamp, savedGamma, gammaTypeSize); } else { // oops, savedGamma == glState.stateRamp == glState.gammaRamp // probably r_gamma set as default MsgDev( D_NOTE, "VID_StartupGamma: validate screen gamma - disabled/n" ); } } else if( !Q_memcmp( glState.gammaRamp, savedGamma, gammaTypeSize)) { // saved gamma is equal render gamma, probably gamma.dat wroted after crash // run additional check to make sure it if( Q_memcmp( savedGamma, glState.stateRamp, gammaTypeSize)) { // yes, saved gamma it's totally wrong, get origianl gamma from screen MsgDev( D_NOTE, "VID_StartupGamma: merge gamma.dat after crash/n" ); FS_WriteFile( "gamma.dat", glState.stateRamp, gammaTypeSize); } else { // oops, savedGamma == glState.stateRamp == glState.gammaRamp // probably r_gamma set as default MsgDev( D_NOTE, "VID_StartupGamma: validate screen gamma - disabled/n" ); } } else { // current gamma unset by other application, so we can restore it here MsgDev( D_NOTE, "VID_StartupGamma: restore original gamma after crash/n" ); Q_memcpy( glState.stateRamp, savedGamma, gammaTypeSize); } Mem_Free( savedGamma ); } vid_gamma->modified = true;}
开发者ID:DeadZoneLuna,项目名称:xash3d,代码行数:97,
示例28: FS_SetGamedir/* * Sets the gamedir and path to a different directory. */voidFS_SetGamedir(char *dir){ int i; fsSearchPath_t *next; if (strstr(dir, "..") || strstr(dir, "/")) { Com_Printf("Gamedir should be a single filename, not a path./n"); return; } /* Free up any current game dir info. */ while (fs_searchPaths != fs_baseSearchPaths) { if (fs_searchPaths->pack) { if (fs_searchPaths->pack->pak) { fclose(fs_searchPaths->pack->pak); }#ifdef ZIP if (fs_searchPaths->pack->pk3) { unzClose(fs_searchPaths->pack->pk3); }#endif Z_Free(fs_searchPaths->pack->files); Z_Free(fs_searchPaths->pack); } next = fs_searchPaths->next; Z_Free(fs_searchPaths); fs_searchPaths = next; } /* Close open files for game dir. */ for (i = 0; i < MAX_HANDLES; i++) { if (strstr(fs_handles[i].name, dir) && ((fs_handles[i].file != NULL)#ifdef ZIP || (fs_handles[i].zip != NULL)#endif )) { FS_FCloseFile(i); } } /* Flush all data, so it will be forced to reload. */ if ((dedicated != NULL) && (dedicated->value != 1)) { Cbuf_AddText("vid_restart/nsnd_restart/n"); } Com_sprintf(fs_gamedir, sizeof(fs_gamedir), "%s/%s", fs_basedir->string, dir); if ((strcmp(dir, BASEDIRNAME) == 0) || (*dir == 0)) { Cvar_FullSet("gamedir", "", CVAR_SERVERINFO | CVAR_NOSET); Cvar_FullSet("game", "", CVAR_LATCH | CVAR_SERVERINFO); } else { Cvar_FullSet("gamedir", dir, CVAR_SERVERINFO | CVAR_NOSET); if (fs_cddir->string[0] == '/0') { FS_AddGameDirectory(va("%s/%s", fs_cddir->string, dir)); }#ifdef SYSTEMWIDE FS_AddSystemwideGameDirectory(dir);#endif FS_AddGameDirectory(va("%s/%s", fs_basedir->string, dir)); FS_AddHomeAsGameDirectory(dir); }}
开发者ID:Jenco420,项目名称:yquake2,代码行数:86,
注:本文中的Cvar_FullSet函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ Cvar_Get函数代码示例 C++ Cvar_ForceSet函数代码示例 |