AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved HUD not being displayed (https://forums.alliedmods.net/showthread.php?t=308647)

edon1337 06-28-2018 13:09

HUD not being displayed
 
I'm trying to fix this for hours and I still don't get why I'm not seeing a HUD getting displayed. The function that triggers the HUD is called on Ham_Killed but it still persists to not display.
PHP Code:

public @HamKilled_PostiVictimiAttackeriShouldGib )
{
    if( 
g_bHasGameStarted )
    {
        if( 
GetTeamAlivePlayersGetPlayerTeamiVictim ) ) == // all his teammates are dead
        
BetterLuckNextTimeiVictim ); // he lost the round
    
}
}

BetterLuckNextTimeiPlayer )
{
    
set_hudmessage025500.300.3000.010.0 );
    
show_hudmessageiPlayer"Your team placed: #%d", ( GetRemainingTeams( ) + ) );
    
    if( 
GetPlayerPerTeam( ) > )
    {
        new 
szPlayers32 ], iNumiTempID;
        
get_playersszPlayersiNum"bch" );
        
        for( new 
iiNumi++ )
        {
            
iTempID szPlayers];
            
            if( ( 
GetPlayerTeamiTempID ) == GetPlayerTeamiPlayer ) ) && ( iTempID != iPlayer ) )
            {
                
set_hudmessage025500.350.3500.010.0 );
                
show_hudmessageiTempID"Your team placed: #%d", ( GetRemainingTeams( ) + ) );
            }
        }
    }


I just don't get what would cause it to not be displayed..

maqi 06-28-2018 15:23

Re: HUD not being displayed
 
What does GetRemainingTeams() return ?

EDIT: I tested with your exact code, It works, except I hardcoded the GetRemainingTeams( ) return, so check that function. ( Either that, or its not called at all )

edon1337 06-28-2018 18:17

Re: HUD not being displayed
 
Quote:

Originally Posted by maqi (Post 2599752)
What does GetRemainingTeams() return ?

EDIT: I tested with your exact code, It works, except I hardcoded the GetRemainingTeams( ) return, so check that function. ( Either that, or its not called at all )

It returns the number of teams left.

I debugged the code and this is sooo weird, how can #2 be logged first when #1 executes it?

CODE:
PHP Code:

public @HamKilled_PostiVictimiAttackeriShouldGib )
{
    if( 
g_bHasGameStarted )
    {
        if( 
GetTeamAlivePlayersGetPlayerTeamiVictim ) ) == )
        {
            
BetterLuckNextTimeiVictim );
            
log_to_file"csbattleroyale.txt""#1 Called | iVictim = %d"iVictim );
        }
    }
}

BetterLuckNextTimeiPlayer )
{
    
log_to_file"csbattleroyale.txt""#2 Called | iPlayer = %d"iPlayer );

    
set_hudmessage025500.350.3500.010.0 );
    
show_hudmessageiPlayer"Your team placed: #%d", ( GetRemainingTeams( ) - ) );

    new 
szPlayers32 ], iNumiTempID;
    
get_playersszPlayersiNum );
    
    for( new 
iiNumi++ )
    {
        
iTempID szPlayers];
        
        if( ( 
GetPlayerTeamiTempID ) == GetPlayerTeamiPlayer ) ) && ( iTempID != iPlayer ) )
        {
            
set_hudmessage025500.350.3500.010.0 );
            
show_hudmessageszPlayers], "Your team placed: #%d", ( GetRemainingTeams( ) + ) );
            
            
log_to_file"csbattleroyale.txt""#3 Called | Remaining Teams: %d"GetRemainingTeams( ) );
        }
    }


DEBUG LOGS:
Quote:

L 06/29/2018 - 00:13:55: #2 Called | iPlayer = 1
L 06/29/2018 - 00:13:55: #3 Called | Remaining Teams: 1
L 06/29/2018 - 00:13:56: #3 Called | Remaining Teams: 1
L 06/29/2018 - 00:13:56: #3 Called | Remaining Teams: 1
L 06/29/2018 - 00:13:56: #1 Called | iVictim = 1

maqi 06-29-2018 06:12

Re: HUD not being displayed
 
It's executed in the right order.

PHP Code:

BetterLuckNextTimeiVictim );   // first
log_to_file"csbattleroyale.txt""#1 Called | iVictim = %d"iVictim );  //second 

