AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Chat problem (https://forums.alliedmods.net/showthread.php?t=251161)

Tonda 11-07-2014 00:23

Chat problem
 
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:

http://screenshot.cz/LYTYR/chat.png

How can i fix this? :cry:
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



HamletEagle 11-07-2014 06:15

Re: Chat problem
 
Then post here: https://forums.alliedmods.net/showthread.php?t=84657

Tonda 11-07-2014 07:01

Re: Chat problem
 
Quote:

Originally Posted by HamletEagle (Post 2221230)

thank you, i post


All times are GMT -4. The time now is 17:35.

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