AlliedModders Donor
Join Date: Mar 2014
Location: Tomorrowland
|
01-06-2017
, 16:28
Knife Distance [Problem with names]
|
#1
|
I got a little problem with names
[Knife Distance] stabbed Mehh within 31.277442 units (Head)!
[Knife Distance] stabbed within 31.172189 units (Left Arm)!
It simply removes the names of the victim/attacker in chat
So if somebody could fix it, please do. thanks
And also, sometimes you can't hear the sound GODLIKE/WICKED SICK mostly when you're already dead.
PHP Code:
#include <amxmodx> #include <fakemeta> #include <colorchat>
#pragma semicolon 1
enum AttackType { STAB = 0, SLASH };
enum TraceType { TRACELINE = 0, TRACEHULL };
enum Sound { WICKEDSICK = 0, GODLIKE };
enum HitData { AttackType:iAttack, Float:flDistance, iHitgroup, iAttacker, iVictim };
new g_szTraceType[TraceType][] = { "TraceLine", "TraceHull" };
new g_szSound[Sound][] = { "misc/wickedsick.wav", "misc/godlike.wav" };
new g_HitData[HitData];
new g_szHitgroup[8][] = { "Full Body", "Head", "Chest", "Stomach", "Left Arm", "Right Arm", "Left Leg", "Right Leg" };
new bool:g_bKnifeHit;
new g_szNickname[33][32];
new g_pCVarFriendlyFire;
new g_pCVarSoundWickedSickStab; new g_pCVarSoundGodlikeStab; new g_pCVarSoundWickedSickSlash; new g_pCVarSoundGodlikeSlash;
new g_pCVarHudColor; new g_pCVarHudCoords; new g_pCVarHudHoldtime;
public plugin_precache( ) { precache_sound( g_szSound[WICKEDSICK] ); precache_sound( g_szSound[GODLIKE] ); }
public plugin_init( ) { register_plugin( "Knife Distance", "0.4", "SchlumPF" ); g_pCVarSoundWickedSickStab = register_cvar( "kd_sound_wickedsick_stab", "30" ); g_pCVarSoundGodlikeStab = register_cvar( "kd_sound_godlike_stab", "31" ); g_pCVarSoundWickedSickSlash = register_cvar( "kd_sound_wickedsick_slash", "46" ); g_pCVarSoundGodlikeSlash = register_cvar( "kd_sound_godlike_slash", "47" ); g_pCVarHudColor = register_cvar( "kd_hud_color", "0 250 150" ); g_pCVarHudCoords = register_cvar( "kd_hud_coords", "-0.75 -1.0" ); g_pCVarHudHoldtime = register_cvar( "kd_hud_holdtime", "2.0" ); register_forward( FM_TraceLine, "FM_TraceLine_Post", 1 ); register_forward( FM_TraceHull, "FM_TraceHull_Post", 1 ); register_event( "Damage", "eventDamage", "b" ); g_pCVarFriendlyFire = get_cvar_pointer( "mp_friendlyfire" ); }
public FM_TraceLine_Post( Float:vecSrc[3], Float:vecEnd[3], noMonsters, skipEnt, tr ) { if( !is_user_alive( skipEnt ) ) { return FMRES_IGNORED; } if( get_user_weapon( skipEnt ) != CSW_KNIFE ) { return FMRES_IGNORED; } static button; button = pev( skipEnt, pev_button ); if( !( button & IN_ATTACK ) && !( button & IN_ATTACK2 ) ) { return FMRES_IGNORED; } static Float:flFraction; get_tr2( tr, TR_flFraction, flFraction ); if( flFraction >= 1.0 ) { return FMRES_IGNORED; } static pHit; pHit = get_tr2( tr, TR_pHit ); if( get_user_team( skipEnt ) == get_user_team( pHit ) && !get_pcvar_num( g_pCVarFriendlyFire ) ) { return FMRES_IGNORED; }
static Float:vecEndPos[3]; get_tr2( tr, TR_vecEndPos, vecEndPos );
static Float:distance; distance = vector_distance( vecSrc, vecEndPos ); static Float:range; range = distance / flFraction; // vector_distance( vecSrc, vecEnd ) if( 31.89 < range < 32.1 ) { GetTraceData( tr, skipEnt, pHit, distance, STAB ); } else if( 47.89 < range < 48.1 ) { GetTraceData( tr, skipEnt, pHit, distance, SLASH ); } return FMRES_IGNORED; }
public FM_TraceHull_Post( Float:vecSrc[3], Float:vecEnd[3], noMonsters, hull, skipEnt, tr ) { if( !is_user_alive( skipEnt ) ) { return FMRES_IGNORED; } if( get_user_weapon( skipEnt ) != CSW_KNIFE ) { return FMRES_IGNORED; } static Float:flFraction; get_tr2( tr, TR_flFraction, flFraction ); if( flFraction >= 1.0 ) { return FMRES_IGNORED; } static pHit; pHit = get_tr2( tr, TR_pHit ); if( get_user_team( skipEnt ) == get_user_team( pHit ) && !get_pcvar_num( g_pCVarFriendlyFire ) ) { return FMRES_IGNORED; } static Float:vecEndPos[3]; get_tr2( tr, TR_vecEndPos, vecEndPos );
static Float:distance; distance = vector_distance( vecSrc, vecEndPos ); static Float:range; range = distance / flFraction; // vector_distance( vecSrc, vecEnd ) if( 31.89 < range < 32.1 ) { GetTraceData( tr, skipEnt, pHit, distance, STAB ); } else if( 47.89 < range < 48.1 ) { GetTraceData( tr, skipEnt, pHit, distance, SLASH ); } return FMRES_IGNORED; }
public GetTraceData( tr, attacker, victim, Float:distance, AttackType:attack ) { g_HitData[iAttack] = any:attack; g_HitData[flDistance] = any:distance; g_HitData[iHitgroup] = get_tr2( tr, TR_iHitgroup ); g_HitData[iAttacker] = attacker; g_HitData[iVictim] = victim; g_bKnifeHit = true; }
public eventDamage( ) { if( g_bKnifeHit ) { g_bKnifeHit = false; static victim; victim = g_HitData[iVictim]; if( !( 1 <= victim <= 32 ) ) { return PLUGIN_CONTINUE; } static attacker; attacker = g_HitData[iAttacker]; static Float:distance; distance = g_HitData[flDistance]; static Float:health; pev( victim, pev_health, health ); static r, g, b; GetHudColor( r, g, b ); static Float:x, Float:y; GetHudCoords( x, y ); set_hudmessage( r, g, b, x, y, 0, 0.0, get_pcvar_float( g_pCVarHudHoldtime ), 0.0, 0.0, 1 ); if( g_HitData[iAttack] == STAB ) { show_hudmessage( attacker, "Stab Stats (%s)^nDistance: %f (max: 32.0)^nHit: %s (%s)^nDamage: %i"\ , g_szTraceType[TraceType:!g_HitData[iHitgroup]],\ distance, g_szNickname[victim],\ g_szHitgroup[g_HitData[iHitgroup]], pev( victim, pev_dmg_take ) ); if( health < 0.0 ) { ColorChat( victim, BLUE, "[Knife Distance] %s stabbed you within %f units (%s)!",\ g_szNickname[attacker],\ distance, g_szHitgroup[g_HitData[iHitgroup]] ); if( distance >= get_pcvar_float( g_pCVarSoundGodlikeStab ) ) { ColorChat( 0, RED, "[Knife Distance] %s stabbed %s within %f units (%s)!",\ g_szNickname[attacker], g_szNickname[victim],\ distance, g_szHitgroup[g_HitData[iHitgroup]] ); client_cmd( 0, "spk %s", g_szSound[GODLIKE] ); } else if( distance >= get_pcvar_float( g_pCVarSoundWickedSickStab ) ) { ColorChat( 0, GREEN, "[Knife Distance] %s stabbed %s within %f units (%s)!",\ g_szNickname[attacker], g_szNickname[victim],\ distance, g_szHitgroup[g_HitData[iHitgroup]] ); client_cmd( 0, "spk %s", g_szSound[WICKEDSICK] ); } } } else { show_hudmessage( attacker, "Slash Stats (%s)^nDistance: %f (max: 48.0)^nHit: %s (%s)^nDamage: %i"\ , g_szTraceType[TraceType:!g_HitData[iHitgroup]],\ distance, g_szNickname[victim],\ g_szHitgroup[g_HitData[iHitgroup]], pev( victim, pev_dmg_take ) ); if( health < 0.0 ) { ColorChat( victim, BLUE, "[Knife Distance] %s slashed you within %f units (%s)!",\ g_szNickname[attacker],\ distance, g_szHitgroup[g_HitData[iHitgroup]] ); if( distance >= get_pcvar_float( g_pCVarSoundGodlikeSlash ) ) { ColorChat( 0, RED, "[Knife Distance] %s slashed %s within %f units (%s)!",\ g_szNickname[attacker], g_szNickname[victim],\ distance, g_szHitgroup[g_HitData[iHitgroup]] ); client_cmd( 0, "spk %s", g_szSound[GODLIKE] ); } else if( distance >= get_pcvar_float( g_pCVarSoundWickedSickSlash ) ) { ColorChat( 0, GREEN, "[Knife Distance] %s slashed %s within %f units (%s)!",\ g_szNickname[attacker], g_szNickname[victim],\ distance, g_szHitgroup[g_HitData[iHitgroup]] ); client_cmd( 0, "spk %s", g_szSound[WICKEDSICK] ); } } } } return PLUGIN_CONTINUE; }
public client_infochanged( plr ) { static curName[32], newName[32]; get_user_name( plr, curName, 31 ); get_user_info( plr, "name", newName, 31 ); if( !equal( newName, curName ) ) { copy( g_szNickname[plr], 31, newName ); } }
public GetHudColor( &r, &g, &b ) { static color[16], piece[5]; get_pcvar_string( g_pCVarHudColor, color, 15 ); strbreak( color, piece, 4, color, 15 ); r = str_to_num( piece ); strbreak( color, piece, 4, color, 15 ); g = str_to_num( piece ); b = str_to_num( color ); }
public GetHudCoords( &Float:x, &Float:y ) { static coords[16], piece[10]; get_pcvar_string( g_pCVarHudCoords, coords, 15 ); strbreak( coords, piece, 9, coords, 15 ); x = str_to_float( piece ); y = str_to_float( coords ); }
__________________
Last edited by SomewhereLost; 01-06-2017 at 16:57.
|
|