Raised This Month: $12 Target: $400
 3% 

Solved get_pcvar_string error weapon_modifier.amxx


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
RojedaFeik
Junior Member
Join Date: Sep 2018
Location: Venezuela
Old 02-08-2019 , 19:29   get_pcvar_string error weapon_modifier.amxx
Reply With Quote #1

Hi, I hope you are well, I have downloaded this plugin https://forums.alliedmods.net/showthread.php?t=165075 it compiles well, but this error appears in console with the active debug. Can you help me?

Code:
L 02/08/2019 - 12:44:33: [AMXX]    [0] weapon_modifier.sma::event_AmmoX (line 266)
L 02/08/2019 - 12:44:33: Invalid CVAR pointer
L 02/08/2019 - 12:44:33: [AMXX] Displaying debug trace (plugin "weapon_modifier.amxx")
L 02/08/2019 - 12:44:33: [AMXX] Run time error 10: native error (native "get_pcvar_string")
Here is the code too

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>

#define CSW_THIGHPACK     0
#define CSW_SHIELD        2
#define CSW_BACKPACK    32

// Offsets
const OFFSET_USE_STOPPED             0;
const 
OFFSET_PDATA                    2;
const 
OFFSET_LINUX_WEAPONS             4;
const 
OFFSET_LINUX                     5;
const 
OFFSET_WEAPON_OWNER            41;
const 
OFFSET_ID                        43;
const 
OFFSET_NEXT_PRIMARY_ATTACK    46;
const 
OFFSET_NEXT_SECONDARY_ATTACK     47;
const 
OFFSET_TIME_WEAPON_IDLE         48;
const 
OFFSET_IN_RELOAD                 54;
const 
OFFSET_IN_SPECIAL_RELOAD         55;
const 
OFFSET_NEXT_ATTACK            83;
const 
OFFSET_FOV                    363;
const 
OFFSET_ACTIVE_ITEM             373;

new const 
g_customization_file_cfg[] = "weapon_modifier.cfg"
new const g_customization_file_ini[] = "weapon_modifier.ini"

new const g_weapon_ent_names[][] = {"""weapon_p228""""weapon_scout""""weapon_xm1014""""weapon_mac10",
"weapon_aug""""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550""weapon_galil""weapon_famas""weapon_usp""weapon_glock18",
"weapon_awp""weapon_mp5navy""weapon_m249""weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""""weapon_deagle""weapon_sg552",
"weapon_ak47""weapon_knife""weapon_p90""all"};

new const 
g_weapon_ent_names_all[][] = {"weapon_thighpack""weapon_p228""weapon_shield""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4",
"weapon_mac10""weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550""weapon_galil""weapon_famas""weapon_usp",
"weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249""weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle",
"weapon_sg552""weapon_ak47""weapon_knife""weapon_p90""w_backpack"};

new const 
g_model_default[][] = {"models/w_thighpack.mdl""models/w_p228.mdl""models/w_shield.mdl""models/w_scout.mdl""models/w_hegrenade.mdl",
"models/w_xm1014.mdl""models/w_c4.mdl""models/w_mac10.mdl""models/w_aug.mdl""models/w_smokegrenade.mdl""models/w_elite.mdl""models/w_fiveseven.mdl",
"models/w_ump45.mdl""models/w_sg550.mdl""models/w_galil.mdl""models/w_famas.mdl""models/w_usp.mdl""models/w_glock18.mdl""models/w_awp.mdl",
"models/w_mp5.mdl""models/w_m249.mdl""models/w_m3.mdl""models/w_m4a1.mdl""models/w_tmp.mdl""models/w_g3sg1.mdl""models/w_flashbang.mdl",
"models/w_deagle.mdl""models/w_sg552.mdl""models/w_ak47.mdl""models/w_knife.mdl""models/w_p90.mdl""models/w_backpack.mdl"};

new const 
g_max_bpammo[] = {-152, -1901321100901120100100909090100120301202003290120902359090, -1100};
new const 
g_max_clip[] = {-113, -110, -17, -13030, -1302025303525122010301008303020, -173030, -150};
new const 
g_ammo_type[][] = {"""357sig""""762nato""""buckshot""""45acp""556nato""""9mm""57mm""45acp""556nato""556nato""556nato""45acp",
"9mm""338magnum""9mm""556natobox""buckshot""556nato""9mm""762nato""""50ae""556nato""762nato""""57mm"};
new const 
g_ammo_weapon[] = {0CSW_AWPCSW_SCOUTCSW_M249CSW_AUGCSW_XM1014CSW_MAC10CSW_FIVESEVENCSW_DEAGLECSW_P228CSW_ELITECSW_FLASHBANG,
CSW_HEGRENADECSW_SMOKEGRENADECSW_C4};
new const 
SECONDARY_WEAPONS_BIT_SUM = (<< CSW_P228)|(<< CSW_ELITE)|(<< CSW_FIVESEVEN)|(<< CSW_USP)|(<< CSW_GLOCK18)|(<< CSW_DEAGLE)
new const 
SHOTGUN_WEAPONS_BIT_SUM = (<< CSW_M3)|(<< CSW_XM1014)
new const 
ALREADY_SECONDARY_ATTACK = (<< CSW_KNIFE)|(<< CSW_USP)|(<< CSW_GLOCK18)|(<< CSW_FAMAS)|(<< CSW_M4A1)

new const 
g_sound_knife_default[][] = {
    
"weapons/knife_deploy1.wav",
    
"weapons/knife_hit1.wav",
    
"weapons/knife_hit2.wav",
    
"weapons/knife_hit3.wav",
    
"weapons/knife_hit4.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_slash1.wav",
    
"weapons/knife_slash2.wav",
    
"weapons/knife_stab.wav"
};

enum()
{
    
WEAPON_DAMAGE 0,
    
WEAPON_RECOIL,
    
WEAPON_SPEED,
    
WEAPON_W_GLOW,
    
WEAPON_P_GLOW,
    
WEAPON_UNLIMITED_CLIP,
    
WEAPON_UNLIMITED_BPAMMO,
    
WEAPON_KNOCKBACK,
    
WEAPON_AUTO_FIRE,
    
WEAPON_ZOOM,

    
MAX_WM
};
new 
g_cvar_weapon[CSW_P90+3][MAX_WM];
new 
g_cvar_knockback;
new 
g_cvar_knockback_zvel;
new 
g_cvar_knockback_dist;
new 
g_pcvar_ff;

enum()
{
    
V_ 0,
    
P_,
    
W_,
    
    
ALL_MODELS
};
new 
g_model_weapon[ALL_MODELS][CSW_P90+2][128];
new 
g_sound_weapon[sizeof(g_sound_knife_default)][128];

new 
g_ent_weaponmodel[33];
new 
g_has_ammo[33];
new 
g_weapon[33];

new 
Trie:g_trie_wmodel;

new 
g_msg_curweapon;
new 
g_msg_ammopickup;

new 
g_maxplayers;

#define is_user_valid_connected(%1)    (1 <= %1 <= g_maxplayers && is_user_connected(%1))
public plugin_precache()
{
    
fn_load_customization();
}
public 
plugin_init()
{
    new 
plugin_name[] = "Weapon Modifier";
    new 
plugin_version[] = "v1.56";
    new 
plugin_author[] = "Kiske";
    
    new 
i;
    new 
j;
    new 
buffer[64];
    
    new 
wm_cvars[][] = {"damage""recoil""speed""wglow""pglow""unclip""unbpammo""kb""autofire""zoom"};
    
    
register_plugin(plugin_nameplugin_versionplugin_author);
    
    
register_event("AmmoX""event_AmmoX""be");
    
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled");
    
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack");
    
RegisterHam(Ham_AddPlayerItem"player""fw_AddPlayerItem");
    
RegisterHam(Ham_Use"func_tank""fw_UseStationary_Post"1);
    
RegisterHam(Ham_Use"func_tankmortar""fw_UseStationary_Post"1);
    
RegisterHam(Ham_Use"func_tankrocket""fw_UseStationary_Post"1);
    
RegisterHam(Ham_Use"func_tanklaser""fw_UseStationary_Post"1);
    
    
// Register CVARS
    
for(0CSW_P90+2i++)
    {
        
// Get Weapon and Change Models
        
if(!= && != && != 31// weapon_thighpack(0) , weapon_shield (2) and w_backpack(31)
            
RegisterHam(Ham_Item_Deployg_weapon_ent_names_all[i], "fw_Item_Deploy_Post"1);
        
        if(
g_weapon_ent_names[i][0])
        {
            
// Recoil , Speed , Auto Fire Pistol and Zoom
            
if(!= 31// all is 31
            
{
                
RegisterHam(Ham_Weapon_PrimaryAttackg_weapon_ent_names[i], "fw_Weapon_PrimaryAttack_Post"1); // Recoil , Speed and Auto Fire Pistol
                
                // Zoom
                
if(!((<< i) & ALREADY_SECONDARY_ATTACK))
                {
                    
RegisterHam(Ham_Item_PostFrameg_weapon_ent_names[i], "fw_Item_PostFrame");
                    
RegisterHam(Ham_Item_Holsterg_weapon_ent_names[i], "fw_Item_Holster");
                    
RegisterHam(Ham_CS_Item_GetMaxSpeedg_weapon_ent_names[i], "fw_CS_Item_GetMaxSpeed");
                    
RegisterHam(Ham_Weapon_Reloadg_weapon_ent_names[i], ((<< i) & SHOTGUN_WEAPONS_BIT_SUM) ? "fw_Weapon_Shotgun_Reload_Post" "fw_Weapon_Reload_Post"1);
                }
            }
            
            
// Remove weapon_ from the names
            
replace(g_weapon_ent_names[i], 17"weapon_""");
            
            for(
0MAX_WMj++)
            {
                
formatex(buffercharsmax(buffer), "wm_%s_%s"wm_cvars[j], g_weapon_ent_names[i]);
                
                switch(
j)
                {
                    case 
WEAPON_KNOCKBACKg_cvar_weapon[i][j] = register_cvar(buffer"0.00");
                    case 
WEAPON_AUTO_FIRE:
                    {
                        if(
== 31// all is 31
                        
{
                            
g_cvar_weapon[i][j] = register_cvar(buffer"0");
                            continue;
                        }
                        
                        if((
<< i) & SECONDARY_WEAPONS_BIT_SUM)
                            
g_cvar_weapon[i][j] = register_cvar(buffer"0");
                    }
                    case 
WEAPON_ZOOM:
                    {
                        if(!((
<< i) & ALREADY_SECONDARY_ATTACK))
                            
g_cvar_weapon[i][j] = register_cvar(buffer"off");
                    }
                    default: 
g_cvar_weapon[i][j] = register_cvar(buffer"off");
                }
            }
        }
    }
    
    
