mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-07 02:18:26 +00:00
re-work shavit-core to use GetStyleSetting stocks. Log error when using Shavit_GetStyleSettings.
This commit is contained in:
parent
7c5298f721
commit
b2da978f73
@ -152,6 +152,7 @@ enum struct stylestrings_t
|
||||
char sStylePermission[64];
|
||||
}
|
||||
|
||||
//TODO:REMOVE IN 3.0
|
||||
enum struct stylesettings_t
|
||||
{
|
||||
bool bAutobhop;
|
||||
@ -1559,6 +1560,18 @@ native bool Shavit_GetStyleSetting(int style, const char[] key, char[] value, in
|
||||
native int Shavit_GetStyleSettingInt(int style, const char[] key);
|
||||
|
||||
|
||||
/*
|
||||
* Gets the bool value from the style config for the given style. Returns false if key is not found.
|
||||
* e.g. if(Shavit_GetStyleSettingBool(Shavit_GetBhopStyle(client), "TAS"))
|
||||
*
|
||||
* @param style Style index.
|
||||
* @param key Style key to retreive.
|
||||
*
|
||||
* @return bool value if found, false if key is missing.
|
||||
*/
|
||||
native bool Shavit_GetStyleSettingBool(int style, const char[] key);
|
||||
|
||||
|
||||
/*
|
||||
* Gets a float value from the style config for the given style. Returns 0.0 if key is not found
|
||||
* e.g. Shavit_GetStyleSettingFloat(Shavit_GetBhopStyle(client), "speed");
|
||||
|
||||
@ -211,6 +211,7 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max
|
||||
CreateNative("Shavit_GetStyleCount", Native_GetStyleCount);
|
||||
CreateNative("Shavit_GetStyleSetting", Native_GetStyleSetting);
|
||||
CreateNative("Shavit_GetStyleSettingInt", Native_GetStyleSettingInt);
|
||||
CreateNative("Shavit_GetStyleSettingBool", Native_GetStyleSettingBool);
|
||||
CreateNative("Shavit_GetStyleSettingFloat", Native_GetStyleSettingFloat);
|
||||
CreateNative("Shavit_HasStyleSetting", Native_HasStyleSetting);
|
||||
CreateNative("Shavit_GetStyleSettings", Native_GetStyleSettings);
|
||||
@ -1127,8 +1128,8 @@ public Action Command_Style(int client, int args)
|
||||
|
||||
// this logic will prevent the style from showing in !style menu if it's specifically inaccessible
|
||||
// or just completely disabled
|
||||
if((gA_StyleSettings[iStyle].bInaccessible && gA_StyleSettings[iStyle].iEnabled == 1) ||
|
||||
gA_StyleSettings[iStyle].iEnabled == -1)
|
||||
if((GetStyleSettingBool(iStyle, "inaccessible") && GetStyleSettingInt(iStyle, "enabled") == 1) ||
|
||||
GetStyleSettingInt(iStyle, "enabled") == -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -1138,7 +1139,7 @@ public Action Command_Style(int client, int args)
|
||||
|
||||
char sDisplay[64];
|
||||
|
||||
if(gA_StyleSettings[iStyle].bUnranked)
|
||||
if(GetStyleSettingBool(iStyle, "unranked"))
|
||||
{
|
||||
FormatEx(sDisplay, 64, "%T %s", "StyleUnranked", client, gS_StyleStrings[iStyle].sStyleName);
|
||||
}
|
||||
@ -1285,13 +1286,13 @@ void ChangeClientStyle(int client, int style, bool manual)
|
||||
Shavit_PrintToChat(client, "%T", "StyleSelection", client, gS_ChatStrings.sStyle, gS_StyleStrings[style].sStyleName, gS_ChatStrings.sText);
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[style].bUnranked)
|
||||
if(GetStyleSettingBool(style, "unranked"))
|
||||
{
|
||||
Shavit_PrintToChat(client, "%T", "UnrankedWarning", client, gS_ChatStrings.sWarning, gS_ChatStrings.sText);
|
||||
}
|
||||
|
||||
int aa_old = RoundToZero(gA_StyleSettings[gA_Timers[client].iStyle].fAiraccelerate);
|
||||
int aa_new = RoundToZero(gA_StyleSettings[style].fAiraccelerate);
|
||||
int aa_old = RoundToZero(GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate"));
|
||||
int aa_new = RoundToZero(GetStyleSettingFloat(style, "airaccelerate"));
|
||||
|
||||
if(aa_old != aa_new)
|
||||
{
|
||||
@ -1342,7 +1343,7 @@ void DoJump(int client)
|
||||
}
|
||||
|
||||
// TF2 doesn't use stamina
|
||||
if(gEV_Type != Engine_TF2 && (gA_StyleSettings[gA_Timers[client].iStyle].bEasybhop) || Shavit_InsideZone(client, Zone_Easybhop, gA_Timers[client].iTrack))
|
||||
if(gEV_Type != Engine_TF2 && (GetStyleSettingBool(gA_Timers[client].iStyle, "easybhop")) || Shavit_InsideZone(client, Zone_Easybhop, gA_Timers[client].iTrack))
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Send, "m_flStamina", 0.0);
|
||||
}
|
||||
@ -1359,14 +1360,19 @@ void VelocityChanges(int data)
|
||||
return;
|
||||
}
|
||||
|
||||
if(gA_Timers[client].fTimescale != -1.0)
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", view_as<float>(gA_Timers[client].fTimescale));
|
||||
}
|
||||
int style = gA_Timers[client].iStyle;
|
||||
|
||||
else
|
||||
if(GetStyleSettingBool(style, "force_timescale"))
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fSpeedMultiplier));
|
||||
if(gA_Timers[client].fTimescale != -1.0)
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", gA_Timers[client].fTimescale);
|
||||
}
|
||||
|
||||
else if(GetStyleSettingFloat(style, "speed") != 1.0)
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", GetStyleSettingFloat(style, "speed"));
|
||||
}
|
||||
}
|
||||
|
||||
float fAbsVelocity[3];
|
||||
@ -1376,9 +1382,9 @@ void VelocityChanges(int data)
|
||||
|
||||
if(fSpeed != 0.0)
|
||||
{
|
||||
float fVelocityMultiplier = view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fVelocity);
|
||||
float fVelocityBonus = view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fBonusVelocity);
|
||||
float fMin = view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fMinVelocity);
|
||||
float fVelocityMultiplier = GetStyleSettingFloat(style, "velocity");
|
||||
float fVelocityBonus = GetStyleSettingFloat(style, "bonus_velocity");
|
||||
float fMin = GetStyleSettingFloat(style, "min_velocity");
|
||||
|
||||
if(fVelocityMultiplier != 0.0)
|
||||
{
|
||||
@ -1401,8 +1407,8 @@ void VelocityChanges(int data)
|
||||
}
|
||||
}
|
||||
|
||||
float fJumpMultiplier = gA_StyleSettings[gA_Timers[client].iStyle].fJumpMultiplier;
|
||||
float fJumpBonus = gA_StyleSettings[gA_Timers[client].iStyle].fJumpBonus;
|
||||
float fJumpMultiplier = GetStyleSettingFloat(style, "jump_multiplier");
|
||||
float fJumpBonus = GetStyleSettingFloat(style, "jump_bonus");
|
||||
|
||||
if(fJumpMultiplier != 0.0)
|
||||
{
|
||||
@ -1495,7 +1501,7 @@ public int Native_HasStyleAccess(Handle handler, int numParams)
|
||||
{
|
||||
int style = GetNativeCell(2);
|
||||
|
||||
if(gA_StyleSettings[style].bInaccessible || gA_StyleSettings[style].iEnabled <= 0)
|
||||
if(GetStyleSettingBool(style, "inaccessible") || GetStyleSettingInt(style, "enabled") <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -1675,7 +1681,8 @@ public int Native_FinishMap(Handle handler, int numParams)
|
||||
Call_PushCell(gA_Timers[client].fTimer);
|
||||
Call_PushCell(gA_Timers[client].iJumps);
|
||||
Call_PushCell(gA_Timers[client].iStrafes);
|
||||
Call_PushCell((gA_StyleSettings[gA_Timers[client].iStyle].bSync)? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0);
|
||||
//gross
|
||||
Call_PushCell((GetStyleSettingBool(gA_Timers[client].iStyle, "sync"))? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0);
|
||||
Call_PushCell(track = gA_Timers[client].iTrack);
|
||||
perfs = (gA_Timers[client].iMeasuredJumps == 0)? 100.0:(gA_Timers[client].iPerfectJumps / float(gA_Timers[client].iMeasuredJumps) * 100.0);
|
||||
}
|
||||
@ -1686,7 +1693,8 @@ public int Native_FinishMap(Handle handler, int numParams)
|
||||
Call_PushCell(snapshot.fCurrentTime);
|
||||
Call_PushCell(snapshot.iJumps);
|
||||
Call_PushCell(snapshot.iStrafes);
|
||||
Call_PushCell((gA_StyleSettings[snapshot.bsStyle].bSync)? (snapshot.iGoodGains == 0)? 0.0:(snapshot.iGoodGains / float(snapshot.iTotalMeasures) * 100.0):-1.0);
|
||||
// gross
|
||||
Call_PushCell((GetStyleSettingBool(snapshot.bsStyle, "sync"))? (snapshot.iGoodGains == 0)? 0.0:(snapshot.iGoodGains / float(snapshot.iTotalMeasures) * 100.0):-1.0);
|
||||
Call_PushCell(track = snapshot.iTimerTrack);
|
||||
perfs = (snapshot.iMeasuredJumps == 0)? 100.0:(snapshot.iPerfectJumps / float(snapshot.iMeasuredJumps) * 100.0);
|
||||
}
|
||||
@ -1845,7 +1853,7 @@ public int Native_GetSync(Handle handler, int numParams)
|
||||
{
|
||||
int client = GetNativeCell(1);
|
||||
|
||||
return view_as<int>((gA_StyleSettings[gA_Timers[client].iStyle].bSync)? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0);
|
||||
return view_as<int>((GetStyleSettingBool(gA_Timers[client].iStyle, "sync")? (gA_Timers[client].iGoodGains == 0)? 0.0:(gA_Timers[client].iGoodGains / float(gA_Timers[client].iTotalMeasures) * 100.0):-1.0));
|
||||
}
|
||||
|
||||
public int Native_GetStyleCount(Handle handler, int numParams)
|
||||
@ -1855,11 +1863,14 @@ public int Native_GetStyleCount(Handle handler, int numParams)
|
||||
|
||||
public int Native_GetStyleSettings(Handle handler, int numParams)
|
||||
{
|
||||
LogError("Shavit_GetStyleSettings is deprecated and will be removed in 3.0. Use Shavit_GetStyleSetting instead");
|
||||
|
||||
if(GetNativeCell(3) != sizeof(stylesettings_t))
|
||||
{
|
||||
return ThrowNativeError(200, "stylesettings_t does not match latest(got %i expected %i). Please update your includes and recompile your plugins",
|
||||
GetNativeCell(3), sizeof(stylesettings_t));
|
||||
}
|
||||
|
||||
return SetNativeArray(2, gA_StyleSettings[GetNativeCell(1)], sizeof(stylesettings_t));
|
||||
}
|
||||
|
||||
@ -2057,12 +2068,31 @@ public int Native_GetStyleSettingInt(Handle handler, int numParams)
|
||||
char sKey[256];
|
||||
GetNativeString(2, sKey, 256);
|
||||
|
||||
char sValue[16];
|
||||
gSM_StyleKeys[style].GetString(sKey, sValue, 16);
|
||||
return GetStyleSettingInt(style, sKey);
|
||||
}
|
||||
|
||||
int GetStyleSettingInt(int style, char[] key)
|
||||
{
|
||||
char sValue[16];
|
||||
gSM_StyleKeys[style].GetString(key, sValue, 16);
|
||||
return StringToInt(sValue);
|
||||
}
|
||||
|
||||
public int Native_GetStyleSettingBool(Handle handler, int numParams)
|
||||
{
|
||||
int style = GetNativeCell(1);
|
||||
|
||||
char sKey[256];
|
||||
GetNativeString(2, sKey, 256);
|
||||
|
||||
return GetStyleSettingBool(style, sKey);
|
||||
}
|
||||
|
||||
bool GetStyleSettingBool(int style, char[] key)
|
||||
{
|
||||
return GetStyleSettingInt(style, key) != 0;
|
||||
}
|
||||
|
||||
public any Native_GetStyleSettingFloat(Handle handler, int numParams)
|
||||
{
|
||||
int style = GetNativeCell(1);
|
||||
@ -2070,9 +2100,13 @@ public any Native_GetStyleSettingFloat(Handle handler, int numParams)
|
||||
char sKey[256];
|
||||
GetNativeString(2, sKey, 256);
|
||||
|
||||
char sValue[16];
|
||||
gSM_StyleKeys[style].GetString(sKey, sValue, 16);
|
||||
return GetStyleSettingFloat(style, sKey);
|
||||
}
|
||||
|
||||
float GetStyleSettingFloat(int style, char[] key)
|
||||
{
|
||||
char sValue[16];
|
||||
gSM_StyleKeys[style].GetString(key, sValue, 16);
|
||||
return StringToFloat(sValue);
|
||||
}
|
||||
|
||||
@ -2084,10 +2118,15 @@ public any Native_HasStyleSetting(Handle handler, int numParams)
|
||||
char sKey[256];
|
||||
GetNativeString(2, sKey, 256);
|
||||
|
||||
char sValue[1];
|
||||
gSM_StyleKeys[style].GetString(sKey, sValue, 1);
|
||||
return HasStyleSetting(style, sKey);
|
||||
}
|
||||
|
||||
return gSM_StyleKeys[style].GetString(sKey, sValue, 1);
|
||||
bool HasStyleSetting(int style, char[] key)
|
||||
{
|
||||
char sValue[1];
|
||||
gSM_StyleKeys[style].GetString(key, sValue, 1);
|
||||
|
||||
return gSM_StyleKeys[style].GetString(key, sValue, 1);
|
||||
}
|
||||
|
||||
int GetTimerStatus(int client)
|
||||
@ -2116,8 +2155,8 @@ void StartTimer(int client, int track)
|
||||
GetEntPropVector(client, Prop_Data, "m_vecVelocity", fSpeed);
|
||||
|
||||
if(!gCV_NoZAxisSpeed.BoolValue ||
|
||||
gA_StyleSettings[gA_Timers[client].iStyle].iPrespeed == 1 ||
|
||||
(fSpeed[2] == 0.0 && (gA_StyleSettings[gA_Timers[client].iStyle].iPrespeed == 2 || SquareRoot(Pow(fSpeed[0], 2.0) + Pow(fSpeed[1], 2.0)) <= 290.0)))
|
||||
GetStyleSettingInt(gA_Timers[client].iStyle, "prespeed") == 1 ||
|
||||
(fSpeed[2] == 0.0 && (GetStyleSettingInt(gA_Timers[client].iStyle, "prespeed") == 2 || SquareRoot(Pow(fSpeed[0], 2.0) + Pow(fSpeed[1], 2.0)) <= 290.0)))
|
||||
{
|
||||
Action result = Plugin_Continue;
|
||||
Call_StartForward(gH_Forwards_Start);
|
||||
@ -2159,10 +2198,10 @@ void StartTimer(int client, int track)
|
||||
|
||||
else
|
||||
{
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fSpeedMultiplier));
|
||||
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", GetStyleSettingFloat(gA_Timers[client].iStyle, "speed"));
|
||||
}
|
||||
|
||||
SetEntityGravity(client, view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fGravityMultiplier));
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity"));
|
||||
}
|
||||
|
||||
else if(result == Plugin_Handled || result == Plugin_Stop)
|
||||
@ -2369,10 +2408,80 @@ bool LoadStyles()
|
||||
|
||||
SMCParser parser = new SMCParser();
|
||||
parser.OnEnterSection = OnStyleEnterSection;
|
||||
parser.OnLeaveSection = OnStyleLeaveSection;
|
||||
parser.OnKeyValue = OnStyleKeyValue;
|
||||
parser.ParseFile(sPath);
|
||||
delete parser;
|
||||
|
||||
|
||||
// TODO: REMOVE IN 3.0
|
||||
// These are being left in as a backwards compatibility for the forwards using the style settings struct.
|
||||
// Forwards seem to be fairly safe but will eventually be deprecated in favor of removing enum struct api usage.
|
||||
KeyValues kv = new KeyValues("shavit-styles");
|
||||
|
||||
if(!kv.ImportFromFile(sPath) || !kv.GotoFirstSubKey())
|
||||
{
|
||||
delete kv;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
||||
do
|
||||
{
|
||||
gA_StyleSettings[i].bAutobhop = view_as<bool>(kv.GetNum("autobhop", 1));
|
||||
gA_StyleSettings[i].bEasybhop = view_as<bool>(kv.GetNum("easybhop", 1));
|
||||
gA_StyleSettings[i].iPrespeed = view_as<bool>(kv.GetNum("prespeed", 0));
|
||||
gA_StyleSettings[i].fVelocityLimit = kv.GetFloat("velocity_limit", 0.0);
|
||||
gA_StyleSettings[i].fAiraccelerate = kv.GetFloat("airaccelerate", 1000.0);
|
||||
gA_StyleSettings[i].bEnableBunnyhopping = view_as<bool>(kv.GetNum("bunnyhopping", 1));
|
||||
gA_StyleSettings[i].fRunspeed = kv.GetFloat("runspeed", 260.00);
|
||||
gA_StyleSettings[i].fGravityMultiplier = kv.GetFloat("gravity", 1.0);
|
||||
gA_StyleSettings[i].fSpeedMultiplier = kv.GetFloat("speed", 1.0);
|
||||
gA_StyleSettings[i].fTimescale = view_as<bool>(kv.GetNum("halftime", 0))? 0.5:kv.GetFloat("timescale", 1.0); // backwards compat for old halftime settig
|
||||
gA_StyleSettings[i].fVelocity = kv.GetFloat("velocity", 1.0);
|
||||
gA_StyleSettings[i].fBonusVelocity = kv.GetFloat("bonus_velocity", 0.0);
|
||||
gA_StyleSettings[i].fMinVelocity = kv.GetFloat("min_velocity", 0.0);
|
||||
gA_StyleSettings[i].fJumpMultiplier = kv.GetFloat("jump_multiplier", 0.0);
|
||||
gA_StyleSettings[i].fJumpBonus = kv.GetFloat("jump_bonus", 0.0);
|
||||
gA_StyleSettings[i].bBlockW = view_as<bool>(kv.GetNum("block_w", 0));
|
||||
gA_StyleSettings[i].bBlockA = view_as<bool>(kv.GetNum("block_a", 0));
|
||||
gA_StyleSettings[i].bBlockS = view_as<bool>(kv.GetNum("block_s", 0));
|
||||
gA_StyleSettings[i].bBlockD = view_as<bool>(kv.GetNum("block_d", 0));
|
||||
gA_StyleSettings[i].bBlockUse = view_as<bool>(kv.GetNum("block_use", 0));
|
||||
gA_StyleSettings[i].iForceHSW = kv.GetNum("force_hsw", 0);
|
||||
gA_StyleSettings[i].iBlockPLeft = kv.GetNum("block_pleft", 0);
|
||||
gA_StyleSettings[i].iBlockPRight = kv.GetNum("block_pright", 0);
|
||||
gA_StyleSettings[i].iBlockPStrafe = kv.GetNum("block_pstrafe", 0);
|
||||
gA_StyleSettings[i].bUnranked = view_as<bool>(kv.GetNum("unranked", 0));
|
||||
gA_StyleSettings[i].bNoReplay = view_as<bool>(kv.GetNum("noreplay", 0));
|
||||
gA_StyleSettings[i].bSync = view_as<bool>(kv.GetNum("sync", 1));
|
||||
gA_StyleSettings[i].bStrafeCountW = view_as<bool>(kv.GetNum("strafe_count_w", false));
|
||||
gA_StyleSettings[i].bStrafeCountA = view_as<bool>(kv.GetNum("strafe_count_a", true));
|
||||
gA_StyleSettings[i].bStrafeCountS = view_as<bool>(kv.GetNum("strafe_count_s", false));
|
||||
gA_StyleSettings[i].bStrafeCountD = view_as<bool>(kv.GetNum("strafe_count_d", true));
|
||||
gA_StyleSettings[i].fRankingMultiplier = kv.GetFloat("rankingmultiplier", 1.00);
|
||||
gA_StyleSettings[i].iSpecial = kv.GetNum("special", 0);
|
||||
gA_StyleSettings[i].iOrdering = kv.GetNum("ordering", i);
|
||||
gA_StyleSettings[i].bInaccessible = view_as<bool>(kv.GetNum("inaccessible", false));
|
||||
gA_StyleSettings[i].iEnabled = kv.GetNum("enabled", 1);
|
||||
gA_StyleSettings[i].bKZCheckpoints = view_as<bool>(kv.GetNum("kzcheckpoints", 0));
|
||||
gA_StyleSettings[i].bForceKeysOnGround = view_as<bool>(kv.GetNum("force_groundkeys", 0));
|
||||
|
||||
// if this style is disabled, we will force certain settings
|
||||
if(gA_StyleSettings[i].iEnabled <= 0)
|
||||
{
|
||||
gA_StyleSettings[i].bNoReplay = true;
|
||||
gA_StyleSettings[i].fRankingMultiplier = 0.0;
|
||||
gA_StyleSettings[i].bInaccessible = true;
|
||||
}
|
||||
}
|
||||
|
||||
while(kv.GotoNextKey());
|
||||
|
||||
delete kv;
|
||||
|
||||
gB_Registered = true;
|
||||
|
||||
SortCustom1D(gI_OrderedStyles, gI_Styles, SortAscending_StyleOrder);
|
||||
@ -2418,96 +2527,68 @@ public SMCResult OnStyleEnterSection(SMCParser smc, const char[] name, bool opt_
|
||||
gS_StyleStrings[gI_CurrentParserIndex].sSpecialString = "";
|
||||
gS_StyleStrings[gI_CurrentParserIndex].sStylePermission = "";
|
||||
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("autobhop", 1);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("easybhop", 1);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("prespeed", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("velocity_limit", 0.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("airaccelerate", 1000.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("bunnyhopping", 1);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("runspeed", 260.00);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("gravity", 1.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("speed", 1.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("halftime", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("timescale", 1.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("velocity", 1.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("bonus_velocity", 0.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("min_velocity", 0.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("jump_multiplier", 0.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("jump_bonus", 0.0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_w", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_a", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_s", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_d", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_use", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("force_hsw", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_pleft", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_pright", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("block_pstrafe", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("unranked", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("noreplay", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("sync", 1);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("strafe_count_w", false);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("strafe_count_a", true);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("strafe_count_s", false);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("strafe_count_d", true);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("rankingmultiplier", 1.00);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("special", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("ordering", gI_CurrentParserIndex);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("autobhop", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("easybhop", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("prespeed", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("velocity_limit", "0.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("airaccelerate", "1000.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("bunnyhopping", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("runspeed", "260.00");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("gravity", "1.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("speed", "1.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("halftime", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("timescale", "1.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("velocity", "1.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("bonus_velocity", "0.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("min_velocity", "0.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("jump_multiplier", "0.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("jump_bonus", "0.0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_w", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_a", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_s", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_d", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_use", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("force_hsw", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_pleft", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_pright", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("block_pstrafe", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("unranked", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("noreplay", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("sync", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("strafe_count_w", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("strafe_count_a", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("strafe_count_s", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("strafe_count_d", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("rankingmultiplier", "1.00");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("special", "0");
|
||||
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("inaccessible", false);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("enabled", 1);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("kzcheckpoints", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("force_groundkeys", 0);
|
||||
char sOrder[4];
|
||||
IntToString(gI_CurrentParserIndex, sOrder, 4);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("ordering", sOrder);
|
||||
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bAutobhop = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bEasybhop = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iPrespeed = 0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fVelocityLimit = 0.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fAiraccelerate = 1000.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bEnableBunnyhopping = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fRunspeed = 260.00;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fGravityMultiplier = 1.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fSpeedMultiplier = 1.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fTimescale = 1.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fVelocity = 1.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fBonusVelocity = 0.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fMinVelocity = 0.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fJumpMultiplier = 0.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fJumpBonus = 0.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bBlockW = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bBlockA = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bBlockS = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bBlockD = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bBlockUse = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iForceHSW = 0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iBlockPLeft = 0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iBlockPRight = 0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iBlockPStrafe = 0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bUnranked = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bNoReplay = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bSync = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bStrafeCountW = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bStrafeCountA = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bStrafeCountS = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bStrafeCountD = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fRankingMultiplier = 1.00;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iSpecial = 0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iOrdering = gI_CurrentParserIndex;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bInaccessible = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].iEnabled = 1;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bKZCheckpoints = false;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bForceKeysOnGround = false;
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("inaccessible", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("enabled", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("kzcheckpoints", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("force_groundkeys", "0");
|
||||
|
||||
gI_OrderedStyles[gI_CurrentParserIndex] = gI_CurrentParserIndex;
|
||||
|
||||
return SMCParse_Continue;
|
||||
}
|
||||
|
||||
public SMCResult OnStyleLeaveSection(SMCParser smc)
|
||||
{
|
||||
// if this style is disabled, we will force certain settings
|
||||
if(gA_StyleSettings[gI_CurrentParserIndex].iEnabled <= 0)
|
||||
if(GetStyleSettingInt(gI_CurrentParserIndex, "enabled") <= 0)
|
||||
{
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bNoReplay = true;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].fRankingMultiplier = 0.0;
|
||||
gA_StyleSettings[gI_CurrentParserIndex].bInaccessible = true;
|
||||
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("noreplay", true);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("rankingmultiplier", 0);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetValue("inaccessible", true);
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("noreplay", "1");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("rankingmultiplier", "0");
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("inaccessible", "1");
|
||||
}
|
||||
|
||||
if(GetStyleSettingBool(gI_CurrentParserIndex, "halftime"))
|
||||
{
|
||||
gSM_StyleKeys[gI_CurrentParserIndex].SetString("timescale", "0.5");
|
||||
}
|
||||
|
||||
if(!gB_Registered && strlen(gS_StyleStrings[gI_CurrentParserIndex].sChangeCommand) > 0 && !gA_StyleSettings[gI_CurrentParserIndex].bInaccessible)
|
||||
@ -2556,12 +2637,6 @@ public SMCResult OnStyleEnterSection(SMCParser smc, const char[] name, bool opt_
|
||||
gI_StyleFlag[gI_CurrentParserIndex] = FlagToBit(flag);
|
||||
}
|
||||
}
|
||||
|
||||
gI_OrderedStyles[gI_CurrentParserIndex] = gI_CurrentParserIndex;
|
||||
|
||||
|
||||
|
||||
return SMCParse_Continue;
|
||||
}
|
||||
|
||||
public SMCResult OnStyleKeyValue(SMCParser smc, const char[] key, const char[] value, bool key_quotes, bool value_quotes)
|
||||
@ -2571,8 +2646,8 @@ public SMCResult OnStyleKeyValue(SMCParser smc, const char[] key, const char[] v
|
||||
|
||||
public int SortAscending_StyleOrder(int index1, int index2, const int[] array, any hndl)
|
||||
{
|
||||
int iOrder1 = gA_StyleSettings[index1].iOrdering;
|
||||
int iOrder2 = gA_StyleSettings[index2].iOrdering;
|
||||
int iOrder1 = GetStyleSettingInt(index1, "ordering");
|
||||
int iOrder2 = GetStyleSettingInt(index2, "ordering");
|
||||
|
||||
if(iOrder1 < iOrder2)
|
||||
{
|
||||
@ -3045,7 +3120,7 @@ public void Shavit_OnLeaveZone(int client, int type, int track, int id, int enti
|
||||
{
|
||||
if(type == Zone_Airaccelerate)
|
||||
{
|
||||
UpdateAiraccelerate(client, view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fAiraccelerate));
|
||||
UpdateAiraccelerate(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3055,7 +3130,7 @@ public void PreThinkPost(int client)
|
||||
{
|
||||
if(!gB_Zones || !Shavit_InsideZone(client, Zone_Airaccelerate, -1))
|
||||
{
|
||||
sv_airaccelerate.FloatValue = view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fAiraccelerate);
|
||||
sv_airaccelerate.FloatValue = GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate");
|
||||
}
|
||||
|
||||
else
|
||||
@ -3065,16 +3140,16 @@ public void PreThinkPost(int client)
|
||||
|
||||
if(sv_enablebunnyhopping != null)
|
||||
{
|
||||
sv_enablebunnyhopping.BoolValue = view_as<bool>(gA_StyleSettings[gA_Timers[client].iStyle].bEnableBunnyhopping);
|
||||
sv_enablebunnyhopping.BoolValue = GetStyleSettingBool(gA_Timers[client].iStyle, "bunnyhopping");
|
||||
}
|
||||
|
||||
MoveType mtMoveType = GetEntityMoveType(client);
|
||||
|
||||
if(view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fGravityMultiplier) != 1.0 &&
|
||||
if(GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity") != 1.0 &&
|
||||
(mtMoveType == MOVETYPE_WALK || mtMoveType == MOVETYPE_ISOMETRIC) &&
|
||||
(gA_Timers[client].iMoveType == MOVETYPE_LADDER || GetEntityGravity(client) == 1.0))
|
||||
{
|
||||
SetEntityGravity(client, view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fGravityMultiplier));
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity"));
|
||||
}
|
||||
|
||||
gA_Timers[client].iMoveType = mtMoveType;
|
||||
@ -3149,7 +3224,7 @@ public MRESReturn DHook_ProcessMovementPost(Handle hParams)
|
||||
|
||||
else
|
||||
{
|
||||
time = frametime * view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fTimescale);
|
||||
time = frametime * GetStyleSettingFloat(gA_Timers[client].iStyle, "timescale");
|
||||
}
|
||||
|
||||
gA_Timers[client].iZoneIncrement++;
|
||||
@ -3173,7 +3248,9 @@ public MRESReturn DHook_ProcessMovementPost(Handle hParams)
|
||||
Call_PushCell(client);
|
||||
Call_PushArray(snapshot, sizeof(timer_snapshot_t));
|
||||
Call_PushCellRef(time);
|
||||
//TODO:REMOVE IN 3.0
|
||||
Call_PushArray(gA_StyleSettings[gA_Timers[client].iStyle], sizeof(stylesettings_t));
|
||||
// Call_PushArray(NULL_VECTOR, sizeof(NULL_VECTOR));
|
||||
Call_Finish();
|
||||
|
||||
gA_Timers[client].fTimer += time;
|
||||
@ -3181,6 +3258,8 @@ public MRESReturn DHook_ProcessMovementPost(Handle hParams)
|
||||
Call_StartForward(gH_Forwards_OnTimerIncrementPost);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(time);
|
||||
//TODO:REMOVE IN 3.0
|
||||
// Call_PushArray(NULL_VECTOR, sizeof(NULL_VECTOR));
|
||||
Call_PushArray(gA_StyleSettings[gA_Timers[client].iStyle], sizeof(stylesettings_t));
|
||||
Call_Finish();
|
||||
|
||||
@ -3291,7 +3370,9 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
Call_PushCell(GetTimerStatus(client));
|
||||
Call_PushCell(gA_Timers[client].iTrack);
|
||||
Call_PushCell(gA_Timers[client].iStyle);
|
||||
//TODO:REMOVE IN 3.0
|
||||
Call_PushArray(gA_StyleSettings[gA_Timers[client].iStyle], sizeof(stylesettings_t));
|
||||
// Call_PushArray(NULL_VECTOR, sizeof(NULL_VECTOR));
|
||||
Call_PushArrayEx(mouse, 2, SM_PARAM_COPYBACK);
|
||||
Call_Finish(result);
|
||||
|
||||
@ -3306,13 +3387,13 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
if(gA_Timers[client].bEnabled && !gA_Timers[client].bPaused)
|
||||
{
|
||||
// +left/right block
|
||||
if(!gB_Zones || (!bInStart && ((gA_StyleSettings[gA_Timers[client].iStyle].iBlockPLeft > 0 &&
|
||||
(buttons & IN_LEFT) > 0) || (gA_StyleSettings[gA_Timers[client].iStyle].iBlockPRight > 0 && (buttons & IN_RIGHT) > 0))))
|
||||
if(!gB_Zones || (!bInStart && ((GetStyleSettingInt(gA_Timers[client].iStyle, "block_pleft") > 0 &&
|
||||
(buttons & IN_LEFT) > 0) || (GetStyleSettingInt(gA_Timers[client].iStyle, "block_pright") > 0 && (buttons & IN_RIGHT) > 0))))
|
||||
{
|
||||
vel[0] = 0.0;
|
||||
vel[1] = 0.0;
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].iBlockPRight >= 2)
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "block_pright") >= 2)
|
||||
{
|
||||
char sCheatDetected[64];
|
||||
FormatEx(sCheatDetected, 64, "%T", "LeftRightCheat", client);
|
||||
@ -3321,13 +3402,13 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
}
|
||||
|
||||
// +strafe block
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].iBlockPStrafe > 0 &&
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "block_pstrafe") > 0 &&
|
||||
((vel[0] > 0.0 && (buttons & IN_FORWARD) == 0) || (vel[0] < 0.0 && (buttons & IN_BACK) == 0) ||
|
||||
(vel[1] > 0.0 && (buttons & IN_MOVERIGHT) == 0) || (vel[1] < 0.0 && (buttons & IN_MOVELEFT) == 0)))
|
||||
{
|
||||
if(gA_Timers[client].fStrafeWarning < gA_Timers[client].fTimer)
|
||||
{
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].iBlockPStrafe >= 2)
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "block_pstrafe") >= 2)
|
||||
{
|
||||
char sCheatDetected[64];
|
||||
FormatEx(sCheatDetected, 64, "%T", "Inconsistencies", client);
|
||||
@ -3356,26 +3437,26 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
|
||||
int iPButtons = buttons;
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bStrafeCountW && !gA_StyleSettings[gA_Timers[client].iStyle].bBlockW &&
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_w") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_w") &&
|
||||
(gA_Timers[client].iLastButtons & IN_FORWARD) == 0 && (buttons & IN_FORWARD) > 0)
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bStrafeCountA && !gA_StyleSettings[gA_Timers[client].iStyle].bBlockA && (gA_Timers[client].iLastButtons & IN_MOVELEFT) == 0 &&
|
||||
(buttons & IN_MOVELEFT) > 0 && (gA_StyleSettings[gA_Timers[client].iStyle].iForceHSW > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_a") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_a") && (gA_Timers[client].iLastButtons & IN_MOVELEFT) == 0 &&
|
||||
(buttons & IN_MOVELEFT) > 0 && (GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bStrafeCountS && !gA_StyleSettings[gA_Timers[client].iStyle].bBlockS &&
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_s") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_s") &&
|
||||
(gA_Timers[client].iLastButtons & IN_BACK) == 0 && (buttons & IN_BACK) > 0)
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bStrafeCountD && !gA_StyleSettings[gA_Timers[client].iStyle].bBlockD && (gA_Timers[client].iLastButtons & IN_MOVERIGHT) == 0 &&
|
||||
(buttons & IN_MOVERIGHT) > 0 && (gA_StyleSettings[gA_Timers[client].iStyle].iForceHSW > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "strafe_count_d") && !GetStyleSettingBool(gA_Timers[client].iStyle, "block_d") && (gA_Timers[client].iLastButtons & IN_MOVERIGHT) == 0 &&
|
||||
(buttons & IN_MOVERIGHT) > 0 && (GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") > 0 || ((buttons & IN_FORWARD) == 0 && (buttons & IN_BACK) == 0)))
|
||||
{
|
||||
gA_Timers[client].iStrafes++;
|
||||
}
|
||||
@ -3396,32 +3477,32 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
if(!gA_Timers[client].bCanUseAllKeys && mtMoveType != MOVETYPE_NOCLIP && mtMoveType != MOVETYPE_LADDER && !Shavit_InsideZone(client, Zone_Freestyle, -1))
|
||||
{
|
||||
// block E
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bBlockUse && (buttons & IN_USE) > 0)
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_use") && (buttons & IN_USE) > 0)
|
||||
{
|
||||
buttons &= ~IN_USE;
|
||||
}
|
||||
|
||||
if(iGroundEntity == -1 || gA_StyleSettings[gA_Timers[client].iStyle].bForceKeysOnGround)
|
||||
if(iGroundEntity == -1 || GetStyleSettingBool(gA_Timers[client].iStyle, "force_groundkeys"))
|
||||
{
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bBlockW && ((buttons & IN_FORWARD) > 0 || vel[0] > 0.0))
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_w") && ((buttons & IN_FORWARD) > 0 || vel[0] > 0.0))
|
||||
{
|
||||
vel[0] = 0.0;
|
||||
buttons &= ~IN_FORWARD;
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bBlockA && ((buttons & IN_MOVELEFT) > 0 || vel[1] < 0.0))
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_a") && ((buttons & IN_MOVELEFT) > 0 || vel[1] < 0.0))
|
||||
{
|
||||
vel[1] = 0.0;
|
||||
buttons &= ~IN_MOVELEFT;
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bBlockS && ((buttons & IN_BACK) > 0 || vel[0] < 0.0))
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_s") && ((buttons & IN_BACK) > 0 || vel[0] < 0.0))
|
||||
{
|
||||
vel[0] = 0.0;
|
||||
buttons &= ~IN_BACK;
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bBlockD && ((buttons & IN_MOVERIGHT) > 0 || vel[1] > 0.0))
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "block_d") && ((buttons & IN_MOVERIGHT) > 0 || vel[1] > 0.0))
|
||||
{
|
||||
vel[1] = 0.0;
|
||||
buttons &= ~IN_MOVERIGHT;
|
||||
@ -3431,9 +3512,9 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
// Theory about blocking non-HSW strafes while playing HSW:
|
||||
// Block S and W without A or D.
|
||||
// Block A and D without S or W.
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].iForceHSW > 0)
|
||||
if(GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") > 0)
|
||||
{
|
||||
bool bSHSW = (gA_StyleSettings[gA_Timers[client].iStyle].iForceHSW == 2) && !bInStart; // don't decide on the first valid input until out of start zone!
|
||||
bool bSHSW = (GetStyleSettingInt(gA_Timers[client].iStyle, "force_hsw") == 2) && !bInStart; // don't decide on the first valid input until out of start zone!
|
||||
int iCombination = -1;
|
||||
|
||||
bool bForward = ((buttons & IN_FORWARD) > 0 && vel[0] >= 100.0);
|
||||
@ -3509,7 +3590,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
bool bInWater = (GetEntProp(client, Prop_Send, "m_nWaterLevel") >= 2);
|
||||
|
||||
// enable duck-jumping/bhop in tf2
|
||||
if(gEV_Type == Engine_TF2 && gA_StyleSettings[gA_Timers[client].iStyle].bEnableBunnyhopping && (buttons & IN_JUMP) > 0 && iGroundEntity != -1)
|
||||
if(gEV_Type == Engine_TF2 && GetStyleSettingBool(gA_Timers[client].iStyle, "bunnyhopping") && (buttons & IN_JUMP) > 0 && iGroundEntity != -1)
|
||||
{
|
||||
float fSpeed[3];
|
||||
GetEntPropVector(client, Prop_Data, "m_vecAbsVelocity", fSpeed);
|
||||
@ -3518,7 +3599,7 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
SetEntPropVector(client, Prop_Data, "m_vecAbsVelocity", fSpeed);
|
||||
}
|
||||
|
||||
if(gA_StyleSettings[gA_Timers[client].iStyle].bAutobhop && gA_Timers[client].bAuto && (buttons & IN_JUMP) > 0 && mtMoveType == MOVETYPE_WALK && !bInWater)
|
||||
if(GetStyleSettingBool(gA_Timers[client].iStyle, "autobhop") && gA_Timers[client].bAuto && (buttons & IN_JUMP) > 0 && mtMoveType == MOVETYPE_WALK && !bInWater)
|
||||
{
|
||||
int iOldButtons = GetEntProp(client, Prop_Data, "m_nOldButtons");
|
||||
SetEntProp(client, Prop_Data, "m_nOldButtons", (iOldButtons & ~IN_JUMP));
|
||||
@ -3547,16 +3628,16 @@ public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3
|
||||
}
|
||||
}
|
||||
|
||||
if(bInStart && gCV_BlockPreJump.BoolValue && gA_StyleSettings[gA_Timers[client].iStyle].iPrespeed == 0 && (vel[2] > 0 || (buttons & IN_JUMP) > 0))
|
||||
if(bInStart && gCV_BlockPreJump.BoolValue && GetStyleSettingInt(gA_Timers[client].iStyle, "prespeed") == 0 && (vel[2] > 0 || (buttons & IN_JUMP) > 0))
|
||||
{
|
||||
vel[2] = 0.0;
|
||||
buttons &= ~IN_JUMP;
|
||||
}
|
||||
|
||||
// velocity limit
|
||||
if(iGroundEntity != -1 && view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fVelocityLimit > 0.0))
|
||||
if(iGroundEntity != -1 && GetStyleSettingFloat(gA_Timers[client].iStyle, "velocity_limit") > 0.0)
|
||||
{
|
||||
float fSpeedLimit = view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fVelocityLimit);
|
||||
float fSpeedLimit = GetStyleSettingFloat(gA_Timers[client].iStyle, "velocity_limit");
|
||||
|
||||
if(gB_Zones && Shavit_InsideZone(client, Zone_CustomSpeedLimit, -1))
|
||||
{
|
||||
@ -3679,15 +3760,15 @@ void UpdateStyleSettings(int client)
|
||||
{
|
||||
if(sv_autobunnyhopping != null)
|
||||
{
|
||||
sv_autobunnyhopping.ReplicateToClient(client, (gA_StyleSettings[gA_Timers[client].iStyle].bAutobhop && gA_Timers[client].bAuto)? "1":"0");
|
||||
sv_autobunnyhopping.ReplicateToClient(client, (GetStyleSettingBool(gA_Timers[client].iStyle, "autobhop") && gA_Timers[client].bAuto)? "1":"0");
|
||||
}
|
||||
|
||||
if(sv_enablebunnyhopping != null)
|
||||
{
|
||||
sv_enablebunnyhopping.ReplicateToClient(client, (gA_StyleSettings[gA_Timers[client].iStyle].bEnableBunnyhopping)? "1":"0");
|
||||
sv_enablebunnyhopping.ReplicateToClient(client, (GetStyleSettingBool(gA_Timers[client].iStyle, "bunnyhopping"))? "1":"0");
|
||||
}
|
||||
|
||||
UpdateAiraccelerate(client, view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fAiraccelerate));
|
||||
UpdateAiraccelerate(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "airaccelerate"));
|
||||
|
||||
SetEntityGravity(client, view_as<float>(gA_StyleSettings[gA_Timers[client].iStyle].fGravityMultiplier));
|
||||
SetEntityGravity(client, GetStyleSettingFloat(gA_Timers[client].iStyle, "gravity"));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user