AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Need Help] Think Ent and client_infochanged (https://forums.alliedmods.net/showthread.php?t=93005)

vato loco [GE-S] 05-23-2009 06:03

[Need Help] Think Ent and client_infochanged
 
hi everyone...
i have tried to optimize this plugin
but i'm not sure if it is correct what i have done
i have nerver used a think ent and client_infochanged
this is the result of my code.

mabye someone can take a look and tell me what can be better done.

thank you
PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx> 
#include <fakemeta>

#define PLUGIN  "Show Admins Online" 
#define VERSION "1.1" 
#define AUTHOR  "vato loco [GE-S] & Alka" 

new bool:g_bAdminNick
new bool:is_admin_connected[33]
new 
g_msg[512]

new 
g_admin_enable
new g_online_color
new g_offline_color
new g_msg_xypos

new g_SyncAdmin
new g_iAdminCount 
new g_iMaxPlayers

new g_ClassName[] = "admin_msg"

public plugin_init() 

    
register_pluginPLUGINVERSIONAUTHOR )
    
    
register_forward(FM_Think,"ForwardThink")
    
    
g_admin_enable register_cvar("sa_plugin_on","1")
    
g_online_color register_cvar("sa_online_color","0 130 0")
    
g_offline_color register_cvar("sa_offline_color","255 0 0")
    
g_msg_xypos register_cvar("sa_msg_xypos","0.02 0.2")
    
    
g_SyncAdmin CreateHudSyncObj()
    
g_iMaxPlayers get_maxplayers()
    
    new 
iEnt engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
    
set_pev(iEnt,pev_classname,g_ClassName)
    
set_pev(iEnt,pev_nextthinkget_gametime() + 2.0)


public 
client_putinserver(id)
{
    if(
get_user_flags(id) & ADMIN_KICK)
    {
        
is_admin_connected[id] = true
        g_iAdminCount
++
        
set_admin_msg()
    }
    if(
g_iAdminCount == 0)
        
set_admin_msg()
}

public 
client_disconnect(id)
{
    if(
is_admin_connected[id])
    {
        
is_admin_connected[id] = false
        g_iAdminCount
--
        
set_admin_msg()
    }
}

public 
client_infochanged(id)
{
    if(
is_admin_connected[id])
    {
        static 
NewName[32], OldName[32]
        
get_user_info(id"name"NewName31)
        
get_user_name(idOldName31)
        
        if(!
equal(OldNameNewName))
        {
            
g_bAdminNick true
        
}
    }
}

public 
set_admin_msg()
{
    static 
g_iAdminName[32], posi
    pos 
0
    pos 
+= formatex(g_msg[pos], 511-pos"Admins Online: %d"g_iAdminCount)
    
    for(
<= g_iMaxPlayers i++)
    {    
        if(
is_admin_connected[i])
        {
            
get_user_name(ig_iAdminName31)
            
pos += formatex(g_msg[pos], 511-pos"^n%s"g_iAdminName)
        }
    }
}

public 
admins_online() 
{
    if(
get_pcvar_num(g_admin_enable))
    {
        static 
rgbFloat:x,Float:y
        HudMsgPos
(x,y)
        
        if (
g_iAdminCount 0)
        {
            
HudMsgColor(g_online_color,rgb)
            
set_hudmessage(rgbxy__4.0__4)
            
ShowSyncHudMsg(0g_SyncAdmin"%s"g_msg)
        }
        else
        {
            
HudMsgColor(g_offline_color,rgb)
            
set_hudmessage(rgbxy__4.0__4)
            
ShowSyncHudMsg(0g_SyncAdmin"%s"g_msg)
        }
    }
    return 
PLUGIN_HANDLED


public 
ForwardThink(iEnt)
{
    static 
ClassName[33]
    
pev(iEnt,pev_classname,ClassName,32)
    
    if(
equal(ClassName,g_ClassName))
    {    
        
admins_online()
        
        if(
g_bAdminNick)
        {
            
set_admin_msg()
            
g_bAdminNick false
        
}
    }
    
set_pev(iEnt,pev_nextthinkget_gametime() + 2.0)
}

public 
HudMsgColor(cvar, &r, &g, &b)
{
    static 
color[16], piece[5]
    
get_pcvar_string(cvarcolor15)
    
    
strbreakcolorpiece4color15)
    
str_to_num(piece)
    
    
strbreakcolorpiece4color15)
    
str_to_num(piece)
    
str_to_num(color)
}

public 
HudMsgPos(&Float:x, &Float:y)
{
    static 
coords[16], piece[10]
    
get_pcvar_string(g_msg_xyposcoords15)
    
    
strbreak(coordspiece9coords15)
    
str_to_float(piece)
    
str_to_float(coords)



xPaw 05-23-2009 06:07

Re: [Need Help] Think Ent and client_infochanged
 
You can use
PHP Code:

register_thinkg_ClassName"ForwardThink" ); 

then get rid of classname checks.

client_infochanged should be right too.

Owyn 05-23-2009 06:09

Re: [Need Help] Think Ent and client_infochanged
 
you are getting names wrong i think, you should use a buffer
Code:

Fwd_ClientInfoChanged(id, buffer)
buffer is the new value user wants to setinfo parameter to