Also a few things, if I may:
- You are showing ( GetRemainingTeams( ) - 1 ) to the player but ( GetRemainingTeams( ) + 1 ) to his team ( Im not sure if this is intended, but doesn't seem right )
- Don't use szPlayers[ i ] if you already defined iTempID, or don't use iTempID at all :D
- And I would suggest adding some flags to the get_players native, as you don't need a hud message to be shown to bots for example, or even alive players in this case.

As for the hud not showing ( if it still isn't ), can we please take a look at the GetRemainingTeams() ? :D

edon1337 06-29-2018 06:32

Re: HUD not being displayed
 
Quote:

Originally Posted by maqi (Post 2599824)
It's executed in the right order.

PHP Code:

BetterLuckNextTimeiVictim );   // first
log_to_file"csbattleroyale.txt""#1 Called | iVictim = %d"iVictim );  //second 


Yes, my bad, I didn't notice :)

Quote:

Originally Posted by maqi (Post 2599824)
- You are showing ( GetRemainingTeams( ) - 1 ) to the player but ( GetRemainingTeams( ) + 1 ) to his team ( Im not sure if this is intended, but doesn't seem right )

I have already fixed it since last night

Quote:

Originally Posted by maqi (Post 2599824)
- Don't use szPlayers[ i ] if you already defined iTempID, or don't use iTempID at all :D

Doesn't really fix this bug but you're right, I was in a rush when I edited the code so I missed that.

Quote:

Originally Posted by maqi (Post 2599824)
- And I would suggest adding some flags to the get_players native, as you don't need a hud message to be shown to bots for example, or even alive players in this case.

If I add the flag to skip dead players how would I loop through his dead teammates?

Quote:

Originally Posted by maqi (Post 2599824)
As for the hud not showing ( if it still isn't ), can we please take a look at the GetRemainingTeams() ? :D

It was showing like 30 mins ago now It's gone again, idk what's causing it to not show sometimes..

As I said, it just returns an integer.
PHP Code:

GetRemainingTeams( )
{
    new 
iRemainingTeams;

    for( new 
iTeam 1iTeam <= GetMaxTeams( ); iTeam++ )
    {
        if( 
GetTeamAlivePlayersiTeam ) >= // GetTeamAlivePlayers returns number of alive players in a team
        
{
            
iRemainingTeams++;
        }
    }
    return 
iRemainingTeams;



maqi 06-29-2018 06:41

Re: HUD not being displayed
 
You don't need a flag to skip dead, you need a flag to skip alive :D As I can see, you are never going to show this message to an alive player. so go with
Code:
get_players ( iPlayers, iNum, "bch" );

Anyway, I don't really know about the hud not showing, everything is pointing to the GetRemainingTeams halting or returning a non integer value ( Which doesn't seem to be a case here ), however the code above doesn't help us debug because it's even more functions inside one another :D Id suggest going through all of those to look for errors ( Especially if it shows hud sometimes )

Other than that, check for some other hud message overwriting the same channel.

edon1337 06-29-2018 07:09

Re: HUD not being displayed
 
Quote:

Originally Posted by maqi (Post 2599829)
You don't need a flag to skip dead, you need a flag to skip alive :D As I can see, you are never going to show this message to an alive player. so go with
Code:
get_players ( iPlayers, iNum, "bch" );

Yeah, I misunderstood what you said, that would work, thanks.

Quote:

Originally Posted by maqi (Post 2599829)
Other than that, check for some other hud message overwriting the same channel.

I also think that might be the case, I already used -1 channel so it automatically finds a new channel, so they don't overwrite each other, but it's not working.

EDIT: Client_print works, but not HUDs..

PHP Code:

BetterLuckNextTimeiPlayer )
{
    
set_hudmessage025500.300.3000.010.0__, -);
    
show_hudmessageiPlayer"Your team placed: #%d", ( GetRemainingTeams( ) + ) );

    
client_printiPlayerprint_center"Your team placed: #%d", ( GetRemainingTeams( ) + ) );
    
    if( 
GetPlayerPerTeam( ) > )
    {
        new 
szPlayers32 ], iNumiTempID;
        
get_playersszPlayersiNum"bch" );
        
        for( new 
iiNumi++ )
        {
            
iTempID szPlayers];
            
            if( ( 
GetPlayerTeamiTempID ) == GetPlayerTeamiPlayer ) ) && ( iTempID != iPlayer ) )
            {
                
set_hudmessage025500.350.3500.010.0__, -);
                
show_hudmessageiTempID"Your team placed: #%d", ( GetRemainingTeams( ) + ) );
            }
        }
    }



