AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Combo sprites (https://forums.alliedmods.net/showthread.php?t=294345)

Lawnmoverman 02-25-2017 08:53

Combo sprites
 
Hey everybody I found this cool plugin which displays combo kills.

http://www.nozgaming.eu/sss.png

Works very cool, but theres one problem, it shoes me the combos of other players also. Can someone modify to see only my personal combos. And maybe implement that only users with ADMIN_LEVEL_H or flag s can see sprites.

PHP Code:

/* 
    Plugin generated by AMXX-Studio 
    
    Plugin: ComboSprites
    Creator: Chrescoe1
    Version: 0.5
    
    Changelog: 
    v.0.1 - First code
    v.0.2 - First Release
    v.0.3 - 0.4 - Testing...
    v.0.5 - BugFixing - optimize code - New Release
    
    if you find bugs - please write me
    Skype: Xailer24
    
    
    Visit to Next21.ru
    
*/

#include <amxmodx>
#include <fakemeta>

#define PLUGIN "ComboSprites"
#define VERSION "0.5"
#define AUTHOR "Chrescoe1"    //Thanks for sprites Thomas von Winkler


//Cvar's
const Float:ComboTime=4.0    //Time to combo ending


//Engine forward register
native register_think(const classname[],const func[])

//Resource
new const sprite_score[]="sprites/npc/combos1-19.spr"
new const sprite_bonus[]="sprites/npc/ef_zombiekill.spr"
new const sprite_classname[]="ef_combo"

new info_target
new sprindex_combo[33],sprindex_head[33],sprindex_knife[33],spriteindex_grenade[33],Float:LastKill[33],kill_count[33]

enum
{
    
    
Combo=0,
    
Head,
    
Knife,
    
Grenade
}

public 
plugin_precache()precache_model(sprite_score),precache_model(sprite_bonus)
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
info_target=engfunc(EngFunc_AllocString"info_target")
    
register_think(sprite_classname,"delete")
    
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
    
// Add your code here...
}
//Engine
public delete(ent)if(pev_valid(ent))engfunc(EngFunc_RemoveEntityent)

//Msg
public message_DeathMsg()
{
    static 
Weapon_Msg[16], attackervictim,head,bool:grenade
    attacker
=read_data(1)
    
victim=read_data(2)
    
head=read_data(3)
    
read_data(4,Weapon_Msg,charsmax(Weapon_Msg))
    
//client_print(0,print_chat,"%d %d %d %s",attacker,victim,head,Weapon_Msg)    //my test message
    
    //Killing with grenade?
    
contain(Weapon_Msg,"grenade")!=-1?(grenade=true):(grenade=false)
    
    if(!
is_user_connected(attacker))return
    if(!
is_user_connected(victim))return
    
    static 
Float:Origin[3],Float:RGB[3],i
    pev
(victim,pev_origin,Origin);Origin[2]=Origin[2]+90.0    
    
    
//Random color
    
for(i=0;i<3;i++)RGB[i]=random_float(0.0,255.0)
    
    
//Don't dark color!
    
if(RGB[0]<150.0&&RGB[1]<150.0&&RGB[2]<150.0)RGB[random_num(0,2)]=255.0
    
    
//Remove old sprites
    
static ent
    ent
=sprindex_head[attacker];if(ef_valid(ent,attacker))engfunc(EngFunc_RemoveEntityent)
    
ent=sprindex_knife[attacker];if(ef_valid(ent,attacker))engfunc(EngFunc_RemoveEntityent)
    if(!
grenade)    //Don't remove old sprites after GrenadeKill
    
{
        
ent=sprindex_combo[attacker];if(ef_valid(ent,attacker))engfunc(EngFunc_RemoveEntityent)
        
ent=spriteindex_grenade[attacker];if(ef_valid(ent,attacker))engfunc(EngFunc_RemoveEntityent)
    }
    static 
Float:gametime;gametime=get_gametime()
    if(
LastKill[attacker]-gametime>0.0)kill_count[attacker]++;else kill_count[attacker]=1
    LastKill
[attacker]=gametime+ComboTime
    
    
//Combo Sprite
    
sprindex_combo[attacker]=ef_spr(Combo,Origin,kill_count[attacker]<20?(kill_count[attacker]-1.0):(19.0),RGB,attacker)
    
    
//Bonus Sprite
    
RGB[0]=255.0;RGB[1]=0.0;RGB[2]=0.0    //Red Color!
    
if (grenade)
        
Origin[2]=Origin[2]-30.0,
        
spriteindex_grenade[attacker]=ef_spr(Grenade,Origin,2.0,RGB,attacker)
    else
    {
        if(
head)
            
Origin[2]=Origin[2]-30.0,
            
sprindex_head[attacker]=ef_spr(Head,Origin,0.0,RGB,attacker)            
        if (
contain(Weapon_Msg,"knife")!=-1)
            
Origin[2]=Origin[2]-30.0,
            
sprindex_knife[attacker]=ef_spr(Knife,Origin,1.0,RGB,attacker)
    }
}
//Stock
stock ef_spr(type,Float:Origin[3],Float:frame,Float:Color[3],attacker)
{
    new 
ient 
    
engfunc(EngFunc_CreateNamedEntityinfo_target)
    switch(
type)
    {
        case 
Combo:engfunc(EngFunc_SetModel,ientsprite_score)
        case 
Head:engfunc(EngFunc_SetModel,ientsprite_bonus)
        case 
Knife:engfunc(EngFunc_SetModel,ientsprite_bonus)
        case 
Grenade:engfunc(EngFunc_SetModel,ientsprite_bonus)
    }
    
set_pev(ientpev_classnamesprite_classname)
    
set_pev(ientpev_movetypeMOVETYPE_NOCLIP)
    
set_pev(ient,pev_gravity,0.0001)
    
set_pev(ient,pev_solid,SOLID_TRIGGER)
    
set_pev(ientpev_rendermodekRenderTransAdd)
    
set_pev(ientpev_renderamt250.0)
    
set_pev(ientpev_nextthink,get_gametime()+ComboTime)
    
set_pev(ient,pev_origin,Origin)
    
set_pev(ient,pev_iuser1,attacker)
    
set_pev(ient,pev_rendercolor,Color)
    
set_pev(ientpev_scale0.4)
    
set_pev(ientpev_framerate0.0)
    
set_pev(ientpev_frame,frame)    
    return 
ient
}
stock boolef_valid(ent,id)
{
    if(!
ent||!id)return false
    
if(!pev_valid(ent))return false
    
if(pev(ent,pev_iuser1)!=id)return false
    
    
static ClassName[30]
    
pev(entpev_classnameClassNamecharsmax(ClassName))
    if (
contain(ClassNamesprite_classname ) != -1)return true
    
return false


Thanks!


All times are GMT -4. The time now is 20:42.

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