Raised This Month: $ Target: $400
 0% 

Ask about code again


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 05-18-2012 , 09:40   Ask about code again
Reply With Quote #1

PHP Code:
/*

Plugin: Sprites Show (Show funny sprites above players' head)
Version: 1.5
Author: KRoTaL (Based on the original admin show plugin by StuD|MaN)

1.0 Release
1.1 new sprite : camper2
1.2 optimization, works better
1.3 you can now precache and use your own sprites
1.4 bug fix (hopefully)
1.5 sprites stay on player's head until you remove them with amx_unsprite (it can stay a whole map now)
    + sprites_show_players.txt file added (see below for more details)

Commands: 

   amx_sprite <name|id|@CT|@TERRORIST|*(all)> <name of sprite>   -   Shows sprite above player's head.
   amx_unsprite <name|id|@CT|@TERRORIST|*(all)>      -   Removes sprite(s).

Default sprites are : 

camper
camper2 (bigger sprite)
fag
idiot
sexy
shoot
grass_01
ic4
ihostage
iplayerc4
ledglow
sniper_scope

You can use your own sprites by simply :

1) writing their names in the "sprites_show.txt" file located in addons/amxx/configs (this file is included in the zip, 
   with the names of the default sprites inside). 
   Use this format (names without .spr) :
   camper
   asskicker
   banned
2) putting your sprites in the "sprites" folder of your game (ex: cstrike/sprites), sprites must be named 
   like what you wrote in sprites_show.txt
   camper.spr
   asskicker.spr
   banned.spr    

You can associate a SteamId with a sprite in the "sprites_show_players.txt" file located in addons/amxx/configs.
Each time a player connects, if his steamid is in this file with a valid sprite written after, the sprite will appear
on his head when he enters the game (and the sprite will remain until you amx_unsprite him).
Use this format in the "sprites_show_players.txt" file :
STEAM_0:0:481540,idiot
STEAM_0:1:7412,camper


Examples :
 
amx_sprite Player idiot
amx_sprite @CT sexy
amx_sprite @TERRORIST shoot
amx_sprite * fag

amx_unsprite Player
amx_unsprite @CT
amx_unsprite *

If you want to use more than 25 sprites, you must set MAX_SPRITES to the maximum number of sprites wanted, and then
compile the source file.

*/

#define MAX_SPRITES 25










//---------------------------------------------------------------------------------------------- 
#include <amxmodx> 
#include <amxmisc> 

new spritew[32]
new 
sprite_name[MAX_SPRITES+1][32]
new 
sprite_precached[MAX_SPRITES+1]
new 
nbr_sprites=0
new SpriteFlag[33]


