mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-06 18:08:26 +00:00
Add OnStart & OnFinish and rework some things
This commit is contained in:
parent
4cd43629b3
commit
791cf0de2c
@ -243,6 +243,11 @@ public void OnPluginStart()
|
|||||||
if (gB_Late)
|
if (gB_Late)
|
||||||
{
|
{
|
||||||
Shavit_OnChatConfigLoaded();
|
Shavit_OnChatConfigLoaded();
|
||||||
|
|
||||||
|
if (gB_VScript && VScript_IsScriptVMInitialized())
|
||||||
|
{
|
||||||
|
VScript_OnScriptVMInitialized();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2284,44 +2289,48 @@ public any Native_SaveCheckpointCache(Handle plugin, int numParams)
|
|||||||
|
|
||||||
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)
|
// ::Timer_OnCheckpointSave <- function(player)
|
||||||
if (VScript_GetGlobalFunction("Timer_OnCheckpointSave"))
|
if (VScript_GetGlobalFunction("Timer_OnCheckpointSave"))
|
||||||
gH_VScript_Timer_OnCheckpointSave = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointSave"));
|
gH_VScript_Timer_OnCheckpointSave = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointSave"));
|
||||||
else
|
|
||||||
gH_VScript_Timer_OnCheckpointSave = view_as<VScriptExecute>(Address_Null);
|
|
||||||
|
|
||||||
// ::Timer_OnCheckpointLoadPre <- function(player)
|
// ::Timer_OnCheckpointLoadPre <- function(player)
|
||||||
if (VScript_GetGlobalFunction("Timer_OnCheckpointLoadPre"))
|
if (VScript_GetGlobalFunction("Timer_OnCheckpointLoadPre"))
|
||||||
gH_VScript_Timer_OnCheckpointLoadPre = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPre"));
|
gH_VScript_Timer_OnCheckpointLoadPre = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPre"));
|
||||||
else
|
|
||||||
gH_VScript_Timer_OnCheckpointLoadPre = view_as<VScriptExecute>(Address_Null);
|
|
||||||
|
|
||||||
// ::Timer_OnCheckpointLoadPost <- function(player)
|
// ::Timer_OnCheckpointLoadPost <- function(player)
|
||||||
if (VScript_GetGlobalFunction("Timer_OnCheckpointLoadPost"))
|
if (VScript_GetGlobalFunction("Timer_OnCheckpointLoadPost"))
|
||||||
gH_VScript_Timer_OnCheckpointLoadPost = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPost"));
|
gH_VScript_Timer_OnCheckpointLoadPost = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnCheckpointLoadPost"));
|
||||||
else
|
|
||||||
gH_VScript_Timer_OnCheckpointLoadPost = view_as<VScriptExecute>(Address_Null);
|
|
||||||
|
|
||||||
// function Timer_SetCheckpointCustomData(player, key, value)
|
// function Timer_SetCheckpointCustomData(player, key, value)
|
||||||
gH_VScript_Timer_SetCheckpointCustomData = VScript_CreateFunction();
|
if (!gH_VScript_Timer_SetCheckpointCustomData)
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.SetScriptName("Timer_SetCheckpointCustomData");
|
{
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.Return = FIELD_VOID;
|
gH_VScript_Timer_SetCheckpointCustomData = VScript_CreateFunction();
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.SetParam(1, FIELD_HSCRIPT);
|
gH_VScript_Timer_SetCheckpointCustomData.SetScriptName("Timer_SetCheckpointCustomData");
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.SetParam(2, FIELD_CSTRING);
|
gH_VScript_Timer_SetCheckpointCustomData.Return = FIELD_VOID;
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.SetParam(3, FIELD_CSTRING);
|
gH_VScript_Timer_SetCheckpointCustomData.SetParam(1, FIELD_HSCRIPT);
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.SetFunctionEmpty();
|
gH_VScript_Timer_SetCheckpointCustomData.SetParam(2, FIELD_CSTRING);
|
||||||
|
gH_VScript_Timer_SetCheckpointCustomData.SetParam(3, FIELD_CSTRING);
|
||||||
|
gH_VScript_Timer_SetCheckpointCustomData.SetFunctionEmpty();
|
||||||
|
gH_VScript_Timer_SetCheckpointCustomData.CreateDetour().Enable(Hook_Pre, Detour_Timer_SetCheckpointCustomData);
|
||||||
|
}
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.Register();
|
gH_VScript_Timer_SetCheckpointCustomData.Register();
|
||||||
gH_VScript_Timer_SetCheckpointCustomData.CreateDetour().Enable(Hook_Pre, Detour_Timer_SetCheckpointCustomData);
|
|
||||||
|
|
||||||
// function Timer_GetCheckpointCustomData(player, key, value)
|
// function Timer_GetCheckpointCustomData(player, key, value)
|
||||||
gH_VScript_Timer_GetCheckpointCustomData = VScript_CreateFunction();
|
if (!gH_VScript_Timer_GetCheckpointCustomData)
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.SetScriptName("Timer_GetCheckpointCustomData");
|
{
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.Return = FIELD_CSTRING;
|
gH_VScript_Timer_GetCheckpointCustomData = VScript_CreateFunction();
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.SetParam(1, FIELD_HSCRIPT);
|
gH_VScript_Timer_GetCheckpointCustomData.SetScriptName("Timer_GetCheckpointCustomData");
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.SetParam(2, FIELD_CSTRING);
|
gH_VScript_Timer_GetCheckpointCustomData.Return = FIELD_CSTRING;
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.SetFunctionEmpty();
|
gH_VScript_Timer_GetCheckpointCustomData.SetParam(1, FIELD_HSCRIPT);
|
||||||
|
gH_VScript_Timer_GetCheckpointCustomData.SetParam(2, FIELD_CSTRING);
|
||||||
|
gH_VScript_Timer_GetCheckpointCustomData.SetFunctionEmpty();
|
||||||
|
gH_VScript_Timer_GetCheckpointCustomData.CreateDetour().Enable(Hook_Pre, Detour_Timer_GetCheckpointCustomData);
|
||||||
|
}
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.Register();
|
gH_VScript_Timer_GetCheckpointCustomData.Register();
|
||||||
gH_VScript_Timer_GetCheckpointCustomData.CreateDetour().Enable(Hook_Pre, Detour_Timer_GetCheckpointCustomData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MRESReturn Detour_Timer_SetCheckpointCustomData(DHookParam params)
|
MRESReturn Detour_Timer_SetCheckpointCustomData(DHookParam params)
|
||||||
|
|||||||
@ -62,10 +62,8 @@ DynamicHook gH_TeleportDhook = null;
|
|||||||
Address gI_TF2PreventBunnyJumpingAddr = Address_Null;
|
Address gI_TF2PreventBunnyJumpingAddr = Address_Null;
|
||||||
|
|
||||||
// vscript (non-checkpoint natives)
|
// vscript (non-checkpoint natives)
|
||||||
#if 0
|
|
||||||
VScriptExecute gH_VScript_OnStart;
|
VScriptExecute gH_VScript_OnStart;
|
||||||
VScriptExecute gH_VScript_OnEnd;
|
VScriptExecute gH_VScript_OnFinish;
|
||||||
#endif
|
|
||||||
VScriptFunction gH_VScript_Timer_GetTime;
|
VScriptFunction gH_VScript_Timer_GetTime;
|
||||||
VScriptFunction gH_VScript_Timer_GetStatus;
|
VScriptFunction gH_VScript_Timer_GetStatus;
|
||||||
|
|
||||||
@ -135,6 +133,7 @@ bool gB_ReplayPlayback = false;
|
|||||||
bool gB_Rankings = false;
|
bool gB_Rankings = false;
|
||||||
bool gB_HUD = false;
|
bool gB_HUD = false;
|
||||||
bool gB_AdminMenu = false;
|
bool gB_AdminMenu = false;
|
||||||
|
bool gB_VScript = false;
|
||||||
|
|
||||||
TopMenu gH_AdminMenu = null;
|
TopMenu gH_AdminMenu = null;
|
||||||
TopMenuObject gH_TimerCommands = INVALID_TOPMENUOBJECT;
|
TopMenuObject gH_TimerCommands = INVALID_TOPMENUOBJECT;
|
||||||
@ -452,6 +451,11 @@ public void OnPluginStart()
|
|||||||
OnClientPutInServer(i);
|
OnClientPutInServer(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gB_VScript && VScript_IsScriptVMInitialized())
|
||||||
|
{
|
||||||
|
VScript_OnScriptVMInitialized();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,6 +652,10 @@ public void OnLibraryAdded(const char[] name)
|
|||||||
{
|
{
|
||||||
gB_AdminMenu = true;
|
gB_AdminMenu = true;
|
||||||
}
|
}
|
||||||
|
else if (StrEqual(name, "vscript"))
|
||||||
|
{
|
||||||
|
gB_VScript = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnLibraryRemoved(const char[] name)
|
public void OnLibraryRemoved(const char[] name)
|
||||||
@ -678,6 +686,10 @@ public void OnLibraryRemoved(const char[] name)
|
|||||||
gH_AdminMenu = null;
|
gH_AdminMenu = null;
|
||||||
gH_TimerCommands = INVALID_TOPMENUOBJECT;
|
gH_TimerCommands = INVALID_TOPMENUOBJECT;
|
||||||
}
|
}
|
||||||
|
else if (StrEqual(name, "vscript"))
|
||||||
|
{
|
||||||
|
gB_VScript = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
@ -2032,6 +2044,15 @@ public int Native_FinishMap(Handle handler, int numParams)
|
|||||||
Call_PushCell(timestamp);
|
Call_PushCell(timestamp);
|
||||||
Call_Finish();
|
Call_Finish();
|
||||||
|
|
||||||
|
if (gB_VScript)
|
||||||
|
{
|
||||||
|
if (gH_VScript_OnFinish)
|
||||||
|
{
|
||||||
|
gH_VScript_OnFinish.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
|
||||||
|
gH_VScript_OnFinish.Execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
StopTimer(client);
|
StopTimer(client);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -2610,6 +2631,15 @@ void StartTimer(int client, int track, bool skipGroundCheck)
|
|||||||
Call_PushCell(client);
|
Call_PushCell(client);
|
||||||
Call_PushCell(track);
|
Call_PushCell(track);
|
||||||
Call_Finish();
|
Call_Finish();
|
||||||
|
|
||||||
|
if (gB_VScript)
|
||||||
|
{
|
||||||
|
if (gH_VScript_OnStart)
|
||||||
|
{
|
||||||
|
gH_VScript_OnStart.SetParam(1, FIELD_HSCRIPT, VScript_EntityToHScript(client));
|
||||||
|
gH_VScript_OnStart.Execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
else if(result == Plugin_Handled || result == Plugin_Stop)
|
else if(result == Plugin_Handled || result == Plugin_Stop)
|
||||||
@ -3895,36 +3925,40 @@ void UpdateStyleSettings(int client)
|
|||||||
|
|
||||||
public void VScript_OnScriptVMInitialized()
|
public void VScript_OnScriptVMInitialized()
|
||||||
{
|
{
|
||||||
#if 0
|
delete gH_VScript_OnStart;
|
||||||
|
delete gH_VScript_OnFinish;
|
||||||
|
|
||||||
// ::Timer_OnStart <- function(player)
|
// ::Timer_OnStart <- function(player)
|
||||||
if (VScript_GetGlobalFunction("Timer_OnStart"))
|
if (VScript_GetGlobalFunction("Timer_OnStart"))
|
||||||
gH_VScript_OnStart = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnStart"));
|
gH_VScript_OnStart = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnStart"));
|
||||||
else
|
|
||||||
gH_VScript_OnStart = view_as<VScriptExecute>(Address_Null);
|
// ::Timer_OnFinish <- function(player)
|
||||||
// ::Timer_OnEnd <- function(player)
|
if (VScript_GetGlobalFunction("Timer_OnFinish"))
|
||||||
if (VScript_GetGlobalFunction("Timer_OnEnd"))
|
gH_VScript_OnFinish = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnFinish"));
|
||||||
gH_VScript_OnEnd = new VScriptExecute(HSCRIPT_RootTable.GetValue("Timer_OnEnd"));
|
|
||||||
else
|
|
||||||
gH_VScript_OnEnd = view_as<VScriptExecute>(Address_Null);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// function Timer_GetTime(player) // returns a float
|
// function Timer_GetTime(player) // returns a float
|
||||||
gH_VScript_Timer_GetTime = VScript_CreateFunction();
|
if (!gH_VScript_Timer_GetTime)
|
||||||
gH_VScript_Timer_GetTime.SetScriptName("Timer_GetTime");
|
{
|
||||||
gH_VScript_Timer_GetTime.Return = FIELD_FLOAT;
|
gH_VScript_Timer_GetTime = VScript_CreateFunction();
|
||||||
gH_VScript_Timer_GetTime.SetParam(1, FIELD_HSCRIPT);
|
gH_VScript_Timer_GetTime.SetScriptName("Timer_GetTime");
|
||||||
gH_VScript_Timer_GetTime.SetFunctionEmpty();
|
gH_VScript_Timer_GetTime.Return = FIELD_FLOAT;
|
||||||
|
gH_VScript_Timer_GetTime.SetParam(1, FIELD_HSCRIPT);
|
||||||
|
gH_VScript_Timer_GetTime.SetFunctionEmpty();
|
||||||
|
gH_VScript_Timer_GetTime.CreateDetour().Enable(Hook_Pre, Detour_Timer_GetTime);
|
||||||
|
}
|
||||||
gH_VScript_Timer_GetTime.Register();
|
gH_VScript_Timer_GetTime.Register();
|
||||||
gH_VScript_Timer_GetTime.CreateDetour().Enable(Hook_Pre, Detour_Timer_GetTime);
|
|
||||||
|
|
||||||
// function gH_VScript_Timer_GetStatus(player) // returns a int -- 0=stopped, 1=running, 2=paused
|
// function gH_VScript_Timer_GetStatus(player) // returns a int -- 0=stopped, 1=running, 2=paused
|
||||||
gH_VScript_Timer_GetStatus = VScript_CreateFunction();
|
if (!gH_VScript_Timer_GetStatus)
|
||||||
gH_VScript_Timer_GetStatus.SetScriptName("Timer_GetStatus");
|
{
|
||||||
gH_VScript_Timer_GetStatus.Return = FIELD_INTEGER;
|
gH_VScript_Timer_GetStatus = VScript_CreateFunction();
|
||||||
gH_VScript_Timer_GetStatus.SetParam(1, FIELD_HSCRIPT);
|
gH_VScript_Timer_GetStatus.SetScriptName("Timer_GetStatus");
|
||||||
gH_VScript_Timer_GetStatus.SetFunctionEmpty();
|
gH_VScript_Timer_GetStatus.Return = FIELD_INTEGER;
|
||||||
|
gH_VScript_Timer_GetStatus.SetParam(1, FIELD_HSCRIPT);
|
||||||
|
gH_VScript_Timer_GetStatus.SetFunctionEmpty();
|
||||||
|
gH_VScript_Timer_GetStatus.CreateDetour().Enable(Hook_Pre, Detour_Timer_GetStatus);
|
||||||
|
}
|
||||||
gH_VScript_Timer_GetStatus.Register();
|
gH_VScript_Timer_GetStatus.Register();
|
||||||
gH_VScript_Timer_GetStatus.CreateDetour().Enable(Hook_Pre, Detour_Timer_GetStatus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MRESReturn Detour_Timer_GetTime(DHookReturn hret, DHookParam params)
|
MRESReturn Detour_Timer_GetTime(DHookReturn hret, DHookParam params)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user