本文整理汇总了C++中ConVar::InstallChangeCallback方法的典型用法代码示例。如果您正苦于以下问题:C++ ConVar::InstallChangeCallback方法的具体用法?C++ ConVar::InstallChangeCallback怎么用?C++ ConVar::InstallChangeCallback使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConVar
的用法示例。
在下文中一共展示了ConVar::InstallChangeCallback方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: value
void Left4Downtown::SDK_OnAllLoaded()
{
SM_GET_LATE_IFACE(BINTOOLS, g_pBinTools);
SM_GET_LATE_IFACE(SDKTOOLS, g_pSDKTools);
if (!g_pBinTools || !g_pSDKTools)
{
L4D_DEBUG_LOG("Failed to load bintools or failed to load sdktools");
return;
}
IServer *server = g_pSDKTools->GetIServer();
L4D_DEBUG_LOG("Address of IServer is %p", server);
//reading out server->GetName() we consistently seem to get (the same?)
//garbage characters. this is possibly causing a crash on windows servers
//when a player connects. so lets not read the server name :(
//L4D_DEBUG_LOG("Server name is %s", server->GetName());
g_pServer = server;
InitializeValveGlobals();
g_AddonsEclipse.InstallChangeCallback(::OnAddonsEclipseChanged);
AddonsDisabler::AddonsEclipse = g_AddonsEclipse.GetInt();
#ifdef USE_PLAYERSLOTS_PATCHES
/*
allow more than 8 players in l4d if l4d_maxplayers is not -1
also if +maxplayers or -maxplayers is not the default value (8)
*/
g_MaxPlayers.InstallChangeCallback(::OnMaxPlayersChanged);
/*
read the +-maxplayers from command line
*/
/*commenting out the code below
seems to not make it crash during connection to my NFO
START HERE
*/
ICommandLine *cmdLine = CommandLine_Tier0();
int maxplayers = -1;
L4D_DEBUG_LOG("Command line is: %s", cmdLine->GetCmdLine());
maxplayers = cmdLine->ParmValue("+maxplayers", -1);
L4D_DEBUG_LOG("Command line +maxplayers is: %d", maxplayers);
if(maxplayers == -1)
{
maxplayers = cmdLine->ParmValue("-maxplayers", -1);
}
/*
end here
*/
PlayerSlots::MaxPlayers = maxplayers;
#endif
/*
detour the witch/spawn spawns
*/
//automatically will unregister/cleanup themselves when the ext is unloaded
g_PatchManager.Register(new AutoPatch<Detours::SpawnSpecial>());
g_PatchManager.Register(new AutoPatch<Detours::SpawnTank>());
g_PatchManager.Register(new AutoPatch<Detours::SpawnWitch>());
g_PatchManager.Register(new AutoPatch<Detours::SpawnWitchBride>());
g_PatchManager.Register(new AutoPatch<Detours::ClearTeamScores>());
g_PatchManager.Register(new AutoPatch<Detours::SetCampaignScores>());
g_PatchManager.Register(new AutoPatch<Detours::FirstSurvivorLeftSafeArea>());
g_PatchManager.Register(new AutoPatch<Detours::GetScriptValueInt>());
g_PatchManager.Register(new AutoPatch<Detours::GetScriptValueFloat>());
g_PatchManager.Register(new AutoPatch<Detours::GetScriptValueString>());
g_PatchManager.Register(new AutoPatch<Detours::TryOfferingTankBot>());
g_PatchManager.Register(new AutoPatch<Detours::MobRushStart>());
g_PatchManager.Register(new AutoPatch<Detours::SpawnITMob>());
g_PatchManager.Register(new AutoPatch<Detours::SpawnMob>());
g_PatchManager.Register(new AutoPatch<Detours::ShovedBySurvivor>());
g_PatchManager.Register(new AutoPatch<Detours::GetCrouchTopSpeed>());
g_PatchManager.Register(new AutoPatch<Detours::GetRunTopSpeed>());
g_PatchManager.Register(new AutoPatch<Detours::GetWalkTopSpeed>());
g_PatchManager.Register(new AutoPatch<Detours::HasConfigurableDifficulty>());
g_PatchManager.Register(new AutoPatch<Detours::GetSurvivorSet>());
g_PatchManager.Register(new AutoPatch<Detours::FastGetSurvivorSet>());
g_PatchManager.Register(new AutoPatch<Detours::GetMissionVersusBossSpawning>());
g_PatchManager.Register(new AutoPatch<Detours::CThrowActivate>());
g_PatchManager.Register(new AutoPatch<Detours::StartMeleeSwing>());
g_PatchManager.Register(new AutoPatch<Detours::UseHealingItems>());
g_PatchManager.Register(new AutoPatch<Detours::FindScavengeItem>());
g_PatchManager.Register(new AutoPatch<Detours::SendInRescueVehicle>());
g_PatchManager.Register(new AutoPatch<Detours::ChangeFinaleStage>());
g_PatchManager.Register(new AutoPatch<Detours::EndVersusModeRound>());
g_PatchManager.Register(new AutoPatch<Detours::SelectWeightedSequence>());//for SelectTankAttack
g_PatchManager.Register(new AutoPatch<Detours::Revived>());
g_PatchManager.Register(new AutoPatch<Detours::WaterMove>());
g_PatchManager.Register(new AutoPatch<Detours::PlayerStagger>());
g_PatchManager.Register(new AutoPatch<Detours::TerrorWeaponHit>());
g_PatchManager.Register(new AutoPatch<Detours::CTerrorGameRules>());
g_PatchManager.Register(new AutoPatch<Detours::CBaseServer>());
//.........这里部分代码省略.........
示例2: sizeof
bool
StripperPlugin::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
{
PLUGIN_SAVEVARS();
#if defined METAMOD_PLAPI_VERSION
GET_V_IFACE_ANY(GetServerFactory, server, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
#if SOURCE_ENGINE == SE_TF2 || SOURCE_ENGINE == SE_CSS || SOURCE_ENGINE == SE_DODS || SOURCE_ENGINE == SE_HL2DM || SOURCE_ENGINE == SE_SDK2013
// Shim to avoid hooking shims
engine = (IVEngineServer *)ismm->GetEngineFactory()("VEngineServer023", nullptr);
if (!engine)
{
engine = (IVEngineServer *)ismm->GetEngineFactory()("VEngineServer022", nullptr);
if (!engine)
{
engine = (IVEngineServer *)ismm->GetEngineFactory()("VEngineServer021", nullptr);
if (!engine)
{
if (error && maxlen)
{
ismm->Format(error, maxlen, "Could not find interface: VEngineServer023 or VEngineServer022 or VEngineServer021");
}
return false;
}
}
}
#else
GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
#endif
GET_V_IFACE_ANY(GetServerFactory, clients, IServerGameClients, INTERFACEVERSION_SERVERGAMECLIENTS);
#else
GET_V_IFACE_ANY(serverFactory, server, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
GET_V_IFACE_ANY(serverFactory, clients, IServerGameClients, INTERFACEVERSION_SERVERGAMECLIENTS);
#endif
engine->GetGameDir(game_path, sizeof(game_path));
stripper_game.game_path = game_path;
stripper_game.stripper_path = "addons/stripper";
stripper_game.stripper_cfg_path = stripper_cfg_path;
strncpy(stripper_cfg_path, cvar_stripper_cfg_path.GetString(), sizeof(stripper_cfg_path));
cvar_stripper_cfg_path.InstallChangeCallback( stripper_cfg_path_changed );
#if SOURCE_ENGINE==SE_DARKMESSIAH
ICvar* cvar = GetICVar();
const char* temp = (cvar == NULL) ? NULL : cvar->GetCommandLineValue("+stripper_path");
#else
const char* temp = CommandLine()->ParmValue("+stripper_path");
#endif
if (temp != NULL && temp[0] != '\0')
{
g_SMAPI->PathFormat(stripper_path, sizeof(stripper_path), "%s", temp);
stripper_game.stripper_path = stripper_path;
}
#if defined __linux__
#define PLATFORM_EXT ".so"
#elif defined __APPLE__
#define PLATFORM_EXT ".dylib"
#else
#define PLATFORM_EXT ".dll"
#endif
char path[256];
g_SMAPI->PathFormat(path,
sizeof(path),
"%s/%s/bin/stripper.core" PLATFORM_EXT,
game_path,
stripper_game.stripper_path);
#undef PLATFORM_EXT
stripper_lib = dlopen(path, RTLD_NOW);
if (stripper_lib == NULL)
{
#if defined __linux__ || defined __APPLE__
snprintf(error, maxlen, "%s", dlerror());
#elif defined WIN32
DWORD dw = GetLastError();
if (FormatMessageA(
FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
error,
maxlen,
NULL) == 0)
{
_snprintf(error, maxlen, "Unknown error: %d", dw);
error[maxlen - 1] = '\0';
}
#endif
return false;
}
STRIPPER_LOAD stripper_load = (STRIPPER_LOAD)dlsym(stripper_lib, "LoadStripper");
if (stripper_load == NULL)
{
dlclose(stripper_lib);
//.........这里部分代码省略.........