Fetch callbacks for each call
Some checks failed
Compile / Build SM ${{ matrix.sm-version }} (1.12) (push) Has been cancelled
Compile / Release (push) Has been cancelled

This commit is contained in:
rtldg 2025-04-24 00:07:01 +00:00
parent 6c0a748464
commit 0458b67ac7
2 changed files with 31 additions and 49 deletions

View File

@ -117,9 +117,6 @@ int gI_Offset_m_afButtonDisabled = 0;
int gI_Offset_m_afButtonForced = 0; int gI_Offset_m_afButtonForced = 0;
// vscript!!! you're going to break all my checkpoints!!! // vscript!!! you're going to break all my checkpoints!!!
VScriptExecute gH_VScript_Timer_OnCheckpointSave;
VScriptExecute gH_VScript_Timer_OnCheckpointLoadPre;
VScriptExecute gH_VScript_Timer_OnCheckpointLoadPost;
VScriptFunction gH_VScript_Timer_SetCheckpointCustomData; VScriptFunction gH_VScript_Timer_SetCheckpointCustomData;
VScriptFunction gH_VScript_Timer_GetCheckpointCustomData; VScriptFunction gH_VScript_Timer_GetCheckpointCustomData;
enum VScript_Checkpoint_State enum VScript_Checkpoint_State
@ -1791,10 +1788,13 @@ void SaveCheckpointCache(int saver, int target, cp_cache_t cpcache, int index, H
gI_VScript_Checkpointing[target] = VCS_Saving; gI_VScript_Checkpointing[target] = VCS_Saving;
gH_VScript_Checkpoint_CustomData[target] = cpcache.customdata; gH_VScript_Checkpoint_CustomData[target] = cpcache.customdata;
if (gH_VScript_Timer_OnCheckpointSave) if (HSCRIPT_RootTable.ValueExists("Timer_OnCheckpointSave"))
{ {
gH_VScript_Timer_OnCheckpointSave.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(target)); // ::Timer_OnCheckpointSave <- function(player)
gH_VScript_Timer_OnCheckpointSave.Execute(); VScriptExecute Timer_OnCheckpointSave = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointSave"));
Timer_OnCheckpointSave.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(target));
Timer_OnCheckpointSave.Execute();
delete Timer_OnCheckpointSave;
} }
gI_VScript_Checkpointing[target] = VCS_NO_TOUCH; gI_VScript_Checkpointing[target] = VCS_NO_TOUCH;
@ -1902,10 +1902,13 @@ bool LoadCheckpointCache(int client, cp_cache_t cpcache, int index, bool force =
gI_VScript_Checkpointing[client] = VCS_Loading; gI_VScript_Checkpointing[client] = VCS_Loading;
gH_VScript_Checkpoint_CustomData[client] = cpcache.customdata; gH_VScript_Checkpoint_CustomData[client] = cpcache.customdata;
if (gH_VScript_Timer_OnCheckpointLoadPre) if (HSCRIPT_RootTable.ValueExists("Timer_OnCheckpointLoadPre"))
{ {
gH_VScript_Timer_OnCheckpointLoadPre.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client)); // ::Timer_OnCheckpointLoadPre <- function(player)
gH_VScript_Timer_OnCheckpointLoadPre.Execute(); VScriptExecute Timer_OnCheckpointLoadPre = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPre"));
Timer_OnCheckpointLoadPre.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
Timer_OnCheckpointLoadPre.Execute();
delete Timer_OnCheckpointLoadPre;
} }
gI_VScript_Checkpointing[client] = VCS_NO_TOUCH; gI_VScript_Checkpointing[client] = VCS_NO_TOUCH;
@ -2290,22 +2293,6 @@ public any Native_SaveCheckpointCache(Handle plugin, int numParams)
// This is called after mapspawn.nut for reference. (Which is before OnMapStart() too) // This is called after mapspawn.nut for reference. (Which is before OnMapStart() too)
public void VScript_OnScriptVMInitialized() public void VScript_OnScriptVMInitialized()
{ {
delete gH_VScript_Timer_OnCheckpointSave;
delete gH_VScript_Timer_OnCheckpointLoadPre;
delete gH_VScript_Timer_OnCheckpointLoadPost;
// ::Timer_OnCheckpointSave <- function(player)
if (HSCRIPT_RootTable.ValueExists("Timer_OnCheckpointSave"))
gH_VScript_Timer_OnCheckpointSave = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointSave"));
// ::Timer_OnCheckpointLoadPre <- function(player)
if (HSCRIPT_RootTable.ValueExists("Timer_OnCheckpointLoadPre"))
gH_VScript_Timer_OnCheckpointLoadPre = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPre"));
// ::Timer_OnCheckpointLoadPost <- function(player)
if (HSCRIPT_RootTable.ValueExists("Timer_OnCheckpointLoadPost"))
gH_VScript_Timer_OnCheckpointLoadPost = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPost"));
// function Timer_SetCheckpointCustomData(player, key, value) // function Timer_SetCheckpointCustomData(player, key, value)
if (!gH_VScript_Timer_SetCheckpointCustomData) if (!gH_VScript_Timer_SetCheckpointCustomData)
{ {
@ -2410,10 +2397,13 @@ void Do_Timer_OnCheckpointLoadPost(int client, StringMap customdata)
gI_VScript_Checkpointing[client] = VCS_Loading; gI_VScript_Checkpointing[client] = VCS_Loading;
gH_VScript_Checkpoint_CustomData[client] = customdata; gH_VScript_Checkpoint_CustomData[client] = customdata;
if (gH_VScript_Timer_OnCheckpointLoadPost) if (HSCRIPT_RootTable.ValueExists("Timer_OnCheckpointLoadPost"))
{ {
gH_VScript_Timer_OnCheckpointLoadPost.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client)); // ::Timer_OnCheckpointLoadPost <- function(player)
gH_VScript_Timer_OnCheckpointLoadPost.Execute(); VScriptExecute Timer_OnCheckpointLoadPost = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPost"));
Timer_OnCheckpointLoadPost.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
Timer_OnCheckpointLoadPost.Execute();
delete Timer_OnCheckpointLoadPost;
} }
gI_VScript_Checkpointing[client] = VCS_NO_TOUCH; gI_VScript_Checkpointing[client] = VCS_NO_TOUCH;

View File

@ -62,8 +62,6 @@ DynamicHook gH_TeleportDhook = null;
Address gI_TF2PreventBunnyJumpingAddr = Address_Null; Address gI_TF2PreventBunnyJumpingAddr = Address_Null;
// vscript (non-checkpoint natives) // vscript (non-checkpoint natives)
VScriptExecute gH_VScript_OnStart;
VScriptExecute gH_VScript_OnFinish;
VScriptFunction gH_VScript_Timer_GetTime; VScriptFunction gH_VScript_Timer_GetTime;
VScriptFunction gH_VScript_Timer_GetStatus; VScriptFunction gH_VScript_Timer_GetStatus;
VScriptFunction gH_VScript_Timer_GetTrack; VScriptFunction gH_VScript_Timer_GetTrack;
@ -2051,11 +2049,14 @@ public int Native_FinishMap(Handle handler, int numParams)
if (gB_VScript) if (gB_VScript)
{ {
if (gH_VScript_OnFinish) if (HSCRIPT_RootTable.ValueExists("Timer_OnFinish"))
{ {
gH_VScript_OnFinish.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client)); // ::Timer_OnFinish <- function(player)
gH_VScript_OnFinish.SetParam(2, FIELD_INTEGER, snapshot.iTimerTrack); VScriptExecute Timer_OnFinish = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnFinish"));
gH_VScript_OnFinish.Execute(); Timer_OnFinish.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
Timer_OnFinish.SetParam(2, FIELD_INTEGER, snapshot.iTimerTrack);
Timer_OnFinish.Execute();
delete Timer_OnFinish;
} }
} }
@ -2656,11 +2657,13 @@ void StartTimer(int client, int track, bool skipGroundCheck)
if (gB_VScript) if (gB_VScript)
{ {
if (gH_VScript_OnStart) if (HSCRIPT_RootTable.ValueExists("Timer_OnStart"))
{ {
gH_VScript_OnStart.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client)); VScriptExecute Timer_OnStart = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnStart"));
gH_VScript_OnStart.SetParam(2, FIELD_INTEGER, track); Timer_OnStart.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
gH_VScript_OnStart.Execute(); Timer_OnStart.SetParam(2, FIELD_INTEGER, track);
Timer_OnStart.Execute();
delete Timer_OnStart;
} }
} }
} }
@ -3953,17 +3956,6 @@ void UpdateStyleSettings(int client)
// This is called after mapspawn.nut for reference. (Which is before OnMapStart() too) // This is called after mapspawn.nut for reference. (Which is before OnMapStart() too)
public void VScript_OnScriptVMInitialized() public void VScript_OnScriptVMInitialized()
{ {
delete gH_VScript_OnStart;
delete gH_VScript_OnFinish;
// ::Timer_OnStart <- function(player)
if (HSCRIPT_RootTable.ValueExists("Timer_OnStart"))
gH_VScript_OnStart = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnStart"));
// ::Timer_OnFinish <- function(player)
if (HSCRIPT_RootTable.ValueExists("Timer_OnFinish"))
gH_VScript_OnFinish = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnFinish"));
// function Timer_GetTime(player) // returns a float // function Timer_GetTime(player) // returns a float
if (!gH_VScript_Timer_GetTime) if (!gH_VScript_Timer_GetTime)
{ {