Natsheh 07-01-2018 04:25

Re: HUD not being displayed
 
Have you tried debugging to see what gets called or not?

edon1337 07-01-2018 06:35

Re: HUD not being displayed
 
Quote:

Originally Posted by Natsheh (Post 2600254)
Have you tried debugging to see what gets called or not?

Yes, check post #3

edon1337 07-03-2018 08:02

Re: HUD not being displayed
 
I also tried using DHUD but it's worse, when I remove the plugin that has 2 constant HUDs everything works, but I don't know why that plugin is interfering with this one when each of the HUDs have their own channel. Here's the code for the plugin that has 2 constant HUDs
PHP Code:

#include < amxmodx >
#include < amxmisc >
#include < hamsandwich >
#include < cs_battleroyale_faketeams >
#include < cs_battleroyale_roundmanager >

new g_iSyncHudObject;
new 
g_iSyncHudObject2;
new 
g_iMaxPlayers;

new 
g_iPlayerKills33 ];

new const 
g_szFileIni[ ] = "GameSettings.ini"

enum ( += 200 )
{
    
TASK_1 100,
    
TASK_2,
}

enum _:DataInfo
{
    
Hud_Red,
    
Hud_Green,
    
Hud_Blue,
    
Float:Hud_X,
    
Float:Hud_Y,
    
Float:Hud_Time,

    
Hud_Red_F,
    
Hud_Green_F,
    
Hud_Blue_F,
    
Float:Hud_X_F,
    
Float:Hud_Y_F,
    
Float:Hud_Time_F,
}

new 
g_iDataSettingsDataInfo ];

public 
plugin_init( )
{
    
register_plugin"CS Battle Royale HUDs""1.0""DoNii" );
    
    
register_event"HLTV""OnNewRound""a""1=0""2=0" ) ;
    
register_event"TextMsg""OnGameCommencing""a""2=#Game_Commencing""2=#Game_will_restart_in" ) ;
    
    
RegisterHamHam_Spawn"player""fw_HamSpawnPost");
    
RegisterHamHam_Killed"player""fw_HamKilledPost");
    
    
ReadFile( );
    
    
g_iSyncHudObject CreateHudSyncObj( );
    
g_iSyncHudObject2 CreateHudSyncObj( );
    
    
set_taskg_iDataSettingsHud_Time ], "OnTaskHud"___"b" );
    
    
g_iMaxPlayers get_maxplayers( );
}

public 
client_connectid )
g_iPlayerKillsid ] = 0;

public 
fw_HamSpawnPostid )
{
    
g_iPlayerKillsid ] = 0;

    
ClearSyncHudidg_iSyncHudObject );
    
ClearSyncHudidg_iSyncHudObject2 );
    
    if( 
<= GetPlayerPerTeam( ) <= g_iMaxPlayers )
    {
        new 
szPlayers32 ], iNumiTempIDszMessage256 ], szName32 ];
        
get_playersszPlayersiNum );
        
        new 
iLen formatszMessagecharsmaxszMessage ), "Your Team:" );
        
        for( new 
iiNumi++ )
        {
            
iTempID szPlayers];
            
            if( 
GetPlayerTeamiTempID ) == GetPlayerTeamid ) )
            {
                
get_user_nameiTempIDszNamecharsmaxszName ) );
                
iLen += formatszMessageiLen ], 255 iLen"^n%s"szName );
            }
        }
        
set_taskg_iDataSettingsHud_Time_F ], "OnTaskHudFriend"id+TASK_2szMessagesizeof szMessage"b" );
    }
}        

public 
OnGameCommencing( )
{
    new 
szPlayers32 ], iNumiTempID;
    
get_playersszPlayersiNum );

    for( new 
iiNumi++ )
    {
        
iTempID szPlayers];

        
g_iPlayerKillsiTempID ] = 0;
    }
}

public 
OnNewRound( )
{
    new 
szPlayers32 ], iNumiTempID;
    
get_playersszPlayersiNum );

    for( new 
iiNumi++ )
    {
        
iTempID szPlayers];

        
g_iPlayerKillsiTempID ] = 0;
    }
}

public 
fw_HamKilledPostiVictimiAttackeriShouldGib )
{
    if( ! 
is_user_connectediVictim ) || ! is_user_connectediAttacker ) )
    return 
HAM_IGNORED;
    
    if( 
iVictim == iAttacker )
    return 
HAM_IGNORED;
    
    
g_iPlayerKillsiAttacker ]++;
    return 