// Extra Cvars for W_ models glow :)
    
g_cvar_weapon[CSW_THIGHPACK][WEAPON_W_GLOW] = register_cvar("wm_wglow_thighpack""off");
    
g_cvar_weapon[CSW_SHIELD][WEAPON_W_GLOW] = register_cvar("wm_wglow_shield""off");
    
g_cvar_weapon[CSW_HEGRENADE][WEAPON_W_GLOW] = register_cvar("wm_wglow_hegrenade""off");
    
g_cvar_weapon[CSW_C4][WEAPON_W_GLOW] = register_cvar("wm_wglow_c4""off");
    
g_cvar_weapon[CSW_SMOKEGRENADE][WEAPON_W_GLOW] = register_cvar("wm_wglow_smokegrenade""off");
    
g_cvar_weapon[CSW_FLASHBANG][WEAPON_W_GLOW] = register_cvar("wm_wglow_flashbang""off");
    
g_cvar_weapon[CSW_BACKPACK][WEAPON_W_GLOW] = register_cvar("wm_wglow_backpack""off");
    
    
// Extra Cvars for P_ models glow :)
    
g_cvar_weapon[CSW_HEGRENADE][WEAPON_P_GLOW] = register_cvar("wm_pglow_hegrenade""off");
    
g_cvar_weapon[CSW_C4][WEAPON_P_GLOW] = register_cvar("wm_pglow_c4""off");
    
g_cvar_weapon[CSW_SMOKEGRENADE][WEAPON_P_GLOW] = register_cvar("wm_pglow_smokegrenade""off");
    
g_cvar_weapon[CSW_FLASHBANG][WEAPON_P_GLOW] = register_cvar("wm_pglow_flashbang""off");
    
    
// Cvars for knockback
    
g_cvar_knockback register_cvar("wm_knockback""0");
    
g_cvar_knockback_zvel register_cvar("wm_kb_zvel""1");
    
g_cvar_knockback_dist register_cvar("wm_kb_dist""500");
    
g_pcvar_ff get_cvar_pointer("mp_friendlyfire");
    
    new 
wmodels[][] = {"models/w_shield.mdl""models/w_thighpack.mdl""models/w_c4.mdl""models/w_backpack.mdl"};
    
    
g_trie_wmodel TrieCreate();
    
    for(
0sizeof(wmodels); i++)
        
TrieSetCell(g_trie_wmodelwmodels[i], 1);
    
    
register_forward(FM_SetModel"fw_SetModel");
    
register_forward(FM_EmitSound"fw_EmitSound");
    
register_forward(FM_CmdStart"fw_CmdStart");
    
    
g_msg_curweapon get_user_msgid("CurWeapon");
    
g_msg_ammopickup get_user_msgid("AmmoPickup");
    
    
register_message(g_msg_curweapon"message_CurWeapon");
    
    
g_maxplayers get_maxplayers();
}

public 
plugin_cfg()
{
    new 
cfgdir[32];
    
get_configsdir(cfgdircharsmax(cfgdir));
    
    
server_cmd("exec %s/%s"cfgdirg_customization_file_cfg);
}

public 
plugin_end()
{
    
TrieDestroy(g_trie_wmodel);
}

public 
client_disconnect(id)
{
    
g_has_ammo[id] = 0;
    
    
fm_remove_model_ents(id);
}

public 
event_AmmoX(id)
{
    static 
bpammo_cvar[10];
    static 
bpammo_cvar_temp[10];
    static 
bpammo_cvar_int;
    static 
mode;
    
mode 0;
    
    
get_pcvar_string(g_cvar_weapon[g_weapon[id]][WEAPON_UNLIMITED_BPAMMO], bpammo_cvarcharsmax(bpammo_cvar));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_UNLIMITED_BPAMMO], bpammo_cvar_tempcharsmax(bpammo_cvar_temp));
    
    
bpammo_cvar_int str_to_num(bpammo_cvar);
    
    if(!
equali(bpammo_cvar_temp"off") || bpammo_cvar_int)
        
mode 1;
    
    if(!
mode)
        return;
    
    static 
type;
    
type read_data(1);
    
    if(
type >= sizeof(g_ammo_weapon))
        return;
    
    static 
weapon;
    
weapon g_ammo_weapon[type];
    
    if(
g_max_bpammo[weapon] <= 2)
        return;
    
    static 
amount;
    
amount read_data(2);
    
    if(
amount g_max_bpammo[weapon])
    {
        
// The BP Ammo refill code causes the engine to send a message, but we
        // can't have that in this forward or we risk getting some recursion bugs.
        // For more info see: https://bugs.alliedmods.net/show_bug.cgi?id=3664
        
        
static args[1];
        
args[0] = weapon;
        
        
set_task(0.1"fn_refill_bpammo"idargssizeof(args));
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(
victim == attacker || !is_user_valid_connected(attacker))
        return 
HAM_IGNORED;
    
    static 
dmg_cvar[10];
    static 
dmg_cvar_k[10];
    static 
dmg_cvar_temp[10];
    static 
dmg_cvar_temp_k[10];
    
    
get_pcvar_string(g_cvar_weapon[g_weapon[attacker]][WEAPON_DAMAGE], dmg_cvarcharsmax(dmg_cvar));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_DAMAGE], dmg_cvar_tempcharsmax(dmg_cvar_temp));
    
    
copy(dmg_cvar_kcharsmax(dmg_cvar_k), dmg_cvar);
    
