Removed unnecessary antistick commands for model hull width, all models have the same hull width.
This commit is contained in:
parent
dcc02a44f2
commit
d95cd501c9
@ -566,14 +566,6 @@ zr_ambientsounds_volume "0.8"
|
|||||||
// Default: "1"
|
// Default: "1"
|
||||||
zr_antistick "1"
|
zr_antistick "1"
|
||||||
|
|
||||||
// The default width of player models, don't touch if you don't know what you're doing. [Dependency: zr_antistick]
|
|
||||||
// Default: "32.0"
|
|
||||||
zr_antistick_default_width "32.0"
|
|
||||||
|
|
||||||
// File to store antistick model hull data. [Dependency: zr_antistick]
|
|
||||||
// Default: "data/antistick.dat"
|
|
||||||
zr_antistick_file_path "data/antistick.dat"
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Spawn Protect (module)
|
// Spawn Protect (module)
|
||||||
|
@ -214,7 +214,6 @@ public OnConfigsExecuted()
|
|||||||
DamageLoad();
|
DamageLoad();
|
||||||
VEffectsLoad();
|
VEffectsLoad();
|
||||||
SEffectsLoad();
|
SEffectsLoad();
|
||||||
AntiStickLoad();
|
|
||||||
ClassLoad();
|
ClassLoad();
|
||||||
VolLoad();
|
VolLoad();
|
||||||
|
|
||||||
|
@ -57,12 +57,7 @@
|
|||||||
/**
|
/**
|
||||||
* Default player hull width.
|
* Default player hull width.
|
||||||
*/
|
*/
|
||||||
#define ANTISTICK_DEFAULT_HULL_WIDTH GetConVarFloat(g_hCvarsList[CVAR_ANTISTICK_DEFAULT_WIDTH])
|
#define ANTISTICK_DEFAULT_HULL_WIDTH 32.0
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle to keyvalue structure where data is stored.
|
|
||||||
*/
|
|
||||||
new Handle:g_kvAntiStick = INVALID_HANDLE;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores "StartTouch" HookID's for each client.
|
* Stores "StartTouch" HookID's for each client.
|
||||||
@ -95,33 +90,9 @@ enum AntiStickBoxBound
|
|||||||
*/
|
*/
|
||||||
AntiStickOnCommandsCreate()
|
AntiStickOnCommandsCreate()
|
||||||
{
|
{
|
||||||
// Create public command to list model data.
|
|
||||||
RegConsoleCmd("zr_antistick_list_models", AntiStickListModelsCommand, "Lists all players and their model data in console. Usage: zr_antistick_list_models");
|
|
||||||
|
|
||||||
// Create admin command to set model hull width.
|
|
||||||
RegConsoleCmd("zr_antistick_set_width", AntiStickSetWidthCommand, "Sets the width of a model's hull. (See zr_antistick_list_models) Usage: zr_antistick_set_width <model/player> <width>");
|
|
||||||
|
|
||||||
RegConsoleCmd("zr_antistick_dump_group", AntiStickDumpGroupCommand, "Dumps collision group data on one or more players. Usage zr_antistick_dump_group [#userid|name]");
|
RegConsoleCmd("zr_antistick_dump_group", AntiStickDumpGroupCommand, "Dumps collision group data on one or more players. Usage zr_antistick_dump_group [#userid|name]");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates/loads antistick data file.
|
|
||||||
*/
|
|
||||||
AntiStickLoad()
|
|
||||||
{
|
|
||||||
// Create antistick keyvalues if it hasn't been created yet.
|
|
||||||
if (g_kvAntiStick == INVALID_HANDLE)
|
|
||||||
{
|
|
||||||
g_kvAntiStick = CreateKeyValues("antistick");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize keyvalues.
|
|
||||||
if (!AntiStickLoadData())
|
|
||||||
{
|
|
||||||
AntiStickSaveData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client is joining the server.
|
* Client is joining the server.
|
||||||
*
|
*
|
||||||
@ -160,120 +131,6 @@ AntiStickOnClientDisconnect(client)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Load antistick data from file.
|
|
||||||
*
|
|
||||||
* @return True if loaded successfully, false if file wasn't found.
|
|
||||||
*/
|
|
||||||
stock bool:AntiStickLoadData()
|
|
||||||
{
|
|
||||||
// Get cvar's path.
|
|
||||||
decl String:filepath[PLATFORM_MAX_PATH];
|
|
||||||
GetConVarString(g_hCvarsList[CVAR_ANTISTICK_FILE_PATH], filepath, sizeof(filepath));
|
|
||||||
|
|
||||||
// Build full path in return string.
|
|
||||||
decl String:fullpath[PLATFORM_MAX_PATH];
|
|
||||||
BuildPath(Path_SM, fullpath, PLATFORM_MAX_PATH, filepath);
|
|
||||||
|
|
||||||
// Log action to game events.
|
|
||||||
LogEvent(false, LogType_Normal, LOG_CORE_EVENTS, LogModule_AntiStick, "Loaded Data", "Antistick data has been loaded from \"%s\"", fullpath);
|
|
||||||
|
|
||||||
// Retrieve keyvalue data from a file, and store in server's memory.
|
|
||||||
KvRewind(g_kvAntiStick);
|
|
||||||
return FileToKeyValues(g_kvAntiStick, fullpath);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save antistick data to file.
|
|
||||||
*/
|
|
||||||
stock AntiStickSaveData()
|
|
||||||
{
|
|
||||||
// Get cvar's path.
|
|
||||||
decl String:filepath[PLATFORM_MAX_PATH];
|
|
||||||
GetConVarString(g_hCvarsList[CVAR_ANTISTICK_FILE_PATH], filepath, sizeof(filepath));
|
|
||||||
|
|
||||||
// Build full path in return string.
|
|
||||||
decl String:fullpath[PLATFORM_MAX_PATH];
|
|
||||||
BuildPath(Path_SM, fullpath, PLATFORM_MAX_PATH, filepath);
|
|
||||||
|
|
||||||
// Log action to game events.
|
|
||||||
LogEvent(false, LogType_Normal, LOG_CORE_EVENTS, LogModule_AntiStick, "Saved Data", "Antistick data has been saved to \"%s\"", fullpath);
|
|
||||||
|
|
||||||
// Dump keyvalue structure into a file from the server's memory.
|
|
||||||
KvRewind(g_kvAntiStick);
|
|
||||||
KeyValuesToFile(g_kvAntiStick, fullpath);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get hull width on a client's model. (or return default)
|
|
||||||
*
|
|
||||||
* @param client The client index.
|
|
||||||
* @param model If a client index of 0 is given, this model is used.
|
|
||||||
*/
|
|
||||||
stock Float:AntiStickGetModelHullWidth(client, const String:model[] = "")
|
|
||||||
{
|
|
||||||
decl String:clientmodel[PLATFORM_MAX_PATH];
|
|
||||||
|
|
||||||
if (ZRIsClientValid(client))
|
|
||||||
{
|
|
||||||
// Get client's model.
|
|
||||||
GetClientModel(client, clientmodel, sizeof(clientmodel));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Copy given model to 'clientmodel.'
|
|
||||||
strcopy(clientmodel, sizeof(clientmodel), model);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find model in antistick data.
|
|
||||||
KvRewind(g_kvAntiStick);
|
|
||||||
if (KvJumpToKey(g_kvAntiStick, clientmodel))
|
|
||||||
{
|
|
||||||
// Return value from file.
|
|
||||||
return KvGetFloat(g_kvAntiStick, "hull_width", ANTISTICK_DEFAULT_HULL_WIDTH);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Return default CS:S hull width.
|
|
||||||
return ANTISTICK_DEFAULT_HULL_WIDTH;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set hull width on a client's model.
|
|
||||||
*
|
|
||||||
* @param client The client index.
|
|
||||||
* @param model If a client index of 0 is given, this model is used.
|
|
||||||
* @param hull_width The width of the model hull.
|
|
||||||
*/
|
|
||||||
stock AntiStickSetModelHullWidth(client, const String:model[] = "", Float:hull_width)
|
|
||||||
{
|
|
||||||
decl String:clientmodel[PLATFORM_MAX_PATH];
|
|
||||||
|
|
||||||
if (ZRIsClientValid(client))
|
|
||||||
{
|
|
||||||
// Get client's model.
|
|
||||||
GetClientModel(client, clientmodel, sizeof(clientmodel));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Copy given model to 'clientmodel.'
|
|
||||||
strcopy(clientmodel, sizeof(clientmodel), model);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace "/" with "-" because a slash indicates a new level in keyvalues.
|
|
||||||
ReplaceString(clientmodel, sizeof(clientmodel), "/", "-");
|
|
||||||
|
|
||||||
// Find model in antistick data.
|
|
||||||
KvRewind(g_kvAntiStick);
|
|
||||||
|
|
||||||
// Create key if it doesn't already exist.
|
|
||||||
KvJumpToKey(g_kvAntiStick, clientmodel, true);
|
|
||||||
|
|
||||||
// Set value.
|
|
||||||
KvSetFloat(g_kvAntiStick, "hull_width", hull_width);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback function for StartTouch.
|
* Callback function for StartTouch.
|
||||||
*
|
*
|
||||||
@ -543,13 +400,9 @@ stock bool:AntiStickIsModelBoxColliding(client1, client2)
|
|||||||
new Float:client1modelbox[AntiStickBoxBound][3];
|
new Float:client1modelbox[AntiStickBoxBound][3];
|
||||||
new Float:client2modelbox[AntiStickBoxBound][3];
|
new Float:client2modelbox[AntiStickBoxBound][3];
|
||||||
|
|
||||||
// Get model hull widths.
|
|
||||||
new Float:hull_width1 = AntiStickGetModelHullWidth(client1);
|
|
||||||
new Float:hull_width2 = AntiStickGetModelHullWidth(client2);
|
|
||||||
|
|
||||||
// Build model boxes for each client.
|
// Build model boxes for each client.
|
||||||
AntiStickBuildModelBox(client1, client1modelbox, hull_width1);
|
AntiStickBuildModelBox(client1, client1modelbox, ANTISTICK_DEFAULT_HULL_WIDTH);
|
||||||
AntiStickBuildModelBox(client2, client2modelbox, hull_width2);
|
AntiStickBuildModelBox(client2, client2modelbox, ANTISTICK_DEFAULT_HULL_WIDTH);
|
||||||
|
|
||||||
// Compare x values.
|
// Compare x values.
|
||||||
new Float:max1x = AntiStickGetBoxMaxBoundary(0, client1modelbox);
|
new Float:max1x = AntiStickGetBoxMaxBoundary(0, client1modelbox);
|
||||||
@ -704,108 +557,6 @@ AntiStickCollisionGroupToString(collisiongroup, String:buffer[], maxlen)
|
|||||||
return strcopy(buffer, maxlen, "");
|
return strcopy(buffer, maxlen, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Command callback (zr_antistick_list_models)
|
|
||||||
* Lists all player's models and model hull data.
|
|
||||||
*
|
|
||||||
* @param client The client index.
|
|
||||||
* @param argc Argument count.
|
|
||||||
*/
|
|
||||||
public Action:AntiStickListModelsCommand(client, argc)
|
|
||||||
{
|
|
||||||
// Tell client we are listing model data.
|
|
||||||
TranslationPrintToConsole(client, "AntiStick command list models list");
|
|
||||||
|
|
||||||
decl String:clientname[MAX_NAME_LENGTH];
|
|
||||||
decl String:modelname[PLATFORM_MAX_PATH];
|
|
||||||
new Float:hull_width;
|
|
||||||
|
|
||||||
// x = Client index.
|
|
||||||
for (new x = 1; x <= MaxClients; x++)
|
|
||||||
{
|
|
||||||
// If client isn't in-game, then stop.
|
|
||||||
if (!IsClientInGame(x))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get all needed data.
|
|
||||||
GetClientName(x, clientname, sizeof(clientname));
|
|
||||||
GetClientModel(x, modelname, sizeof(modelname));
|
|
||||||
hull_width = AntiStickGetModelHullWidth(x);
|
|
||||||
|
|
||||||
TranslationPrintToConsole(client, "AntiStick command list models name", clientname, modelname, hull_width);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Command callback (zr_antistick_set_width)
|
|
||||||
* Set the hull width on any model.
|
|
||||||
*
|
|
||||||
* @param client The client index.
|
|
||||||
* @param argc Argument count.
|
|
||||||
*/
|
|
||||||
public Action:AntiStickSetWidthCommand(client, argc)
|
|
||||||
{
|
|
||||||
// Check if privileged.
|
|
||||||
if (!ZRIsClientPrivileged(client, OperationType_Configuration))
|
|
||||||
{
|
|
||||||
TranslationReplyToCommand(client, "No access to command");
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If not enough arguments given, then stop.
|
|
||||||
if (argc < 2)
|
|
||||||
{
|
|
||||||
TranslationReplyToCommand(client, "AntiStick command set width syntax");
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get target model.
|
|
||||||
decl String:model[PLATFORM_MAX_PATH];
|
|
||||||
GetCmdArg(1, model, sizeof(model));
|
|
||||||
|
|
||||||
// If model doesn't exist, then stop.
|
|
||||||
if (!FileExists(model))
|
|
||||||
{
|
|
||||||
new target = FindTarget(client, model);
|
|
||||||
if (target <= 0)
|
|
||||||
{
|
|
||||||
TranslationReplyToCommand(client, "AntiStick command set width invalid model", model);
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get the target's model.
|
|
||||||
GetClientModel(target, model, sizeof(model));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the given hull width..
|
|
||||||
decl String:strHullwidth[PLATFORM_MAX_PATH];
|
|
||||||
GetCmdArg(2, strHullwidth, sizeof(strHullwidth));
|
|
||||||
|
|
||||||
new Float:hull_width = StringToFloat(strHullwidth);
|
|
||||||
if (hull_width <= 0.0)
|
|
||||||
{
|
|
||||||
TranslationReplyToCommand(client, "AntiStick command set width invalid width", hull_width);
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set hull width.
|
|
||||||
AntiStickSetModelHullWidth(0, model, hull_width);
|
|
||||||
|
|
||||||
// Tell client it was successful.
|
|
||||||
TranslationReplyToCommand(client, "AntiStick command set width successful", model, hull_width);
|
|
||||||
|
|
||||||
// Save data.
|
|
||||||
AntiStickSaveData();
|
|
||||||
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command callback (zr_antistick_dump_group)
|
* Command callback (zr_antistick_dump_group)
|
||||||
* Dumps collision group data.
|
* Dumps collision group data.
|
||||||
|
@ -433,8 +433,6 @@ CvarsCreate()
|
|||||||
// Anti-Stick (module)
|
// Anti-Stick (module)
|
||||||
// ===========================
|
// ===========================
|
||||||
g_hCvarsList[CVAR_ANTISTICK] = CreateConVar("zr_antistick", "1", "Automatically unstick players when stuck within each others' collision hull.");
|
g_hCvarsList[CVAR_ANTISTICK] = CreateConVar("zr_antistick", "1", "Automatically unstick players when stuck within each others' collision hull.");
|
||||||
g_hCvarsList[CVAR_ANTISTICK_DEFAULT_WIDTH] = CreateConVar("zr_antistick_default_width", "32.0", "The default width of player models, don't touch if you don't know what you're doing. [Dependency: zr_antistick]");
|
|
||||||
g_hCvarsList[CVAR_ANTISTICK_FILE_PATH] = CreateConVar("zr_antistick_file_path", "data/antistick.dat", "File to store antistick model hull data. [Dependency: zr_antistick]");
|
|
||||||
|
|
||||||
// ===========================
|
// ===========================
|
||||||
// Spawn Protect (module)
|
// Spawn Protect (module)
|
||||||
|
Loading…
Reference in New Issue
Block a user