Hi, is it possible to change this code from a kill function to a respawn function?
PHP Code:
#include <sdktools>
#include <simple_colors>
#include <sourcemod>
#include <halflife>
#include <sdkhooks>
#include <sdktools_hooks>
#include <sdktools_stocks>
#pragma semicolon 1
#pragma newdecls required
int g_iCampTime;
int g_iSlapDamage;
float g_fRadius;
//int g_iBeamSprite = -1;
//int g_iHaloSprite = -1;
float g_fLastPos[MAXPLAYERS + 1][3];
float g_fSpawnEyeAng[MAXPLAYERS + 1][3];
Handle g_hTimerChecker[MAXPLAYERS + 1];
int g_iCampCount[MAXPLAYERS + 1];
#define NAME "antiCBot"
#define AUTHOR "TRON"
#define VERSION "4.0"
public Plugin myinfo =
{
name = NAME,
author = AUTHOR,
version = VERSION,
};
public void OnPluginStart()
{
HookEvent("round_end", Event_RoundEnd, EventHookMode_Pre);
HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post);
HookEvent("player_death", Event_PlayerDeath);
LoadTranslations("Bot_AntiCamp.phrases");
LoadSettings();
}
public void OnMapStart()
{
//g_iBeamSprite = PrecacheModel("materials/sprites/laserbeam.vmt", true);
//g_iHaloSprite = PrecacheModel("materials/sprites/halo01.vmt", true);
PrecacheSound("buttons/button1.wav", true);
LoadSettings();
}
void LoadSettings()
{
char sBuffer[256];
BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "configs/Bot_AntiCamp.cfg");
if(!FileExists(sBuffer))
{
SetFailState("File doesnt exist: %s", sBuffer);
return;
}
KeyValues kv = new KeyValues("Configs1");
if(!kv.ImportFromFile(sBuffer))
{
delete kv;
SetFailState("File not found %s!", sBuffer);
return;
}
g_iCampTime = kv.GetNum("camp_time");
g_iSlapDamage = kv.GetNum("slap_damage");
g_fRadius = kv.GetFloat("radius");
delete kv;
}
public void OnClientDisconnect(int iClient)
{
DeleteTimer(iClient);
g_iCampCount[iClient] = 0;
}
public Action Event_RoundEnd(Event hEvent, char[] sEvName, bool bDontBroadcast)
{
for(int i = 1; i <= MaxClients; i++)
{
if(IsFakeClient(i))
{
DeleteTimer(i);
g_iCampCount[i] = 0;
}
}
}
public Action Event_PlayerDeath(Event hEvent, char[] sEvName, bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
DeleteTimer(iClient);
}
public Action Event_PlayerSpawn(Event hEvent, char[] sEvName, bool bDontBroadcast)
{
//if(IsWarmup()) return;
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
GetClientAbsOrigin(iClient, g_fLastPos[iClient]);
GetClientAbsOrigin(iClient, g_fSpawnEyeAng[iClient]);
DeleteTimer(iClient);
g_hTimerChecker[iClient] = CreateTimer(2.0, Timer_Checker, GetClientUserId(iClient), TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
}
public Action Timer_Checker(Handle hTimer, any iClientUserId)
{
int iClient = GetClientOfUserId(iClientUserId);
if(!iClient || !IsPlayerAlive(iClient)|| !IsFakeClient(iClient))
{
g_hTimerChecker[iClient] = null;
return Plugin_Stop;
}
if(g_hTimerChecker[iClient] == null) return Plugin_Stop;
if(IsCamping(iClient)) g_iCampCount[iClient] += 2;
else g_iCampCount[iClient] = 0;
if(g_iCampCount[iClient] == g_iCampTime)
for(int i = 1; i <= MaxClients; i++)
//S_PrintToChat(i, "%T", "Camp_Message1", i, iClient);
if(g_iCampCount[iClient] >= g_iCampTime)
{
float fVec[3];
GetClientAbsOrigin(iClient, fVec);
fVec[2] += 10;
//TE_SetupBeamRingPoint(fVec, 10.0, 375.0, g_iBeamSprite, g_iHaloSprite, 0, 10, 0.6, 10.0, 0.5, GetClientTeam(iClient) == 3 ? {0, 0, 150, 255} : {150, 0, 0, 255}, 10, 0);
//TE_SendToAll();
//EmitAmbientSound("buttons/blip1.wav", fVec, iClient, SNDLEVEL_RAIDSIREN);
SlapPlayer(iClient, g_iSlapDamage, true);
}
return Plugin_Continue;
}
bool IsCamping(int iClient)
{
float fCurrentPos[3];
GetClientAbsOrigin(iClient, fCurrentPos);
if(g_fRadius > GetVectorDistance(g_fSpawnEyeAng[iClient], fCurrentPos)) return false;
if(g_fRadius > GetVectorDistance(g_fLastPos[iClient], fCurrentPos)) return true;
g_fLastPos[iClient] = fCurrentPos;
return false;
}
void DeleteTimer(int iClient)
{
if(g_hTimerChecker[iClient] != null)
{
KillTimer(g_hTimerChecker[iClient]);
g_hTimerChecker[iClient] = null;
}
}
// bool IsWarmup()
// {
// return (GameRules_GetProp("m_bWarmupPeriod") == 1);
// }