copy(dmg_cvar_temp_kcharsmax(dmg_cvar_temp_k), dmg_cvar_temp);
    
    if(
fn_contain_words(dmg_cvar_k) || fn_contain_words(dmg_cvar_temp_k))
    {
        
fn_replace_words(dmg_cvar_kcharsmax(dmg_cvar_k));
        
fn_replace_words(dmg_cvar_temp_kcharsmax(dmg_cvar_temp_k));
        
        static 
Float:dmg;
        
        if(
equali(dmg_cvar_temp"off")) dmg str_to_float(dmg_cvar_k);
        else 
dmg str_to_float(dmg_cvar_temp_k);
        
        switch((
equali(dmg_cvar_temp"off")) ? dmg_cvar[0] : dmg_cvar_temp[0])
        {
            case 
'+':
            {
                if(
dmg 1.00) return HAM_IGNORED;
                
damage += dmg;
            }
            case 
'-':
            {
                if(
dmg 1.00) return HAM_IGNORED;
                
damage -= dmg;
            }
            case 
'*':
            {
                if(
dmg == 1.00) return HAM_IGNORED;
                
damage *= dmg;
            }
            case 
'/':
            {
                if(
dmg == 0.00) return HAM_IGNORED// Can't divide by 0
                
damage /= dmg;
            }
            case 
'=':
            {
                if(
dmg 1.00) return HAM_IGNORED;
                
damage dmg;
            }
        }
        
        
SetHamParamFloat(4damage);
    }
    
    return 
HAM_IGNORED;
}

public 
fw_PlayerKilled(victimattackershouldgib)
{
    
fm_remove_model_ents(victim);
}

public 
fw_TraceAttack(victimattackerFloat:damageFloat:direction[3], trace_handledamage_type)
{
    if(
victim == attacker || !is_user_valid_connected(attacker))
        return 
HAM_IGNORED;
    
    if(!
get_pcvar_num(g_cvar_knockback))
        return 
HAM_IGNORED;
    
    if(!(
damage_type DMG_BULLET))
        return 
HAM_IGNORED;
    
    if(!
get_pcvar_num(g_pcvar_ff) && (cs_get_user_team(attacker) == cs_get_user_team(victim)))
        return 
HAM_IGNORED;
    
    static 
kb_duck;
    static 
origin1[3];
    static 
origin2[3];
    
    
kb_duck entity_get_int(victimEV_INT_flags) & (FL_DUCKING FL_ONGROUND) == (FL_DUCKING FL_ONGROUND);
    
    
get_user_origin(victimorigin1);
    
get_user_origin(attackerorigin2);
    
    if(
get_distance(origin1origin2) > get_pcvar_num(g_cvar_knockback_dist))
        return 
HAM_IGNORED;
    
    static 
Float:velocity[3];
    
entity_get_vector(victimEV_VEC_velocityvelocity);
    
    
xs_vec_mul_scalar(directiondamagedirection);
    
    static 
Float:kb_cvar;
    
    if(
get_pcvar_float(g_cvar_weapon[31][WEAPON_KNOCKBACK]) == 0.00kb_cvar get_pcvar_float(g_cvar_weapon[g_weapon[attacker]][WEAPON_KNOCKBACK]);
    else 
kb_cvar get_pcvar_float(g_cvar_weapon[31][WEAPON_KNOCKBACK]);
    
    if(
kb_cvar 0.00)
        
xs_vec_mul_scalar(directionkb_cvardirection);
    
    if(
kb_duck)
        
xs_vec_mul_scalar(direction0.2direction);
    
    
xs_vec_add(velocitydirectiondirection);
    
    if(!
get_pcvar_num(g_cvar_knockback_zvel))
        
direction[2] = velocity[2];
    
    
entity_set_vector(victimEV_VEC_velocitydirection);
    
    return 
HAM_IGNORED;
}

public 
fw_AddPlayerItem(idweapon_ent)
{
    static 
extra_ammo;
    
extra_ammo entity_get_int(weapon_entEV_INT_iuser1);
    
    if(
extra_ammo)
    {
        static 
weaponid;
        
weaponid cs_get_weapon_id(weapon_ent);
        
        
ExecuteHamB(Ham_GiveAmmoidextra_ammog_ammo_type[weaponid], g_max_bpammo[weaponid]);
        
entity_set_int(weapon_entEV_INT_iuser10);
    }
}

public 
fw_UseStationary_Post(entitycalleractivatoruse_type)
{
    if(
use_type == OFFSET_USE_STOPPED && is_user_valid_connected(caller))
    {
        
fm_remove_model_ents(caller);
        
fn_replace_weapon_models(callerg_weapon[caller]);
    }
}

public 
fw_Item_Deploy_Post(weapon_ent)
{
    if(!
pev_valid(weapon_ent))
        return;
    
    static 
id;
    
id fm_get_weapon_ent_owner(weapon_ent);
    
    if(!
pev_valid(id))
        return;
    
    
fm_remove_model_ents(id);
    
    static 
weaponid;
    
weaponid cs_get_weapon_id(weapon_ent);
    
    if(
weaponid != CSW_C4 && 
    
weaponid != CSW_SHIELD &&
    
weaponid != CSW_HEGRENADE &&
    
weaponid != CSW_FLASHBANG &&
    
weaponid != CSW_SMOKEGRENADE)
        
g_weapon[id] = weaponid;
    
    
// Replace Weapon Models
    
fn_replace_weapon_models(idweaponid);
}

public 
fw_Weapon_PrimaryAttack_Post(weapon_ent// Recoil , Speed and Auto Fire Pistol
{
    if(!
pev_valid(weapon_ent))
        return 
HAM_IGNORED;
    
    static 
id;
    
id fm_get_weapon_ent_owner(weapon_ent);
    
    if(!
pev_valid(id) || cs_get_weapon_ammo(weapon_ent) < 1)
        return 
HAM_IGNORED;
    
    
// Recoil
    
static Float:def_recoil[3];
    
entity_get_vector(idEV_VEC_punchangledef_recoil);
    
    static 
recoil_cvar[10];
    static 
recoil_cvar_k[10];
    static 
recoil_cvar_temp[10];
    static 
recoil_cvar_temp_k[10];
    
    
get_pcvar_string(g_cvar_weapon[g_weapon[id]][WEAPON_RECOIL], recoil_cvarcharsmax(recoil_cvar));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_RECOIL], recoil_cvar_tempcharsmax(recoil_cvar_temp));
    
    
copy(recoil_cvar_kcharsmax(recoil_cvar_k), recoil_cvar);
    
copy(recoil_cvar_temp_kcharsmax(recoil_cvar_temp_k), recoil_cvar_temp);
    
    if(
fn_contain_words(recoil_cvar_k) || fn_contain_words(recoil_cvar_temp_k))
    {
        
fn_replace_words(recoil_cvar_kcharsmax(recoil_cvar_k));
        
fn_replace_words(recoil_cvar_temp_kcharsmax(recoil_cvar_temp_k));
        
        static 
Float:recoil;
        
        if(
equali(recoil_cvar_temp"off")) recoil str_to_float(recoil_cvar_k);
        else 
recoil str_to_float(recoil_cvar_temp_k);
        
        switch((
equali(recoil_cvar_temp"off")) ? recoil_cvar[0] : recoil_cvar_temp[0])
        {
            case 
'+':
            {
                if(
recoil == 0.00) return HAM_IGNORED;
                
def_recoil[0] += recoil;
            }
            case 
'-':
            {
                if(
recoil == 0.00) return HAM_IGNORED;
                
def_recoil[0] -= recoil;
            }
            case 
'*':
            {
                if(
recoil == 1.00) return HAM_IGNORED;
                
def_recoil[0] *= recoil;
            }
            case 
'/':
            {
                if(
recoil == 0.00) return HAM_IGNORED// Can't divide by 0
                
def_recoil[0] /= recoil;
            }
            case 
'=':
            {
                
def_recoil[0] = recoil;
                if(
recoil == 0)
                    
def_recoil[1] = def_recoil[2] = recoil;
            }
        }
        
        
entity_set_vector(idEV_VEC_punchangledef_recoil);
    }
    
    
// Speed
    
static Float:def_speed[3];
    
def_speed[0] = get_pdata_float(weapon_entOFFSET_NEXT_PRIMARY_ATTACKOFFSET_LINUX_WEAPONS);
    
def_speed[1] = get_pdata_float(weapon_entOFFSET_NEXT_SECONDARY_ATTACKOFFSET_LINUX_WEAPONS);
    
def_speed[2] = get_pdata_float(weapon_entOFFSET_TIME_WEAPON_IDLEOFFSET_LINUX_WEAPONS);
    
    static 
speed_cvar[10];
    static 
speed_cvar_k[10];
    static 
speed_cvar_temp[10];
    static 
speed_cvar_temp_k[10];
    
    
get_pcvar_string(g_cvar_weapon[g_weapon[id]][WEAPON_SPEED], speed_cvarcharsmax(speed_cvar));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_SPEED], speed_cvar_tempcharsmax(speed_cvar_temp));
    
    
copy(speed_cvar_kcharsmax(speed_cvar_k), speed_cvar);
    
