Raised This Month: $ Target: $400
 0% 

Chat problem


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Tonda
Senior Member
Join Date: Aug 2009
Old 11-07-2014 , 00:23   Chat problem
Reply With Quote #1

Hello, i have big problem with plugin. If you have Counter-Strike 1.6 Steam BETA (properties/betas/beta) you cant see chat names with plugin. Here is example from server:



How can i fix this?
This is original topic with plugin: https://forums.alliedmods.net/showthread.php?t=84657

PHP Code:
#include <amxmodx>
#include <amxmisc>

// =========================================== CONFIG START ===========================================
#define CHATVIEWER_ACCESS (ADMIN_ADMIN|ADMIN_CHAT|ADMIN_SLAY) // access to chatviewer command
//#define NO_ADMIN_VIEW // uncomment this line if you don't want admins to be able in seeing all chat
//#define ADMIN_TAG_C   // uncomment this line if you want admins to have [ADMIN] tag in chat
//#define ADMIN_TAG_R   // uncomment this line if you want admins to have [ADMIN] tag in radio messages
#define ADMIN_TAG "[ADMIN] " // translation for admin tag
#define ACTIVITY_ADMIN  // comment this line if you want admin tag to be showned to all players
#define USE_RADIO_MSG   // comment this line if you don't want to change radio msg text
#define RADIO_HE " [explosive]" // translation for explosive grenade in radio
#define RADIO_SG " [smokegren]" // translation for smoke grenade in radio
#define RADIO_FB " [flashbang]" // translation for flashbang grenade in radio
// ============================================ CONFIG END ============================================

#if !defined NO_ADMIN_VIEW
    #define PLUGIN_NAME "Pro Chat"
#else
    #define PLUGIN_NAME "Pro Chat (no viewer)"
#endif
#define PLUGIN_VERSION "1.8"
#define PLUGIN_AUTHOR  "Numb"

#define print_chat_colored 5 // did you know about this? - well, I didn't

#if !defined NO_ADMIN_VIEW
#if !defined _numbamx_included
/**
 * This is for advanced flag check
 * for things like "get_user_flags(id) & (ADMIN_KICK|ADMIN_BAN|ADMIN_ADMIN)"
 * so insted of making "get_user_flags(id)&ADMIN_KICK && get_user_flags(id)&ADMIN_BAN && is_user_admin(id)"
 * use "check_flags(get_user_flags(id), ADMIN_KICK|ADMIN_BAN|ADMIN_ADMIN, true)!=0"
 *
 * NOTE: works only for worded flags (from 'a' like "ADMIN_IMMUNITY" to 'z' like "ADMIN_USER")
 *       else it will just return -1
 */
check_flags(main_flagsflags_to_checkbool:adminflags=false)
{
    new 
__main_flags=main_flags__flags_to_check=flags_to_check;
    
    if (
__main_flags 0)
        
__main_flags 0;
    if (
__flags_to_check 0)
        
__flags_to_check 0// I don't wanna take the risk & see what will happen if not doing this...
    
    
if ((__main_flags == __flags_to_check) || !__flags_to_check)
        return 
1;
    else if (!
__main_flags)
        return 
0;
    
    if (
adminflags)
    {
        if (
__flags_to_check&ADMIN_ADMIN)
        {
            if (
__main_flags&ADMIN_USER)
                return 
0;
            
            
__flags_to_check-=ADMIN_ADMIN;
        }
    }
    
    if ((
__main_flags&__flags_to_check)==__flags_to_check)
        return 
1;
    
    return 
0;
}
#endif

new bool:g_bManualChatViewer[33];
new 
bool:g_bUserChatViewEnabled[33];
new 
g_iMsgId_SayText;
new 
g_iChatViewerStrings[2][129];
new 
g_iMaxPlayers;
#endif
new g_iOldMessage[192];
new 
g_iLastMsg[192];
new 
g_iLastText[192];
#if defined ADMIN_TAG_C
new bool:g_bIsUserAdmin[33];
new 
g_iUserAdminName[33][44];
#else
#if defined ADMIN_TAG_R
new bool:g_bIsUserAdmin[33];
new 
g_iUserAdminName[33][44];
#endif
#endif
new g_iUserName[33][32];

public 
plugin_init()
{
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR);
    
#if !defined NO_ADMIN_VIEW
    