and you use forwardThink just for doing something once right after nick change, just do something you want from change info part, you dont need think event

xPaw 05-23-2009 06:12

Re: [Need Help] Think Ent and client_infochanged
 
Quote:

Originally Posted by .Owyn. (Post 832958)
you are getting names wrong i think, you should use a buffer
Code:

Fwd_ClientInfoChanged(id, buffer)
buffer is the new value user wants to setinfo parameter to

client_infochanged()

vato loco [GE-S] 05-23-2009 06:13

Re: [Need Help] Think Ent and client_infochanged
 
ok thank you xPaw will test it :wink:

Owyn 05-23-2009 06:25

Re: [Need Help] Think Ent and client_infochanged
 
Quote:

Originally Posted by xPaw (Post 832962)

I ment forward FM_ClientUserInfoChanged

vato loco [GE-S] 05-23-2009 06:58

Re: [Need Help] Think Ent and client_infochanged
 
ok is this better now?

PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx> 
#include <engine>

#define PLUGIN  "Show Admins Online" 
#define VERSION "1.1" 
#define AUTHOR  "vato loco [GE-S] & Alka" 

new bool:g_bAdminNick
new bool:is_admin_connected[33]
new 
g_msg[512]

new 
g_admin_enable
new g_online_color
new g_offline_color
new g_msg_xypos

new g_SyncAdmin
new g_iAdminCount 
new g_iMaxPlayers

new g_ClassName[] = "admin_msg"

public plugin_init() 

    
register_pluginPLUGINVERSIONAUTHOR )
    
    
register_think(g_ClassName,"ForwardThink")
    
    
g_admin_enable register_cvar("sa_plugin_on","1")
    
g_online_color register_cvar("sa_online_color","0 130 0")
    
g_offline_color register_cvar("sa_offline_color","255 0 0")
    
g_msg_xypos register_cvar("sa_msg_xypos","0.02 0.2")
    
    
g_SyncAdmin CreateHudSyncObj()
    
g_iMaxPlayers get_maxplayers()
    
    new 
iEnt create_entity("info_target")
    
entity_set_string(iEntEV_SZ_classnameg_ClassName)
    
entity_set_float(iEntEV_FL_nextthinkget_gametime() + 2.0)


public 
client_putinserver(id)
{
    if(
get_user_flags(id) & ADMIN_KICK)
    {
        
is_admin_connected[id] = true
        g_iAdminCount
++
        
set_admin_msg()
    }
    if(
g_iAdminCount == 0)
        
set_admin_msg()
}

public 
client_disconnect(id)
{
    if(
is_admin_connected[id])
    {
        
is_admin_connected[id] = false
        g_iAdminCount
--
        
set_admin_msg()
    }
}

public 
client_infochanged(id)
{
    if(
is_admin_connected[id])
    {
        static 
NewName[32], OldName[32]
        
get_user_info(id"name"NewName31)
        
get_user_name(idOldName31)
        
        if(!
equal(OldNameNewName))
        {
            
g_bAdminNick true
        
}
    }
}

public 
set_admin_msg()
{
    static 
g_iAdminName[32], posi
    pos 
0
    pos 
+= formatex(g_msg[pos], 511-pos"Admins Online: %d"g_iAdminCount)
    
    for(
<= g_iMaxPlayers i++)
    {    
        if(
is_admin_connected[i])
        {
            
get_user_name(ig_iAdminName31)
            
pos += formatex(g_msg[pos], 511-pos"^n%s"g_iAdminName)
        }
    }
}

public 
admins_online() 
{
    if(
get_pcvar_num(g_admin_enable))
    {
        static 
rgbFloat:x,Float:y
        HudMsgPos
(x,y)
        
        if (
g_iAdminCount 0)
        {
            
HudMsgColor(g_online_colorrgb)
            
set_hudmessage(rgbxy__4.0__4)
            
ShowSyncHudMsg(0g_SyncAdmin"%s"g_msg)
        }
        else
        {
            
HudMsgColor(g_offline_colorrgb)
            
set_hudmessage(rgbxy__4.0__4)
            
ShowSyncHudMsg(0g_SyncAdmin"%s"g_msg)
        }
    }
    return 
PLUGIN_HANDLED


public 
ForwardThink(iEnt)
{
    
admins_online()
    
    if(
g_bAdminNick)
    {
        
set_admin_msg()
        
g_bAdminNick false
    
}
    
entity_set_float(iEntEV_FL_nextthinkget_gametime() + 2.0)
}

public 
HudMsgColor(cvar, &r, &g, &b)
{
    static 
color[16], piece[5]
    
get_pcvar_string(cvarcolor15)
    
    
strbreakcolorpiece4color15)
    
str_to_num(piece)
    
    
strbreakcolorpiece4color15)
    
str_to_num(piece)
    
str_to_num(color)
}

public 
HudMsgPos(&Float:x, &Float:y)
{
    static 
coords[16], piece[10]
    
get_pcvar_string(g_msg_xyposcoords15)
    
    
strbreak(coordspiece9coords15)
    
str_to_float(piece)
    
str_to_float(coords)




All times are GMT -4. The time now is 01:29.

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