copy(speed_cvar_temp_kcharsmax(speed_cvar_temp_k), speed_cvar_temp);
    
    if(
fn_contain_words(speed_cvar_k) || fn_contain_words(speed_cvar_temp_k))
    {
        
fn_replace_words(speed_cvar_kcharsmax(speed_cvar_k));
        
fn_replace_words(speed_cvar_temp_kcharsmax(speed_cvar_temp_k));
        
        static 
Float:speed;
        
        if(
equali(speed_cvar_temp"off")) speed str_to_float(speed_cvar_k);
        else 
speed str_to_float(speed_cvar_temp_k);
        
        switch((
equali(speed_cvar_temp"off")) ? speed_cvar[0] : speed_cvar_temp[0])
        {
            case 
'+':
            {
                if(
speed == 0.00) return HAM_IGNORED;
                
def_speed[0] += speed;
                
def_speed[1] += speed;
                
def_speed[2] += speed;
            }
            case 
'-':
            {
                if(
speed == 0.00) return HAM_IGNORED;
                
def_speed[0] -= speed;
                
def_speed[1] -= speed;
                
def_speed[2] -= speed;
            }
            case 
'*':
            {
                if(
speed == 1.00) return HAM_IGNORED;
                
def_speed[0] *= speed;
                
def_speed[1] *= speed;
                
def_speed[2] *= speed;
            }
            case 
'/':
            {
                if(
speed == 0.00) return HAM_IGNORED// Can't divide by 0
                
def_speed[0] /= speed;
                
def_speed[1] /= speed;
                
def_speed[2] /= speed;
            }
            case 
'='def_speed[0] = def_speed[1] = def_speed[2] = speed;
        }
        
        
set_pdata_float(weapon_entOFFSET_NEXT_PRIMARY_ATTACKdef_speed[0], OFFSET_LINUX_WEAPONS)
        
set_pdata_float(weapon_entOFFSET_NEXT_SECONDARY_ATTACKdef_speed[1], OFFSET_LINUX_WEAPONS)
        
set_pdata_float(weapon_entOFFSET_TIME_WEAPON_IDLEdef_speed[2], OFFSET_LINUX_WEAPONS)
    }
    
    
// Auto Fire Pistol
    
if((<< g_weapon[id]) & SECONDARY_WEAPONS_BIT_SUM)
    {
        static 
autofire_cvar;
        
        if(!
get_pcvar_num(g_cvar_weapon[31][WEAPON_AUTO_FIRE])) autofire_cvar get_pcvar_num(g_cvar_weapon[g_weapon[id]][WEAPON_AUTO_FIRE]);
        else 
autofire_cvar 1;
        
        
g_has_ammo[id] = autofire_cvar;
    }
    
    return 
HAM_IGNORED;
}

