Нашол плагин от FrozDark который убирает zoom со всех снайперских винтовок.
Но в плагине есть ошибка после 1 выстрела без прицела зум снова возвращается, как это можно исправить?
И еще можно ли сделать чтобы ноузум был только после события round_end и при round_start зум опять был разрешен.
Но в плагине есть ошибка после 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);
}
}
}