questionable how effective teleport spotting now is, but probably no lag anymore
This commit is contained in:
parent
cace8afc41
commit
38fdad89ba
@ -28,8 +28,6 @@ bool chat_cooldown = false;
|
|||||||
//admins & vips
|
//admins & vips
|
||||||
bool admins[MAXPLAYERS + 1];
|
bool admins[MAXPLAYERS + 1];
|
||||||
bool vips[MAXPLAYERS + 1];
|
bool vips[MAXPLAYERS + 1];
|
||||||
bool teleport_hook = false;
|
|
||||||
bool multiple_hook = false;
|
|
||||||
|
|
||||||
//socket for bot input
|
//socket for bot input
|
||||||
Handle global_socket;
|
Handle global_socket;
|
||||||
@ -63,6 +61,7 @@ public void OnPluginStart()
|
|||||||
//UDP connection
|
//UDP connection
|
||||||
connect_socket();
|
connect_socket();
|
||||||
chat_cooldown = false;
|
chat_cooldown = false;
|
||||||
|
round_start_void();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reset_target_human_tp_coord(int client)
|
public void reset_target_human_tp_coord(int client)
|
||||||
@ -259,8 +258,6 @@ public void unhookAll()
|
|||||||
UnhookSingleEntityOutput(entity_tp, "OnTrigger", OnEntityOutPut_tp);
|
UnhookSingleEntityOutput(entity_tp, "OnTrigger", OnEntityOutPut_tp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
teleport_hook = false;
|
|
||||||
multiple_hook = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
|
public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
|
||||||
@ -268,23 +265,23 @@ public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
|
|||||||
unhookAll();
|
unhookAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast)
|
public void round_start_void()
|
||||||
{
|
{
|
||||||
unhookAll();
|
unhookAll();
|
||||||
for (int i = 1; i <= MaxClients; i++)
|
for (int i = 1; i <= MaxClients; i++)
|
||||||
if (IsValidClient(i) && !IsFakeClient(i))
|
if (IsValidClient(i) && !IsFakeClient(i))
|
||||||
{
|
{
|
||||||
target_friend[i] = 0;
|
target_friend[i] = 0;
|
||||||
target_enemy[i] = 0;
|
target_enemy[i] = 0;
|
||||||
reset_target_human_tp_coord(i);
|
reset_target_human_tp_coord(i);
|
||||||
}
|
}
|
||||||
int entity_tp = MaxClients + 1;
|
int entity_tp = MaxClients + 1;
|
||||||
int entity_mp = MaxClients + 1;
|
int entity_mp = MaxClients + 1;
|
||||||
while((entity_mp = FindEntityByClassname(entity_mp, "trigger_multiple")) != -1)
|
while((entity_mp = FindEntityByClassname(entity_mp, "trigger_multiple")) != -1)
|
||||||
{
|
{
|
||||||
char targetName[64];
|
char targetName[64];
|
||||||
GetEntPropString(entity_mp, Prop_Data, "m_iName", targetName, sizeof(targetName));
|
GetEntPropString(entity_mp, Prop_Data, "m_iName", targetName, sizeof(targetName));
|
||||||
if (strlen(targetName) > 0)
|
if (strlen(targetName) > 0)
|
||||||
{
|
{
|
||||||
HookSingleEntityOutput(entity_mp, "OnStartTouch", OnEntityOutPut_mp, true);
|
HookSingleEntityOutput(entity_mp, "OnStartTouch", OnEntityOutPut_mp, true);
|
||||||
HookSingleEntityOutput(entity_mp, "OnTrigger", OnEntityOutPut_mp, true);
|
HookSingleEntityOutput(entity_mp, "OnTrigger", OnEntityOutPut_mp, true);
|
||||||
@ -302,6 +299,11 @@ public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast)
|
||||||
|
{
|
||||||
|
round_start_void();
|
||||||
|
}
|
||||||
|
|
||||||
public void OnEntityOutPut_mp(const char[] output, int entity_index, int client, float delay)
|
public void OnEntityOutPut_mp(const char[] output, int entity_index, int client, float delay)
|
||||||
{
|
{
|
||||||
if (IsValidEdict(entity_index) && origin_command_check(entity_index))
|
if (IsValidEdict(entity_index) && origin_command_check(entity_index))
|
||||||
@ -322,14 +324,12 @@ public void OnEntityOutPut_mp(const char[] output, int entity_index, int client,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!multiple_hook)
|
UnhookSingleEntityOutput(entity_index, "OnStartTouch", OnEntityOutPut_mp);
|
||||||
{
|
UnhookSingleEntityOutput(entity_index, "OnTrigger", OnEntityOutPut_mp);
|
||||||
multiple_hook = true;
|
//experimental if unhooking very shortly solves tp lag
|
||||||
UnhookSingleEntityOutput(entity_index, "OnStartTouch", OnEntityOutPut_mp);
|
DataPack dPack;
|
||||||
UnhookSingleEntityOutput(entity_index, "OnTrigger", OnEntityOutPut_mp);
|
CreateDataTimer(0.5, reset_hook_mp, dPack);
|
||||||
//experimental if unhooking very shortly solves tp lag
|
dPack.WriteCell(entity_index);
|
||||||
CreateTimer(0.5, reset_hook_mp, INVALID_HANDLE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnEntityOutPut_tp(const char[] output, int entity_index, int client, float delay)
|
public void OnEntityOutPut_tp(const char[] output, int entity_index, int client, float delay)
|
||||||
@ -350,14 +350,12 @@ public void OnEntityOutPut_tp(const char[] output, int entity_index, int client,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!teleport_hook)
|
UnhookSingleEntityOutput(entity_index, "OnStartTouch", OnEntityOutPut_tp);
|
||||||
{
|
UnhookSingleEntityOutput(entity_index, "OnTrigger", OnEntityOutPut_tp);
|
||||||
teleport_hook = true;
|
//experimental if unhooking very shortly solves tp lag
|
||||||
UnhookSingleEntityOutput(entity_index, "OnStartTouch", OnEntityOutPut_tp);
|
DataPack dPack;
|
||||||
UnhookSingleEntityOutput(entity_index, "OnTrigger", OnEntityOutPut_tp);
|
CreateDataTimer(0.5, reset_hook_tp, dPack);
|
||||||
//experimental if unhooking very shortly solves tp lag
|
dPack.WriteCell(entity_index);
|
||||||
CreateTimer(0.5, reset_hook_tp, INVALID_HANDLE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
@ -591,15 +589,27 @@ public bool is_bot_player(int client)
|
|||||||
return is_autism_bot1(client) || is_autism_bot2(client) || is_autism_bot3(client) || is_autism_bot4(client);
|
return is_autism_bot1(client) || is_autism_bot2(client) || is_autism_bot3(client) || is_autism_bot4(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action reset_hook_mp(Handle timer, any data)
|
public Action reset_hook_mp(Handle timer, DataPack dPack)
|
||||||
{
|
{
|
||||||
multiple_hook = false;
|
dPack.Reset();
|
||||||
|
int entity_index = dPack.ReadCell();
|
||||||
|
if (IsValidEdict(entity_index))
|
||||||
|
{
|
||||||
|
HookSingleEntityOutput(entity_index, "OnStartTouch", OnEntityOutPut_mp, true);
|
||||||
|
HookSingleEntityOutput(entity_index, "OnTrigger", OnEntityOutPut_mp, true);
|
||||||
|
}
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action reset_hook_tp(Handle timer, any data)
|
public Action reset_hook_tp(Handle timer, DataPack dPack)
|
||||||
{
|
{
|
||||||
teleport_hook = false;
|
dPack.Reset();
|
||||||
|
int entity_index = dPack.ReadCell();
|
||||||
|
if (IsValidEdict(entity_index))
|
||||||
|
{
|
||||||
|
HookSingleEntityOutput(entity_index, "OnStartTouch", OnEntityOutPut_tp, true);
|
||||||
|
HookSingleEntityOutput(entity_index, "OnTrigger", OnEntityOutPut_tp, true);
|
||||||
|
}
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user