Error de logs quien me ayuda a solucionarlo
#1
Buenas tardes, vengo a pedir ayuda sobre este plugins weapon_modifier, me esta tirando un error de logs en el servidor y me gustaria saber como solucionarlo, uso versión de compilación 1.9.0:5241

ERROR DE LOGS


[Imagen: ZJMEoqG.jpg]

Weapon modifier sma
Código PHP:
#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_disconnected(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);

»» RENTA TU SERVIDOR EN EVOLUTIÓN-HOST ««

Si deseas contactarme para comprar tu servidor de counter-strike puedes enviar un M.P
Responder
#2
En plugins.ini añadí después del plugin debug. Y muestra el output.

Ejemplo: weaponmodifier.amxx debug

Saludos. Crab
Responder
#3
(14/05/2019, 06:58 PM)Chema escribió: En plugins.ini añadí después del plugin debug. Y muestra el output.

Ejemplo: weaponmodifier.amxx debug

Saludos. Crab

A ok coloco debug y listo con eso deja de tirar errores? yo pense que se tenia que modificar ese codigo para que no diera mas error de logs. gracias por tu ayuda probare si ya no tira mas error cn lo del "debug"
»» RENTA TU SERVIDOR EN EVOLUTIÓN-HOST ««

Si deseas contactarme para comprar tu servidor de counter-strike puedes enviar un M.P
Responder
#4
borren el mensaje me equivoque Gran sonrisa
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#5
(14/05/2019, 11:20 PM)rosario escribió:
(14/05/2019, 06:58 PM)Chema escribió: En plugins.ini añadí después del plugin debug. Y muestra el output.

Ejemplo: weaponmodifier.amxx debug

Saludos. Crab

A ok coloco debug y listo con eso deja de tirar errores? yo pense que se tenia que modificar ese codigo para que no diera mas error de logs. gracias por tu ayuda probare si ya no tira mas error cn lo del "debug"

Con eso mostrará los errores del plugin en un log.

Saludos. Crab
Responder
#6
(15/05/2019, 09:00 AM)Chema escribió:
(14/05/2019, 11:20 PM)rosario escribió:
(14/05/2019, 06:58 PM)Chema escribió: En plugins.ini añadí después del plugin debug. Y muestra el output.

Ejemplo: weaponmodifier.amxx debug

Saludos. Crab

A ok coloco debug y listo con eso deja de tirar errores? yo pense que se tenia que modificar ese codigo para que no diera mas error de logs. gracias por tu ayuda probare si ya no tira mas error cn lo del "debug"

Con eso mostrará los errores del plugin en un log.

Saludos. Crab

Ok perfecto, cuando tenga los errores en especifico te los hago saber
»» RENTA TU SERVIDOR EN EVOLUTIÓN-HOST ««

Si deseas contactarme para comprar tu servidor de counter-strike puedes enviar un M.P
Responder
#7
(15/05/2019, 09:00 AM)Chema escribió:
(14/05/2019, 11:20 PM)rosario escribió:
(14/05/2019, 06:58 PM)Chema escribió: En plugins.ini añadí después del plugin debug. Y muestra el output.

Ejemplo: weaponmodifier.amxx debug

Saludos. Crab

A ok coloco debug y listo con eso deja de tirar errores? yo pense que se tenia que modificar ese codigo para que no diera mas error de logs. gracias por tu ayuda probare si ya no tira mas error cn lo del "debug"

Con eso mostrará los errores del plugin en un log.

Saludos. Crab

Chema este es el error que me tiro al colocar debug.

[Imagen: ZvFRnVu.jpg]
»» RENTA TU SERVIDOR EN EVOLUTIÓN-HOST ««

Si deseas contactarme para comprar tu servidor de counter-strike puedes enviar un M.P
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)