Skip to content

Commit 0eaff38

Browse files
committed
see if we can cache the player HSCRIPT
1 parent 8fe3895 commit 0eaff38

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

addons/sourcemod/scripting/shavit-checkpoints.sp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ enum VScript_Checkpoint_State
127127
}
128128
VScript_Checkpoint_State gI_VScript_Checkpointing[MAXPLAYERS+1];
129129
StringMap gH_VScript_Checkpoint_CustomData[MAXPLAYERS+1];
130+
// Caching this makes me happy
131+
HSCRIPT gH_PlayerHSCRIPT[MAXPLAYERS+1];
130132

131133

132134
public Plugin myinfo =
@@ -513,6 +515,11 @@ public void OnClientPutInServer(int client)
513515
{
514516
gF_NextSuicide[client] = GetGameTime();
515517

518+
if (gB_VScript)
519+
{
520+
gH_PlayerHSCRIPT[client] = VScript_EntityToHScript(client);
521+
}
522+
516523
if (IsFakeClient(client))
517524
{
518525
return;
@@ -1793,7 +1800,7 @@ void SaveCheckpointCache(int saver, int target, cp_cache_t cpcache, int index, H
17931800
{
17941801
// ::Timer_OnCheckpointSave <- function(player)
17951802
VScriptExecute Timer_OnCheckpointSave = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointSave"));
1796-
Timer_OnCheckpointSave.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(target));
1803+
Timer_OnCheckpointSave.SetParam(1, FIELD_HSCRIPT, gH_PlayerHSCRIPT[target]);
17971804
Timer_OnCheckpointSave.Execute();
17981805
delete Timer_OnCheckpointSave;
17991806
}
@@ -1907,7 +1914,7 @@ bool LoadCheckpointCache(int client, cp_cache_t cpcache, int index, bool force =
19071914
{
19081915
// ::Timer_OnCheckpointLoadPre <- function(player)
19091916
VScriptExecute Timer_OnCheckpointLoadPre = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPre"));
1910-
Timer_OnCheckpointLoadPre.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
1917+
Timer_OnCheckpointLoadPre.SetParam(1, FIELD_HSCRIPT, gH_PlayerHSCRIPT[client]);
19111918
Timer_OnCheckpointLoadPre.Execute();
19121919
delete Timer_OnCheckpointLoadPre;
19131920
}
@@ -2403,7 +2410,7 @@ void Do_Timer_OnCheckpointLoadPost(int client, StringMap customdata)
24032410
{
24042411
// ::Timer_OnCheckpointLoadPost <- function(player)
24052412
VScriptExecute Timer_OnCheckpointLoadPost = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPost"));
2406-
Timer_OnCheckpointLoadPost.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
2413+
Timer_OnCheckpointLoadPost.SetParam(1, FIELD_HSCRIPT, gH_PlayerHSCRIPT[client]);
24072414
Timer_OnCheckpointLoadPost.Execute();
24082415
delete Timer_OnCheckpointLoadPost;
24092416
}

addons/sourcemod/scripting/shavit-core.sp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ Address gI_TF2PreventBunnyJumpingAddr = Address_Null;
6565
VScriptFunction gH_VScript_Timer_GetTime;
6666
VScriptFunction gH_VScript_Timer_GetStatus;
6767
VScriptFunction gH_VScript_Timer_GetTrack;
68-
68+
// Caching this makes me happy
69+
HSCRIPT gH_PlayerHSCRIPT[MAXPLAYERS+1];
6970

7071
// database handle
7172
Database gH_SQL = null;
@@ -2069,7 +2070,7 @@ public int Native_FinishMap(Handle handler, int numParams)
20692070
{
20702071
// ::Timer_OnFinish <- function(player)
20712072
VScriptExecute Timer_OnFinish = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnFinish"));
2072-
Timer_OnFinish.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
2073+
Timer_OnFinish.SetParam(1, FIELD_HSCRIPT, gH_PlayerHSCRIPT[client]);
20732074
Timer_OnFinish.SetParam(2, FIELD_INTEGER, snapshot.iTimerTrack);
20742075
Timer_OnFinish.Execute();
20752076
delete Timer_OnFinish;
@@ -2685,8 +2686,9 @@ void StartTimer(int client, int track, bool skipGroundCheck)
26852686
{
26862687
if (HSCRIPT_RootTable.ValueExists("Timer_OnStart"))
26872688
{
2689+
// ::Timer_OnStart <- function(player, track)
26882690
VScriptExecute Timer_OnStart = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnStart"));
2689-
Timer_OnStart.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
2691+
Timer_OnStart.SetParam(1, FIELD_HSCRIPT, gH_PlayerHSCRIPT[client]);
26902692
Timer_OnStart.SetParam(2, FIELD_INTEGER, track);
26912693
Timer_OnStart.Execute();
26922694
delete Timer_OnStart;
@@ -2804,7 +2806,12 @@ public void OnClientPutInServer(int client)
28042806
StopTimer(client);
28052807
Bhopstats_OnClientPutInServer(client);
28062808

2807-
if(!IsClientConnected(client) || IsFakeClient(client))
2809+
if (gB_VScript)
2810+
{
2811+
gH_PlayerHSCRIPT[client] = VScript_EntityToHScript(client);
2812+
}
2813+
2814+
if (IsFakeClient(client))
28082815
{
28092816
return;
28102817
}

0 commit comments

Comments
 (0)