HAM_IGNORED;
}

public 
OnTaskHudFriendszMessage[ ], id )
{
    
id -= TASK_2

    set_hudmessage
g_iDataSettingsHud_Red_F ], g_iDataSettingsHud_Green_F ], g_iDataSettingsHud_Blue_F ], g_iDataSettingsHud_X_F ], g_iDataSettingsHud_Y_F ], 00.0g_iDataSettingsHud_Time_F ] + 0.1__, -);
    
ShowSyncHudMsgidg_iSyncHudObject2"%s"szMessage );
}

public 
OnTaskHud( )
{
    new 
szPlayers32 ], iNumiTempID;
    
get_playersszPlayersiNum );
    
    for( new 
iiNumi++ )
    {
        
iTempID szPlayers];
        
        
set_hudmessageg_iDataSettingsHud_Red ], g_iDataSettingsHud_Green ], g_iDataSettingsHud_Blue ], g_iDataSettingsHud_X ], g_iDataSettingsHud_Y ], 00.0g_iDataSettingsHud_Time ] + 0.1__, -);
        
ShowSyncHudMsgiTempIDg_iSyncHudObject"| ** Your Team: %d ** |^n| ** Remaining Teams: %d ** |^n| ** Alive Players: %d ** |^n| ** Your Kills: %d ** |"GetPlayerTeamiTempID ), GetRemainingTeams( ), GetAlivePlayers( ), g_iPlayerKillsiTempID ] );
    }
}

ReadFile( )
{
    new 
szConfigsName256 ], szFilename512 ];
    
get_configsdirszConfigsNamecharsmaxszConfigsName ) );
    
    
formatex(szFilenamecharsmax(szFilename), "%s/%s"szConfigsNameg_szFileIni );
    
    new 
iFile fopenszFilename"r" );
    
    if( 
iFile )
    {
        new 
szData128 ], szValue64 ], szKey32 ];
        
        while( ! 
feofiFile ) )
        {
            
fgetsiFileszDatacharsmaxszData ) );
            
trimszData );
            
            switch( 
szData] )
            {
            case 
EOS'#'';'
                continue;
                
            default:
                {
                    
strtokszDataszKeycharsmaxszKey ), szValuecharsmaxszValue ), '=' );
                    
trimszKey ); 
                    
trimszValue );
                    
                    if( 
equalszKey"HUD_RED" ) )
                    
g_iDataSettingsHud_Red ] = str_to_numszValue );
                    
                    else if( 
equalszKey"HUD_GREEN" ) )
                    
g_iDataSettingsHud_Green ] = str_to_numszValue );
                    
                    else if( 
equalszKey"HUD_BLUE" ) )
                    
g_iDataSettingsHud_Blue ] = str_to_numszValue );
                    
                    else if( 
equalszKey"HUD_X" ) )
                    
g_iDataSettingsHud_X ] = _:str_to_floatszValue );
                    
                    else if( 
equalszKey"HUD_Y" ) )
                    
g_iDataSettingsHud_Y ] = _:str_to_floatszValue );
                    
                    else if( 
equalszKey"HUD_TIME" ) )
                    
g_iDataSettingsHud_Time ] = _:str_to_floatszValue );
                    
                    else if( 
equalszKey"HUD_RED_FRIEND" ) )
                    
g_iDataSettingsHud_Red_F ] = str_to_numszValue );
                    
                    else if( 
equalszKey"HUD_GREEN_FRIEND" ) )
                    
g_iDataSettingsHud_Green_F ] = str_to_numszValue );
                    
                    else if( 
equalszKey"HUD_BLUE_FRIEND" ) )
                    
g_iDataSettingsHud_Blue_F ] = str_to_numszValue );
                    
                    else if( 
equalszKey"HUD_X_FRIEND" ) )
                    
g_iDataSettingsHud_X_F ] = _:str_to_floatszValue );
                    
                    else if( 
equalszKey"HUD_Y_FRIEND" ) )
                    
g_iDataSettingsHud_Y_F ] = _:str_to_floatszValue );
                    
                    else if( 
equalszKey"HUD_TIME_FRIEND" ) )
                    
g_iDataSettingsHud_Time_F ] = _:str_to_floatszValue );
                }
            }
        }
    }
    
fcloseiFile );
}

GetAlivePlayers( )
{
    new 
szPlayers32 ], iNum;
    
get_playersszPlayersiNum"a" );

    return 
iNum;




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

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