Jump to content

[AMXMODX] Bomb Status


Don Liviu

Recommended Posts

Descriere : Arata un mesaj hud cu urmatoarele informatii despre bomba:

 
  • Bomb Planted : Yes/No
  • BombSite : A/B/No
  • Status : Dropped/Carried
  • Carrier : Name/ No ( daca bomba a fost plantata arata Planter: Nume )
  • Distance To Bomb: Distanta/No
  1. BombPlanted: daca bomba e plantata,va arata Yes,altfel va arata NO.
  2. BombSites: daca bomb nu e plantata va arata No, altfel va arata A/B.
  3. Status : va arata Dropped daca bomba pe jos, Carried daca un player o are.
  4. Carrier : daca bomba nu e pe jos va arata numele playerului care o are, altfel va arata No. In cazul in care a fost plantata arata numele celui care a plantat-o.
  5. Distance To Bomb: daca e plantata va arata distanta, daca nu va arata NO.

Sursa :

 

 

 

#include < amxmodx >

#include < amxmisc >
#include < fakemeta >
#include < engine >
#include < csx >
#include < cstrike >
#include < dhudmessage >

new bool: MapHasBombSites, bool: IsMapSwapped
new BombPlanted, g_iBombSites [ 3 ], iValue = 0,iStatus ,szName1[ 33 ], szPlanterName [ 33 ]
new g_iTeam , hud_type

new const g_szFileName [ ] = "swapped_maps.ini";
new File [ 128 ]

new Float: g_fBombSitesOrigins [ 3 ] [ 3 ] , Float: g_fBombOrigins [ 3 ]

public plugin_init ( ) {
    
    register_plugin ( "Bomb Status" , "0.4" , "HamletEagle" )
    
    
    register_logevent("Logevent_BombDropped", 3, "2=Dropped_The_Bomb")
    register_logevent("Logevent_BombCollected", 3, "2=Got_The_Bomb")
    register_logevent("Logevent_SpawnedWithBomb", 3, "2=Spawned_With_The_Bomb")
    register_logevent("Logevent_RoundEnd", 2, "1=Round_End")
    
    g_iTeam = register_cvar ( "bomb_status_team" , "0" )
    
    /*
    0 - everyone can see the hud
    1 - only t can see the hud
    2 - only ct can see the hud
    
    */
    
    hud_type = register_cvar ( "bomb_hud_type" , "0" )
    
    /*
    0 - default hud messages
    1 - dhud messages
    */
}

public plugin_cfg ( ) {
    
    new Dir[ 64 ];
    get_configsdir ( Dir, sizeof ( Dir ) - 1 )
    
    formatex( File, sizeof ( File ) -1, "%s/%s", Dir, g_szFileName );
    
    if( ! file_exists( File ) )
    {
        write_file( File, ";Here you will write the swapped maps." )
        write_file( File, ";A map is swapped when it has inversed bomb site." )
        write_file( File, ";If the plugin display incorectly the Bomb Site where the bomb is planted" )
        write_file( File, ";add the map name here." )
        write_file( File, "de_dust2" )
        write_file( File, "de_chateau" )
        
    }
    
    LoadFile ( )    
    CheckAndFindBombSites ( )
    
    
}

public LoadFile ( ) {
    
    new iFile = fopen( File, "rt" );
    
    if( iFile )
    {
        
        new szData[ 128 ],szLine[ 32 ]
        new szMapName [ 33]
        get_mapname ( szMapName, sizeof ( szMapName ) -1 )
        
        while( !feof( iFile ) )
        {
            
            fgets( iFile, szData, sizeof ( szData ) -1 )
            
            if( !szData[ 0 ] || szData[ 0 ] == ';' || ( szData[ 0 ] == '/' && szData[ 1 ] == '/' ) )
                continue
            
            parse( szData, szLine, sizeof ( szLine ) -1 )
            
            if( equal( szMapName, szLine ) )
                IsMapSwapped = true    
            
            
        }
        
    }
    
    fclose( iFile );
    
    
    
    
}