g_iMaxPlayers clamp(get_maxplayers(), 132);
    
    
copy(g_iChatViewerStrings[0], 128"* Chat viewer enabled. To disable type ^"/chatviewer^".");
    
copy(g_iChatViewerStrings[1], 128"* Chat viewer disabled. To enable type ^"/chatviewer^".");
    
    
register_clcmd("say",      "cmd_shatmsg");
    
register_clcmd("say_team""cmd_shatmsg");
    
    
register_clcmd("say /chatviewer""cmd_temp"CHATVIEWER_ACCESS" - enables/disables chat viewer");
    
    
register_message((g_iMsgId_SayText=get_user_msgid("SayText")), "Message_SayText");
#else
    
register_message(get_user_msgid("SayText"), "Message_SayText");
#endif
#if defined USE_RADIO_MSG
    
register_message(get_user_msgid("TextMsg"), "Message_TextMsg");
#endif
}

public 
client_putinserver(iPlrId)
{
    
get_user_info(iPlrId"name"g_iUserName[iPlrId], 31);
    
#if !defined NO_ADMIN_VIEW
    
g_bManualChatViewer[iPlrId] = true;
    
g_bUserChatViewEnabled[iPlrId] = (!is_user_bot(iPlrId)&&(check_flags(get_user_flags(iPlrId), CHATVIEWER_ACCESStrue)||is_user_hltv(iPlrId)))?true:false;
#endif
#if defined ADMIN_TAG_C
    
g_bIsUserAdmin[iPlrId] = is_user_admin(iPlrId)?true:false;
    
formatex(g_iUserAdminName[iPlrId], 43"%s%s"ADMIN_TAGg_iUserName[iPlrId]);
#else
#if defined ADMIN_TAG_R
    
g_bIsUserAdmin[iPlrId] = is_user_admin(iPlrId)?true:false;
    
formatex(g_iUserAdminName[iPlrId], 43"%s%s"ADMIN_TAGg_iUserName[iPlrId]);
#endif
#endif
}

public 
client_infochanged(iPlrId)
{
    if( !
is_user_connected(iPlrId) )
        return 
PLUGIN_CONTINUE;
    
    
get_user_info(iPlrId"name"g_iUserName[iPlrId], 31);
#if defined ADMIN_TAG_C
    
g_bIsUserAdmin[iPlrId] = is_user_admin(iPlrId)?true:false;
    
formatex(g_iUserAdminName[iPlrId], 43"%s%s"ADMIN_TAGg_iUserName[iPlrId]);
#else
#if defined ADMIN_TAG_R
    
g_bIsUserAdmin[iPlrId] = is_user_admin(iPlrId)?true:false;
    
formatex(g_iUserAdminName[iPlrId], 43"%s%s"ADMIN_TAGg_iUserName[iPlrId]);
#endif
#endif
    
if( is_user_hltv(iPlrId) || is_user_bot(iPlrId) )
        return 
PLUGIN_CONTINUE;
    
#if !defined NO_ADMIN_VIEW
    
new iOldName[32];
    
get_user_name(iPlrIdiOldName31);
    if( !
equal(iOldNameg_iUserName[iPlrId]) )
    {
        if( 
check_flags(get_user_flags(iPlrId), CHATVIEWER_ACCESStrue) && g_bManualChatViewer[iPlrId] )
            
g_bUserChatViewEnabled[iPlrId] = true;
        else
            
g_bUserChatViewEnabled[iPlrId] = false;
    }
#endif
    
return PLUGIN_CONTINUE;
}

#if !defined NO_ADMIN_VIEW
public client_disconnect(iPlrId)
{
    
g_bUserChatViewEnabled[iPlrId] = false;
    
g_bManualChatViewer[iPlrId] = false;
}

public 
cmd_temp(iPlrIdlevelcid) { }

public 
cmd_shatmsg(iPlrId)
{
    static 
iArg[17];
    if( 
read_argv(1iArg16) )
    {
        if( (
iArg[0]=='.' || iArg[0]=='/')
         && 
equali(iArg[1], "chatviewer") )
            return 
cmd_chatviewer(iPlrId);
    }
    
    return 
PLUGIN_CONTINUE;
}

