@ololoex,
PHP:L 11/25/2017 - 09:08:32: SourceMod error session started L 11/25/2017 - 09:08:32: Info (map "zm_dust2v2_v3") (file "errors_20171125.log") L 11/25/2017 - 09:08:32: [SM] Exception reported: Invalid timer handle 42c039b (error 3) L 11/25/2017 - 09:08:32: [SM] Blaming: zombiereloaded/zr_change_fov.smx L 11/25/2017 - 09:08:32: [SM] Call stack trace: L 11/25/2017 - 09:08:32: [SM] [0] KillTimer L 11/25/2017 - 09:08:32: [SM] [1] Line 43, C:\Users\User\YandexDisk\Mr. GiG Servers\Compil\Компилятор\ZR Compil\zr_change_fov.sp::OnClientDisconnect
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <zombiereloaded>
public Plugin myinfo =
{
name = "[ZR] Change FOV",
author = "Extr1m (Michail)",
description = "Adds a unique class of zombies",
version = "1.1",
url = "https://sourcemod.net/"
};
#define DEFAULT_FOV 90
ConVar gCV_PEnabled = null;
ConVar gCV_PFovZombie = null;
bool gB_PEnabled = true;
int gI_PFovZombie;
Handle SpawnTimer[MAXPLAYERS+1];
public void OnPluginStart()
{
HookEvent("player_spawn", Event_PlayerSpawn);
gCV_PEnabled = CreateConVar("sm_fov_enabled", "1", "Включить/Выключить плагин", 0, true, 0.0, true, 1.0);
gCV_PFovZombie = CreateConVar("sm_fov_number", "110.0", "Значение FOV", 0, true, 0.0, true, 200.0);
gCV_PEnabled.AddChangeHook(ConVarChange);
gCV_PFovZombie.AddChangeHook(ConVarChange);
gB_PEnabled = gCV_PEnabled.BoolValue;
gI_PFovZombie = gCV_PFovZombie.IntValue;
}
public void OnClientDisconnect(int client)
{
if(SpawnTimer[client] != null)
{
KillTimer(SpawnTimer[client]);
SpawnTimer[client] = null;
}
}
public void ConVarChange(ConVar CVar, const char[] oldVal, const char[] newVal)
{
gB_PEnabled = gCV_PEnabled.BoolValue;
gI_PFovZombie = gCV_PFovZombie.IntValue;
}
public void Event_PlayerSpawn(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(hEvent, "userid"));
SpawnTimer[client] = CreateTimer(0.2, SpawnPlayer, client);
}
public Action SpawnPlayer(Handle timer, any client)
{
if(gB_PEnabled && IsPlayerAlive(client))
{
if(ZR_IsClientHuman(client))
{
SetEntProp(client, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
SetEntProp(client, Prop_Send, "m_iFOV", DEFAULT_FOV);
}
else
{
SetEntProp(client, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
SetEntProp(client, Prop_Send, "m_iFOV", gI_PFovZombie);
}
}
SpawnTimer[client] = null;
}
public ZR_OnClientHumanPost(int client, bool respawn, bool protect)
{
if(gB_PEnabled)
{
SetEntProp(client, Prop_Send, "m_iDefaultFOV", DEFAULT_FOV);
SetEntProp(client, Prop_Send, "m_iFOV", DEFAULT_FOV);
}
}
public ZR_OnClientInfected(client, attacker, bool:motherInfect, bool:respawnOverride, bool:respawn)
{
if(gB_PEnabled)
{
SetEntProp(client, Prop_Send, "m_iDefaultFOV", gI_PFovZombie);
SetEntProp(client, Prop_Send, "m_iFOV", gI_PFovZombie);
}
}