public CheckAndFindBombSites ( ) {
    
    new iEntities [ 3 ]
    iEntities [ 1 ] = engfunc(EngFunc_FindEntityByString, -1 , "classname", "func_bomb_target")     
    iEntities [ 2 ] = engfunc(EngFunc_FindEntityByString,-1 , "classname", "info_bomb_target")     
    
    if ( pev_valid ( iEntities [1 ] ) || pev_valid ( iEntities [ 2 ] ) )
        MapHasBombSites = true
    
    if ( ! MapHasBombSites )
        return;
    
    
    if ( IsMapSwapped ) {
        
        g_iBombSites [ 2 ] = find_ent_by_class ( -1 , "func_bomb_target" )
        g_iBombSites [ 1 ] = find_ent_by_class ( g_iBombSites [ 2 ] , "func_bomb_target" )
        
    }
    
    else {
        
        g_iBombSites [ 1 ] = find_ent_by_class ( -1 , "func_bomb_target" )
        g_iBombSites [ 2 ] = find_ent_by_class ( g_iBombSites [ 1 ] , "func_bomb_target" )
        
    }
    
    if ( pev_valid ( g_iBombSites [ 1 ] ) )
        get_brush_entity_origin ( g_iBombSites [ 1 ] , g_fBombSitesOrigins [ 1 ] )
    
    if ( pev_valid ( g_iBombSites [ 2 ] ) )
        get_brush_entity_origin ( g_iBombSites [ 2 ] , g_fBombSitesOrigins [ 2 ] )
    
}

public bomb_planted ( planter ) {
    
    new Bomb = find_ent_by_model ( -1, "grenade", "models/w_c4.mdl" )
    
    if ( pev_valid ( Bomb ) )
        pev ( Bomb , pev_origin , g_fBombOrigins )
    
    if ( ! Bomb || ! g_iBombSites [ 1 ] && ! g_iBombSites [ 2 ] ) //if we are here,we should have a valid bomb,but let's check again
        return ;
    
    BombPlanted = 1
    
    new Float:iDist [ 3 ]
    iDist [ 1 ] = get_distance_f ( g_fBombOrigins , g_fBombSitesOrigins [ 1 ] )
    iDist [ 2 ] = get_distance_f ( g_fBombOrigins , g_fBombSitesOrigins [ 2 ] )
    
    if ( iDist [ 1 ] < iDist [ 2 ] )
        iValue = 1
    else
        iValue = 2
    
    get_user_name ( planter , szPlanterName, sizeof ( szPlanterName ) -1 )
    iStatus = 1
}

public Logevent_BombDropped ( )
    iStatus = 1

public Logevent_BombCollected ( ) {
    
    iStatus = 0    
    set_task ( 0.1 ,"GetName" ) //without task, the index will be the world
}

public Logevent_SpawnedWithBomb ( )
    GetName ( )

public client_putinserver ( id )
    if ( MapHasBombSites ) set_task ( 3.0 , "ShowHud", id )    

public ShowHud ( id ) {
    
    new CsTeams: Team = cs_get_user_team ( id )
    
    new Float:PlayerOrigins[3]
    pev(id, pev_origin, PlayerOrigins)
    new HudMessage [ 128 ]
    
    if ( BombPlanted )
        formatex ( HudMessage, sizeof ( HudMessage ) -1 , "Bomb Planted :%s^nBombSite: %s^nStatus:Planted^nPlanter:%s^nDistante To Bomb: %i",BombPlanted == 1 ? "Yes" : "No",iValue == 1 ? "A" :"B", szPlanterName, floatround ( get_distance_f (PlayerOrigins, g_fBombOrigins) / 100 ) )
    
    if ( !BombPlanted ) {
        if ( iStatus == 1 )
            formatex ( HudMessage, sizeof ( HudMessage ) -1 , "Bomb Planted :%s^nBombSite: No^nStatus:%s ^nCarrier:No^nDistante To Bomb: No",BombPlanted == 1 ? "Yes" : "No",iStatus == 1 ? "Dropped" : "Carried" )
        else
            formatex ( HudMessage, sizeof ( HudMessage ) -1 , "Bomb Planted :%s^nBombSite: No^nStatus:%s^nCarrier:%s^nDistante To Bomb:No",BombPlanted == 1 ? "Yes" : "No",iStatus == 1 ? "Dropped" : "Carried" ,szName1)    
        
    }
    
    
    switch ( get_pcvar_num ( g_iTeam ) ) {
        
        case 0 : {
            
            
            
            switch ( get_pcvar_num ( hud_type ) ) {
                
                case 0 : {
                    
                    set_hudmessage(0, 255, 85, 0.0, 0.15, 0, 6.0, 12.0)
                    ShowSyncHudMsg(0 , CreateHudSyncObj ( ) , HudMessage)
                }
                
                case 1 : {
                    
                    set_dhudmessage(0, 255, 85, 0.0, 0.15, 0, 6.0, 12.0)
                    show_dhudmessage ( 0 , HudMessage )
                }
            }
            
        }
        
        case 1 :
            if ( Team == CS_TEAM_T ) {
            
            switch ( get_pcvar_num ( hud_type ) ) {
                
                case 0 : {
                    
                    set_hudmessage(id, 255, 85, 0.0, 0.15, 0, 6.0, 12.0)
                    ShowSyncHudMsg(id , CreateHudSyncObj ( ) , HudMessage)
                    
                }
                
                case 1 : {
                    
                    set_dhudmessage(id, 255, 85, 0.0, 0.15, 0, 6.0, 12.0)
                    show_dhudmessage ( id , HudMessage )
                    
                }
                
            }
            
            
            
        }
        
        case 2 : {
            
            if ( Team == CS_TEAM_CT ) {
                
                switch ( get_pcvar_num ( hud_type ) ) {
                    
                    case 0 : {
                        
                        set_hudmessage(id, 255, 85, 0.0, 0.15, 0, 6.0, 12.0)
                        ShowSyncHudMsg(id , CreateHudSyncObj ( ) , HudMessage)
                        
                    }
                    
                    case 1 : {
                        
                        set_dhudmessage(id, 255, 85, 0.0, 0.15, 0, 6.0, 12.0)
                        show_dhudmessage ( id , HudMessage )
                    }
                    
                }
                
                
            }
        }
    }
    
    set_task ( 0.1 , "ShowHud" , id )
    
}

public client_disconnect ( id )
    remove_task ( id )

public bomb_explode ( )
    BombPlanted = false

public bomb_defused ( )
    BombPlanted = false

public Logevent_RoundEnd ( )
    BombPlanted = false    

public GetName ( ) {
    
    new id1 = 0, EntOwner
    new iBomb
    iBomb = find_ent_by_class(-1, "weapon_c4")
    if ( pev_valid ( iBomb ) && !BombPlanted ) {
        
        EntOwner = pev(iBomb, pev_owner)    
        id1 = EntOwner
        get_user_name ( id1 , szName1, sizeof ( szName1 ) -1 )
    }
    
}

 

 

 

Nume: Bomb Site Help

Versiune: 0.4

 

 

Instalare:
 
1. Fisierul bomb_info.sma il puneti in addons/amxmodx/scripting
2. Fisierul bomb_info.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
 
bomb_info.amxx
4. In cazul in care BombSite-ul nu este aratat corect ( A in loc de B sau invers ), citeste sectiunea FAQ.
5. In fisierul addons/amxmodx/configs/swapped_maps.ini adaugati hartile care au bomb site-urile inversate. ( Citeste FAQ pentru mai multe detalii ).
 
Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg): 
bomb_status_team-echipa care sa vada mesajele hud
0 - toti il vad
1 - doar t
2 - doar ct
bomb_hud_type-tipul hudului
0 - hud normal
1 - dhud
 
Comenzi administrative (se tasteaza in consola si trebuie sa fiti administrator):
Nu contine
 
Comenzi publice (se tasteaza in joc prin apasarea tastei Y):
Nu contine
 
Module necesare (se sterge ; din fata modulului de mai jos; acestea le gasiti in fisierul amxmodx\configs\modules.ini):
 
amxmodx
amxmisc 
fakemeta 
engine 
csx
cstrike

 

 

download-button.gif

  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...