public 
fw_Item_PostFrame(weapon_ent)
{
    if(!
pev_valid(weapon_ent))
        return 
HAM_IGNORED;
    
    static 
id;
    
id fm_get_weapon_ent_owner(weapon_ent);
    
    if(!
pev_valid(id))
        return 
HAM_IGNORED;
    
    static 
button;
    
button entity_get_int(idEV_INT_button);
    
    if(
button IN_ATTACK2)
    {
        static 
zoom_cvar[32];
        static 
zoom_delay[9];
        static 
zoom_speed[1]; // not interesting here
        
static zoom_1[3];
        static 
zoom_2[3];
        static 
Float:f_zoom_delay;
        static 
i_zoom_1;
        static 
i_zoom_2;
        
        
get_pcvar_string(g_cvar_weapon[31][WEAPON_ZOOM], zoom_cvarcharsmax(zoom_cvar));
        
        if(
equali(zoom_cvar"off"))
        {
            
get_pcvar_string(g_cvar_weapon[g_weapon[id]][WEAPON_ZOOM], zoom_cvarcharsmax(zoom_cvar));
        
            if(
equali(zoom_cvar"off"))
                return 
HAM_IGNORED;
        }
        
        
parse(zoom_cvarzoom_delaycharsmax(zoom_delay), zoom_speedcharsmax(zoom_speed), zoom_1charsmax(zoom_1), zoom_2charsmax(zoom_2));
        
        
f_zoom_delay str_to_float(zoom_delay);
        
i_zoom_1 clamp(str_to_num(zoom_1), 0255);
        
i_zoom_2 clamp(str_to_num(zoom_2), 0255);
        
        static 
fov;
        
fov get_pdata_int(idOFFSET_FOVOFFSET_LINUX);
        
        if(
fov == 90fn_SetFov(idi_zoom_1);
        else if(
fov == i_zoom_1fn_SetFov(idi_zoom_2);
        else 
fn_SetFov(id90);
        
        
ExecuteHamB(Ham_Item_PreFrameid);
        
        
emit_sound(idCHAN_ITEM"weapons/zoom.wav"0.202.400100);
        
set_pdata_float(idOFFSET_NEXT_ATTACKf_zoom_delayOFFSET_LINUX);
        
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

public 
fw_Item_Holster(weapon_ent)
{
    if(
pev_valid(weapon_ent))
    {
        if(
ExecuteHamB(Ham_Item_CanHolsterweapon_ent))
            
fn_ResetFov(fm_get_weapon_ent_owner(weapon_ent));
    }
}

public 
fw_CS_Item_GetMaxSpeed(weapon_ent)
{
    if(!
pev_valid(weapon_ent))
        return 
HAM_IGNORED;
    
    static 
id;
    
id fm_get_weapon_ent_owner(weapon_ent);
    
    if(!
pev_valid(id))
        return 
HAM_IGNORED;
    
    if(
get_pdata_int(idOFFSET_FOVOFFSET_LINUX) == 90)
        return 
HAM_IGNORED;
    
    static 
zoom_cvar[32];
    static 
zoom_delay[1]; // not interesting here
    
static zoom_speed[9];
    static 
zoom_1[1]; // not interesting here
    
static zoom_2[1]; // not interesting here
    
static Float:f_zoom_speed;
    
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_ZOOM], zoom_cvarcharsmax(zoom_cvar));
    
    if(
equali(zoom_cvar"off"))
    {
        
get_pcvar_string(g_cvar_weapon[g_weapon[id]][WEAPON_ZOOM], zoom_cvarcharsmax(zoom_cvar));
    
        if(
equali(zoom_cvar"off"))
            return 
HAM_IGNORED;
    }
    
    
parse(zoom_cvarzoom_delaycharsmax(zoom_delay), zoom_speedcharsmax(zoom_speed), zoom_1charsmax(zoom_1), zoom_2charsmax(zoom_2));
    
f_zoom_speed str_to_float(zoom_speed);

    static 
Float:f_MaxSpeed;
    
f_MaxSpeed f_zoom_speed;
    
    if(
f_MaxSpeed 0.00)
    {
        
SetHamReturnFloat(f_MaxSpeed);
        return 
HAM_SUPERCEDE;
    }

    return 
HAM_IGNORED;
}

public 
fw_Weapon_Reload_Post(weapon_ent)
{
    if(
pev_valid(weapon_ent))
    {
        if(
get_pdata_int(weapon_entOFFSET_IN_RELOADOFFSET_LINUX_WEAPONS))
            
fn_ResetFov(fm_get_weapon_ent_owner(weapon_ent))
    }
}

public 
fw_Weapon_Shotgun_Reload_Post(weapon_ent)
{
    if(
pev_valid(weapon_ent))
    {
        if(
get_pdata_int(weapon_entOFFSET_IN_SPECIAL_RELOADOFFSET_LINUX_WEAPONS) == 1)
            
fn_ResetFov(fm_get_weapon_ent_owner(weapon_ent))
    }
}

fn_SetFov(idfov)
{
    
entity_set_float(idEV_FL_fovfloat(fov));
    
set_pdata_int(idOFFSET_FOVfovOFFSET_LINUX);
}

fn_ResetFov(id)
{
    if(
<= get_pdata_int(idOFFSET_FOVOFFSET_LINUX) <= 90)
    {
        
entity_set_float(idEV_FL_fov90.0);
        
set_pdata_int(idOFFSET_FOV90OFFSET_LINUX);
    }
}

public 
fw_SetModel(entity, const model[])
{
    if(
strlen(model) < || model[7] != 'w' || model[8] != '_')
        return 
FMRES_IGNORED;
    
    static 
classname[10];
    static 
color_all[21];
    
    
entity_get_string(entityEV_SZ_classnameclassnamecharsmax(classname));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_W_GLOW], color_allcharsmax(color_all));
    
    if(
equal(classname"weaponbox") ||
    
TrieKeyExists(g_trie_wmodelmodel))
    {
        static 
i;
        static 
color[21];
        static 
p_rgb[3][4];
        static 
i_rgb[3];
        
        for(
0CSW_P90+2i++)
        {
            if(
equali(modelg_model_default[i]))
            {
                
get_pcvar_string(g_cvar_weapon[i][WEAPON_W_GLOW], colorcharsmax(color));
                if(!
equali(color"off") || !equali(color_all"off"))
                {
                    if(
equali(color_all"off")) parse(colorp_rgb[0], charsmax(p_rgb[]), p_rgb[1], charsmax(p_rgb[]), p_rgb[2], charsmax(p_rgb[]));
                    else 
parse(color_allp_rgb[0], charsmax(p_rgb[]), p_rgb[1], charsmax(p_rgb[]), p_rgb[2], charsmax(p_rgb[]));
                    
                    
i_rgb[0] = clamp(str_to_num(p_rgb[0]), 0255);
                    
i_rgb[1] = clamp(str_to_num(p_rgb[1]), 0255);
                    
i_rgb[2] = clamp(str_to_num(p_rgb[2]), 0255);
                    
                    
fm_set_rendering(entitykRenderFxGlowShelli_rgb[0], i_rgb[1], i_rgb[2], kRenderNormal16);
                }
                
                if(
g_model_weapon[W_][i][0])
                {
                    
entity_set_model(entityg_model_weapon[W_][i]);
                    return 
FMRES_SUPERCEDE;
                }
            }
        }
        
        return 
FMRES_IGNORED;
    }
    
    static 
Float:dmg_time;
    
dmg_time entity_get_float(entityEV_FL_dmgtime);
    
    if(
dmg_time == 0.0)
        return 
FMRES_IGNORED;
    
    static 
pg_rgb[3][3][4];
    static 
ig_rgb[3][3];
    if(
equali(color_all"off"))
    {
        static 
color_grenades[3][21];
        
        
get_pcvar_string(g_cvar_weapon[CSW_HEGRENADE][WEAPON_W_GLOW], color_grenades[0], charsmax(color_grenades[]));
        
get_pcvar_string(g_cvar_weapon[CSW_FLASHBANG][WEAPON_W_GLOW], color_grenades[1], charsmax(color_grenades[]));
        
get_pcvar_string(g_cvar_weapon[CSW_SMOKEGRENADE][WEAPON_W_GLOW], color_grenades[2], charsmax(color_grenades[]));
        
        if(!
equali(color_grenades[0], "off"))
        {
            
parse(color_grenades[0], pg_rgb[0][0], charsmax(pg_rgb[][]), pg_rgb[1][0], charsmax(pg_rgb[][]), pg_rgb[2][0], charsmax(pg_rgb[][]));
            
            
ig_rgb[0][0] = clamp(str_to_num(pg_rgb[0][0]), 0255);
            
ig_rgb[1][0] = clamp(str_to_num(pg_rgb[1][0]), 0255);
            
ig_rgb[2][0] = clamp(str_to_num(pg_rgb[2][0]), 0255);
        }
        if(!
equali(color_grenades[1], "off"))
        {
            
parse(color_grenades[1], pg_rgb[0][1], charsmax(pg_rgb[][]), pg_rgb[1][1], charsmax(pg_rgb[][]), pg_rgb[2][1], charsmax(pg_rgb[][]));
            
            
ig_rgb[0][1] = clamp(str_to_num(pg_rgb[0][1]), 0255);
            
ig_rgb[1][1] = clamp(str_to_num(pg_rgb[1][1]), 0255);
            
ig_rgb[2][1] = clamp(str_to_num(pg_rgb[2][1]), 0255);
        }
        if(!
equali(color_grenades[2], "off"))
        {
            
parse(color_grenades[2], pg_rgb[0][2], charsmax(pg_rgb[][]), pg_rgb[1][2], charsmax(pg_rgb[][]), pg_rgb[2][2], charsmax(pg_rgb[][]));
            
            
ig_rgb[0][2] = clamp(str_to_num(pg_rgb[0][2]), 0255);
            
ig_rgb[1][2] = clamp(str_to_num(pg_rgb[1][2]), 0255);
            
ig_rgb[2][2] = clamp(str_to_num(pg_rgb[2][2]), 0255);
        }
    }
    else
    {
        
parse(color_allpg_rgb[0][0], charsmax(pg_rgb[][]), pg_rgb[1][0], charsmax(pg_rgb[][]), pg_rgb[2][0], charsmax(pg_rgb[][]));
        
        
ig_rgb[0][0] = ig_rgb[0][1] = ig_rgb[0][2] = clamp(str_to_num(pg_rgb[0][0]), 0255);
        
ig_rgb[1][0] = ig_rgb[1][1] = ig_rgb[1][2] = clamp(str_to_num(pg_rgb[1][0]), 0255);
        
ig_rgb[2][0] = ig_rgb[2][1] = ig_rgb[2][2] = clamp(str_to_num(pg_rgb[2][0]), 0255);
    }
    
    if(
model[9] == 'h' && model[10] == 'e'// HE Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShellig_rgb[0][0], ig_rgb[1][0], ig_rgb[2][0], kRenderNormal16);
        
        
// Change Model
        
if(g_model_weapon[W_][CSW_HEGRENADE][0])
        {
            
entity_set_model(entityg_model_weapon[W_][CSW_HEGRENADE]);
            return 
FMRES_SUPERCEDE;
        }
    }
    else if(
model[9] == 'f' && model[10] == 'l'// Flash Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShellig_rgb[0][1], ig_rgb[1][1], ig_rgb[2][1], kRenderNormal16);
        
        
// Change Model
        
if(g_model_weapon[W_][CSW_FLASHBANG][0])
        {
            
entity_set_model(entityg_model_weapon[W_][CSW_FLASHBANG]);
            return 
FMRES_SUPERCEDE;
        }
    }
    else if(
model[9] == 's' && model[10] == 'm'// Smoke Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShellig_rgb[0][2], ig_rgb[1][2], ig_rgb[2][2], kRenderNormal16);
        
        
// Change Model
        
if(g_model_weapon[W_][CSW_SMOKEGRENADE][0])
        {
            
entity_set_model(entityg_model_weapon[W_][CSW_SMOKEGRENADE]);
            return 
FMRES_SUPERCEDE;
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_EmitSound(idchannel, const sample[], Float:volumeFloat:attnflagspitch)
{
    if(!
is_user_valid_connected(id))
        return 
FMRES_IGNORED;
    
    new 
i;
    for(
0sizeof(g_sound_knife_default); i++)
    {
        if(
equal(sampleg_sound_knife_default[i]) && g_sound_weapon[i][0])
        {
            
emit_sound(idchannelg_sound_weapon[i], volumeattnflagspitch);
            return 
FMRES_SUPERCEDE;
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_CmdStart(idhandle)
{
    if(!
is_user_alive(id))
        return;
    
    if((
<< g_weapon[id]) & SECONDARY_WEAPONS_BIT_SUM)
    {
        static 
autofire_cvar;
        
        if(!
get_pcvar_num(g_cvar_weapon[31][WEAPON_AUTO_FIRE])) autofire_cvar get_pcvar_num(g_cvar_weapon[g_weapon[id]][WEAPON_AUTO_FIRE]);
        else 
autofire_cvar 1;
        
        if(
autofire_cvar)
        {
            static 
button;
            
button get_uc(handleUC_Buttons);
            
            if((
button IN_ATTACK) && g_has_ammo[id])
            {
                
set_uc(handleUC_Buttonsbutton & ~IN_ATTACK);
                
g_has_ammo[id] = 0;
            }
        }
    }
}

public 
message_CurWeapon(msg_idmsg_destmsg_entity)
{
    if(!
is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
        return;
    
    static 
clip_cvar[10];
    static 
clip_cvar_temp[10];
    static 
clip_cvar_int;
    static 
mode;
    static 
weapon;
    
    
mode 0;
    
weapon get_msg_arg_int(2);
    
    
get_pcvar_string(g_cvar_weapon[g_weapon[msg_entity]][WEAPON_UNLIMITED_CLIP], clip_cvarcharsmax(clip_cvar));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_UNLIMITED_CLIP], clip_cvar_tempcharsmax(clip_cvar_temp));
    
    
clip_cvar_int str_to_num(clip_cvar);
    
    if(!
equali(clip_cvar_temp"off") || clip_cvar_int)
        
mode 1;
    
    if(!
mode)
        return;
    
    if(
g_max_bpammo[weapon] > 2)
    {
        static 
weapon_ent;
        
weapon_ent get_pdata_cbase(msg_entityOFFSET_ACTIVE_ITEMOFFSET_LINUX);
        
        if(
pev_valid(weapon_ent))
            
cs_set_weapon_ammo(weapon_entg_max_clip[weapon])
        
        
set_msg_arg_int(3get_msg_argtype(3), g_max_clip[weapon]);
    }
}

// Functions
fn_contain_words(const string[])
{
    if(
contain(string"+") != -||
    
contain(string"-") != -||
    
contain(string"*") != -||
    
contain(string"/") != -||
    
contain(string"=") != -1)
        return 
1;
    
    return 
0;
}
fn_replace_words(string[], len)
{
    
replace(stringlen"+""");
    
replace(stringlen"-""");
    
replace(stringlen"*""");
    
replace(stringlen"/""");
    
replace(stringlen"=""");
}
fn_load_customization()
{
    new 
path[64];
    
get_configsdir(pathcharsmax(path));
    
    
format(pathcharsmax(path), "%s/%s"pathg_customization_file_ini);
    
    if(!
file_exists(path)) return;
    
    new 
linedata[1024];
    new 
key[64];
    new 
value[960];
    new 
weaponname[32];
    new 
file fopen(path"rt");
    new 
i;
    new const 
soundname[][] = {
        
"KNIFE_DEPLOY",
        
"KNIFE_HIT_1",
        
"KNIFE_HIT_2",
        
"KNIFE_HIT_3",
        
"KNIFE_HIT_4",
        
"KNIFE_HIT_WALL",
        
"KNIFE_SLASH_1",
        
"KNIFE_SLASH_2",
        
"KNIFE_STAB"
    
}
    
    while(
file && !feof(file))
    {
        
fgets(filelinedatacharsmax(linedata));
        
replace(linedatacharsmax(linedata), "^n""");
        
        if(!
linedata[0] || linedata[0] == ';') continue;
        
        
strtok(linedatakeycharsmax(key), valuecharsmax(value), '=');
        
trim(key);
        
trim(value);
        
        
// Models
        
for(0CSW_P90+2i++)
        {
            if(
g_weapon_ent_names_all[i][0])
            {
                
// Remove weapon_ from the names
                
copy(weaponnamecharsmax(weaponname), g_weapon_ent_names_all[i]);
                
                
// Get and precache V_ model
                
replace(weaponnamecharsmax(weaponname), "weapon_""V_");
                if(!
equali(g_weapon_ent_names_all[i], "weapon_thighpack"))
                {
                    if(
equali(keyweaponname)) copy(g_model_weapon[V_][i], charsmax(g_model_weapon[][]), value);
                    if(
g_model_weapon[V_][i][0]) precache_model(g_model_weapon[V_][i]);
                }
                
                
// Get and precache P_ model
                
replace(weaponnamecharsmax(weaponname), "V_""P_");
                if(
equali(keyweaponname)) copy(g_model_weapon[P_][i], charsmax(g_model_weapon[][]), value);
                if(
g_model_weapon[P_][i][0]) precache_model(g_model_weapon[P_][i]);
                
                
// Get and precache W_ model
                
replace(weaponnamecharsmax(weaponname), "P_""W_");
                if(
equali(keyweaponname)) copy(g_model_weapon[W_][i], charsmax(g_model_weapon[][]), value);
                if(
g_model_weapon[W_][i][0]) precache_model(g_model_weapon[W_][i]);
            }
        }
        
        
// Knife Sounds
        
for(0sizeof(g_sound_knife_default); i++)
        {
            if(
equali(keysoundname[i])) copy(g_sound_weapon[i], charsmax(g_sound_weapon[]), value);
            if(
g_sound_weapon[i][0]) precache_model(g_sound_weapon[i]);
        }
    }
    
    if(
file)
        
fclose(file);
}
fn_replace_weapon_models(idweaponid)
{
    if(!
is_user_alive(id))
        return;
    
    if(
g_model_weapon[V_][weaponid][0]) entity_set_string(idEV_SZ_viewmodelg_model_weapon[V_][weaponid]);
    if(
g_model_weapon[P_][weaponid][0]) entity_set_string(idEV_SZ_weaponmodelg_model_weapon[P_][weaponid]);
    
    new 
color[21];
    new 
color_all[21];
    
    
get_pcvar_string(g_cvar_weapon[weaponid][WEAPON_P_GLOW], colorcharsmax(color));
    
get_pcvar_string(g_cvar_weapon[31][WEAPON_P_GLOW], color_allcharsmax(color_all));
    
    if(!
equali(color"off") || !equali(color_all"off"))
    {
        new 
p_rgb[3][4];
        new 
i_rgb[3];
        
        if(
equali(color_all"off")) parse(colorp_rgb[0], charsmax(p_rgb[]), p_rgb[1], charsmax(p_rgb[]), p_rgb[2], charsmax(p_rgb[]));
        else 
parse(color_allp_rgb[0], charsmax(p_rgb[]), p_rgb[1], charsmax(p_rgb[]), p_rgb[2], charsmax(p_rgb[]));
        
        
i_rgb[0] = clamp(str_to_num(p_rgb[0]), 0255);
        
i_rgb[1] = clamp(str_to_num(p_rgb[1]), 0255);
        
i_rgb[2] = clamp(str_to_num(p_rgb[2]), 0255);
        
        
fm_set_weaponmodel_ent(idi_rgb[0], i_rgb[1], i_rgb[2]);
    }
}
public 
fn_refill_bpammo(const args[], id)
{
    if(!
is_user_alive(id))
        return;
    
    
set_msg_block(g_msg_ammopickupBLOCK_ONCE);
    
ExecuteHamB(Ham_GiveAmmoidg_max_bpammo[args[0]], g_ammo_type[args[0]], g_max_bpammo[args[0]]);
}

// Stocks
stock fm_set_weaponmodel_ent(idred = -1green = -1blue = -1// Thanks MeRcyLeZZ for the stock!
{
    static 
model[128];
    
entity_get_string(idEV_SZ_weaponmodelmodelcharsmax(model));
    
    if(!
pev_valid(g_ent_weaponmodel[id]))
    {
        
g_ent_weaponmodel[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
        if(!
pev_valid(g_ent_weaponmodel[id])) return;
        
        
entity_set_string(g_ent_weaponmodel[id], EV_SZ_classname"weapon_model");
        
entity_set_int(g_ent_weaponmodel[id], EV_INT_movetypeMOVETYPE_FOLLOW);
        
entity_set_edict(g_ent_weaponmodel[id], EV_ENT_aimentid);
        
entity_set_edict(g_ent_weaponmodel[id], EV_ENT_ownerid);
        
        if(
red != -|| green != -|| blue != -1)
            
fm_set_rendering(g_ent_weaponmodel[id], kRenderFxGlowShellredgreenbluekRenderNormal16);
    }
    
    
engfunc(EngFunc_SetModelg_ent_weaponmodel[id], model);
}
stock fm_remove_model_ents(id// Thanks MeRcyLeZZ for the stock!
{
    if(
pev_valid(g_ent_weaponmodel[id]))
    {
        
remove_entity(g_ent_weaponmodel[id]);
        
g_ent_weaponmodel[id] = 0;
    }
}
stock cs_weapon_name_to_id(const weapon[]) // Simplified get_weaponid (CS only) -- Thanks MeRcyLeZZ for the stock!
{
    static 
i;
    for(
0sizeof(g_weapon_ent_names) - 1i++)
    {
        if(
equal(weapong_weapon_ent_names[i]))
            return 
i;
    }
    
    return 
0;
}
stock fm_get_weapon_ent_owner(ent)
{
    if(
pev_valid(ent) != OFFSET_PDATA)
        return -
1;
    
    return 
get_pdata_cbase(entOFFSET_WEAPON_OWNEROFFSET_LINUX_WEAPONS);

__________________

Last edited by RojedaFeik; 02-13-2019 at 14:55. Reason: Solved
RojedaFeik is offline
DjSoftero
Veteran Member
Join Date: Nov 2014
Location: Lithuania
Old 02-08-2019 , 20:36   Re: get_pcvar_string error weapon_modifier.amxx
Reply With Quote #2

show configs weapon_modifier.ini and weapon_modifier.cfg
DjSoftero is offline
RojedaFeik
Junior Member
Join Date: Sep 2018
Location: Venezuela
Old 02-08-2019 , 21:46   Re: get_pcvar_string error weapon_modifier.amxx
Reply With Quote #3

Quote:
Originally Posted by DjSoftero View Post
show configs weapon_modifier.ini and weapon_modifier.cfg
Code:
weapon_modifier.ini

; V_ models!
; ==========
V_P228 = 
V_SHIELD = 
V_SCOUT = 
V_HEGRENADE = 
V_XM1014 = 
V_C4 = 
V_MAC10 = 
V_AUG = 
V_SMOKEGRENADE = 
V_ELITE = 
V_FIVESEVEN = 
V_UMP45 = 
V_SG550 = 
V_GALIL = 
V_FAMAS = 
V_USP = 
V_GLOCK18 = 
V_AWP = 
V_MP5NAVY = 
V_M249 = 
V_M3 = 
V_M4A1 = 
V_TMP = 
V_G3SG1 = 
V_FLASHBANG = 
V_DEAGLE = 
V_SG552 = 
V_AK47 = 
V_KNIFE = 
V_P90 =  

; P_ models!
; ==========
P_THIGHPACK = 
P_P228 = 
P_SHIELD = 
P_SCOUT = 
P_HEGRENADE = 
P_XM1014 = 
P_C4 = 
P_MAC10 = 
P_AUG = 
P_SMOKEGRENADE = 
P_ELITE = 
P_FIVESEVEN = 
P_UMP45 = 
P_SG550 = 
P_GALIL = 
P_FAMAS = 
P_USP = 
P_GLOCK18 = 
P_AWP = 
P_MP5NAVY = 
P_M249 = 
P_M3 = 
P_M4A1 = 
P_TMP = 
P_G3SG1 = 
P_FLASHBANG = 
P_DEAGLE = 
P_SG552 = 
P_AK47 = 
P_KNIFE = 
P_P90 = 

; W_ models!
; ==========
W_THIGHPACK = 
W_P228 = 
W_SHIELD = 
W_SCOUT = 
W_HEGRENADE = 
W_XM1014 = 
W_C4 = 
W_MAC10 = 
W_AUG = 
W_SMOKEGRENADE = 
W_ELITE = 
W_FIVESEVEN = 
W_UMP45 = 
W_SG550 = 
W_GALIL = 
W_FAMAS = 
W_USP = 
W_GLOCK18 = 
W_AWP = 
W_MP5NAVY = 
W_M249 = 
W_M3 = 
W_M4A1 = 
W_TMP = 
W_G3SG1 = 
W_FLASHBANG = 
W_DEAGLE = 
W_SG552 = 
W_AK47 = 
W_KNIFE = 
W_P90 = 
W_BACKPACK = 

; Knife Sounds!
; =============
KNIFE_DEPLOY = 
KNIFE_HIT_1 = 
KNIFE_HIT_2 = 
KNIFE_HIT_3 = 
KNIFE_HIT_4 = 
KNIFE_HIT_WALL = 
KNIFE_SLASH_1 = 
KNIFE_SLASH_2 = 
KNIFE_STAB =
Code:
weapon_modifier.cfg only modified recoil to 0.80

; Damage!
; =======
wm_damage_p228 off
wm_damage_scout off
wm_damage_xm1014 off
wm_damage_mac10 off
wm_damage_aug off
wm_damage_elite off
wm_damage_fiveseven off
wm_damage_ump45 off
wm_damage_sg550 off
wm_damage_galil off
wm_damage_famas off
wm_damage_usp off
wm_damage_glock18 off
wm_damage_awp off
wm_damage_mp5navy off
wm_damage_m249 off
wm_damage_m3 off
wm_damage_m4a1 off
wm_damage_tmp off
wm_damage_g3sg1 off
wm_damage_deagle off
wm_damage_sg552 off
wm_damage_ak47 off
wm_damage_knife off
wm_damage_p90 off
wm_damage_all off

; Recoil!
; =======
wm_recoil_p228 0.80
wm_recoil_scout 0.80
wm_recoil_xm1014 0.80
wm_recoil_mac10 0.80
wm_recoil_aug 0.80
wm_recoil_elite 0.80
wm_recoil_fiveseven 0.80
wm_recoil_ump45 0.80
wm_recoil_sg550 0.80
wm_recoil_galil 0.80
wm_recoil_famas 0.80
wm_recoil_usp 0.80
wm_recoil_glock18 0.80
wm_recoil_awp 0.80
wm_recoil_mp5navy 0.80
wm_recoil_m249 0.80
wm_recoil_m3 0.80
wm_recoil_m4a1 0.80
wm_recoil_tmp 0.80
wm_recoil_g3sg1 0.80
wm_recoil_deagle 0.80
wm_recoil_sg552 0.80
wm_recoil_ak47 0.80
wm_recoil_knife 0.80
wm_recoil_p90 0.80
wm_recoil_all 0.80

; Speed!
; ======
wm_speed_p228 off
wm_speed_scout off
wm_speed_xm1014 off
wm_speed_mac10 off
wm_speed_aug off
wm_speed_elite off
wm_speed_fiveseven off
wm_speed_ump45 off
wm_speed_sg550 off
wm_speed_galil off
wm_speed_famas off
wm_speed_usp off
wm_speed_glock18 off
wm_speed_awp off
wm_speed_mp5navy off
wm_speed_m249 off
wm_speed_m3 off
wm_speed_m4a1 off
wm_speed_tmp off
wm_speed_g3sg1 off
wm_speed_deagle off
wm_speed_sg552 off
wm_speed_ak47 off
wm_speed_knife off
wm_speed_p90 off
wm_speed_all off

; W_ Glow!
; ========
wm_wglow_thighpack off
wm_wglow_p228 off
wm_wglow_shield off
wm_wglow_scout off
wm_wglow_hegrenade off
wm_wglow_xm1014 off
wm_wglow_c4 off
wm_wglow_mac10 off
wm_wglow_aug off
wm_wglow_smokegrenade off
wm_wglow_elite off
wm_wglow_fiveseven off
wm_wglow_ump45 off
wm_wglow_sg550 off
wm_wglow_galil off
wm_wglow_famas off
wm_wglow_usp off
wm_wglow_glock18 off
wm_wglow_awp off
wm_wglow_mp5navy off
wm_wglow_m249 off
wm_wglow_m3 off
wm_wglow_m4a1 off
wm_wglow_tmp off
wm_wglow_g3sg1 off
wm_wglow_flashbang off
wm_wglow_deagle off
wm_wglow_sg552 off
wm_wglow_ak47 off
wm_wglow_knife off
wm_wglow_p90 off
wm_wglow_all off
wm_wglow_backpack off

; P_ Glow!
; ========
wm_pglow_p228 off
wm_pglow_shield off
wm_pglow_scout off
wm_pglow_hegrenade off
wm_pglow_xm1014 off
wm_pglow_c4 off
wm_pglow_mac10 off
wm_pglow_aug off
wm_pglow_smokegrenade off
wm_pglow_elite off
wm_pglow_fiveseven off
wm_pglow_ump45 off
wm_pglow_sg550 off
wm_pglow_galil off
wm_pglow_famas off
wm_pglow_usp off
wm_pglow_glock18 off
wm_pglow_awp off
wm_pglow_mp5navy off
wm_pglow_m249 off
wm_pglow_m3 off
wm_pglow_m4a1 off
wm_pglow_tmp off
wm_pglow_g3sg1 off
wm_pglow_flashbang off
wm_pglow_deagle off
wm_pglow_sg552 off
wm_pglow_ak47 off
wm_pglow_knife off
wm_pglow_p90 off
wm_pglow_all off

; Unlimited Clip!
; ===============
wm_unclip_p228 off
wm_unclip_scout off
wm_unclip_xm1014 off
wm_unclip_mac10 off
wm_unclip_aug off
wm_unclip_elite off
wm_unclip_fiveseven off
wm_unclip_ump45 off
wm_unclip_sg550 off
wm_unclip_galil off
wm_unclip_famas off
wm_unclip_usp off
wm_unclip_glock18 off
wm_unclip_awp off
wm_unclip_mp5navy off
wm_unclip_m249 off
wm_unclip_m3 off
wm_unclip_m4a1 off
wm_unclip_tmp off
wm_unclip_g3sg1 off
wm_unclip_deagle off
wm_unclip_sg552 off
wm_unclip_ak47 off
wm_unclip_knife off
wm_unclip_p90 off
wm_unclip_all off

; Unlimited BPAmmo!
; =================
wm_unbpammo_p228 off
wm_unbpammo_scout off
wm_unbpammo_xm1014 off
wm_unbpammo_mac10 off
wm_unbpammo_aug off
wm_unbpammo_elite off
wm_unbpammo_fiveseven off
wm_unbpammo_ump45 off
wm_unbpammo_sg550 off
wm_unbpammo_galil off
wm_unbpammo_famas off
wm_unbpammo_usp off
wm_unbpammo_glock18 off
wm_unbpammo_awp off
wm_unbpammo_mp5navy off
wm_unbpammo_m249 off
wm_unbpammo_m3 off
wm_unbpammo_m4a1 off
wm_unbpammo_tmp off
wm_unbpammo_g3sg1 off
wm_unbpammo_deagle off
wm_unbpammo_sg552 off
wm_unbpammo_ak47 off
wm_unbpammo_knife off
wm_unbpammo_p90 off
wm_unbpammo_all off

; Automatic Fire Pistol!
; ======================
wm_autofire_p228 0
wm_autofire_elite 0
wm_autofire_fiveseven 0
wm_autofire_usp 0
wm_autofire_glock18 0
wm_autofire_deagle 0
wm_autofire_all 0

; Zoom!
; =====
wm_zoom_p228 off
wm_zoom_scout off
wm_zoom_xm1014 off
wm_zoom_mac10 off
wm_zoom_aug off
wm_zoom_elite off
wm_zoom_fiveseven off
wm_zoom_ump45 off
wm_zoom_sg550 off
wm_zoom_galil off
wm_zoom_awp off
wm_zoom_mp5navy off
wm_zoom_m249 off
wm_zoom_m3 off
wm_zoom_tmp off
wm_zoom_g3sg1 off
wm_zoom_deagle off
wm_zoom_sg552 off
wm_zoom_ak47 off
wm_zoom_p90 off
wm_zoom_all off

; Knockback!
; ==========
wm_knockback 0
wm_kb_zvel 1 		; Multiplier Z velocity
wm_kb_dist 500 		; Distance

wm_kb_p228 0
wm_kb_scout 0
wm_kb_xm1014 0
wm_kb_mac10 0
wm_kb_aug 0
wm_kb_elite 0
wm_kb_fiveseven 0
wm_kb_ump45 0
wm_kb_sg550 0
wm_kb_galil 0
wm_kb_famas 0
wm_kb_usp 0
wm_kb_glock18 0
wm_kb_awp 0
wm_kb_mp5navy 0
wm_kb_m249 0
wm_kb_m3 0
wm_kb_m4a1 0
wm_kb_tmp 0
wm_kb_g3sg1 0
wm_kb_deagle 0
wm_kb_sg552 0
wm_kb_ak47 0
wm_kb_knife 0
wm_kb_p90 0
wm_kb_all 0
__________________
RojedaFeik is offline
RojedaFeik
Junior Member
Join Date: Sep 2018
Location: Venezuela
Old 02-10-2019 , 18:52   Re: get_pcvar_string error weapon_modifier.amxx
Reply With Quote #4

Please help
__________________
RojedaFeik is offline
PartialCloning
Senior Member
Join Date: Dec 2015
Old 02-10-2019 , 21:26   Re: get_pcvar_string error weapon_modifier.amxx
Reply With Quote #5

Try:

PHP Code:
public event_AmmoX(id)
{
    if(!
g_weapon[id])
        return;
.... 
PartialCloning is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 02-11-2019 , 04:16   Re: get_pcvar_string error weapon_modifier.amxx
Reply With Quote #6

The error means that the plugin is trying to get a value from a cvar that hasn't been created (yet). Check that.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
RojedaFeik
Junior Member
Join Date: Sep 2018
Location: Venezuela
Old 02-13-2019 , 14:55   Re: get_pcvar_string error weapon_modifier.amxx
Reply With Quote #7

Quote:
Originally Posted by PartialCloning View Post
Try:

PHP Code:
public event_AmmoX(id)
{
    if(!
g_weapon[id])
        return;
.... 

Thank u!
__________________
RojedaFeik is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 08:10.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode