View Single Post
bricir
Junior Member
Join Date: May 2013
Old 02-05-2014 , 16:40   Re: [REQ] NightCrawler Mod
Reply With Quote #105

Quote:
Originally Posted by pokemonmaster View Post
Well, it is missing the sound part
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

// --------------------------------------------------------------------
#define MAX_RADIUS    600.0        // OR distance, doesn't matter
#define DECREMENT_AT_TIME 67

#define TASK_HUD    81732512371
#define NC_TEAM    1        // 1 for Terrorist, 2 for CTs
#define UPDATE_TIME 0.5
// --------------------------------------------------------------------

#define IsAlive(%1) (gAlive & (1<<%1))
#define SetAlive(%1) (gAlive |= (1<<%1))
#define SetNotAlive(%1) (gAlive &= ~(1<<%1))

new iMaxRadius
new g_szPlayerMessage[33][50]
new 
g_iMaxPlayers
new gAlive
new g_szDefaultMessage[30]

public 
plugin_init()
{
    
register_plugin("Near NC detector""1.0""Khalid :)")
    
    
RegisterHam(Ham_Spawn"player""Fwd_Spawn"1)
    
RegisterHam(Ham_Killed"player""Fwd_Killed"0)
    
    
g_iMaxPlayers get_maxplayers()
    
    
iMaxRadius floatround(MAX_RADIUS)
    new 
iNum iMaxRadius DECREMENT_AT_TIME
    
    add
(g_szDefaultMessagecharsmax(g_szDefaultMessage), "[")
    while(
iNum)
    {
        --
iNum
        add
(g_szDefaultMessagecharsmax(g_szDefaultMessage), "-")
    }
    
add(g_szDefaultMessagecharsmax(g_szDefaultMessage), "]")
}

public 
client_disconnect(id)
{
    
id += TASK_HUD
    
    
if(task_exists(id))
    {
        
remove_task(id)
    }
}

public 
Fwd_Spawn(id)
{
    if(!
is_user_alive(id))
    {
        return;
    }
    
    
SetAlive(id)
    
set_task(UPDATE_TIME"ShowHud"TASK_HUD id, .flags "b")
}

public 
Fwd_Killed(id)
{
    
SetNotAlive(id)
    if(
task_exists(id TASK_HUD))
        
remove_task(id TASK_HUD)
}

public 
ShowHud(taskid)
{
    new 
id taskid TASK_HUD
    
    
if(!IsAlive(id))
    {
        
remove_task(taskid)
        return;
    }
    
    static 
Float:fOrigin[3]
    
pev(idpev_originfOrigin)
    
    static 
iEntiFound
    iEnt 
0iFound 0
    
    
static iColor[3]; iColor = { 00}
    
    
// Nearest player
    
while( (iEnt engfunc(EngFunc_FindEntityInSphereiEntfOriginMAX_RADIUS ) ) )
    {
        if(
iEnt g_iMaxPlayers || iEnt == id)
        {
            continue;
        }
        
        if(!
IsAlive(iEnt))
        {
            continue;
        }
        
        if(
get_user_team(iEnt) != NC_TEAM)
        {
            continue;
        }
        
        
distance_rate(idfOriginiEntiColor)
        
iFound 1
        
break;
    }
    
    
set_hudmessage(iColor[0], iColor[1], iColor[2], -1.00.6000.0UPDATE_TIME 0.10.00.1)
    
show_hudmessage(idiFound g_szPlayerMessage[id] : g_szDefaultMessage)
}

stock distance_rate(idFloat:Origin1[3], iEntiColor[3])
{
    static 
Float:Origin2[3]; pev(iEntpev_originOrigin2)
    
    new 
Float:flDistance get_distance_f(Origin1Origin2)
    
    if(
flDistance MAX_RADIUS)
        return;
    
    new 
Float:flNewDistance MAX_RADIUS DECREMENT_AT_TIMEFloat:flOldDistance  MAX_RADIUS
    
    
new 1
    
while( flNewDistance >= )
    {
        if( 
flNewDistance <= flDistance <= flOldDistance )
            break;
        
        
flOldDistance flNewDistanceflNewDistance -= DECREMENT_AT_TIME
        
++k
    
}
    
    
set_player_msg_string(idkiColor)
}

public 
set_player_msg_string(idiNumiColor[3])
{
    
setc(g_szPlayerMessage[id], charsmax(g_szPlayerMessage), 0)
    
    static 
iLeftiAdd
    
new szAdd[30], szMark[30]
    if(
iNum < ( iAdd = (iMaxRadius DECREMENT_AT_TIME) ) )
    {
        
iLeft iAdd iNum
        iAdd 
iLeft 2
        
        
while(iAdd > -1)
        {
            
szAdd[iAdd] = '-'
            
            
--iAdd
        
}
    }
    
    while(
iNum > -1)
    {
        
szMark[iNum] = '!'
        
--iNum
    
}
    
    if(
iLeft == || !iLeft)
    {
        
iColor = { 2550}
    }
    
    else if( 
iLeft <= ( (iMaxRadius DECREMENT_AT_TIME) / ) )
    {
        
iColor = { 255255}
    }
    
    else
    {
        
iColor = { 5020550 }
    }
    
    
formatex(g_szPlayerMessage[id], charsmax(g_szPlayerMessage[]), "[%s%s%s]"szAddszMarkszAdd)

now I would like this as an item so players can buy it from shop... anyone up for it ?
bricir is offline