Raised This Month: $32 Target: $400
 8% 

Bot Chats do not appear


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
feren02
Senior Member
Join Date: Mar 2012
Old 11-21-2021 , 01:16   Bot Chats do not appear
Reply With Quote #1

Hi !

Using ranking system in server, however bots chat only appear on HLDS not in-game.

What do I have to do?


Looking forward.

PHP Code:
#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Novice 0
#define RANKS_Tender-Foot 1
#define RANKS_Fledgling 2
#define RANKS_Amateur 3
#define RANKS_Mentor 4
#define RANKS_Master 5
#define RANKS_Expert 6
#define RANKS_Super-Expert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_Gods 14

new const VERSION[] =  "1.1"

new SzMaxPlayersSzSayText;
new 
playerPrefix,rankLevelBonus,rankSaveType;

new const 
db_save[] = "cs_rank_system"

new level[33], xp[33], rank[33], g_status_sync

new SzGTeam[3][] = {
    
"Spectator",
    
"Terrorist",
    
"Counter-Terrorist"
}

new const 
xp_num[maxlevels+1] = 

    
15701502503504505506507508509501050115012501350145015501650,
    
175018501950205021502250235024502550,26502750285029503050315032503350345035503650
    
375038503950405041504250435044504550465047505000 
}

new const 
ranks_names[maxranks][]=
{
    
"Novice",
    
"Tender-Foot",
    
"Fledgling",
    
"Amateur",
    
"Mentor",
    
"Master",
    
"Expert",
    
"Super-Expert",
    
"Specialist",
    
"Leader",
    
"Mayor",
    
"Pro",
    
"SuperPro",
    
"Heroic",
    
"Gods"
}