//---------------------------------------------------------------------------------------------- 
public sprite(idlevelcid) { 
   if(!
cmd_access(idlevelcid2)) 
    return 
PLUGIN_HANDLED 

   
new arg1[32
   
read_argv(1arg131
   
read_argv(2spritew31)

   new 
test=0
   
new id_sprite
   
new valid_sprites[128]

   for(new 
i<nbr_sprites-i++) 
   {
      if(
equal(spritew,sprite_name[i]))
      { 
         
test++
         
id_sprite=i
      
}    
      if(
i>0)
         
add(valid_sprites127",")
      
add(valid_sprites127sprite_name[i])
   }
   if(
test==0)
   {
      
console_print(id"%s is not a valid sprite."spritew)
      
console_print(id"Valid sprites are :")
      
console_print(id"%s"valid_sprites)
      return 
PLUGIN_HANDLED 
   
}   

   if(
arg1[0] == '@') { 
      new 
users[32], inum 
      get_players
(usersinum"ae"arg1[1]) 
      if(
inum == 0) { 
          
console_print(id"No users in such team"
          return 
PLUGIN_HANDLED 
      


      for(new 
0inum; ++i) { 
        
message_begin(MSG_ALL,SVC_TEMPENTITY)
        
write_byte(125)
        
write_byte(users[i])
        
message_end()
        new 
parm[1]
        
parm[0] = users[i]
        
SpriteFlag[users[i]] = id_sprite
        set_task
(0.1,"showS",481,parm,1)
      } 
   } 
   else if(
arg1[0] == '*')
   {
      new 
users[32], inum 
      get_players
(usersinum"a"
      if(
inum == 0) { 
          
console_print(id"No users in such team"
          return 
PLUGIN_HANDLED 
      
}     

      for(new 
0inum; ++i) { 
        
message_begin(MSG_ALL,SVC_TEMPENTITY)
        
write_byte(125)
        
write_byte(users[i])
        
message_end()
        new 
parm[1]
        
parm[0] = users[i]
        
SpriteFlag[users[i]] = id_sprite
        set_task
(0.1,"showS",481,parm,1)

      } 
   }
   else { 
    new 
uid cmd_target(idarg15)  
    if(!
uid) return PLUGIN_HANDLED 
    
if(SpriteFlag[uid] != -1)
    {
        
message_begin(MSG_ALL,SVC_TEMPENTITY)
        
write_byte(125)
        
write_byte(uid)
        
message_end()
    }            
    new 
parm[1]
    
parm[0] = uid
    SpriteFlag
[uid] = id_sprite
    set_task
(0.1,"showS",481,parm,1
   } 
   if(
task_exists(4810))
      
remove_task(4810)
   
set_task(5.0,"showS_loop",4810,"",0,"b")

   return 
PLUGIN_HANDLED

//---------------------------------------------------------------------------------------------- 
public unsprite(idlevelcid) { 
   if(!
cmd_access(idlevelcid2)) 
    return 
PLUGIN_HANDLED 

   
new arg[32
   
read_argv(1arg31

   if(
arg[0] == '@') { 
      new 
users[32], inum 
      get_players
(usersinum"e"arg[1]) 
      if(
inum == 0) { 
          
console_print(id"No users in such team"
          return 
PLUGIN_HANDLED 
      


      for(new 
0inum; ++i) { 
        
message_begin(MSG_ALL,SVC_TEMPENTITY)
        
write_byte(125)
        
write_byte(users[i])
        
message_end()
        
SpriteFlag[users[i]] = -1
      

   } 
   else if(
arg[0] == '*')
   {
      new 
users[32], inum 
      get_players
(usersinum
      if(
inum == 0) { 
          
console_print(id"No users in such team"
          return 
PLUGIN_HANDLED 
      
}     

      for(new 
0inum; ++i) { 
        
message_begin(MSG_ALL,SVC_TEMPENTITY)
        
write_byte(125)
        
write_byte(users[i])
        
message_end()
        
SpriteFlag[users[i]] = -1
      

      if(
task_exists(4810))
            
remove_task(4810)
   }
   else { 
    new 
uid cmd_target(idarg5)  
    if(!
uid) return PLUGIN_HANDLED 
    message_begin
(MSG_ALL,SVC_TEMPENTITY)
    
write_byte(125)
    
write_byte(uid)
    
message_end()
    
SpriteFlag[uid] = -1
   

   return 
PLUGIN_HANDLED

//---------------------------------------------------------------------------------------------- 
public showS(parm[])
{    
    new 
id parm[0]
    if(
is_user_alive(id))
    {
        if(
SpriteFlag[id] != -1)
        {
            
message_begin(MSG_ALL,SVC_TEMPENTITY)
            
write_byte(124)
            
write_byte(id)
            
write_coord(65)
            
write_short(sprite_precached[SpriteFlag[id]])
            
write_short(32767)
            
message_end()
        }
    }
    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public showS_loop()
{    
    new 
players[32], pl_num=0
    get_players
(players,pl_num,"a"
    for (new 
i=0;i<pl_num;i++)
    {
        if(
SpriteFlag[players[i]] != -1)
        {
            
message_begin(MSG_ALL,SVC_TEMPENTITY)
            
write_byte(124)
            
write_byte(players[i])
            
write_coord(65)
            
write_short(sprite_precached[SpriteFlag[players[i]]])
            
write_short(32767)
            
message_end()
        }
    }
    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public client_connect(id)
{
    
SpriteFlag[id] = -1
    
return PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public client_disconnect(id)
{
    
message_begin(MSG_ALL,SVC_TEMPENTITY)
    
write_byte(125)
    
write_byte(id)
    
message_end()
    
SpriteFlag[id] = -1
     
return PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public client_authorized(id)
{
    new 
authid[33]
    
get_user_authid(id,authid,32)

    new 
text[64]
    new 
len
    
new pos=0
    
new textblock[33]
    new 
sprite_config[64]
    
get_configsdir(sprite_config63)
    
format(sprite_config63"%s/sprites_show_players.txt"sprite_config)

    if (
file_exists(sprite_config))
    { 
        while(
read_file(sprite_config,pos++,text,63,len))
        {
            
len contain(text,",")
            if(
len == -1) return -1
            copyc
(textblock,strlen(text),text,',')
            if(
equali(textblock,authid))
            {
                
replace(text,63,textblock,"")
                
replace(text,63,",","")
                   for(new 
i<nbr_sprites-i++) 
                   {
                      if(
equal(text,sprite_name[i]))
                        
SpriteFlag[id]=i
                
}
            }
        }
    }
     return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public death_event()
{
    new 
dead read_data(2)
    
message_begin(MSG_ALL,SVC_TEMPENTITY)
    
write_byte(125)
    
write_byte(dead)
    
message_end()
    
set_task(1.0,"death_clear",dead)
    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public death_clear(dead)
{
    
message_begin(MSG_ALL,SVC_TEMPENTITY)
    
write_byte(125)
    
write_byte(dead)
    
message_end()
    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public reset_hud(id)
{
    new 
parm[1]
    
parm[0]=id
    message_begin
(MSG_ALL,SVC_TEMPENTITY)
    
write_byte(125)
    
write_byte(id)
    
message_end()
    
set_task(0.5,"showS",481,parm,1
    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public plugin_precache()

    new 
sprite_file[32]
    new 
sprite_config[64]
    
get_configsdir(sprite_config63)
    
format(sprite_config63"%s/sprites_show.txt"sprite_config)
    new 
spr_temp[50]
    new 
length

    
if (file_exists(sprite_config))
    { 
        while(
read_file(sprite_config,nbr_sprites++,sprite_file,sizeof(sprite_file),length))
        {
            
format(spr_temp,sizeof(spr_temp),"sprites/%s.spr",sprite_file)
            
format(sprite_name[nbr_sprites-1],sizeof(sprite_name),"%s",sprite_file)
            if (
file_exists(spr_temp))
            {
                
sprite_precached[nbr_sprites-1]=precache_model(spr_temp)
            }
        }
    }
    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
public plugin_init() { 
   
register_plugin("Sprites Show""1.5""KRoTaL"
   
register_clcmd("amx_sprite""sprite"ADMIN_SLAY"<name/id/wonid/@CT/@TERRORIST/*(all)> <sprite> - shows sprite above player's head"
   
register_clcmd("amx_unsprite""unsprite"ADMIN_SLAY"<name/id/wonid/@CT/@TERRORIST/*(all)> - removes sprite(s)"
   
register_event("DeathMsg""death_event""a")
   
register_event("ResetHUD""reset_hud""be")
   return 
PLUGIN_CONTINUE

I found this plugin, but i want it show to players weapon which they have above thier head, which part i must edit?
Randomize is offline
<VeCo>
Veteran Member
Join Date: Jul 2009
Location: Bulgaria
Old 05-18-2012 , 09:50   Re: Ask about code again
Reply With Quote #2

The message for sprite above players' heads is TE_PLAYERATTACHMENT:

PHP Code:
#define TE_PLAYERATTACHMENT         124      // Attaches a TENT to a player (this is a high-priority tent)
// write_byte(TE_PLAYERATTACHMENT)
// write_byte(entity index of player)
// write_coord(vertical offset) (attachment origin.z = player origin.z + vertical offset)
// write_short(model index)
// write_short(life * 10 ) 
__________________
<VeCo> is offline
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 05-18-2012 , 09:56   Re: Ask about code again
Reply With Quote #3

This plugin has already make the sprites above their head
Randomize is offline
<VeCo>
Veteran Member
Join Date: Jul 2009
Location: Bulgaria
Old 05-18-2012 , 09:57   Re: Ask about code again
Reply With Quote #4

It has a lot of things that you don't need, it should be almost fully rewriten to work as you want, so I just showed you how to display the sprite, you can do the displaying and weapon checks by yourself.
__________________

Last edited by <VeCo>; 05-18-2012 at 09:58.
<VeCo> is offline
Randomize
BANNED
Join Date: May 2012
Location: in your heart
Old 05-18-2012 , 10:08   Re: Ask about code again
Reply With Quote #5

okay
Randomize 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 00:29.


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