PHP Code:
/*
AMXX Kill Distance
Author: Nightscream
Help: Kleenex
Version: 0.3
===============================================
Description:
If Someone kills an enemy/teammate
it will give a hud message to see from
how far you killed him in meters
made on request
http://www.amxmodx.org/forums/viewtopic.php?t=15208
===============================================
Cvars:
distance_meter 0 = Feet
1 = Meter
ditance_all 0 = shows text only to killer
1= shows text to everyone
===============================================
Tested on:
Listen server | condition-zero | Windows XP Home | amxx 1.55
===============================================
Changelog:
0.1 - Release for amxx
0.2 - Added Distance in Feet
0.3 - Added distance_all cvar so text can be showed to everyone/killer
===============================================
suggestions are always welcome
*/
#include <amxmodx>
#include <amxmisc>
#define PLUGINNAME "Kill Distance"
#define VERSION "0.3"
#define AUTHOR "Nightscream"
new Float:modMeter = 32.00
new Float:modFeet = 35.00
new g_maxplayers
public plugin_init() {
register_plugin( PLUGINNAME, VERSION, AUTHOR )
register_event( "DeathMsg", "Event_Death", "a" )
register_cvar( "distance_meter", "1" )
register_cvar( "distance_all", "0" )
g_maxplayers = get_maxplayers()
}
public Event_Death(id) {
new iVictimID = read_data(2)
new iWeapon, iAttackerID = get_user_attacker( iVictimID, iWeapon )
if( !is_user_connected( iVictimID ) ) return PLUGIN_CONTINUE
if( !is_user_connected( iAttackerID ) || iVictimID == iAttackerID ) return PLUGIN_CONTINUE
new name[33]
new name2[33]
get_user_name( iAttackerID, name, 32 )
get_user_name( iVictimID, name2, 32 )
new origin1[3]
new origin2[3]
get_user_origin( iAttackerID, origin1 ) //<--- Error Shown Here
get_user_origin( iVictimID, origin2 )
new distance = get_distance(origin1,origin2)
new distance1 =(distance/modMeter)
if ( get_cvar_num( "distance_meter" ) == 0 ) {
if ( get_cvar_num( "distance_all" ) == 1 ) {
set_hudmessage( 0, 100, 0, 0.06, 0.8, 0, 6.0, 12.0, 0.5, 0.5, 162 );
show_hudmessage( id, "%s have killed %s^nfrom a distance of %d feet",name, name2,floatround( distance/modFeet ) )
}
if ( get_cvar_num( "distance_all" ) == 0 ) {
set_hudmessage( 0, 100, 0, 0.06, 0.8, 0, 6.0, 12.0, 0.5, 0.5, 162 );
show_hudmessage( iAttackerID, "You have killed %s^nfrom a distance of %d feet", name2,floatround( distance/modFeet ) )
}
}
if ( get_cvar_num("distance_meter") == 1 ) {
if ( get_cvar_num( "distance_all" ) == 1 ) {
set_hudmessage(0, 100, 0, 0.06, 0.8, 0, 6.0, 12.0, 0.5, 0.5, 162);
show_hudmessage( id, "%s have killed %s^nfrom a distance of %d meter",name, name2,floatround( distance/modMeter ) )
}
if ( get_cvar_num( "distance_all" ) == 0 ) {
//client_print(iAttackerID,print_chat, "You have killed %s from a distance of %d meter", name2,distance1)
colored_print(iAttackerID, "^x03 You have killed ^x04 %s ^x03 from a distance of ^x04 %d meter", name2,floatround(distance1))
//client_print(iVictimID,print_chat, "Killed by %s from a distance of %d meter", name,distance1)
colored_print(iVictimID, "^x03 Killed by ^x04 %s ^x03 from a distance of ^x04 %d meter", name,floatround(distance1))
}
}
return PLUGIN_CONTINUE
}
// Colored print by MeRcyLeZZ
colored_print(target, const message[], any:...)
{
static buffer[512], i, argscount, g_msgSayText
argscount = numargs()
g_msgSayText = get_user_msgid("SayText")
// Send to everyone
if (!target)
{
static player
for (player = 1; player <= g_maxplayers; player++)
{
// Not connected
if (!is_user_connected(player))
continue;
// Remember changed arguments
static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
changedcount = 0
// Replace LANG_PLAYER with player id
for (i = 2; i < argscount; i++)
{
if (getarg(i) == LANG_PLAYER)
{
setarg(i, 0, player)
changed[changedcount] = i
changedcount++
}
}
// Format message for player
vformat(buffer, charsmax(buffer), message, 3)
// Send it
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
write_byte(player)
write_string(buffer)
message_end()
// Replace back player id's with LANG_PLAYER
for (i = 0; i < changedcount; i++)
setarg(changed[i], 0, LANG_PLAYER)
}
}
// Send to specific target
else
{
// Format message for player
vformat(buffer, charsmax(buffer), message, 3)
// Send it
message_begin(MSG_ONE, g_msgSayText, _, target)
write_byte(target)
write_string(buffer)
message_end()
}
}