L 02/23/2014 - 06:50:20: Start of error session.
L 02/23/2014 - 06:50:20: Info (map "de_chateau") (file "addons/amxmodx/logs/error_20140223.log")
L 02/23/2014 - 06:50:20: [amxx] Displaying debug trace (plugin "pokemod.amxx")
L 02/23/2014 - 06:50:20: [amxx] Run time error 10: native error (native "clamp")
L 02/23/2014 - 06:50:20: [amxx] [0] grass.inl::Mega_Drain (line 225)
L 02/23/2014 - 06:50:20: [amxx] [1] checks.inl::SkillPercent (line 355)
L 02/23/2014 - 06:50:20: [amxx] [2] checks.inl::SkillClamp (line 360)
L 02/23/2014 - 06:50:20: [amxx] [3] grass.inl::Mega_Drain (line 224)
Skill Mega_Drain z podkreślonymi linijkami 225 i 224:
public Mega_Drain(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( !ValidPlayer(victim) || !Pokemod_Alive(victim) || knife_weapon(weapon) || grenade_weapon(weapon) ) return SKILL_READY; new vweapon = get_user_weapon(victim); if( knife_weapon(vweapon) || grenade_weapon(vweapon) ) return SKILL_READY; if( SkillChance(id,skill) ){ new wpn[32], ammo; new vwpn[32], vammo; get_user_weapon(id, ammo); get_weaponname(weapon,wpn,31); get_user_weapon(victim, vammo); get_weaponname(vweapon,vwpn,31); #if MOD==DOD ammo = dod_get_user_ammo(id, weapon); vammo = dod_get_user_ammo(victim, vweapon); #endif //this makes top level drain half ammo new drainlow = (vammo*MEGA_DRAIN_LOW)/100; //and bottom level drain full ammo new drainhigh = (vammo*MEGA_DRAIN_HIGH)/100; -------------------------------------------------------------------------------------224 i 225 new drain = SkillClamp(id, skill, drainlow, drainhigh); new newvammo = clamp( vammo-drain, 0, vammo ); ------------------------------------------------------------------------------------------------------- #if MOD==CS new iWPNidx = -1; while( (iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) ){ if( id == pev(iWPNidx, pev_owner) ){ cs_set_weapon_ammo(iWPNidx, ammo+drain); } } iWPNidx = -1; while( (iWPNidx = fm_find_ent_by_class(iWPNidx, vwpn)) ){ if( victim == pev(iWPNidx, pev_owner) ){ cs_set_weapon_ammo(iWPNidx, newvammo); } } #endif #if MOD==DOD dod_set_user_ammo(id, weapon, ammo+drain); dod_set_user_ammo(victim, vweapon, newvammo); #endif #if MOD==NS new iWPNidx = -1; while( (iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) ){ if( id == pev(iWPNidx, pev_owner) ){ ns_set_weap_clip(iWPNidx, ammo+drain); } } iWPNidx = -1; while( (iWPNidx = fm_find_ent_by_class(iWPNidx, vwpn)) ){ if( victim == pev(iWPNidx, pev_owner) ){ ns_set_weap_clip(iWPNidx, newvammo); } } #endif sound_hit(id); sound_hit(victim); MakeLine_Ent(0,id,victim,SPRITE_INDEX[SPR_XPLODE],1,1,5,40,99,150,150,150,100,0); return SKILL_USED; } return SKILL_READY; }
oraz wycinek z Check.inl z linijkami 255 i 360
stock SkillPercent(id, skill, num) return (( num * SkillLevel(id,skill) ) / ( TotalLevels ));
stock SkillClamp(id, skill, low, high) return ( low + SkillPercent(id, skill, high-low) );