NoZoom в конце раунда

pokypka20

Участник
Сообщения
244
Реакции
31
Нашол плагин от FrozDark который убирает zoom со всех снайперских винтовок.
Но в плагине есть ошибка после 1 выстрела без прицела зум снова возвращается, как это можно исправить?

И еще можно ли сделать чтобы ноузум был только после события round_end и при round_start зум опять был разрешен.
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>

#define PLUGIN_VERSION "1.0"
#define SNIPERS	"awp|scout|sg550|g3sg1"

new bool:b_enable;

public Plugin:myinfo = 
{
	name = "No zoom",
	author = "FrozDark (HLModders LLC)",
	description = "No zoom!",
	version = PLUGIN_VERSION,
	url = "www.hlmod.ru"
}

public OnPluginStart()
{
	CreateConVar("no_zoom_version", PLUGIN_VERSION, "No zoom plugin version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_CHEAT|FCVAR_DONTRECORD);
	
	new Handle:g_hEnable = CreateConVar("no_zoom_enable", "1", "Disables zoom on snipers", 0, true, 0.0, true, 1.0);
	b_enable = GetConVarBool(g_hEnable);
	HookConVarChange(g_hEnable, OnSwitchPlugin);
	
	HookEvent("item_pickup", OnItemPickup);
	HookEvent("weapon_fire", OnWeaponFire);
}

public OnSwitchPlugin(Handle:convar, const String:oldValue[], const String:newValue[])
{
	b_enable = bool:StringToInt(newValue);
}

public OnWeaponFire(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (!b_enable)
	{
		return;
	}
	decl String:g_szWeapon[32];
	
	GetEventString(event, "weapon", g_szWeapon, sizeof(g_szWeapon));
	if (StrContains(SNIPERS, g_szWeapon, false) != -1)
	{
		new client = GetClientOfUserId(GetEventInt(event, "userid"));
		if (!client)
		{
			return;
		}
		new weapon = GetPlayerWeaponSlot(client, 0);
		if (weapon != -1)
		{
			SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", GetGameTime() + 999999.0);
		}
	}
}

public OnItemPickup(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (!b_enable)
	{
		return;
	}
	decl String:g_szWeapon[32];
	
	GetEventString(event, "item", g_szWeapon, sizeof(g_szWeapon));
	if (StrContains(SNIPERS, g_szWeapon, false) != -1)
	{
		new client = GetClientOfUserId(GetEventInt(event, "userid"));
		if (!client)
		{
			return;
		}
		new weapon = GetPlayerWeaponSlot(client, 0);
		if (weapon != -1)
		{
			SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", GetGameTime() + 999999.0);
		}
	}
}

public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
	if (b_enable && weapon != 0)
	{
		decl String:g_szWeapon[32];
		if (GetEdictClassname(weapon, g_szWeapon, sizeof(g_szWeapon)) && StrContains(SNIPERS, g_szWeapon, false) != -1)
		{
			SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", GetGameTime() + 999999.0);
		}
	}
}
 
Сверху Снизу