Raised This Month: $ Target: $400
 0% 

Combo sprites


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Lawnmoverman
Member
Join Date: Jan 2017
Old 02-25-2017 , 08:53   Combo sprites
Reply With Quote #1

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



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!
__________________


www.nozgaming.eu | cs.nozgaming.eu
Lawnmoverman is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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