Добрый вечер. Возникла проблема с отнятием оружия у руны "Курица". Дело в том, что, когда игрок подберёт руну "курица" где-то в начале раунда, то сразу же он может закупиться на Buy Zone и оружие у него НЕ отнимается. Также баг наблюдается при взятии оружия из меню, когда ты "курица". Перерыл всё, но решение никак не нашёл. Помогите пожалуйста.
Код:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cs_player_models_api>
#include "runemod.inc" // We need to include this file, as it contains info we need. Like #define`s and stocks
#define m_iPrimaryWeapon 116
#define MAXSPEED 1.25
#define Gravity 0.6
new g_HasRune[MAXPLAYERS+1]
new g_MaxPlayers
new g_BlockWeapons[MAXPLAYERS+1]
new g_SpeedLocked[MAXPLAYERS+1]
#define TASKID 1234
public plugin_init()
{
register_plugin("RuneMod Chicken", "1.0.0", "AdogeN")
g_MaxPlayers = get_maxplayers()
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon")
RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon")
RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon")
RegisterPlugin("ChickenName","ChickenDisc",{220,220,0},API_SPEEDCHANGE+API_NEWROUND+API_ROUNDSTARTED+API_USELANGSYSTE
M+API_BADRUNE)
}
public API_UnLockSpeedChange(id)
{
g_SpeedLocked[id] = 0
}
public API_LockSpeedChange(id)
{
g_SpeedLocked[id] = 1
}
// This function is used base plugin to inform this plugin that a user has picked up the rune.
public API_PickUpRune(id)
{
if(!g_SpeedLocked[id])
IncreaseSpeed(id,get_user_maxspeedint(id))
g_HasRune[id] = 1
g_BlockWeapons[id] = 1
entity_set_float(id, EV_FL_gravity, Gravity)
cs_set_player_model(id, "amonster3")
set_user_hitzones(0,id,192)
set_user_health(id, 255)
player_strip_weapons(id)
if(cs_get_user_team(id)==CS_TEAM_T)
{
set_rendering(id,kRenderFxGlowShell,150,0,0,kRenderTransAlpha,255)
}
else
{
set_rendering(id,kRenderFxGlowShell,0,0,150,kRenderTransAlpha,255)
}
new tclip, tammo
new weapon = get_user_weapon(id,tclip,tammo)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
}
public API_RoundStarted()
{
new Speed
for(new i=1;i<=g_MaxPlayers;i++) if(g_HasRune[i])
{
API_PickUpRune(i)
g_SpeedLocked[i] = 0
Speed = ResetUserSpeed(i)
IncreaseSpeed(i,Speed)
entity_set_float(i, EV_FL_maxspeed, Gravity)
}
}
public Event_CurWeapon(id)
{
if (!is_user_alive(id) || g_HasRune[id] == 0) {
return PLUGIN_CONTINUE
}
new weapon = read_data(2)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
return PLUGIN_CONTINUE
}
public player_touchweapon(ent, id)
{
if(is_valid_ent(ent) && is_user_alive(id))
{
if(g_BlockWeapons[id])
return HAM_SUPERCEDE
if(g_HasRune[id])
{
static model[32], class[32]
entity_get_string(ent, EV_SZ_model, model, charsmax(model))
if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g')
{
entity_get_string(ent, EV_SZ_classname, class, charsmax(class))
if(equal(class, "weapon_hegrenade"))
remove_entity(ent)
return HAM_SUPERCEDE
}
}
}
return HAM_IGNORED
}
public plugin_precache() {
precache_model("models/player/amonster3/amonster3.mdl")
precache_model("models/knife/v_tot.mdl")
precache_model("models/knife/p_tot.mdl")
}
public API_DropedRune(id,Reason) //This function is called by the base plugin to inform about the user droped his rune for whatever reason ( he could have used droprune or died )
{
if(Reason != USER_DISCONNECTED)
ResetUserSpeed(id)
g_HasRune[id] = 0
g_BlockWeapons[id] = 0
set_user_hitzones(0,id,255)
cs_reset_player_model(id)
entity_set_float(id, EV_FL_gravity, 1.0)
set_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,255)
}
public API_NewRound()
{
for(new i=1;i<=g_MaxPlayers;i++) if(g_HasRune[i])
{
g_SpeedLocked[i] = 1
}
}
stock IncreaseSpeed(id,maxpspeed)
{
set_user_maxspeed(id,(maxpspeed * MAXSPEED))
}
stock get_user_maxspeedint(id)
{
return floatround(get_user_maxspeed(id))
}
stock player_strip_weapons(id)
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_pdata_int(id, m_iPrimaryWeapon, 0)
}