public 
plugin_init()
{
    
register_plugin("XP + LEVEL + RANK SYSTEM"VERSIONAUTHOR)

    
// system of xp+lvl+rank
    
playerPrefix register_cvar("Player Prefix""1"//1-Prefix by RANK, 2-Prefix by LEVEL
    //rankLevelBonus = register_cvar("Level Up Bonus", "10000") // Amount of money when passing level.
    
rankSaveType register_cvar("XP Save Type""2"// 1 - IP || 2 - Nick || 3 - SteamID
    
    
register_cvar("XPLvlRankSystem"VERSIONFCVAR_SERVER FCVAR_SPONLY //Search for variable on Gametracker.com

    
register_event("StatusValue""showStatus""be""1=2""2!0")
    
register_event("StatusValue""hideStatus""be""1=1""2=0")
    
    
register_clcmd("say""hook_say");
    
register_clcmd("say_team""hook_say_team");
    
    
register_dictionary("cs_rank_system.txt");

    
SzSayText get_user_msgid ("SayText");
    
SzMaxPlayers get_maxplayers();
    
    
register_message(SzSayText"MsgDuplicate");
    
    
g_status_sync CreateHudSyncObj()
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
    if(!
is_user_alive(id) ||  !is_user_connected(id) )
    return;
    if(
level[id] >= maxlevels)
    {
//        static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
        
set_hudmessage(0255255, -1.00.000.01.10.10.23)
        
//set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
        
show_hudmessage(id,"» Level: %d/%d» |» Rank: %s» |» XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp[id])
    }
    else
    {
        
set_hudmessage(0255255, -1.00.000.01.10.10.23)
        
//set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
        
show_hudmessage(id,"» Level: %d/%d» |» Rank: %s» |» XP: %d/%d"level[id], maxlevelsranks_names[rank[id]], xp[id], xp[id])
    }
}

/*----------------------------------------------------------------------------------------------------------------
-CHAT PREFIX
----------------------------------------------------------------------------------------------------------------*/
public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public 
hook_say(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    new 
SzGetTeam get_user_team(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages));
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages));
    }
    
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
hook_say_team(id)
{
    new 
SzMessages[192], SzName[32];
    new 
SzAlive is_user_alive(id);
    new 
SzGetTeam get_user_team(id);
    
    
read_args(SzMessages191);
    
remove_quotes(SzMessages);
    
get_user_name(idSzName31);
    
    if(!
is_valid_msg(SzMessages))
        return 
PLUGIN_CONTINUE;
    
    switch(
get_pcvar_num(playerPrefix))
    {
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[%s] ^3%s : ^1%s"SzGTeam[SzGetTeam], ranks_names[rank[id]], SzNameSzMessages));
        case 
: (SzAlive format(SzMessages191"^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages) : format(SzMessages191"^1*DEAD* ^1(%s) ^4[Level %d] ^3%s : ^1%s"SzGTeam[SzGetTeam], level[id], SzNameSzMessages));
    }
        
    for(new 
1<= SzMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue;
        
        if(
get_user_team(i) != SzGetTeam)
            continue;
        
        
message_begin(MSG_ONEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end();
    }
    
    return 
PLUGIN_CONTINUE;
}

bool:is_valid_msg(const SzMessages[])
{
    if( 
SzMessages[0] == '@'
    
|| !strlen(SzMessages)){ return false; }
    return 
true;
}  

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killervictimweaponhitplace)
{
    new 
victim_name[32]
    
get_user_name(victimvictim_namecharsmax(victim_name))
    
    new 
killer_team get_user_team(killer)
    new 
victim_team get_user_team(victim)
    
    
//Mentor KILL
    
if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
    {
        
xp[killer]++
        
client_print_color(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_Mentor_KILL"victim_name)
    }
    
    
//HEADSHOT
    
if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
    {
        
xp[killer]+=3
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_HEADSHOT_KILL"victim_name)
    }
    
    
//KNIFE KILL
    
if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_KILL"victim_name)
    }
    
    
//KNIFE + HEADSHOT
    
if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
    {
        
xp[killer]+=7
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_KNIFE_HEAD_KILL"victim_name)
    }
    
    
//GRENADE KILL
    
if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
    {
        
xp[killer]+=5
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_GRENADE_KILL"victim_name)
    }
    
    
//SUICIDE
    
if(killer == victim)
    {
        
xp[killer]-=2
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_SUICIDE")
    }
    
    
//TEAM KILL
    
if(killer != victim && (killer_team == victim_team))
    {
        
xp[killer]-=10
        client_print_color
(killer"!g[%s] %L"xPrefixLANG_PLAYER"MSG_TEAM_KILL")
    }
    
    
check_level(killer1)
    
save_data(killer)
}
    

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(idsound)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
name[32]; get_user_name(idname31)
    
    if(
level[id] < maxlevels
    {        
        while(
xp[id] >= xp_num[level[id]])
        {
            
level[id]++
            
            if(
sound)
            {
                if(
level[id] == maxlevels)
                {
                    
client_print_color(id"!g[%s] %L"xPrefixLANG_PLAYER"MSG_MAXLVL_ID"level[id])
                    
client_print_color(0"!g[%s] %L",xPrefixLANG_PLAYER"MSG_MAXLVL_ALL"namelevel[id])
                    
                    
client_cmd(0"spk ambience/wolfhowl02.wav")
                    
                    return 
PLUGIN_HANDLED
                
}
                
                
client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ID")
                
client_print_color(0"!g[%s] %L",xPrefix,LANG_PLAYER"MSG_RAISE_LEVEL_ALL"name)
//                client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ID", get_pcvar_num(rankLevelBonus))
//                client_print_color(0, "!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ALL", name, get_pcvar_num(rankLevelBonus))
                //cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
                
                
client_cmd(0"spk ambience/lv_fruit1.wav")
                
                
set_ranks(id)
            }
        }
    } 
    
    
// Bug Preventions... (Back to top)
    
if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
    {
        
xp[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    if(
level[id] >= maxlevels
    {    
        
level[id] = maxlevels
        xp
[id] = xp_num[level[id]-1]
        
save_data(id)
    }
    
    return 
PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
    if(
level[id] <= 2rank[id] = RANKS_Novice
    
if(level[id] >= 2rank[id] = RANKS_Tender-Foot
    
if(level[id] >= 5rank[id] = RANKS_Fledgling
    
if(level[id] >= 8rank[id] = RANKS_Amateur
    
if(level[id] >= 11rank[id] = RANKS_Mentor
    
if(level[id] >= 14rank[id] = RANKS_Master
    
if(level[id] >= 17rank[id] = RANKS_Expert
    
if(level[id] >= 20rank[id] = RANKS_Super-Expert
    
if(level[id] >= 23rank[id] = RANKS_Specialist
    
if(level[id] >= 26rank[id] = RANKS_Leader
    
if(level[id] >= 29rank[id] = RANKS_Mayor
    
if(level[id] >= 32rank[id] = RANKS_Pro
    
if(level[id] >= 33rank[id] = RANKS_SuperPro
    
if(level[id] >= 36rank[id] = RANKS_Heroic
    
if(level[id] >= 43rank[id] = RANKS_Gods
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    new 
auth[40], data[50]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
formatex(datacharsmax(data), "%d %d"level[id], xp[id])
    
    
fvault_pset_data(db_saveauthdata)
    
    return 
PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
    new 
auth[40], data[50], x1[10], x2[10]
    
    switch(
get_pcvar_num(rankSaveType))
    {
        case 
1get_user_ip(idauthcharsmax(auth), 1)
        case 
2get_user_name(idauthcharsmax(auth))
        case 
3get_user_authid(idauthcharsmax(auth))
    }
    
    
fvault_get_data(db_saveauthdatacharsmax(data))
    
parse(datax1charsmax(x1), x2charsmax(x2))
    
    
level[id] = str_to_num(x1)
    
xp[id] = str_to_num(x2)
    
    
set_task(2.0"set_ranks"id)
    
check_level(id0)
    
    
set_task(1.1"hud_status"id__"b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
    if(!
is_user_bot(id) && is_user_connected(id)) 
    {
        new 
name[32], pid read_data(2)
        
        
get_user_name(pidname31)
        
        new 
xxx get_user_team(id)
        new 
xxx2 get_user_team(pid)
        
        static 
rgb;
        
random_num(0255), random_num(0255), random_num(0255);
        
        if (
xxx == xxx2)    // friend
        
{
            
set_hudmessage(rgb, -1.00.6010.013.00.010.01, -1)
            
ShowSyncHudMsg(idg_status_sync"Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d"nameranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
        }
    }
}

public 
hideStatus(id)
{
    
ClearSyncHud(idg_status_sync)
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang16393\\ f0\\ fs16 \n\\ par }
*/ 
feren02 is offline
feren02
Senior Member
Join Date: Mar 2012
Old 11-28-2021 , 20:15   Re: Bot Chats do not appear
Reply With Quote #2

feren02 is offline
feren02
Senior Member
Join Date: Mar 2012
Old 01-28-2022 , 01:17   Re: Bot Chats do not appear
Reply With Quote #3

what could possibly the problem here.
feren02 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-28-2022 , 09:24   Re: Bot Chats do not appear
Reply With Quote #4

What does that even mean? I don't understand your question.

Why are you still using poorly coded rank systems in 2022? This exists - https://forums.alliedmods.net/showthread.php?t=308540
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
DJEarthQuake
Veteran Member
Join Date: Jan 2014
Location: Astral planes
Old 01-28-2022 , 11:00   Re: Bot Chats do not appear
Reply With Quote #5

Quote:
bots chat only appear on HLDS not in-game.
At a glance. Untested. Bots that usually do not talk, won't. Hope this is what you mean.

Post Test from OP. Did not work.
Code:

    {
        if(!is_user_connected(i))
            continue;
        
        message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
        write_byte(id);
        write_string(SzMessages);
        message_end();
    } 

    {
        if(!is_user_connected(i) || !is_user_bot(i) || is_user_bot(i))
            continue;
        
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), {0, 0, 0}, i);
        write_byte(id);
        write_string(SzMessages);
        message_end();
    }
Quote:
Originally Posted by feren02 View Post
---- Upon doing this, even a Human player chats cannot be seen in-game anymore. What maybe the other work around?
__________________

Last edited by DJEarthQuake; 02-01-2022 at 11:24.
DJEarthQuake is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-28-2022 , 14:25   Re: Bot Chats do not appear
Reply With Quote #6

Quote:
!is_user_bot(i) || is_user_bot(i))
Wtf.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
feren02
Senior Member
Join Date: Mar 2012
Old 01-29-2022 , 23:57   Re: Bot Chats do not appear
Reply With Quote #7

Quote:
Originally Posted by DJEarthQuake View Post
At a glance. Untested. Bots that usually do not talk, won't. Hope this is what you mean.
Code:

    {
        if(!is_user_connected(i))
            continue;
        
        message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
        write_byte(id);
        write_string(SzMessages);
        message_end();
    } 

    {
        if(!is_user_connected(i) || !is_user_bot(i) || is_user_bot(i))
            continue;
        
        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), {0, 0, 0}, i);
        write_byte(id);
        write_string(SzMessages);
        message_end();
    }

Bot chats are working, however only seen in HLDS console. (Human chats work normal)

THE PROBLEM:
Bot chats are only seen "IN-GAME" when the specific rank plugin I use is not running or disabled.

THE SUSPECT:
I think the problem is with the Ranking Plugin coding, tried your recommendation:


PHP Code:
{
        if(!
is_user_connected(i) || !is_user_bot(i) || is_user_bot(i))
            continue;
        
        
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), {000}, i);
        
write_byte(id);
        
write_string(SzMessages);
        
message_end(); 
---- Upon doing this, even a Human player chats cannot be seen in-game anymore. What maybe the other work around?
feren02 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-30-2022 , 09:38   Re: Bot Chats do not appear
Reply With Quote #8

The solution you tried makes no sense and you might as well remove the entire function because it does the same thing.

If (true or false) -- the code will always run. I'm not sure in what state of mind DJEarthQuake was when writing that.

You're using poorly coded plugins and asking why you're having issues with them. Did you try my solution?
__________________

Last edited by OciXCrom; 01-30-2022 at 09:38.
OciXCrom is offline
Send a message via Skype™ to OciXCrom
feren02
Senior Member
Join Date: Mar 2012
Old 01-30-2022 , 22:30   Re: Bot Chats do not appear
Reply With Quote #9

Quote:
Originally Posted by OciXCrom View Post
The solution you tried makes no sense and you might as well remove the entire function because it does the same thing.

If (true or false) -- the code will always run. I'm not sure in what state of mind DJEarthQuake was when writing that.

You're using poorly coded plugins and asking why you're having issues with them. Did you try my solution?
I apologize really because I am not that techy and knowledgeable in amxx or any other coding. Just really read stuff in this forums and learn by process.


What does it mean to remove the function? I do not fully understand, but the say stuff in-game changes the names of players with the "rank" beside when they chat say or say_team. Another error I encounter is that the color BLUE (when CT) and RED (when T) is not anymore because of the rank plugin I use.


Do you mean I need to disable the say text function of the plugin? But how about the ranks when players say or say_team...

Have not tried yours yet but you are legendary in my eyes because of all your plugins I have read here. I find it complicated because I am a noob?


Anyway looking forward.
feren02 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-31-2022 , 02:16   Re: Bot Chats do not appear
Reply With Quote #10

I would suggest removing this plugin entirely and using mine. You won't have any issues like this and it will be much more easy for you to edit and add new things because it has a fully functional API and a configuration file, even for the ranks themselves.

It makes more sense to do that rather than trying to fix something much worse.

You install it just like any other plugin.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
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 21:54.


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