cmd_chatviewer(iPlrId)
{
    if( 
is_user_bot(iPlrId) || is_user_hltv(iPlrId) )
        return 
PLUGIN_CONTINUE;
    
    if( !
check_flags(get_user_flags(iPlrId), CHATVIEWER_ACCESStrue) )
    {
        
g_bUserChatViewEnabled[iPlrId] = false;
        
        return 
PLUGIN_CONTINUE;
    }
    
    
g_bUserChatViewEnabled[iPlrId] = g_bUserChatViewEnabled[iPlrId]?false:true;
    
g_bManualChatViewer[iPlrId] = g_bUserChatViewEnabled[iPlrId];
    
    
message_begin(MSG_ONEg_iMsgId_SayText_iPlrId);
    
write_byte(iPlrId);
    
write_string(g_bUserChatViewEnabled[iPlrId]?g_iChatViewerStrings[0]:g_iChatViewerStrings[1]);
    
message_end();
    
    return 
PLUGIN_HANDLED;
}
#endif

#if defined USE_RADIO_MSG
public Message_TextMsg(iMesgIdiMsgTypeiPlrId// I am a bit amazed, cuz didn't knew that we can use colorchat in TextMsg event
{
    
// arg1: int: print_type (print_notify=1; print_console=2; print_chat=3; print_center=4; print_chat_colored=5; anymore?)
    // arg2: str: sender id [what on earth? why string?]
    // arg3: str: message
    // arg4: str: msg_arg1 (%s1 in message)
    // arg5: str: msg_arg2 (%s2 in message)
    // arg6: str: msg_arg3 (%s3 in message) [???not sure???] {isn't always sended - like in SayText}
    
    
if( get_msg_args()!=|| get_msg_arg_int(1)!=print_chat_colored )
        return 
PLUGIN_CONTINUE;
    
#if defined ADMIN_TAG_R
    
static s_iSenderId;
#endif
    
static s_iMessage[192];
    
get_msg_arg_string(3s_iMessage191);
    if( 
equal(s_iMessage"#Game_radio") )
    {
        
get_msg_arg_string(5s_iMessage191);
        if( 
equal(s_iMessage"#Fire_in_the_hole") )
        {
            static 
s_iSender[4];
            
get_msg_arg_string(2s_iSender3);
#if defined ADMIN_TAG_R
            
switch( get_user_weapon((s_iSenderId=str_to_num(s_iSender))) )
#else
            
switch( get_user_weapon(str_to_num(s_iSender)) )
#endif
            
{
                case 
CSW_HEGRENADE:    formatex(s_iMessage191"%%s1 (RADIO) :  %%s2%s"RADIO_HE);
                case 
CSW_SMOKEGRENADEformatex(s_iMessage191"%%s1 (RADIO) :  %%s2%s"RADIO_SG);
                case 
CSW_FLASHBANG:    formatex(s_iMessage191"%%s1 (RADIO) :  %%s2%s"RADIO_FB);
                default:               
copy(s_iMessage191"%s1 (RADIO) :  %s2");
            }
            
            
set_msg_arg_string(3s_iMessage);
        }
        else
        {
            
set_msg_arg_string(3"%s1 (RADIO) :  %s2");
#if defined ADMIN_TAG_R
            
static s_iSender[4];
            
get_msg_arg_string(2s_iSender3);
            
s_iSenderId str_to_num(s_iSender);
#endif
        
}
        
#if defined ADMIN_TAG_R
        
if( g_bIsUserAdmin[s_iSenderId] )
        {
#if defined ACTIVITY_ADMIN
            
if( g_bIsUserAdmin[iPlrId] )
                
set_msg_arg_string(4g_iUserAdminName[s_iSenderId]);
#else
            
set_msg_arg_string(4g_iUserAdminName[s_iSenderId]);
#endif
        
}
#endif
    
}
    
    return 
PLUGIN_CONTINUE;
}
#endif

public Message_SayText(iMsgIdiMsgTypeiPlrId)
{
    if( 
get_msg_args()!=)
        return 
PLUGIN_CONTINUE;
    
#if !defined NO_ADMIN_VIEW
    
static bool:s_bCheckMsg;
#endif
    
static s_iMessage[192], s_iText[192], s_iSenderId;
    
get_msg_arg_string(2s_iMessage191);
    
get_msg_arg_string(4s_iText191);
    
s_iSenderId get_msg_arg_int(1);
    
    if( 
g_iOldMessage[0] && equal(s_iMessageg_iLastMsg) && equal(s_iTextg_iLastText) )
    {
        if( 
g_iOldMessage[0]==-)
            return 
PLUGIN_HANDLED;
#if defined ADMIN_TAG_C
        
if( g_bIsUserAdmin[s_iSenderId] )
        {
#if defined ACTIVITY_ADMIN
            
if( g_bIsUserAdmin[iPlrId] )
                
set_msg_arg_string(3g_iUserAdminName[s_iSenderId]);
            else
                
set_msg_arg_string(3g_iUserName[s_iSenderId]);
#else
            
set_msg_arg_string(3g_iUserAdminName[s_iSenderId]);
#endif
        
}
        else
            
set_msg_arg_string(3g_iUserName[s_iSenderId]);
#else
        
set_msg_arg_string(3g_iUserName[s_iSenderId]);
#endif
        
set_msg_arg_string(2g_iOldMessage);
        
set_msg_arg_string(4"");
#if defined NO_ADMIN_VIEW
        
return PLUGIN_CONTINUE;
#else
        
if( s_iSenderId!=iPlrId )
            return 
PLUGIN_CONTINUE;
        
        
s_bCheckMsg false;
#endif
    
}
    else
    {
#if !defined NO_ADMIN_VIEW
        
s_bCheckMsg true;
#endif
        
g_iLastMsg s_iMessage// this is much faster than "copy()"
        
g_iLastText s_iText// this is much faster than "copy()"
    
}
    
#if defined NO_ADMIN_VIEW
    
new iReturned;
    
iReturned format_message(s_iMessage191s_iText);
    switch( 
replace_arguments(iReturneds_iMessage) )
    {
        case 
PLUGIN_CONTINUE: return PLUGIN_CONTINUE;
        case 
PLUGIN_HANDLED:  return PLUGIN_HANDLED;
    }
#else
    
static s_iReturned[3];
    if( 
s_bCheckMsg // cuz "s_iReturned" var is static we don't need to check team and alive status again if message is the same
    
{
        
s_iReturned format_message(s_iMessage191s_iText);
        switch( 
replace_arguments(s_iReturned[0], s_iMessage) )
        {
            case 
PLUGIN_CONTINUE: return PLUGIN_CONTINUE;
            case 
PLUGIN_HANDLED:  return PLUGIN_HANDLED;
        }
    }
#endif
#if defined ADMIN_TAG_C
    
if( g_bIsUserAdmin[s_iSenderId] )
    {
#if defined ACTIVITY_ADMIN
        
if( g_bIsUserAdmin[iPlrId] )
            
set_msg_arg_string(3g_iUserAdminName[s_iSenderId]);
        else
            
set_msg_arg_string(3g_iUserName[s_iSenderId]);
#else
        
set_msg_arg_string(3g_iUserAdminName[s_iSenderId]);
#endif
    
}
    else
        
set_msg_arg_string(3g_iUserName[s_iSenderId]);
#else
    
set_msg_arg_string(3g_iUserName[s_iSenderId]);
#endif
#if !defined NO_ADMIN_VIEW
    
if( s_iSenderId!=iPlrId )
        return 
PLUGIN_CONTINUE;
    
    new 
iAdminTeam;
    for( new 
iAdmin=1iAdmin<=g_iMaxPlayersiAdmin++ )
    {
        if( 
iAdmin==s_iSenderId || !g_bUserChatViewEnabled[iAdmin] )
            continue;
        
        if( 
s_iReturned[1] )
        {
            if( (
iAdminTeam=get_user_team(iAdmin))==)
                
iAdminTeam 3;
        }
        
        if( 
iAdminTeam!=s_iReturned[1] || is_user_alive(iAdmin)!=s_iReturned[2] )
        {
            
message_begin(iMsgTypeiMsgId_iAdmin);
            
write_byte(s_iSenderId);
            
write_string(g_iOldMessage);

#if defined ADMIN_TAG_C
            
if( g_bIsUserAdmin[s_iSenderId] )
            {
#if defined ACTIVITY_ADMIN
                
if( g_bIsUserAdmin[iAdmin] )
                    
write_string(g_iUserAdminName[s_iSenderId]);
                else
                    
write_string(g_iUserName[s_iSenderId]);
#else
                
write_string(g_iUserAdminName[s_iSenderId]);
#endif
            
}
            else
                
write_string(g_iUserName[s_iSenderId]);
#else
            
write_string(g_iUserName[s_iSenderId]);
#endif
            
message_end();
        }
    }
#endif
    
return PLUGIN_CONTINUE;
}

replace_arguments(iReturnedValueiMessage[192])
{
    
g_iOldMessage[0] = 0;
    
    switch( 
iReturnedValue )
    {
        case -
2:
        {
            
set_msg_arg_string(2iMessage);
            return 
PLUGIN_CONTINUE;
        }
        case 
PLUGIN_CONTINUE: return PLUGIN_CONTINUE;
        case 
PLUGIN_HANDLED:
        {
            
g_iOldMessage[0] = -1;
            return 
PLUGIN_HANDLED;
        }
        default:
        {
            
g_iOldMessage iMessage// this is much faster than "copy()"
            
set_msg_arg_string(2iMessage);
            
set_msg_arg_string(4"");
        }
    }
    
    return -
1;
}
    
format_message(iMessage[], const iMsgLen, const iText[])
{
#if !defined NO_ADMIN_VIEW
    
new iHandleReturn[3]; // reutrn = [0]; team = [1]; alive = [2]
#endif
    
if( equal(iMessage"#Cstrike_Name_Change") )
    {
        
copy(iMessageiMsgLen"* %s1 changed name to %s2");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[0] = -2;
        return 
iHandleReturn;
#else
        
return -2;
#endif
    
}
    
    new 
iLen;
    if( 
equal(iMessage"#Cstrike_Chat_CT") )
    {
        
iLen copy(iMessageiMsgLen"(Counter-Terrorist) %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 2;
        
iHandleReturn[2] = 1;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_T") )
    {
        
iLen copy(iMessageiMsgLen"(Terrorist) %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 1;
        
iHandleReturn[2] = 1;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_CT_Dead") )
    {
        
iLen copy(iMessageiMsgLen"*DEAD*(CT) %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 2;
        
iHandleReturn[2] = 0;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_T_Dead") )
    {
        
iLen copy(iMessageiMsgLen"*DEAD*(Terrorist) %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 1;
        
iHandleReturn[2] = 0;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_Spec") )
    {
        
iLen copy(iMessageiMsgLen"(Spectator) %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 3;
        
iHandleReturn[2] = 0;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_All") )
    {
        
iLen copy(iMessageiMsgLen"%s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 0;
        
iHandleReturn[2] = 1;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_AllDead") )
    {
        
iLen copy(iMessageiMsgLen"*DEAD* %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 0;
        
iHandleReturn[2] = 0;
#endif
    
}
    else if( 
equal(iMessage"#Cstrike_Chat_AllSpec") )
    {
        
iLen copy(iMessageiMsgLen"*SPEC* %s1 :  ");
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[1] = 0;
        
iHandleReturn[2] = 0;
#endif
    
}
    else
    {
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[0] = PLUGIN_CONTINUE;
        return 
iHandleReturn;
#else
        
return PLUGIN_CONTINUE;
#endif
    
}
    
    new 
iLen2 = (copy(iMessage[iLen], iMsgLen-iLeniText)-1); // last symbol is 0x10 - dunno what it is, but it dose nothing
    
if( iLen2<=)
    {
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[0] = PLUGIN_HANDLED;
        return 
iHandleReturn;
#else
        
return PLUGIN_HANDLED;
#endif
    
}
    
    
iLen2+=iLen;
    new 
bool:bWordExists;
    for( 
iLen+=0iLen<iLen2iLen++ )
    {
        if( 
iMessage[iLen]=='' || iMessage[iLen]=='' || iMessage[iLen]=='' || iMessage[iLen]=='' || iMessage[iLen]=='%' )
            
iMessage[iLen] = ' ';
        else if( 
iMessage[iLen]!=' ' )
            
bWordExists true;
    }
    
    if( !
bWordExists )
    {
#if !defined NO_ADMIN_VIEW
        
iHandleReturn[0] = PLUGIN_HANDLED;
        return 
iHandleReturn;
#else
        
return PLUGIN_HANDLED;
#endif
    
}
    
#if !defined NO_ADMIN_VIEW
    
iHandleReturn[0] = -1;
    return 
iHandleReturn;
#else
    
return -1;
#endif


Last edited by Tonda; 11-07-2014 at 00:42.
Tonda is offline
 



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 17:35.


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