AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Working radius damage function with id (https://forums.alliedmods.net/showthread.php?t=127324)

Wuu 05-19-2010 15:33

Working radius damage function with id
 
i need working radius damage function with id, so i can add killer. I tested many functions that i find in forum, some don't work and some works but crush server, some works only with entity. :cry:

Sylwester 05-19-2010 16:07

Re: Working radius damage function with id
 
You can use something like this:
PHP Code:

#include <amxmodx>
#include <cstrike>
#include <fun>

new g_max_players
public plugin_init(){
    
g_max_players get_maxplayers()
}

//if self_dmg is true, then player "id" will also receive dmg
//if ignore_teams is true, then teammates within range will also receive dmg
public radius_dmg(idradiusdmgbool:ignore_teamsbool:self_dmg){
    static 
source_origin[3], o[3], CsTeams:team
    get_user_origin
(idsource_origin)
    
team cs_get_user_team(id)
    for(new 
i=1i<=g_max_playersi++){
        if(!
is_user_alive(i) || (!self_dmg && id==i) || (!ignore_teams && team == cs_get_user_team(i)))
            continue
        
get_user_origin(io)
        
o[0]-=source_origin[0]
        
o[1]-=source_origin[1]
        
o[2]-=source_origin[2]
        if(
radius sqroot(o[0]*o[0]+o[1]*o[1]+o[2]*o[2]))
            continue
        
do_damage(iiddmg)
    }
}

//example damage function
public do_damage(victimattackerdmg){
    static 
name[32]
    
set_user_health(victimget_user_health(victim)-dmg)
    
get_user_name(attackername31)
    
client_print(victimprint_chat"You have lost %d health due to radius damage caused by %s"dmgname)



Wuu 05-20-2010 11:53

Re: Working radius damage function with id
 
Its always return true, doesn't mater if player is close or not. Basicly its killing everybody on map. :(
Cant this function use get_distance ( origin1[3], origin2[3] ) instead of sqroot ?

I use your code, and it works wit get_distance. Or i am wrong?
PHP Code:

public fire_rocket_origin(id) {
    new 
cordinates[3]
    
cordinates[0] = (PlayerOrigin0+random_num(-400,400)) // title random
    
cordinates[1] = (PlayerOrigin1+random_num(-400,400))
    
cordinates[2] = (PlayerOrigin2)
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY// Explosion
        
write_byte(3)
        
write_coord(cordinates[0])
        
write_coord(cordinates[1])
        
write_coord(cordinates[2])
        
write_short(g_sModelIndexFireball)
        
write_byte(random_num(020) + 50)
        
write_byte(12)
        
write_byte(0)
    
message_end()
    
    new 
o[3], CsTeams:team,dist 
    team 
cs_get_user_team(id)
    for(new 
i=1i<=g_max_playersi++){
        if(!
is_user_alive(i) || (id==i) || (team == cs_get_user_team(i)))
            continue
        
get_user_origin(io)
        
dist get_distance(cordinates,o// getting distance
        
if( dist 250// Ok
            
continue
        
client_printidprint_chat"Distance: %d units"dist )
        
dist = (255 dist// reverting damage bigger distance, smaller damage   
        
ExecuteHam(Ham_TakeDamage,i0idfloat(dist) ,DMG_FALL// Doing damage
    
}
    
airstrikePlayerId 0



Sylwester 05-20-2010 15:53

Re: Working radius damage function with id
 
My code works fine with sqroot.

You can use get_distance function instead of my method - it doesn't matter.

Wuu 05-20-2010 16:12

Re: Working radius damage function with id
 
Thanks for help!


All times are GMT -4. The time now is 03:35.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.