Hunger-Games
#26
Puede que por error haya subido otra versión pero lo dudo mucho, acabo de probar y puedo registrarme, identificarme y auto-loguearme correctamente. Voy a corroborar que puede estar causando el problema.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#27
Que buen aporte, en Drunk Games me encanta jugarlo
Responder
#28
Verifiquen que no sacaron ni modificaron nada del código que no pertenezca a la sección modificable, porque es muy raro que el baúl tire errores como esos... es como si g_iVault no hubiera sido asignada lo cual es imposible con el código tal cual está.

Deben usar la última versión de Orpheu junto con el Round Terminator y sus signatures actualizadas, AMX Mod X 1.8.3 y Adv_Vault en su última versión. Verifiquen que el baúl se crea correctamente dentro de amxmodx/data/carpeta_del_adv_vault y cuéntenme los resultados Ángel.

PD: Comparé el código que tengo con el del zip con DiffNow y no hay diferencia alguna, si bien lo probé muy poco lo poco que lo probé funcionó perfectamente (con 4 personas reales).
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#29
Cuando lo adaptas a AMX Mod X 1.8.2 ? Cutecry
Responder
#30
(26/06/2017, 07:18 AM)destroy3r escribió: Cuando lo adaptas a AMX Mod X 1.8.2 ? Cutecry

Tanto te cuesta instalar el amx 1.8.3?

Responder
#31
alguien que me pase el orpheu me da errores con eso xd
eviten responder mierda v:

me da error con la signature endround algo así

me descargue varios y termine usando el roundcontrol!
gracias si alguien leyo esto
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#32
alguien tiene las signatures?

solo falta eso Whatdone
(13/08/2018, 07:59 PM)KrR10VnZl escribió: Usted tiene un retraso de otro mundo, pon de tu parte coño, como es posible que preguntes cual código? muchacho mongólico si dice código, él se refiere al SMA del CTF, dios mio y si no te gusta que te digan que tienes un retraso magistral, astral del otro mundo pon de tú parte y no hagas preguntas tontas.
Responder
#33
(26/11/2017, 06:55 AM)Yoshi Saw escribió: alguien tiene las signatures?

solo falta eso Whatdone

Cuando formatié no guardé nada de las signatures y ese estilo de cosas así que no las tengo, pero podés hacer lo que hizo NkkI y reemplazar el Round Terminator por las natives del Round Control. O mejor aún, en caso de tener ReAPI, utilizar lo que te provee ReAPI para controlar la ronda (creo que tiene algo).

Caso aparte: hace poco a un amigo le surgieron unos pequeños bugs durante el testing prolongado que los arreglé pero no los anoté, por lo que esta versión tiene dichos pequeños bugs. Si alguien los encuentra me los hace saber y actualizo. Saludos.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#34
Les dejo otra versión libre de errores (o eso creo) pero que utiliza ReAPI. No tiene estadísticas ni nada, es solo el core. Necesita nada más que los módulos base y el ReAPI.

PD: Lo separé de un HG privado que funciona a la perfección, a pedido de un usuario que reportó problemas con el otro publicado. Abrir preferentemente con Sublime Text, así se ve correctamente identado.

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <reapi>
#include <xs>

/* =================================================================================
*                 [ Global stuff ]
* ================================================================================= */

#define PLAYER_ARRAY 33

#define IsPlayer(%0)             ( 1 <= %0 <= 32 )

#define GetPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 & ( 1 << ( %1 & 31 ) ) ) )
#define SetPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 |= ( 1 << ( %1 & 31 ) ) ) )
#define ClearPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 &= ~( 1 << ( %1 & 31 ) ) ) )

#define ClientPlaySound(%0,%1)     client_cmd( %0, "spk %s", %1 )

const m_iRadiosLeft         192;
const 
m_iVGUI                 510;

const 
MAIN_MENU_KEYS         MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
const 
CONFIG_MENU_KEYS         MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6;
const 
TEAM_MENU_KEYS         MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6;

const 
TASK_RESTART             100;
const 
TASK_IMMUNITY         200;
const 
TASK_DUELIMMUNITY     300;
const 
TASK_JOINTEAM         400;

const 
Float:JOINTEAM_DELAY     1.0;

enum _:Game_Status
{
    
Game_Waiting,
    
Game_Started
}

enum _:Round_Type
{
    
Round_None,
    
Round_Countdown,
    
Round_Immunity,
    
Round_Normal,
    
Round_Versus
}

enum _:Teams
{
    
Team_Unassigned,
    
Team_Terrorist,
    
Team_Antiterrorist,
    
Team_Spectator
}

enum _:Weapon_Data
{
    
Weapon_Name16 ],
    
Weapon_Item32 ],
    
Weapon_Index,
    
Weapon_Min,
    
Weapon_Max
}

new const 
g_eWeapons[ ][ Weapon_Data ] =
{
    { 
"Glock-18""weapon_glock18"CSW_GLOCK18815 },
    { 
"USP""weapon_usp"CSW_USP4},
    { 
"P228""weapon_p228"CSW_P228311 },
    { 
"Deagle""weapon_deagle"CSW_DEAGLE2},
    { 
"FiveSeven""weapon_fiveseven"CSW_FIVESEVEN618 },
    { 
"Dual Elites""weapon_elite"CSW_ELITE1227 },
    { 
"TMP""weapon_tmp"CSW_TMP624 },
    { 
"MAC-10""weapon_mac10"CSW_MAC101129 },
    { 
"MP5-Navy""weapon_mp5navy"CSW_MP5NAVY1022 },
    { 
"Ump-45""weapon_ump45"CSW_UMP451425 },
    { 
"P90""weapon_p90"CSW_P901238 },
    { 
"M3""weapon_m3"CSW_M33},
    { 
"XM-1014""weapon_xm1014"CSW_XM10141},
    { 
"Famas""weapon_famas"CSW_FAMAS621 },
    { 
"Galil""weapon_galil"CSW_GALIL1232 },
    { 
"Scout""weapon_scout"CSW_SCOUT1},
    { 
"Awp""weapon_awp"CSW_AWP1},
    { 
"AK-47""weapon_ak47"CSW_AK47414 },
    { 
"M4A1""weapon_m4a1"CSW_M4A1414 },
    { 
"SG550""weapon_sg550"CSW_SG550617 },
    { 
"AUG""weapon_aug"CSW_AUG715 }
};

new const 
g_szBoxBrokenSound[ ]     = "hungergames/picked.wav";
new const 
g_szBoxModel[ ]             = "models/hungergames/Supply.mdl";

new const 
g_szBoxClassname[ ]         = "HGBox";
new const 
g_szGameThinkClassname[ ]    = "GameThink";

new const 
g_szCache_InfoTarget[ ]     = "info_target";
new const 
g_szCache_WeaponKnife[ ]    = "weapon_knife";
new const 
g_szCache_DoorClass[ ]    = "hg_puerta";
new const 
g_szCache_VipStart[ ]        = "info_vip_start";

new const 
g_szPrefix[ ]             = "HG";

new    
g_iConnected;
new 
g_iAlive;
new 
g_iCountdown;
new 
g_iGame;
new 
g_iBoxGibs;
new 
g_iPlayerWeaponStrip;
new 
g_bNoDamage;
new 
g_iHideWeapon;
new 
g_iCrosshair;
new 
g_iScoreInfo;
new 
g_iGameThink;
new 
g_iFirstRound;
new 
g_iFrozen;
new 
g_iTributes;
new 
g_iShowMenu;
new 
g_iVGUIMenu;
new 
g_iBoxes;
new 
g_iVisibleBoxes;
new 
g_iRoundStatus;

new 
bool:g_bLoaded;

new 
g_szSaveFile64 ];
new 
g_iPlayerScore33 ];
new 
Float:g_flDuelPosition][ ];

/* =================================================================================
*                 [ Plugin events ]
* ================================================================================= */

public plugin_precache( )
{
    
precache_soundg_szBoxBrokenSound );
    
precache_modelg_szBoxModel );
    
    
g_iPlayerWeaponStrip create_entity"player_weaponstrip" );
    
g_iBoxGibs precache_model"models/woodgibs.mdl" );
}

public 
plugin_init( )
{
    
register_plugin"Hunger Games""1.0""Manu" );

    
RegisterHamHam_Spawn"player""OnPlayerSpawn_Post"truetrue );
    
RegisterHamHam_TakeDamage"player""OnPlayerTakeDamage_Pre"falsetrue );
    
RegisterHamHam_CS_Player_ResetMaxSpeed"player""OnPlayerResetMaxSpeed_Pre"falsetrue );
    
    
register_forwardFM_ClientKill"OnClientKill_Pre"false );

    
register_touchg_szBoxClassname"player""OnBoxTouch" );
    
register_thinkg_szGameThinkClassname"OnGameThink" );

    
register_event"DeathMsg""Event_DeathMsg""a" );
    
register_event"ResetHUD""Event_ResetHUD""be" );
    
    
register_logevent"Event_RoundStart"2"1=Round_Start" );
    
register_logevent"Event_RoundEnd"2"1=Round_End" );
    
    
register_message( ( g_iShowMenu get_user_msgid"ShowMenu" ) ), "Message_ShowMenu" );
    
register_message( ( g_iVGUIMenu get_user_msgid"VGUIMenu" ) ), "Message_VGUIMenu" );

    
register_menucmdregister_menuid"Main Menu"false ), MAIN_MENU_KEYS"MainMenuHandler" );
    
register_menucmdregister_menuid"Config Menu"false ), CONFIG_MENU_KEYS"ConfigMenuHandler" );
    
register_menucmdregister_menuid"Team_Select"true ), TEAM_MENU_KEYS"TeamSelectMenuHandler" );

    
register_clcmd"jointeam""ClientCommand_TeamChoosing" );
    
register_clcmd"chooseteam""ClientCommand_TeamChoosing" );
    
register_clcmd"hg_fly""ClientCommand_Fly" );
        
    
g_bNoDamage        true;
    
g_iRoundStatus     Round_None;
    
g_iGameThink     create_entityg_szCache_InfoTarget );
    
    
g_iHideWeapon    get_user_msgid"HideWeapon" );
    
g_iCrosshair    get_user_msgid"Crosshair" );
    
g_iScoreInfo    get_user_msgid"ScoreInfo" );
    
    
set_msg_blockget_user_msgid"Radar" ), BLOCK_SET );
    
entity_set_stringg_iGameThinkEV_SZ_classnameg_szGameThinkClassname );
    
    
set_cvar_num"mp_autoteambalance");
    
set_cvar_num"mp_limitteams");
    
set_cvar_num"mp_friendlyfire");
    
set_cvar_num"mp_tkpunish");
    
set_cvar_num"mp_autokick");
    
set_cvar_num"mp_freezetime");
    
set_cvar_num"mp_freeforall");
    
set_cvar_num"mp_round_infinite");
    
set_cvar_num"mp_max_teamkills");
    
set_cvar_float"mp_buytime"0.0 );
    
    
LoadConfigs( );
    
LoadDuelPoints( );
    
    if( !
is_regamedll( ) )
    {
        
pause"Recurso faltante: ReGameDLL." );
    }
}

/* =================================================================================
*                 [ Tasks, Events & Messages ]
* ================================================================================= */

public Event_RoundStart( )
{
    if( ( 
g_iFirstRound == ) && !task_existsTASK_RESTART ) )
    {
        
set_task10.0"Task_RestartGame" );
        
        
client_print_color0print_team_default"^4[%s]^1 Bienvenidos al modo^4 Hunger Games v1.0 Beta^1!"g_szPrefix );
        
client_print_color0print_team_default"^4[%s]^1 El juego comenzara en^3 diez segundos^1. Preparense!"g_szPrefix );
    }
    else if( 
g_iGame == Game_Started )
    {
        
g_iFirstRound     0;
        
g_bNoDamage     true;
        
g_iRoundStatus     Round_Countdown;
        
g_iCountdown    10;
        
        
DrawBoxes( );
        
UpdateScoreBoard( );
        
        
entity_set_floatg_iGameThinkEV_FL_nextthinkget_gametime( ) );
    }
}

public 
Event_ResetHUDiId )
{
    
message_beginMSG_ONE_UNRELIABLEg_iHideWeapon_iId );
    
write_byte( ( 1<<1<<) );
    
message_end( );
    
    
message_beginMSG_ONE_UNRELIABLEg_iCrosshair_iId );
    
write_byte);
    
message_end( );
}

public 
Event_RoundEnd( )
{
    
remove_taskTASK_DUELIMMUNITY );
    
    
g_bNoDamage true;
    
g_iRoundStatus Round_None;
    
    
entity_set_floatg_iGameThinkEV_FL_nextthink0.0 );
}

public 
Event_DeathMsg( )
{
    static 
iKilleriKiller read_data);
    static 
iVictimiVictim read_data);
    
    
ClearPlayerBitg_iAliveiVictim );
    
    if( 
g_iGame != Game_Started )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    if( 
iKiller != iVictim && GetPlayerBitg_iConnectediKiller ) )
    {
        
g_iPlayerScoreiKiller ]++;

        
UpdateScoreiKiller );
    }
    
    
CheckRoundStatus( );
    
    return 
PLUGIN_CONTINUE;
}

public 
Message_VGUIMenuiMessageiDestiId )
{
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return 
PLUGIN_CONTINUE;
    }    
    
    if( 
get_msg_arg_int) == )
    {
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
Message_ShowMenuiMessageiDestiId )
{    
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static const 
FIRST_JOIN_MSG[ ] = "#Team_Select";
    static const 
FIRST_JOIN_MSG_SPEC[ ] = "#Team_Select_Spect";
    static const 
INGAME_JOIN_MSG[ ] = "#IG_Team_Select";
    static const 
INGAME_JOIN_MSG_SPEC[ ] = "#IG_Team_Select_Spect";
    
    static 
szMenuCode64 ];
    
    
get_msg_arg_string4szMenuCodesizeofszMenuCode ) - );
    
    if( 
equalszMenuCodeFIRST_JOIN_MSG ) || equalszMenuCodeFIRST_JOIN_MSG_SPEC )
    || 
equalszMenuCodeINGAME_JOIN_MSG ) || equalszMenuCodeINGAME_JOIN_MSG_SPEC ) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
Task_DuelImmunity( )
{
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
UnfreezePlayeriPlayer );
        }
    }
}

public 
Task_RestartGame( )
{
    
g_iFirstRound 1;
    
    
server_cmd"sv_restartround 1" );
    
server_exec( );
    
    
client_print_color0print_team_default"^4[%s]^1 Reiniciando ronda..."g_szPrefix );
}

public 
Task_ForceJoinTeamiTask )
{
    new 
iId iTask TASK_JOINTEAM;
    
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return;
    }
    
    if( !
is_user_botiId ) )
    {
        new 
iRestore get_pdata_intiIdm_iVGUI );
        
        if( 
iRestore & ( 1<<) )
        {
            
set_pdata_intiIdm_iVGUIiRestore & ~( 1<<) );
        }
        
        
set_msg_blockg_iShowMenuBLOCK_SET );
        
set_msg_blockg_iVGUIMenuBLOCK_SET );
        
        
engclient_cmdiId"jointeam""2" );
        
engclient_cmdiId"joinclass""5" );
        
        
set_msg_blockg_iShowMenuBLOCK_NOT );
        
set_msg_blockg_iVGUIMenuBLOCK_NOT );
        
        if( 
iRestore & ( 1<<) )
        {
            
set_pdata_intiIdm_iVGUIiRestore );
        }
        
        
menu_canceliId );
    }
    
    
CheckGameStatus( );
}

/* =================================================================================
*                 [ CBasePlayer Forwards ]
* ================================================================================= */

public OnPlayerSpawn_PostiId )
{
    if( !
is_user_aliveiId ) )
    {
        return 
HAM_IGNORED;
    }
    
    
SetPlayerBitg_iAliveiId );
    
    
RemovePlayerWeaponsiId );
    
    
cs_set_user_armoriId0CS_ARMOR_NONE );
    
give_itemiIdg_szCache_WeaponKnife );
    
set_pdata_intiIdm_iRadiosLeft);

    if( 
g_iRoundStatus == Round_Countdown )
    {
        
FreezePlayeriId );
    }

    return 
HAM_IGNORED;
}

public 
OnPlayerTakeDamage_PreiVictimiInflictoriAttackerFloat:flDamageiDamageBits )
{
    if( 
g_bNoDamage )
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

public 
OnPlayerResetMaxSpeed_PreiId )
{
    if( 
GetPlayerBitg_iFrozeniId ) )
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

/* =================================================================================
*                 [ General Forwards ]
* ================================================================================= */

public OnBoxTouchiBoxiId )
{
    if( !
GetPlayerBitg_iAliveiId ) || ( g_iGame != Game_Started ) || ( entity_get_intiBoxEV_INT_solid ) == SOLID_NOT ) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static 
iOrigin];
    static 
Float:flOrigin];
    
    
entity_get_vectoriBoxEV_VEC_originflOrigin );
    
FVecIVecflOriginiOrigin );
    
    
message_beginMSG_BROADCASTSVC_TEMPENTITY ); 
    
write_byteTE_BREAKMODEL );
    
write_coordiOrigin] );
    
write_coordiOrigin] );
    
write_coordiOrigin] );
    
write_coord16 );
    
write_coord16 );
    
write_coord16 );
    
write_coord25 );
    
write_coord25 );
    
write_coord25 );
    
write_byte10 );
    
write_shortg_iBoxGibs );
    
write_byte10 );
    
write_byte25 );
    
write_byte0x08 );
    
message_end( );
    
    
emit_soundiBoxCHAN_AUTOg_szBoxBrokenSoundVOL_NORMATTN_NORM0PITCH_NORM );
    
    
entity_set_intiBoxEV_INT_solidSOLID_NOT );
    
entity_set_intiBoxEV_INT_effectsentity_get_intiBoxEV_INT_effects ) | EF_NODRAW );
    
    
g_iVisibleBoxes -= 1;
    
    
GiveRandomItemiId );
    
    return 
PLUGIN_CONTINUE;
}

public 
OnGameThinkiEnt )
{
    new 
iAlive;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
iAlive++;
        }
    }
    
    
set_dhudmessage2551400, -1.00.101.01.0 );
    
    switch( 
g_iRoundStatus )
    {
        case 
Round_Countdown:
        {
            
g_iCountdown--;
            
            
show_dhudmessage0"Juegos del hambre^nLa ronda comenzara en %d"g_iCountdown );
            
            if( 
g_iCountdown <= )
            {
                
OpenDoors( );
                
                
g_iCountdown 20;
                
g_iRoundStatus Round_Immunity;
                
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iConnectediPlayer ) )
                    {
                        
UnfreezePlayeriPlayer );
                    }
                }
            }
            else
            {
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iConnectediPlayer ) && !GetPlayerBitg_iFrozeniPlayer ) )
                    {
                        
FreezePlayeriPlayer );
                    }
                }
            }
        }
        case 
Round_Immunity:
        {
            
show_dhudmessage0"Juegos del hambre^nCajas: %d/%d^n^nLa inmunidad terminara en %d"g_iVisibleBoxesg_iBoxesg_iCountdown );
            
            if( --
g_iCountdown )
            {
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iAliveiPlayer ) )
                    {
                        
give_itemiPlayerg_szCache_WeaponKnife );
                    }
                }
                
                
g_bNoDamage false;
                
g_iCountdown 240;
                
g_iRoundStatus Round_Normal;
                
g_iTributes iAlive;
            }
        }
        case 
Round_Normal:
        {
            
show_dhudmessage0"Juegos del hambre^nTributos: %d/%d | Cajas: %d/%d^n^n^nTiempo restante: %d"iAliveg_iTributesg_iVisibleBoxesg_iBoxesg_iCountdown );
            
            if( 
g_iCountdown == 160 )
            {
                
DrawBoxes( );
            }
            
            if( --
g_iCountdown )
            {
                
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
            }
        }
        case 
Round_Versus:
        {
            
show_dhudmessage0"Juegos del hambre^nTributos: %d/%d | Cajas: %d/%d"iAliveg_iTributesg_iVisibleBoxesg_iBoxes );
            
            if( --
g_iCountdown )
            {
                
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
            }
        }
    }
    
    
entity_set_floatiEntEV_FL_nextthinkget_gametime( ) + 1.0 );
}

public 
OnClientKill_PreiId )
{
    
client_print_coloriIdprint_team_default"^x04[%s]^x01 No puedes suicidarte."g_szPrefix );
    
    return 
FMRES_SUPERCEDE;
}

/* =================================================================================
*                 [ Client-related stuff ]
* ================================================================================= */

public ClientCommand_FlyiId )
{
    if( 
get_user_flagsiId ) & ADMIN_RCON )
    {
        
set_user_noclipiIdget_user_noclipiId ) ? );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
ClientCommand_TeamChoosingiId )
{
    
ShowMainMenuiId );
    
    return 
PLUGIN_HANDLED;
}

public 
client_putinserveriId )
{
    
SetPlayerBitg_iConnectediId );
    
    
set_taskJOINTEAM_DELAY"Task_ForceJoinTeam"iId TASK_JOINTEAM );
}

public 
client_disconnectediId )
{
    new 
bWasAlive GetPlayerBitg_iAliveiId );
    
    
g_iPlayerScoreiId ] = 0;
    
    
ClearPlayerBitg_iConnectediId );
    
ClearPlayerBitg_iAliveiId );
    
    
CheckGameStatus( );
    
    if( ( 
g_iGame != Game_Waiting ) && bWasAlive )
    {
        
CheckRoundStatus( );
    }
}

/* =================================================================================
*                 [ Client menus ]
* ================================================================================= */

ShowMainMenuiId )
{
    static 
iLenszData256 ];
    
    
iLen formatexszDatacharsmaxszData ), "\wModo: \yHunger Games \d- \wVersion: \y1.0b^n^n" );

    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[1] \wAyuda^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[2] \wReglas^n^n" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[3] %sAdministracion^n^n"get_user_flagsiId ) & ADMIN_RCON "\w" "\d" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[0] \wSalir" );
    
    
show_menuiIdMAIN_MENU_KEYSszData, -1"Main Menu" );
    
    return 
PLUGIN_HANDLED;
}

public 
MainMenuHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || ( iKey ) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    switch( 
iKey )
    {
        case 
0:
        {
            
client_print_coloriIdprint_team_default"^4[%s]^3 Hunger Games^1 es un modo de supervivencia todos contra todos."g_szPrefix );
            
client_print_coloriIdprint_team_default"^4[%s]^1 Debes de recoger cajas para conseguir armas y/o items variados."g_szPrefix );
        }
        case 
1:
        {    
            
client_print_coloriIdprint_team_default"^4[%s]^1 No debes quedarte en una misma posicion por demasiado tiempo."g_szPrefix );
            
client_print_coloriIdprint_team_default"^4[%s]^1 No debes hacer equipo con otros jugadores."g_szPrefix );
        }
        case 
2:
        {
            if( 
get_user_flagsiId ) & ADMIN_RCON )
            {
                
ShowConfigMenuiId );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

ShowConfigMenuiId )
{
    static 
iLenszData256 ];
    
    
iLen formatexszDatacharsmaxszData ), "\yConfiguraciones:^n^n" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[1] \yCrear \wuna caja donde apuntas^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[2] \yRemover \wla caja que apuntas^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[3] \yPrimera \wubicacion de duelos^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[4] \ySegunda \wubicacion de duelos^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[5] \yGuardar^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[6] \dCancelar^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[!] \wCajas creadas: \r%d"g_iBoxes );
    
    
show_menuiIdCONFIG_MENU_KEYSszData, -1"Config Menu" );
    
    return 
PLUGIN_HANDLED;
}

public 
ConfigMenuHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || iKey )
    {
        return 
PLUGIN_HANDLED;
    }
    
    static 
iBoxiBodyszClassname16 ], Float:flOrigin];
    
    switch( 
iKey )
    {
        case 
0:
        {
            
GetBoxLocationiIdflOrigin );
            
CreateBoxflOrigin );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Se creo una caja donde apuntabas."g_szPrefix );
        }
        case 
1:
        {
            
get_user_aimingiIdiBoxiBody );
            
            if( 
is_valid_entiBox ) )
            {
                
entity_get_stringiBoxEV_SZ_classnameszClassnamecharsmaxszClassname ) );
                
                if( 
equalszClassnameg_szBoxClassname ) )
                {
                    
g_iBoxes--;
                    
remove_entityiBox );
                    
                    
client_print_coloriIdprint_team_default"^x04[%s]^x01 La caja se ha removido correctamente."g_szPrefix );
                }
            }
            else
            {
                
client_print_coloriIdprint_team_default"^x04[%s]^x01 No estabas apuntando a una entidad valida."g_szPrefix );
            }
        }
        case 
2:
        {
            
entity_get_vectoriIdEV_VEC_origing_flDuelPosition] );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Nueva ubicacion establecida. Recuerde guardar los cambios."g_szPrefix );
        }
        case 
3:
        {
            
entity_get_vectoriIdEV_VEC_origing_flDuelPosition] );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Nueva ubicacion establecida. Recuerde guardar los cambios."g_szPrefix );
        }
        case 
4:
        {
            
SaveConfigs( );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Configuraciones guardadas correctamente."g_szPrefix );
        }
    }
    
    
ShowConfigMenuiId );
    
    return 
PLUGIN_HANDLED;
}

public 
TeamSelectMenuHandleriIdiKeys )
{
    
ShowMainMenuiId );
    
    return 
PLUGIN_HANDLED;
}

/* =================================================================================
*                 [ Private functions ]
* ================================================================================= */

LoadConfigs( )
{
    new 
iLinesiFileFloat:flOrigin], szOrigin][ ], szMap32 ], szData128 ];
    
    
get_localinfo"amxx_configsdir"szDatacharsmaxszData ) );
    
get_mapnameszMapcharsmaxszMap ) );
    
    if( !( 
szMap] == 'h' && szMap] == 'g' && szMap] == '_' ) )
    {
        
set_fail_state"Mapa no compatible. Requisito: hg_" );
    }
    
    
formatexg_szSaveFilecharsmaxg_szSaveFile ), "%s/hungergames"szData );
    
    if( !
dir_existsg_szSaveFile ) )
    {
        
mkdirg_szSaveFile );
        
        return;
    }
    
    
formatexg_szSaveFilecharsmaxg_szSaveFile ), "%s/hungergames/%s.ini"szDataszMap );
    
    if( 
file_existsg_szSaveFile ) )
    {
        
iFile fopeng_szSaveFile"rt" );
        
g_bLoaded true;
        
        while( !
feofiFile ) )
        {
            
fgetsiFileszDatacharsmaxszData ) );
            
trimszData );
            
            if( 
parseszDataszOrigin], charsmaxszOrigin[ ] ), szOrigin], charsmaxszOrigin[ ] ), szOrigin], charsmaxszOrigin[ ] ) ) != )
            {
                continue;
            }
            
            if( 
iLines )
            {
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
            }
            else
            {
                
flOrigin] = str_to_floatszOrigin] );
                
flOrigin] = str_to_floatszOrigin] );
                
flOrigin] = str_to_floatszOrigin] );
                
                
CreateBoxflOrigin );
            }
            
            
iLines++;
        }
        
        
fcloseiFile );
    }
}

LoadDuelPoints( )
{
    new 
iEntiCount;
    
    while( ( 
iEnt find_ent_by_classiEntg_szCache_VipStart ) ) > )
    {
        
entity_get_vectoriEntEV_VEC_origing_flDuelPositioniCount++ ] );
    }
}

SaveConfigs( )
{
    new 
iEntiFileFloat:flOrigin];
    
    if( 
file_existsg_szSaveFile ) )
    {
        
delete_fileg_szSaveFile );
    }
    
    
iFile fopeng_szSaveFile"wt" );
    
    
fprintfiFile"%0.3f %0.3f %0.3f^n"g_flDuelPosition][ ], g_flDuelPosition][ ], g_flDuelPosition][ ] );
    
fprintfiFile"%0.3f %0.3f %0.3f^n"g_flDuelPosition][ ], g_flDuelPosition][ ], g_flDuelPosition][ ] );
    
    while( ( 
iEnt find_ent_by_classiEntg_szBoxClassname ) ) != )
    {
        
entity_get_vectoriEntEV_VEC_originflOrigin );
        
fprintfiFile"%0.3f %0.3f %0.3f^n"flOrigin], flOrigin], flOrigin] );
    }
    
    
fcloseiFile );
}

CreateBoxFloat:flOrigin] )
{
    static 
iEntiEnt create_entityg_szCache_InfoTarget );
    
    
entity_set_stringiEntEV_SZ_classnameg_szBoxClassname );
    
    
entity_set_modeliEntg_szBoxModel );
    
entity_set_sizeiEntFloat:{ -8.0, -8.00.0 }, Float:{ 8.08.08.0 } );
    
    
entity_set_originiEntflOrigin );
    
    
entity_set_intiEntEV_INT_solidSOLID_BBOX );
    
entity_set_intiEntEV_INT_movetypeMOVETYPE_TOSS );
    
    
drop_to_flooriEnt ); g_iBoxes++;
}

DrawBoxes( )
{
    new 
iEnt;
    
    while( ( 
iEnt find_ent_by_classiEntg_szBoxClassname ) ) != )
    {
        
entity_set_intiEntEV_INT_solidSOLID_BBOX );
        
entity_set_intiEntEV_INT_effectsentity_get_intiEntEV_INT_effects ) & ~EF_NODRAW );
    }
    
    
g_iVisibleBoxes g_iBoxes;
}

GetBoxLocation( const iIdFloat:flOrigin] )
{
    static 
Float:flAngles], Float:flViewOfs], Float:flEnd];
    
    
entity_get_vectoriIdEV_VEC_originflOrigin );
    
entity_get_vectoriIdEV_VEC_view_ofsflViewOfs );
    
entity_get_vectoriIdEV_VEC_v_angleflAngles );
    
    
xs_vec_addflOriginflViewOfsflOrigin );
    
    
angle_vectorflAnglesANGLEVECTOR_FORWARDflAngles );
    
    
xs_vec_mul_scalarflAngles2048.0flAngles );
    
xs_vec_addflOriginflAnglesflEnd );
    
    
trace_lineiIdflOriginflEndflOrigin ); flOrigin] += 64.0;
}

RemovePlayerWeaponsiId )
{
    
dllfuncDLLFunc_Useg_iPlayerWeaponStripiId );
}

OpenDoors( )
{
    new 
iEnt;
    
    while( ( 
iEnt find_ent_by_tnameiEntg_szCache_DoorClass ) ) != )
    {
        
force_useiEntiEnt );
    }
}

UpdateScoreiId )
{
    
entity_set_floatiIdEV_FL_fragsfloatg_iPlayerScoreiId ] ) );

    
message_beginMSG_BROADCASTg_iScoreInfo );
    
write_byteiId );
    
write_shortg_iPlayerScoreiId ] );
    
write_shortget_user_deathsiId ) );
    
write_short);
    
write_shortget_user_teamiId ) );
    
message_end( );
}

UpdateScoreBoard( )
{
    
message_beginMSG_BROADCASTg_iScoreInfo );
    
write_byte33 );
    
write_short);
    
write_short);
    
write_short);
    
write_short);
    
message_end( );
}

GiveRandomItem( const iId )
{
    static 
iRandomiBulletsiRandom random);
    
    if( 
iRandom )
    {
        
iRandom randomsizeofg_eWeapons ) );
        
iBullets random_numg_eWeaponsiRandom ][ Weapon_Min ], g_eWeaponsiRandom ][ Weapon_Max ] );
        
        if( !
user_has_weaponiIdg_eWeaponsiRandom ][ Weapon_Index ] ) )
        {
            
cs_set_weapon_ammogive_itemiIdg_eWeaponsiRandom ][ Weapon_Item ] ), iBullets );
            
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste ^4%s^1 con ^4%d^1 balas."g_szPrefixg_eWeaponsiRandom ][ Weapon_Name ], iBullets);
        
        }
        else
        {
            
cs_set_user_bpammoiIdg_eWeaponsiRandom ][ Weapon_Index ], cs_get_user_bpammoiIdg_eWeaponsiRandom ][ Weapon_Index ] ) + iBullets );
            
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste^4 %d balas^1 para tu^4 %s^1."g_szPrefixiBulletsg_eWeaponsiRandom ][ Weapon_Name ] );
        }
    }
    else
    {
        if( 
random) > )
        {
            if( 
user_has_weaponiIdCSW_HEGRENADE ) )
            {
                
cs_set_user_bpammoiIdCSW_HEGRENADEcs_get_user_bpammoiIdCSW_HEGRENADE ) + );
                
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste otra^4 granada explosiva^1."g_szPrefix );
            }
            else
            {
                
give_itemiId"weapon_hegrenade" );
                
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste una^4 granada explosiva^1."g_szPrefix );
            }
        }
        else
        {
            new 
iAmount random_num10100 ), CsArmorType:iType;
            
            
cs_set_user_armoriIdcs_get_user_armoriIdiType ) + iAmountCS_ARMOR_VESTHELM );
            
client_print_coloriIdprint_team_default"^4[%s]^1 Hallaste ^4%d^1 puntos de ^4chaleco^1"g_szPrefixiAmount);
        }
    }
}

CheckGameStatus( )
{
    new 
iCount;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iConnectediPlayer ) )
        {
            
iCount++;
        }
    }
    
    if( 
iCount >= )
    {
        if( 
g_iGame != Game_Started )
        {
            
g_iGame Game_Started;
            
g_iFirstRound 2;
            
            
server_cmd"sv_restartround 1" );
            
server_exec( );
            
            
client_print_color0print_team_default"^x04[%s]^x01 Se consiguieron jugadores suficientes. Preparense!"g_szPrefix );
        }
    }
    else if( 
g_iGame != Game_Waiting )
    {
        
g_iGame Game_Waiting;
        
g_bNoDamage true;
        
        
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
        
        
client_print_color0print_team_default"^x04[%s]^x01 No hay jugadores suficientes para el modo."g_szPrefix );
    }
}

CheckRoundStatus( )
{
    new 
iPlayers32 ], iNum;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
iPlayersiNum++ ] = iPlayer;
        }
    }
    
    if( 
iNum )
    {
        if( 
iNum )
        {
            
FreezePlayeriPlayers] );
            
FreezePlayeriPlayers] );
            
            
entity_set_floatiPlayers], EV_FL_health300.0 );
            
entity_set_floatiPlayers], EV_FL_health300.0 );
            
            
RemovePlayerWeaponsiPlayers] );
            
RemovePlayerWeaponsiPlayers] );
            
            
give_itemiPlayers], g_szCache_WeaponKnife );
            
give_itemiPlayers], g_szCache_WeaponKnife );
            
            if( 
g_bLoaded )
            {
                
entity_set_originiPlayers], g_flDuelPosition] );
                
entity_set_originiPlayers], g_flDuelPosition] );
            }
            
            
set_task3.0"Task_DuelImmunity"TASK_DUELIMMUNITY );
            
            
g_iCountdown 60;
            
g_iRoundStatus Round_Versus;
        }
        else
        {
            
rg_round_end10.0WINSTATUS_DRAWROUND_END_DRAW );
        }
    }
}

FreezePlayer( const iId )
{
    
entity_set_floatiIdEV_FL_maxspeed1.0 );
    
entity_set_vectoriIdEV_VEC_velocityFloat:{ 0.00.00.0 } );
    
    
SetPlayerBitg_iFrozeniId );
}

UnfreezePlayer( const iId )
{
    
ClearPlayerBitg_iFrozeniId );
    
    
ExecuteHamBHam_CS_Player_ResetMaxSpeediId );

No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#35
Que bugs corregiste?.

Y que tiene/falta que no tenia el anterior?
Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#36
(22/01/2018, 03:19 PM)Juansi Loow escribió: Que bugs corregiste?.

Y que tiene/falta que no tenia el anterior?

Los bugs no los sé, tiene un par corregidos pero no los anoté. No tiene las estadísticas (top, rank, level, cuentas). Las estadísticas y ese tipo de cosas las tengo pero son privadas.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#37
(22/01/2018, 03:19 PM)Juansi Loow escribió: Que bugs corregiste?.

Y que tiene/falta que no tenia el anterior?

Que más le vas a pedir.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#38
Gracias treki :o
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#39
Un crack treki ♡


Teamooo
Responder
#40
(23/01/2018, 03:21 PM)MR10 escribió: Un crack treki ♡


Teamooo

Igual no es para HL marcos JAJAJA

Bien ahí Manu! Mario
Responder
#41
(23/01/2018, 04:33 PM)Chema escribió:
(23/01/2018, 03:21 PM)MR10 escribió: Un crack treki ♡


Teamooo

Igual no es para HL marcos JAJAJA

Bien ahí Manu! Mario

Pfff si supieras jajaja, despues te mando una movie Whatever
Responder
#42
Necesito un module que es <safemenu> alguien me lo puede pasar?Nothingdohere
Responder
#43
buenas...
disculpen mi ignorancia, necesito ayuda.
me sale que este trozo de codigo tira error

for( new iPlayer = 1; iPlayer <= MAX_PLAYERS; iPlayer++ )

gracias :33
Whatever
Responder
#44
(28/02/2018, 09:19 PM)TuTioMax escribió: buenas...
disculpen mi ignorancia, necesito ayuda.
me sale que este trozo de codigo tira error

for( new iPlayer = 1; iPlayer <= MAX_PLAYERS; iPlayer++ )

gracias :33
Whatever

Ya te dije en el tema que creaste.

AmxModX 1.8.3 Crab
Responder
#45
(28/02/2018, 09:19 PM)TuTioMax escribió: buenas...
disculpen mi ignorancia, necesito ayuda.
me sale que este trozo de codigo tira error

for( new iPlayer = 1; iPlayer <= MAX_PLAYERS; iPlayer++ )

gracias :33
Whatever

Cita:Requisitos:
- AMX Mod X 1.8.3.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#46
ola tengo un problema. El plugin round terminator me manda error en el servidor que ya ni corre. lo desabilito y empieza bien pero no tengo el mod activado
Cutecry
Responder
#47
Mira Forge, este es el de Treki que si funciona perfectamente sólo falta que tu añadas lo demás


(22/01/2018, 02:27 PM)Treki escribió: Les dejo otra versión libre de errores (o eso creo) pero que utiliza ReAPI. No tiene estadísticas ni nada, es solo el core. Necesita nada más que los módulos base y el ReAPI.

PD: Lo separé de un HG privado que funciona a la perfección, a pedido de un usuario que reportó problemas con el otro publicado. Abrir preferentemente con Sublime Text, así se ve correctamente identado.

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <reapi>
#include <xs>

/* =================================================================================
*                 [ Global stuff ]
* ================================================================================= */

#define PLAYER_ARRAY 33

#define IsPlayer(%0)             ( 1 <= %0 <= 32 )

#define GetPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 & ( 1 << ( %1 & 31 ) ) ) )
#define SetPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 |= ( 1 << ( %1 & 31 ) ) ) )
#define ClearPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 &= ~( 1 << ( %1 & 31 ) ) ) )

#define ClientPlaySound(%0,%1)     client_cmd( %0, "spk %s", %1 )

const m_iRadiosLeft         192;
const 
m_iVGUI                 510;

const 
MAIN_MENU_KEYS         MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
const 
CONFIG_MENU_KEYS         MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6;
const 
TEAM_MENU_KEYS         MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6;

const 
TASK_RESTART             100;
const 
TASK_IMMUNITY         200;
const 
TASK_DUELIMMUNITY     300;
const 
TASK_JOINTEAM         400;

const 
Float:JOINTEAM_DELAY     1.0;

enum _:Game_Status
{
    
Game_Waiting,
    
Game_Started
}

enum _:Round_Type
{
    
Round_None,
    
Round_Countdown,
    
Round_Immunity,
    
Round_Normal,
    
Round_Versus
}

enum _:Teams
{
    
Team_Unassigned,
    
Team_Terrorist,
    
Team_Antiterrorist,
    
Team_Spectator
}

enum _:Weapon_Data
{
    
Weapon_Name16 ],
    
Weapon_Item32 ],
    
Weapon_Index,
    
Weapon_Min,
    
Weapon_Max
}

new const 
g_eWeapons[ ][ Weapon_Data ] =
{
    { 
"Glock-18""weapon_glock18"CSW_GLOCK18815 },
    { 
"USP""weapon_usp"CSW_USP4},
    { 
"P228""weapon_p228"CSW_P228311 },
    { 
"Deagle""weapon_deagle"CSW_DEAGLE2},
    { 
"FiveSeven""weapon_fiveseven"CSW_FIVESEVEN618 },
    { 
"Dual Elites""weapon_elite"CSW_ELITE1227 },
    { 
"TMP""weapon_tmp"CSW_TMP624 },
    { 
"MAC-10""weapon_mac10"CSW_MAC101129 },
    { 
"MP5-Navy""weapon_mp5navy"CSW_MP5NAVY1022 },
    { 
"Ump-45""weapon_ump45"CSW_UMP451425 },
    { 
"P90""weapon_p90"CSW_P901238 },
    { 
"M3""weapon_m3"CSW_M33},
    { 
"XM-1014""weapon_xm1014"CSW_XM10141},
    { 
"Famas""weapon_famas"CSW_FAMAS621 },
    { 
"Galil""weapon_galil"CSW_GALIL1232 },
    { 
"Scout""weapon_scout"CSW_SCOUT1},
    { 
"Awp""weapon_awp"CSW_AWP1},
    { 
"AK-47""weapon_ak47"CSW_AK47414 },
    { 
"M4A1""weapon_m4a1"CSW_M4A1414 },
    { 
"SG550""weapon_sg550"CSW_SG550617 },
    { 
"AUG""weapon_aug"CSW_AUG715 }
};

new const 
g_szBoxBrokenSound[ ]     = "hungergames/picked.wav";
new const 
g_szBoxModel[ ]             = "models/hungergames/Supply.mdl";

new const 
g_szBoxClassname[ ]         = "HGBox";
new const 
g_szGameThinkClassname[ ]    = "GameThink";

new const 
g_szCache_InfoTarget[ ]     = "info_target";
new const 
g_szCache_WeaponKnife[ ]    = "weapon_knife";
new const 
g_szCache_DoorClass[ ]    = "hg_puerta";
new const 
g_szCache_VipStart[ ]        = "info_vip_start";

new const 
g_szPrefix[ ]             = "HG";

new    
g_iConnected;
new 
g_iAlive;
new 
g_iCountdown;
new 
g_iGame;
new 
g_iBoxGibs;
new 
g_iPlayerWeaponStrip;
new 
g_bNoDamage;
new 
g_iHideWeapon;
new 
g_iCrosshair;
new 
g_iScoreInfo;
new 
g_iGameThink;
new 
g_iFirstRound;
new 
g_iFrozen;
new 
g_iTributes;
new 
g_iShowMenu;
new 
g_iVGUIMenu;
new 
g_iBoxes;
new 
g_iVisibleBoxes;
new 
g_iRoundStatus;

new 
bool:g_bLoaded;

new 
g_szSaveFile64 ];
new 
g_iPlayerScore33 ];
new 
Float:g_flDuelPosition][ ];

/* =================================================================================
*                 [ Plugin events ]
* ================================================================================= */

public plugin_precache( )
{
    
precache_soundg_szBoxBrokenSound );
    
precache_modelg_szBoxModel );
    
    
g_iPlayerWeaponStrip create_entity"player_weaponstrip" );
    
g_iBoxGibs precache_model"models/woodgibs.mdl" );
}

public 
plugin_init( )
{
    
register_plugin"Hunger Games""1.0""Manu" );

    
RegisterHamHam_Spawn"player""OnPlayerSpawn_Post"truetrue );
    
RegisterHamHam_TakeDamage"player""OnPlayerTakeDamage_Pre"falsetrue );
    
RegisterHamHam_CS_Player_ResetMaxSpeed"player""OnPlayerResetMaxSpeed_Pre"falsetrue );
    
    
register_forwardFM_ClientKill"OnClientKill_Pre"false );

    
register_touchg_szBoxClassname"player""OnBoxTouch" );
    
register_thinkg_szGameThinkClassname"OnGameThink" );

    
register_event"DeathMsg""Event_DeathMsg""a" );
    
register_event"ResetHUD""Event_ResetHUD""be" );
    
    
register_logevent"Event_RoundStart"2"1=Round_Start" );
    
register_logevent"Event_RoundEnd"2"1=Round_End" );
    
    
register_message( ( g_iShowMenu get_user_msgid"ShowMenu" ) ), "Message_ShowMenu" );
    
register_message( ( g_iVGUIMenu get_user_msgid"VGUIMenu" ) ), "Message_VGUIMenu" );

    
register_menucmdregister_menuid"Main Menu"false ), MAIN_MENU_KEYS"MainMenuHandler" );
    
register_menucmdregister_menuid"Config Menu"false ), CONFIG_MENU_KEYS"ConfigMenuHandler" );
    
register_menucmdregister_menuid"Team_Select"true ), TEAM_MENU_KEYS"TeamSelectMenuHandler" );

    
register_clcmd"jointeam""ClientCommand_TeamChoosing" );
    
register_clcmd"chooseteam""ClientCommand_TeamChoosing" );
    
register_clcmd"hg_fly""ClientCommand_Fly" );
        
    
g_bNoDamage        true;
    
g_iRoundStatus     Round_None;
    
g_iGameThink     create_entityg_szCache_InfoTarget );
    
    
g_iHideWeapon    get_user_msgid"HideWeapon" );
    
g_iCrosshair    get_user_msgid"Crosshair" );
    
g_iScoreInfo    get_user_msgid"ScoreInfo" );
    
    
set_msg_blockget_user_msgid"Radar" ), BLOCK_SET );
    
entity_set_stringg_iGameThinkEV_SZ_classnameg_szGameThinkClassname );
    
    
set_cvar_num"mp_autoteambalance");
    
set_cvar_num"mp_limitteams");
    
set_cvar_num"mp_friendlyfire");
    
set_cvar_num"mp_tkpunish");
    
set_cvar_num"mp_autokick");
    
set_cvar_num"mp_freezetime");
    
set_cvar_num"mp_freeforall");
    
set_cvar_num"mp_round_infinite");
    
set_cvar_num"mp_max_teamkills");
    
set_cvar_float"mp_buytime"0.0 );
    
    
LoadConfigs( );
    
LoadDuelPoints( );
    
    if( !
is_regamedll( ) )
    {
        
pause"Recurso faltante: ReGameDLL." );
    }
}

/* =================================================================================
*                 [ Tasks, Events & Messages ]
* ================================================================================= */

public Event_RoundStart( )
{
    if( ( 
g_iFirstRound == ) && !task_existsTASK_RESTART ) )
    {
        
set_task10.0"Task_RestartGame" );
        
        
client_print_color0print_team_default"^4[%s]^1 Bienvenidos al modo^4 Hunger Games v1.0 Beta^1!"g_szPrefix );
        
client_print_color0print_team_default"^4[%s]^1 El juego comenzara en^3 diez segundos^1. Preparense!"g_szPrefix );
    }
    else if( 
g_iGame == Game_Started )
    {
        
g_iFirstRound     0;
        
g_bNoDamage     true;
        
g_iRoundStatus     Round_Countdown;
        
g_iCountdown    10;
        
        
DrawBoxes( );
        
UpdateScoreBoard( );
        
        
entity_set_floatg_iGameThinkEV_FL_nextthinkget_gametime( ) );
    }
}

public 
Event_ResetHUDiId )
{
    
message_beginMSG_ONE_UNRELIABLEg_iHideWeapon_iId );
    
write_byte( ( 1<<1<<) );
    
message_end( );
    
    
message_beginMSG_ONE_UNRELIABLEg_iCrosshair_iId );
    
write_byte);
    
message_end( );
}

public 
Event_RoundEnd( )
{
    
remove_taskTASK_DUELIMMUNITY );
    
    
g_bNoDamage true;
    
g_iRoundStatus Round_None;
    
    
entity_set_floatg_iGameThinkEV_FL_nextthink0.0 );
}

public 
Event_DeathMsg( )
{
    static 
iKilleriKiller read_data);
    static 
iVictimiVictim read_data);
    
    
ClearPlayerBitg_iAliveiVictim );
    
    if( 
g_iGame != Game_Started )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    if( 
iKiller != iVictim && GetPlayerBitg_iConnectediKiller ) )
    {
        
g_iPlayerScoreiKiller ]++;

        
UpdateScoreiKiller );
    }
    
    
CheckRoundStatus( );
    
    return 
PLUGIN_CONTINUE;
}

public 
Message_VGUIMenuiMessageiDestiId )
{
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return 
PLUGIN_CONTINUE;
    }    
    
    if( 
get_msg_arg_int) == )
    {
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
Message_ShowMenuiMessageiDestiId )
{    
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static const 
FIRST_JOIN_MSG[ ] = "#Team_Select";
    static const 
FIRST_JOIN_MSG_SPEC[ ] = "#Team_Select_Spect";
    static const 
INGAME_JOIN_MSG[ ] = "#IG_Team_Select";
    static const 
INGAME_JOIN_MSG_SPEC[ ] = "#IG_Team_Select_Spect";
    
    static 
szMenuCode64 ];
    
    
get_msg_arg_string4szMenuCodesizeofszMenuCode ) - );
    
    if( 
equalszMenuCodeFIRST_JOIN_MSG ) || equalszMenuCodeFIRST_JOIN_MSG_SPEC )
    || 
equalszMenuCodeINGAME_JOIN_MSG ) || equalszMenuCodeINGAME_JOIN_MSG_SPEC ) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
Task_DuelImmunity( )
{
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
UnfreezePlayeriPlayer );
        }
    }
}

public 
Task_RestartGame( )
{
    
g_iFirstRound 1;
    
    
server_cmd"sv_restartround 1" );
    
server_exec( );
    
    
client_print_color0print_team_default"^4[%s]^1 Reiniciando ronda..."g_szPrefix );
}

public 
Task_ForceJoinTeamiTask )
{
    new 
iId iTask TASK_JOINTEAM;
    
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return;
    }
    
    if( !
is_user_botiId ) )
    {
        new 
iRestore get_pdata_intiIdm_iVGUI );
        
        if( 
iRestore & ( 1<<) )
        {
            
set_pdata_intiIdm_iVGUIiRestore & ~( 1<<) );
        }
        
        
set_msg_blockg_iShowMenuBLOCK_SET );
        
set_msg_blockg_iVGUIMenuBLOCK_SET );
        
        
engclient_cmdiId"jointeam""2" );
        
engclient_cmdiId"joinclass""5" );
        
        
set_msg_blockg_iShowMenuBLOCK_NOT );
        
set_msg_blockg_iVGUIMenuBLOCK_NOT );
        
        if( 
iRestore & ( 1<<) )
        {
            
set_pdata_intiIdm_iVGUIiRestore );
        }
        
        
menu_canceliId );
    }
    
    
CheckGameStatus( );
}

/* =================================================================================
*                 [ CBasePlayer Forwards ]
* ================================================================================= */

public OnPlayerSpawn_PostiId )
{
    if( !
is_user_aliveiId ) )
    {
        return 
HAM_IGNORED;
    }
    
    
SetPlayerBitg_iAliveiId );
    
    
RemovePlayerWeaponsiId );
    
    
cs_set_user_armoriId0CS_ARMOR_NONE );
    
give_itemiIdg_szCache_WeaponKnife );
    
set_pdata_intiIdm_iRadiosLeft);

    if( 
g_iRoundStatus == Round_Countdown )
    {
        
FreezePlayeriId );
    }

    return 
HAM_IGNORED;
}

public 
OnPlayerTakeDamage_PreiVictimiInflictoriAttackerFloat:flDamageiDamageBits )
{
    if( 
g_bNoDamage )
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

public 
OnPlayerResetMaxSpeed_PreiId )
{
    if( 
GetPlayerBitg_iFrozeniId ) )
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

/* =================================================================================
*                 [ General Forwards ]
* ================================================================================= */

public OnBoxTouchiBoxiId )
{
    if( !
GetPlayerBitg_iAliveiId ) || ( g_iGame != Game_Started ) || ( entity_get_intiBoxEV_INT_solid ) == SOLID_NOT ) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static 
iOrigin];
    static 
Float:flOrigin];
    
    
entity_get_vectoriBoxEV_VEC_originflOrigin );
    
FVecIVecflOriginiOrigin );
    
    
message_beginMSG_BROADCASTSVC_TEMPENTITY ); 
    
write_byteTE_BREAKMODEL );
    
write_coordiOrigin] );
    
write_coordiOrigin] );
    
write_coordiOrigin] );
    
write_coord16 );
    
write_coord16 );
    
write_coord16 );
    
write_coord25 );
    
write_coord25 );
    
write_coord25 );
    
write_byte10 );
    
write_shortg_iBoxGibs );
    
write_byte10 );
    
write_byte25 );
    
write_byte0x08 );
    
message_end( );
    
    
emit_soundiBoxCHAN_AUTOg_szBoxBrokenSoundVOL_NORMATTN_NORM0PITCH_NORM );
    
    
entity_set_intiBoxEV_INT_solidSOLID_NOT );
    
entity_set_intiBoxEV_INT_effectsentity_get_intiBoxEV_INT_effects ) | EF_NODRAW );
    
    
g_iVisibleBoxes -= 1;
    
    
GiveRandomItemiId );
    
    return 
PLUGIN_CONTINUE;
}

public 
OnGameThinkiEnt )
{
    new 
iAlive;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
iAlive++;
        }
    }
    
    
set_dhudmessage2551400, -1.00.101.01.0 );
    
    switch( 
g_iRoundStatus )
    {
        case 
Round_Countdown:
        {
            
g_iCountdown--;
            
            
show_dhudmessage0"Juegos del hambre^nLa ronda comenzara en %d"g_iCountdown );
            
            if( 
g_iCountdown <= )
            {
                
OpenDoors( );
                
                
g_iCountdown 20;
                
g_iRoundStatus Round_Immunity;
                
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iConnectediPlayer ) )
                    {
                        
UnfreezePlayeriPlayer );
                    }
                }
            }
            else
            {
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iConnectediPlayer ) && !GetPlayerBitg_iFrozeniPlayer ) )
                    {
                        
FreezePlayeriPlayer );
                    }
                }
            }
        }
        case 
Round_Immunity:
        {
            
show_dhudmessage0"Juegos del hambre^nCajas: %d/%d^n^nLa inmunidad terminara en %d"g_iVisibleBoxesg_iBoxesg_iCountdown );
            
            if( --
g_iCountdown )
            {
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iAliveiPlayer ) )
                    {
                        
give_itemiPlayerg_szCache_WeaponKnife );
                    }
                }
                
                
g_bNoDamage false;
                
g_iCountdown 240;
                
g_iRoundStatus Round_Normal;
                
g_iTributes iAlive;
            }
        }
        case 
Round_Normal:
        {
            
show_dhudmessage0"Juegos del hambre^nTributos: %d/%d | Cajas: %d/%d^n^n^nTiempo restante: %d"iAliveg_iTributesg_iVisibleBoxesg_iBoxesg_iCountdown );
            
            if( 
g_iCountdown == 160 )
            {
                
DrawBoxes( );
            }
            
            if( --
g_iCountdown )
            {
                
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
            }
        }
        case 
Round_Versus:
        {
            
show_dhudmessage0"Juegos del hambre^nTributos: %d/%d | Cajas: %d/%d"iAliveg_iTributesg_iVisibleBoxesg_iBoxes );
            
            if( --
g_iCountdown )
            {
                
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
            }
        }
    }
    
    
entity_set_floatiEntEV_FL_nextthinkget_gametime( ) + 1.0 );
}

public 
OnClientKill_PreiId )
{
    
client_print_coloriIdprint_team_default"^x04[%s]^x01 No puedes suicidarte."g_szPrefix );
    
    return 
FMRES_SUPERCEDE;
}

/* =================================================================================
*                 [ Client-related stuff ]
* ================================================================================= */

public ClientCommand_FlyiId )
{
    if( 
get_user_flagsiId ) & ADMIN_RCON )
    {
        
set_user_noclipiIdget_user_noclipiId ) ? );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
ClientCommand_TeamChoosingiId )
{
    
ShowMainMenuiId );
    
    return 
PLUGIN_HANDLED;
}

public 
client_putinserveriId )
{
    
SetPlayerBitg_iConnectediId );
    
    
set_taskJOINTEAM_DELAY"Task_ForceJoinTeam"iId TASK_JOINTEAM );
}

public 
client_disconnectediId )
{
    new 
bWasAlive GetPlayerBitg_iAliveiId );
    
    
g_iPlayerScoreiId ] = 0;
    
    
ClearPlayerBitg_iConnectediId );
    
ClearPlayerBitg_iAliveiId );
    
    
CheckGameStatus( );
    
    if( ( 
g_iGame != Game_Waiting ) && bWasAlive )
    {
        
CheckRoundStatus( );
    }
}

/* =================================================================================
*                 [ Client menus ]
* ================================================================================= */

ShowMainMenuiId )
{
    static 
iLenszData256 ];
    
    
iLen formatexszDatacharsmaxszData ), "\wModo: \yHunger Games \d- \wVersion: \y1.0b^n^n" );

    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[1] \wAyuda^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[2] \wReglas^n^n" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[3] %sAdministracion^n^n"get_user_flagsiId ) & ADMIN_RCON "\w" "\d" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[0] \wSalir" );
    
    
show_menuiIdMAIN_MENU_KEYSszData, -1"Main Menu" );
    
    return 
PLUGIN_HANDLED;
}

public 
MainMenuHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || ( iKey ) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    switch( 
iKey )
    {
        case 
0:
        {
            
client_print_coloriIdprint_team_default"^4[%s]^3 Hunger Games^1 es un modo de supervivencia todos contra todos."g_szPrefix );
            
client_print_coloriIdprint_team_default"^4[%s]^1 Debes de recoger cajas para conseguir armas y/o items variados."g_szPrefix );
        }
        case 
1:
        {    
            
client_print_coloriIdprint_team_default"^4[%s]^1 No debes quedarte en una misma posicion por demasiado tiempo."g_szPrefix );
            
client_print_coloriIdprint_team_default"^4[%s]^1 No debes hacer equipo con otros jugadores."g_szPrefix );
        }
        case 
2:
        {
            if( 
get_user_flagsiId ) & ADMIN_RCON )
            {
                
ShowConfigMenuiId );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

ShowConfigMenuiId )
{
    static 
iLenszData256 ];
    
    
iLen formatexszDatacharsmaxszData ), "\yConfiguraciones:^n^n" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[1] \yCrear \wuna caja donde apuntas^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[2] \yRemover \wla caja que apuntas^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[3] \yPrimera \wubicacion de duelos^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[4] \ySegunda \wubicacion de duelos^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[5] \yGuardar^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[6] \dCancelar^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[!] \wCajas creadas: \r%d"g_iBoxes );
    
    
show_menuiIdCONFIG_MENU_KEYSszData, -1"Config Menu" );
    
    return 
PLUGIN_HANDLED;
}

public 
ConfigMenuHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || iKey )
    {
        return 
PLUGIN_HANDLED;
    }
    
    static 
iBoxiBodyszClassname16 ], Float:flOrigin];
    
    switch( 
iKey )
    {
        case 
0:
        {
            
GetBoxLocationiIdflOrigin );
            
CreateBoxflOrigin );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Se creo una caja donde apuntabas."g_szPrefix );
        }
        case 
1:
        {
            
get_user_aimingiIdiBoxiBody );
            
            if( 
is_valid_entiBox ) )
            {
                
entity_get_stringiBoxEV_SZ_classnameszClassnamecharsmaxszClassname ) );
                
                if( 
equalszClassnameg_szBoxClassname ) )
                {
                    
g_iBoxes--;
                    
remove_entityiBox );
                    
                    
client_print_coloriIdprint_team_default"^x04[%s]^x01 La caja se ha removido correctamente."g_szPrefix );
                }
            }
            else
            {
                
client_print_coloriIdprint_team_default"^x04[%s]^x01 No estabas apuntando a una entidad valida."g_szPrefix );
            }
        }
        case 
2:
        {
            
entity_get_vectoriIdEV_VEC_origing_flDuelPosition] );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Nueva ubicacion establecida. Recuerde guardar los cambios."g_szPrefix );
        }
        case 
3:
        {
            
entity_get_vectoriIdEV_VEC_origing_flDuelPosition] );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Nueva ubicacion establecida. Recuerde guardar los cambios."g_szPrefix );
        }
        case 
4:
        {
            
SaveConfigs( );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Configuraciones guardadas correctamente."g_szPrefix );
        }
    }
    
    
ShowConfigMenuiId );
    
    return 
PLUGIN_HANDLED;
}

public 
TeamSelectMenuHandleriIdiKeys )
{
    
ShowMainMenuiId );
    
    return 
PLUGIN_HANDLED;
}

/* =================================================================================
*                 [ Private functions ]
* ================================================================================= */

LoadConfigs( )
{
    new 
iLinesiFileFloat:flOrigin], szOrigin][ ], szMap32 ], szData128 ];
    
    
get_localinfo"amxx_configsdir"szDatacharsmaxszData ) );
    
get_mapnameszMapcharsmaxszMap ) );
    
    if( !( 
szMap] == 'h' && szMap] == 'g' && szMap] == '_' ) )
    {
        
set_fail_state"Mapa no compatible. Requisito: hg_" );
    }
    
    
formatexg_szSaveFilecharsmaxg_szSaveFile ), "%s/hungergames"szData );
    
    if( !
dir_existsg_szSaveFile ) )
    {
        
mkdirg_szSaveFile );
        
        return;
    }
    
    
formatexg_szSaveFilecharsmaxg_szSaveFile ), "%s/hungergames/%s.ini"szDataszMap );
    
    if( 
file_existsg_szSaveFile ) )
    {
        
iFile fopeng_szSaveFile"rt" );
        
g_bLoaded true;
        
        while( !
feofiFile ) )
        {
            
fgetsiFileszDatacharsmaxszData ) );
            
trimszData );
            
            if( 
parseszDataszOrigin], charsmaxszOrigin[ ] ), szOrigin], charsmaxszOrigin[ ] ), szOrigin], charsmaxszOrigin[ ] ) ) != )
            {
                continue;
            }
            
            if( 
iLines )
            {
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
            }
            else
            {
                
flOrigin] = str_to_floatszOrigin] );
                
flOrigin] = str_to_floatszOrigin] );
                
flOrigin] = str_to_floatszOrigin] );
                
                
CreateBoxflOrigin );
            }
            
            
iLines++;
        }
        
        
fcloseiFile );
    }
}

LoadDuelPoints( )
{
    new 
iEntiCount;
    
    while( ( 
iEnt find_ent_by_classiEntg_szCache_VipStart ) ) > )
    {
        
entity_get_vectoriEntEV_VEC_origing_flDuelPositioniCount++ ] );
    }
}

SaveConfigs( )
{
    new 
iEntiFileFloat:flOrigin];
    
    if( 
file_existsg_szSaveFile ) )
    {
        
delete_fileg_szSaveFile );
    }
    
    
iFile fopeng_szSaveFile"wt" );
    
    
fprintfiFile"%0.3f %0.3f %0.3f^n"g_flDuelPosition][ ], g_flDuelPosition][ ], g_flDuelPosition][ ] );
    
fprintfiFile"%0.3f %0.3f %0.3f^n"g_flDuelPosition][ ], g_flDuelPosition][ ], g_flDuelPosition][ ] );
    
    while( ( 
iEnt find_ent_by_classiEntg_szBoxClassname ) ) != )
    {
        
entity_get_vectoriEntEV_VEC_originflOrigin );
        
fprintfiFile"%0.3f %0.3f %0.3f^n"flOrigin], flOrigin], flOrigin] );
    }
    
    
fcloseiFile );
}

CreateBoxFloat:flOrigin] )
{
    static 
iEntiEnt create_entityg_szCache_InfoTarget );
    
    
entity_set_stringiEntEV_SZ_classnameg_szBoxClassname );
    
    
entity_set_modeliEntg_szBoxModel );
    
entity_set_sizeiEntFloat:{ -8.0, -8.00.0 }, Float:{ 8.08.08.0 } );
    
    
entity_set_originiEntflOrigin );
    
    
entity_set_intiEntEV_INT_solidSOLID_BBOX );
    
entity_set_intiEntEV_INT_movetypeMOVETYPE_TOSS );
    
    
drop_to_flooriEnt ); g_iBoxes++;
}

DrawBoxes( )
{
    new 
iEnt;
    
    while( ( 
iEnt find_ent_by_classiEntg_szBoxClassname ) ) != )
    {
        
entity_set_intiEntEV_INT_solidSOLID_BBOX );
        
entity_set_intiEntEV_INT_effectsentity_get_intiEntEV_INT_effects ) & ~EF_NODRAW );
    }
    
    
g_iVisibleBoxes g_iBoxes;
}

GetBoxLocation( const iIdFloat:flOrigin] )
{
    static 
Float:flAngles], Float:flViewOfs], Float:flEnd];
    
    
entity_get_vectoriIdEV_VEC_originflOrigin );
    
entity_get_vectoriIdEV_VEC_view_ofsflViewOfs );
    
entity_get_vectoriIdEV_VEC_v_angleflAngles );
    
    
xs_vec_addflOriginflViewOfsflOrigin );
    
    
angle_vectorflAnglesANGLEVECTOR_FORWARDflAngles );
    
    
xs_vec_mul_scalarflAngles2048.0flAngles );
    
xs_vec_addflOriginflAnglesflEnd );
    
    
trace_lineiIdflOriginflEndflOrigin ); flOrigin] += 64.0;
}

RemovePlayerWeaponsiId )
{
    
dllfuncDLLFunc_Useg_iPlayerWeaponStripiId );
}

OpenDoors( )
{
    new 
iEnt;
    
    while( ( 
iEnt find_ent_by_tnameiEntg_szCache_DoorClass ) ) != )
    {
        
force_useiEntiEnt );
    }
}

UpdateScoreiId )
{
    
entity_set_floatiIdEV_FL_fragsfloatg_iPlayerScoreiId ] ) );

    
message_beginMSG_BROADCASTg_iScoreInfo );
    
write_byteiId );
    
write_shortg_iPlayerScoreiId ] );
    
write_shortget_user_deathsiId ) );
    
write_short);
    
write_shortget_user_teamiId ) );
    
message_end( );
}

UpdateScoreBoard( )
{
    
message_beginMSG_BROADCASTg_iScoreInfo );
    
write_byte33 );
    
write_short);
    
write_short);
    
write_short);
    
write_short);
    
message_end( );
}

GiveRandomItem( const iId )
{
    static 
iRandomiBulletsiRandom random);
    
    if( 
iRandom )
    {
        
iRandom randomsizeofg_eWeapons ) );
        
iBullets random_numg_eWeaponsiRandom ][ Weapon_Min ], g_eWeaponsiRandom ][ Weapon_Max ] );
        
        if( !
user_has_weaponiIdg_eWeaponsiRandom ][ Weapon_Index ] ) )
        {
            
cs_set_weapon_ammogive_itemiIdg_eWeaponsiRandom ][ Weapon_Item ] ), iBullets );
            
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste ^4%s^1 con ^4%d^1 balas."g_szPrefixg_eWeaponsiRandom ][ Weapon_Name ], iBullets);
        
        }
        else
        {
            
cs_set_user_bpammoiIdg_eWeaponsiRandom ][ Weapon_Index ], cs_get_user_bpammoiIdg_eWeaponsiRandom ][ Weapon_Index ] ) + iBullets );
            
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste^4 %d balas^1 para tu^4 %s^1."g_szPrefixiBulletsg_eWeaponsiRandom ][ Weapon_Name ] );
        }
    }
    else
    {
        if( 
random) > )
        {
            if( 
user_has_weaponiIdCSW_HEGRENADE ) )
            {
                
cs_set_user_bpammoiIdCSW_HEGRENADEcs_get_user_bpammoiIdCSW_HEGRENADE ) + );
                
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste otra^4 granada explosiva^1."g_szPrefix );
            }
            else
            {
                
give_itemiId"weapon_hegrenade" );
                
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste una^4 granada explosiva^1."g_szPrefix );
            }
        }
        else
        {
            new 
iAmount random_num10100 ), CsArmorType:iType;
            
            
cs_set_user_armoriIdcs_get_user_armoriIdiType ) + iAmountCS_ARMOR_VESTHELM );
            
client_print_coloriIdprint_team_default"^4[%s]^1 Hallaste ^4%d^1 puntos de ^4chaleco^1"g_szPrefixiAmount);
        }
    }
}

CheckGameStatus( )
{
    new 
iCount;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iConnectediPlayer ) )
        {
            
iCount++;
        }
    }
    
    if( 
iCount >= )
    {
        if( 
g_iGame != Game_Started )
        {
            
g_iGame Game_Started;
            
g_iFirstRound 2;
            
            
server_cmd"sv_restartround 1" );
            
server_exec( );
            
            
client_print_color0print_team_default"^x04[%s]^x01 Se consiguieron jugadores suficientes. Preparense!"g_szPrefix );
        }
    }
    else if( 
g_iGame != Game_Waiting )
    {
        
g_iGame Game_Waiting;
        
g_bNoDamage true;
        
        
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
        
        
client_print_color0print_team_default"^x04[%s]^x01 No hay jugadores suficientes para el modo."g_szPrefix );
    }
}

CheckRoundStatus( )
{
    new 
iPlayers32 ], iNum;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
iPlayersiNum++ ] = iPlayer;
        }
    }
    
    if( 
iNum )
    {
        if( 
iNum )
        {
            
FreezePlayeriPlayers] );
            
FreezePlayeriPlayers] );
            
            
entity_set_floatiPlayers], EV_FL_health300.0 );
            
entity_set_floatiPlayers], EV_FL_health300.0 );
            
            
RemovePlayerWeaponsiPlayers] );
            
RemovePlayerWeaponsiPlayers] );
            
            
give_itemiPlayers], g_szCache_WeaponKnife );
            
give_itemiPlayers], g_szCache_WeaponKnife );
            
            if( 
g_bLoaded )
            {
                
entity_set_originiPlayers], g_flDuelPosition] );
                
entity_set_originiPlayers], g_flDuelPosition] );
            }
            
            
set_task3.0"Task_DuelImmunity"TASK_DUELIMMUNITY );
            
            
g_iCountdown 60;
            
g_iRoundStatus Round_Versus;
        }
        else
        {
            
rg_round_end10.0WINSTATUS_DRAWROUND_END_DRAW );
        }
    }
}

FreezePlayer( const iId )
{
    
entity_set_floatiIdEV_FL_maxspeed1.0 );
    
entity_set_vectoriIdEV_VEC_velocityFloat:{ 0.00.00.0 } );
    
    
SetPlayerBitg_iFrozeniId );
}

UnfreezePlayer( const iId )
{
    
ClearPlayerBitg_iFrozeniId );
    
    
ExecuteHamBHam_CS_Player_ResetMaxSpeediId );

(13/08/2018, 07:59 PM)KrR10VnZl escribió: Usted tiene un retraso de otro mundo, pon de tu parte coño, como es posible que preguntes cual código? muchacho mongólico si dice código, él se refiere al SMA del CTF, dios mio y si no te gusta que te digan que tienes un retraso magistral, astral del otro mundo pon de tú parte y no hagas preguntas tontas.
Responder
#48
Triste 
¿Alguien tiene el plugins copilado o bien echo?, por que para pasarlo a amxx me da error.https://amxmodx-es.com/images/icons/sad.gif
Responder
#49
(04/04/2018, 04:38 PM)berkely3099v2 escribió: ¿Alguien tiene el plugins copilado o bien echo?, por que para pasarlo a amxx me da error.https://amxmodx-es.com/images/icons/sad.gif

Que error te da?
Que version de amx usas?
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#50
(22/01/2018, 02:27 PM)Treki escribió: Les dejo otra versión libre de errores (o eso creo) pero que utiliza ReAPI. No tiene estadísticas ni nada, es solo el core. Necesita nada más que los módulos base y el ReAPI.

PD: Lo separé de un HG privado que funciona a la perfección, a pedido de un usuario que reportó problemas con el otro publicado. Abrir preferentemente con Sublime Text, así se ve correctamente identado.

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <reapi>
#include <xs>

/* =================================================================================
*                 [ Global stuff ]
* ================================================================================= */

#define PLAYER_ARRAY 33

#define IsPlayer(%0)             ( 1 <= %0 <= 32 )

#define GetPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 & ( 1 << ( %1 & 31 ) ) ) )
#define SetPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 |= ( 1 << ( %1 & 31 ) ) ) )
#define ClearPlayerBit(%0,%1)     ( IsPlayer(%1) && ( %0 &= ~( 1 << ( %1 & 31 ) ) ) )

#define ClientPlaySound(%0,%1)     client_cmd( %0, "spk %s", %1 )

const m_iRadiosLeft         192;
const 
m_iVGUI                 510;

const 
MAIN_MENU_KEYS         MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
const 
CONFIG_MENU_KEYS         MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6;
const 
TEAM_MENU_KEYS         MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6;

const 
TASK_RESTART             100;
const 
TASK_IMMUNITY         200;
const 
TASK_DUELIMMUNITY     300;
const 
TASK_JOINTEAM         400;

const 
Float:JOINTEAM_DELAY     1.0;

enum _:Game_Status
{
    
Game_Waiting,
    
Game_Started
}

enum _:Round_Type
{
    
Round_None,
    
Round_Countdown,
    
Round_Immunity,
    
Round_Normal,
    
Round_Versus
}

enum _:Teams
{
    
Team_Unassigned,
    
Team_Terrorist,
    
Team_Antiterrorist,
    
Team_Spectator
}

enum _:Weapon_Data
{
    
Weapon_Name16 ],
    
Weapon_Item32 ],
    
Weapon_Index,
    
Weapon_Min,
    
Weapon_Max
}

new const 
g_eWeapons[ ][ Weapon_Data ] =
{
    { 
"Glock-18""weapon_glock18"CSW_GLOCK18815 },
    { 
"USP""weapon_usp"CSW_USP4},
    { 
"P228""weapon_p228"CSW_P228311 },
    { 
"Deagle""weapon_deagle"CSW_DEAGLE2},
    { 
"FiveSeven""weapon_fiveseven"CSW_FIVESEVEN618 },
    { 
"Dual Elites""weapon_elite"CSW_ELITE1227 },
    { 
"TMP""weapon_tmp"CSW_TMP624 },
    { 
"MAC-10""weapon_mac10"CSW_MAC101129 },
    { 
"MP5-Navy""weapon_mp5navy"CSW_MP5NAVY1022 },
    { 
"Ump-45""weapon_ump45"CSW_UMP451425 },
    { 
"P90""weapon_p90"CSW_P901238 },
    { 
"M3""weapon_m3"CSW_M33},
    { 
"XM-1014""weapon_xm1014"CSW_XM10141},
    { 
"Famas""weapon_famas"CSW_FAMAS621 },
    { 
"Galil""weapon_galil"CSW_GALIL1232 },
    { 
"Scout""weapon_scout"CSW_SCOUT1},
    { 
"Awp""weapon_awp"CSW_AWP1},
    { 
"AK-47""weapon_ak47"CSW_AK47414 },
    { 
"M4A1""weapon_m4a1"CSW_M4A1414 },
    { 
"SG550""weapon_sg550"CSW_SG550617 },
    { 
"AUG""weapon_aug"CSW_AUG715 }
};

new const 
g_szBoxBrokenSound[ ]     = "hungergames/picked.wav";
new const 
g_szBoxModel[ ]             = "models/hungergames/Supply.mdl";

new const 
g_szBoxClassname[ ]         = "HGBox";
new const 
g_szGameThinkClassname[ ]    = "GameThink";

new const 
g_szCache_InfoTarget[ ]     = "info_target";
new const 
g_szCache_WeaponKnife[ ]    = "weapon_knife";
new const 
g_szCache_DoorClass[ ]    = "hg_puerta";
new const 
g_szCache_VipStart[ ]        = "info_vip_start";

new const 
g_szPrefix[ ]             = "HG";

new    
g_iConnected;
new 
g_iAlive;
new 
g_iCountdown;
new 
g_iGame;
new 
g_iBoxGibs;
new 
g_iPlayerWeaponStrip;
new 
g_bNoDamage;
new 
g_iHideWeapon;
new 
g_iCrosshair;
new 
g_iScoreInfo;
new 
g_iGameThink;
new 
g_iFirstRound;
new 
g_iFrozen;
new 
g_iTributes;
new 
g_iShowMenu;
new 
g_iVGUIMenu;
new 
g_iBoxes;
new 
g_iVisibleBoxes;
new 
g_iRoundStatus;

new 
bool:g_bLoaded;

new 
g_szSaveFile64 ];
new 
g_iPlayerScore33 ];
new 
Float:g_flDuelPosition][ ];

/* =================================================================================
*                 [ Plugin events ]
* ================================================================================= */

public plugin_precache( )
{
    
precache_soundg_szBoxBrokenSound );
    
precache_modelg_szBoxModel );
    
    
g_iPlayerWeaponStrip create_entity"player_weaponstrip" );
    
g_iBoxGibs precache_model"models/woodgibs.mdl" );
}

public 
plugin_init( )
{
    
register_plugin"Hunger Games""1.0""Manu" );

    
RegisterHamHam_Spawn"player""OnPlayerSpawn_Post"truetrue );
    
RegisterHamHam_TakeDamage"player""OnPlayerTakeDamage_Pre"falsetrue );
    
RegisterHamHam_CS_Player_ResetMaxSpeed"player""OnPlayerResetMaxSpeed_Pre"falsetrue );
    
    
register_forwardFM_ClientKill"OnClientKill_Pre"false );

    
register_touchg_szBoxClassname"player""OnBoxTouch" );
    
register_thinkg_szGameThinkClassname"OnGameThink" );

    
register_event"DeathMsg""Event_DeathMsg""a" );
    
register_event"ResetHUD""Event_ResetHUD""be" );
    
    
register_logevent"Event_RoundStart"2"1=Round_Start" );
    
register_logevent"Event_RoundEnd"2"1=Round_End" );
    
    
register_message( ( g_iShowMenu get_user_msgid"ShowMenu" ) ), "Message_ShowMenu" );
    
register_message( ( g_iVGUIMenu get_user_msgid"VGUIMenu" ) ), "Message_VGUIMenu" );

    
register_menucmdregister_menuid"Main Menu"false ), MAIN_MENU_KEYS"MainMenuHandler" );
    
register_menucmdregister_menuid"Config Menu"false ), CONFIG_MENU_KEYS"ConfigMenuHandler" );
    
register_menucmdregister_menuid"Team_Select"true ), TEAM_MENU_KEYS"TeamSelectMenuHandler" );

    
register_clcmd"jointeam""ClientCommand_TeamChoosing" );
    
register_clcmd"chooseteam""ClientCommand_TeamChoosing" );
    
register_clcmd"hg_fly""ClientCommand_Fly" );
        
    
g_bNoDamage        true;
    
g_iRoundStatus     Round_None;
    
g_iGameThink     create_entityg_szCache_InfoTarget );
    
    
g_iHideWeapon    get_user_msgid"HideWeapon" );
    
g_iCrosshair    get_user_msgid"Crosshair" );
    
g_iScoreInfo    get_user_msgid"ScoreInfo" );
    
    
set_msg_blockget_user_msgid"Radar" ), BLOCK_SET );
    
entity_set_stringg_iGameThinkEV_SZ_classnameg_szGameThinkClassname );
    
    
set_cvar_num"mp_autoteambalance");
    
set_cvar_num"mp_limitteams");
    
set_cvar_num"mp_friendlyfire");
    
set_cvar_num"mp_tkpunish");
    
set_cvar_num"mp_autokick");
    
set_cvar_num"mp_freezetime");
    
set_cvar_num"mp_freeforall");
    
set_cvar_num"mp_round_infinite");
    
set_cvar_num"mp_max_teamkills");
    
set_cvar_float"mp_buytime"0.0 );
    
    
LoadConfigs( );
    
LoadDuelPoints( );
    
    if( !
is_regamedll( ) )
    {
        
pause"Recurso faltante: ReGameDLL." );
    }
}

/* =================================================================================
*                 [ Tasks, Events & Messages ]
* ================================================================================= */

public Event_RoundStart( )
{
    if( ( 
g_iFirstRound == ) && !task_existsTASK_RESTART ) )
    {
        
set_task10.0"Task_RestartGame" );
        
        
client_print_color0print_team_default"^4[%s]^1 Bienvenidos al modo^4 Hunger Games v1.0 Beta^1!"g_szPrefix );
        
client_print_color0print_team_default"^4[%s]^1 El juego comenzara en^3 diez segundos^1. Preparense!"g_szPrefix );
    }
    else if( 
g_iGame == Game_Started )
    {
        
g_iFirstRound     0;
        
g_bNoDamage     true;
        
g_iRoundStatus     Round_Countdown;
        
g_iCountdown    10;
        
        
DrawBoxes( );
        
UpdateScoreBoard( );
        
        
entity_set_floatg_iGameThinkEV_FL_nextthinkget_gametime( ) );
    }
}

public 
Event_ResetHUDiId )
{
    
message_beginMSG_ONE_UNRELIABLEg_iHideWeapon_iId );
    
write_byte( ( 1<<1<<) );
    
message_end( );
    
    
message_beginMSG_ONE_UNRELIABLEg_iCrosshair_iId );
    
write_byte);
    
message_end( );
}

public 
Event_RoundEnd( )
{
    
remove_taskTASK_DUELIMMUNITY );
    
    
g_bNoDamage true;
    
g_iRoundStatus Round_None;
    
    
entity_set_floatg_iGameThinkEV_FL_nextthink0.0 );
}

public 
Event_DeathMsg( )
{
    static 
iKilleriKiller read_data);
    static 
iVictimiVictim read_data);
    
    
ClearPlayerBitg_iAliveiVictim );
    
    if( 
g_iGame != Game_Started )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    if( 
iKiller != iVictim && GetPlayerBitg_iConnectediKiller ) )
    {
        
g_iPlayerScoreiKiller ]++;

        
UpdateScoreiKiller );
    }
    
    
CheckRoundStatus( );
    
    return 
PLUGIN_CONTINUE;
}

public 
Message_VGUIMenuiMessageiDestiId )
{
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return 
PLUGIN_CONTINUE;
    }    
    
    if( 
get_msg_arg_int) == )
    {
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
Message_ShowMenuiMessageiDestiId )
{    
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static const 
FIRST_JOIN_MSG[ ] = "#Team_Select";
    static const 
FIRST_JOIN_MSG_SPEC[ ] = "#Team_Select_Spect";
    static const 
INGAME_JOIN_MSG[ ] = "#IG_Team_Select";
    static const 
INGAME_JOIN_MSG_SPEC[ ] = "#IG_Team_Select_Spect";
    
    static 
szMenuCode64 ];
    
    
get_msg_arg_string4szMenuCodesizeofszMenuCode ) - );
    
    if( 
equalszMenuCodeFIRST_JOIN_MSG ) || equalszMenuCodeFIRST_JOIN_MSG_SPEC )
    || 
equalszMenuCodeINGAME_JOIN_MSG ) || equalszMenuCodeINGAME_JOIN_MSG_SPEC ) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
Task_DuelImmunity( )
{
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
UnfreezePlayeriPlayer );
        }
    }
}

public 
Task_RestartGame( )
{
    
g_iFirstRound 1;
    
    
server_cmd"sv_restartround 1" );
    
server_exec( );
    
    
client_print_color0print_team_default"^4[%s]^1 Reiniciando ronda..."g_szPrefix );
}

public 
Task_ForceJoinTeamiTask )
{
    new 
iId iTask TASK_JOINTEAM;
    
    if( !
GetPlayerBitg_iConnectediId ) )
    {
        return;
    }
    
    if( !
is_user_botiId ) )
    {
        new 
iRestore get_pdata_intiIdm_iVGUI );
        
        if( 
iRestore & ( 1<<) )
        {
            
set_pdata_intiIdm_iVGUIiRestore & ~( 1<<) );
        }
        
        
set_msg_blockg_iShowMenuBLOCK_SET );
        
set_msg_blockg_iVGUIMenuBLOCK_SET );
        
        
engclient_cmdiId"jointeam""2" );
        
engclient_cmdiId"joinclass""5" );
        
        
set_msg_blockg_iShowMenuBLOCK_NOT );
        
set_msg_blockg_iVGUIMenuBLOCK_NOT );
        
        if( 
iRestore & ( 1<<) )
        {
            
set_pdata_intiIdm_iVGUIiRestore );
        }
        
        
menu_canceliId );
    }
    
    
CheckGameStatus( );
}

/* =================================================================================
*                 [ CBasePlayer Forwards ]
* ================================================================================= */

public OnPlayerSpawn_PostiId )
{
    if( !
is_user_aliveiId ) )
    {
        return 
HAM_IGNORED;
    }
    
    
SetPlayerBitg_iAliveiId );
    
    
RemovePlayerWeaponsiId );
    
    
cs_set_user_armoriId0CS_ARMOR_NONE );
    
give_itemiIdg_szCache_WeaponKnife );
    
set_pdata_intiIdm_iRadiosLeft);

    if( 
g_iRoundStatus == Round_Countdown )
    {
        
FreezePlayeriId );
    }

    return 
HAM_IGNORED;
}

public 
OnPlayerTakeDamage_PreiVictimiInflictoriAttackerFloat:flDamageiDamageBits )
{
    if( 
g_bNoDamage )
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

public 
OnPlayerResetMaxSpeed_PreiId )
{
    if( 
GetPlayerBitg_iFrozeniId ) )
    {
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

/* =================================================================================
*                 [ General Forwards ]
* ================================================================================= */

public OnBoxTouchiBoxiId )
{
    if( !
GetPlayerBitg_iAliveiId ) || ( g_iGame != Game_Started ) || ( entity_get_intiBoxEV_INT_solid ) == SOLID_NOT ) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static 
iOrigin];
    static 
Float:flOrigin];
    
    
entity_get_vectoriBoxEV_VEC_originflOrigin );
    
FVecIVecflOriginiOrigin );
    
    
message_beginMSG_BROADCASTSVC_TEMPENTITY ); 
    
write_byteTE_BREAKMODEL );
    
write_coordiOrigin] );
    
write_coordiOrigin] );
    
write_coordiOrigin] );
    
write_coord16 );
    
write_coord16 );
    
write_coord16 );
    
write_coord25 );
    
write_coord25 );
    
write_coord25 );
    
write_byte10 );
    
write_shortg_iBoxGibs );
    
write_byte10 );
    
write_byte25 );
    
write_byte0x08 );
    
message_end( );
    
    
emit_soundiBoxCHAN_AUTOg_szBoxBrokenSoundVOL_NORMATTN_NORM0PITCH_NORM );
    
    
entity_set_intiBoxEV_INT_solidSOLID_NOT );
    
entity_set_intiBoxEV_INT_effectsentity_get_intiBoxEV_INT_effects ) | EF_NODRAW );
    
    
g_iVisibleBoxes -= 1;
    
    
GiveRandomItemiId );
    
    return 
PLUGIN_CONTINUE;
}

public 
OnGameThinkiEnt )
{
    new 
iAlive;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
iAlive++;
        }
    }
    
    
set_dhudmessage2551400, -1.00.101.01.0 );
    
    switch( 
g_iRoundStatus )
    {
        case 
Round_Countdown:
        {
            
g_iCountdown--;
            
            
show_dhudmessage0"Juegos del hambre^nLa ronda comenzara en %d"g_iCountdown );
            
            if( 
g_iCountdown <= )
            {
                
OpenDoors( );
                
                
g_iCountdown 20;
                
g_iRoundStatus Round_Immunity;
                
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iConnectediPlayer ) )
                    {
                        
UnfreezePlayeriPlayer );
                    }
                }
            }
            else
            {
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iConnectediPlayer ) && !GetPlayerBitg_iFrozeniPlayer ) )
                    {
                        
FreezePlayeriPlayer );
                    }
                }
            }
        }
        case 
Round_Immunity:
        {
            
show_dhudmessage0"Juegos del hambre^nCajas: %d/%d^n^nLa inmunidad terminara en %d"g_iVisibleBoxesg_iBoxesg_iCountdown );
            
            if( --
g_iCountdown )
            {
                for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
                {
                    if( 
GetPlayerBitg_iAliveiPlayer ) )
                    {
                        
give_itemiPlayerg_szCache_WeaponKnife );
                    }
                }
                
                
g_bNoDamage false;
                
g_iCountdown 240;
                
g_iRoundStatus Round_Normal;
                
g_iTributes iAlive;
            }
        }
        case 
Round_Normal:
        {
            
show_dhudmessage0"Juegos del hambre^nTributos: %d/%d | Cajas: %d/%d^n^n^nTiempo restante: %d"iAliveg_iTributesg_iVisibleBoxesg_iBoxesg_iCountdown );
            
            if( 
g_iCountdown == 160 )
            {
                
DrawBoxes( );
            }
            
            if( --
g_iCountdown )
            {
                
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
            }
        }
        case 
Round_Versus:
        {
            
show_dhudmessage0"Juegos del hambre^nTributos: %d/%d | Cajas: %d/%d"iAliveg_iTributesg_iVisibleBoxesg_iBoxes );
            
            if( --
g_iCountdown )
            {
                
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
            }
        }
    }
    
    
entity_set_floatiEntEV_FL_nextthinkget_gametime( ) + 1.0 );
}

public 
OnClientKill_PreiId )
{
    
client_print_coloriIdprint_team_default"^x04[%s]^x01 No puedes suicidarte."g_szPrefix );
    
    return 
FMRES_SUPERCEDE;
}

/* =================================================================================
*                 [ Client-related stuff ]
* ================================================================================= */

public ClientCommand_FlyiId )
{
    if( 
get_user_flagsiId ) & ADMIN_RCON )
    {
        
set_user_noclipiIdget_user_noclipiId ) ? );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
ClientCommand_TeamChoosingiId )
{
    
ShowMainMenuiId );
    
    return 
PLUGIN_HANDLED;
}

public 
client_putinserveriId )
{
    
SetPlayerBitg_iConnectediId );
    
    
set_taskJOINTEAM_DELAY"Task_ForceJoinTeam"iId TASK_JOINTEAM );
}

public 
client_disconnectediId )
{
    new 
bWasAlive GetPlayerBitg_iAliveiId );
    
    
g_iPlayerScoreiId ] = 0;
    
    
ClearPlayerBitg_iConnectediId );
    
ClearPlayerBitg_iAliveiId );
    
    
CheckGameStatus( );
    
    if( ( 
g_iGame != Game_Waiting ) && bWasAlive )
    {
        
CheckRoundStatus( );
    }
}

/* =================================================================================
*                 [ Client menus ]
* ================================================================================= */

ShowMainMenuiId )
{
    static 
iLenszData256 ];
    
    
iLen formatexszDatacharsmaxszData ), "\wModo: \yHunger Games \d- \wVersion: \y1.0b^n^n" );

    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[1] \wAyuda^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[2] \wReglas^n^n" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[3] %sAdministracion^n^n"get_user_flagsiId ) & ADMIN_RCON "\w" "\d" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[0] \wSalir" );
    
    
show_menuiIdMAIN_MENU_KEYSszData, -1"Main Menu" );
    
    return 
PLUGIN_HANDLED;
}

public 
MainMenuHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || ( iKey ) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    switch( 
iKey )
    {
        case 
0:
        {
            
client_print_coloriIdprint_team_default"^4[%s]^3 Hunger Games^1 es un modo de supervivencia todos contra todos."g_szPrefix );
            
client_print_coloriIdprint_team_default"^4[%s]^1 Debes de recoger cajas para conseguir armas y/o items variados."g_szPrefix );
        }
        case 
1:
        {    
            
client_print_coloriIdprint_team_default"^4[%s]^1 No debes quedarte en una misma posicion por demasiado tiempo."g_szPrefix );
            
client_print_coloriIdprint_team_default"^4[%s]^1 No debes hacer equipo con otros jugadores."g_szPrefix );
        }
        case 
2:
        {
            if( 
get_user_flagsiId ) & ADMIN_RCON )
            {
                
ShowConfigMenuiId );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

ShowConfigMenuiId )
{
    static 
iLenszData256 ];
    
    
iLen formatexszDatacharsmaxszData ), "\yConfiguraciones:^n^n" );
    
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[1] \yCrear \wuna caja donde apuntas^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[2] \yRemover \wla caja que apuntas^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[3] \yPrimera \wubicacion de duelos^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[4] \ySegunda \wubicacion de duelos^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[5] \yGuardar^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[6] \dCancelar^n^n" );
    
iLen += formatexszDataiLen ], charsmaxszData ) - iLen"\r[!] \wCajas creadas: \r%d"g_iBoxes );
    
    
show_menuiIdCONFIG_MENU_KEYSszData, -1"Config Menu" );
    
    return 
PLUGIN_HANDLED;
}

public 
ConfigMenuHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || iKey )
    {
        return 
PLUGIN_HANDLED;
    }
    
    static 
iBoxiBodyszClassname16 ], Float:flOrigin];
    
    switch( 
iKey )
    {
        case 
0:
        {
            
GetBoxLocationiIdflOrigin );
            
CreateBoxflOrigin );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Se creo una caja donde apuntabas."g_szPrefix );
        }
        case 
1:
        {
            
get_user_aimingiIdiBoxiBody );
            
            if( 
is_valid_entiBox ) )
            {
                
entity_get_stringiBoxEV_SZ_classnameszClassnamecharsmaxszClassname ) );
                
                if( 
equalszClassnameg_szBoxClassname ) )
                {
                    
g_iBoxes--;
                    
remove_entityiBox );
                    
                    
client_print_coloriIdprint_team_default"^x04[%s]^x01 La caja se ha removido correctamente."g_szPrefix );
                }
            }
            else
            {
                
client_print_coloriIdprint_team_default"^x04[%s]^x01 No estabas apuntando a una entidad valida."g_szPrefix );
            }
        }
        case 
2:
        {
            
entity_get_vectoriIdEV_VEC_origing_flDuelPosition] );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Nueva ubicacion establecida. Recuerde guardar los cambios."g_szPrefix );
        }
        case 
3:
        {
            
entity_get_vectoriIdEV_VEC_origing_flDuelPosition] );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Nueva ubicacion establecida. Recuerde guardar los cambios."g_szPrefix );
        }
        case 
4:
        {
            
SaveConfigs( );
            
            
client_print_coloriIdprint_team_default"^x04[%s]^x01 Configuraciones guardadas correctamente."g_szPrefix );
        }
    }
    
    
ShowConfigMenuiId );
    
    return 
PLUGIN_HANDLED;
}

public 
TeamSelectMenuHandleriIdiKeys )
{
    
ShowMainMenuiId );
    
    return 
PLUGIN_HANDLED;
}

/* =================================================================================
*                 [ Private functions ]
* ================================================================================= */

LoadConfigs( )
{
    new 
iLinesiFileFloat:flOrigin], szOrigin][ ], szMap32 ], szData128 ];
    
    
get_localinfo"amxx_configsdir"szDatacharsmaxszData ) );
    
get_mapnameszMapcharsmaxszMap ) );
    
    if( !( 
szMap] == 'h' && szMap] == 'g' && szMap] == '_' ) )
    {
        
set_fail_state"Mapa no compatible. Requisito: hg_" );
    }
    
    
formatexg_szSaveFilecharsmaxg_szSaveFile ), "%s/hungergames"szData );
    
    if( !
dir_existsg_szSaveFile ) )
    {
        
mkdirg_szSaveFile );
        
        return;
    }
    
    
formatexg_szSaveFilecharsmaxg_szSaveFile ), "%s/hungergames/%s.ini"szDataszMap );
    
    if( 
file_existsg_szSaveFile ) )
    {
        
iFile fopeng_szSaveFile"rt" );
        
g_bLoaded true;
        
        while( !
feofiFile ) )
        {
            
fgetsiFileszDatacharsmaxszData ) );
            
trimszData );
            
            if( 
parseszDataszOrigin], charsmaxszOrigin[ ] ), szOrigin], charsmaxszOrigin[ ] ), szOrigin], charsmaxszOrigin[ ] ) ) != )
            {
                continue;
            }
            
            if( 
iLines )
            {
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
                
g_flDuelPositioniLines ][ ] = str_to_floatszOrigin] );
            }
            else
            {
                
flOrigin] = str_to_floatszOrigin] );
                
flOrigin] = str_to_floatszOrigin] );
                
flOrigin] = str_to_floatszOrigin] );
                
                
CreateBoxflOrigin );
            }
            
            
iLines++;
        }
        
        
fcloseiFile );
    }
}

LoadDuelPoints( )
{
    new 
iEntiCount;
    
    while( ( 
iEnt find_ent_by_classiEntg_szCache_VipStart ) ) > )
    {
        
entity_get_vectoriEntEV_VEC_origing_flDuelPositioniCount++ ] );
    }
}

SaveConfigs( )
{
    new 
iEntiFileFloat:flOrigin];
    
    if( 
file_existsg_szSaveFile ) )
    {
        
delete_fileg_szSaveFile );
    }
    
    
iFile fopeng_szSaveFile"wt" );
    
    
fprintfiFile"%0.3f %0.3f %0.3f^n"g_flDuelPosition][ ], g_flDuelPosition][ ], g_flDuelPosition][ ] );
    
fprintfiFile"%0.3f %0.3f %0.3f^n"g_flDuelPosition][ ], g_flDuelPosition][ ], g_flDuelPosition][ ] );
    
    while( ( 
iEnt find_ent_by_classiEntg_szBoxClassname ) ) != )
    {
        
entity_get_vectoriEntEV_VEC_originflOrigin );
        
fprintfiFile"%0.3f %0.3f %0.3f^n"flOrigin], flOrigin], flOrigin] );
    }
    
    
fcloseiFile );
}

CreateBoxFloat:flOrigin] )
{
    static 
iEntiEnt create_entityg_szCache_InfoTarget );
    
    
entity_set_stringiEntEV_SZ_classnameg_szBoxClassname );
    
    
entity_set_modeliEntg_szBoxModel );
    
entity_set_sizeiEntFloat:{ -8.0, -8.00.0 }, Float:{ 8.08.08.0 } );
    
    
entity_set_originiEntflOrigin );
    
    
entity_set_intiEntEV_INT_solidSOLID_BBOX );
    
entity_set_intiEntEV_INT_movetypeMOVETYPE_TOSS );
    
    
drop_to_flooriEnt ); g_iBoxes++;
}

DrawBoxes( )
{
    new 
iEnt;
    
    while( ( 
iEnt find_ent_by_classiEntg_szBoxClassname ) ) != )
    {
        
entity_set_intiEntEV_INT_solidSOLID_BBOX );
        
entity_set_intiEntEV_INT_effectsentity_get_intiEntEV_INT_effects ) & ~EF_NODRAW );
    }
    
    
g_iVisibleBoxes g_iBoxes;
}

GetBoxLocation( const iIdFloat:flOrigin] )
{
    static 
Float:flAngles], Float:flViewOfs], Float:flEnd];
    
    
entity_get_vectoriIdEV_VEC_originflOrigin );
    
entity_get_vectoriIdEV_VEC_view_ofsflViewOfs );
    
entity_get_vectoriIdEV_VEC_v_angleflAngles );
    
    
xs_vec_addflOriginflViewOfsflOrigin );
    
    
angle_vectorflAnglesANGLEVECTOR_FORWARDflAngles );
    
    
xs_vec_mul_scalarflAngles2048.0flAngles );
    
xs_vec_addflOriginflAnglesflEnd );
    
    
trace_lineiIdflOriginflEndflOrigin ); flOrigin] += 64.0;
}

RemovePlayerWeaponsiId )
{
    
dllfuncDLLFunc_Useg_iPlayerWeaponStripiId );
}

OpenDoors( )
{
    new 
iEnt;
    
    while( ( 
iEnt find_ent_by_tnameiEntg_szCache_DoorClass ) ) != )
    {
        
force_useiEntiEnt );
    }
}

UpdateScoreiId )
{
    
entity_set_floatiIdEV_FL_fragsfloatg_iPlayerScoreiId ] ) );

    
message_beginMSG_BROADCASTg_iScoreInfo );
    
write_byteiId );
    
write_shortg_iPlayerScoreiId ] );
    
write_shortget_user_deathsiId ) );
    
write_short);
    
write_shortget_user_teamiId ) );
    
message_end( );
}

UpdateScoreBoard( )
{
    
message_beginMSG_BROADCASTg_iScoreInfo );
    
write_byte33 );
    
write_short);
    
write_short);
    
write_short);
    
write_short);
    
message_end( );
}

GiveRandomItem( const iId )
{
    static 
iRandomiBulletsiRandom random);
    
    if( 
iRandom )
    {
        
iRandom randomsizeofg_eWeapons ) );
        
iBullets random_numg_eWeaponsiRandom ][ Weapon_Min ], g_eWeaponsiRandom ][ Weapon_Max ] );
        
        if( !
user_has_weaponiIdg_eWeaponsiRandom ][ Weapon_Index ] ) )
        {
            
cs_set_weapon_ammogive_itemiIdg_eWeaponsiRandom ][ Weapon_Item ] ), iBullets );
            
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste ^4%s^1 con ^4%d^1 balas."g_szPrefixg_eWeaponsiRandom ][ Weapon_Name ], iBullets);
        
        }
        else
        {
            
cs_set_user_bpammoiIdg_eWeaponsiRandom ][ Weapon_Index ], cs_get_user_bpammoiIdg_eWeaponsiRandom ][ Weapon_Index ] ) + iBullets );
            
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste^4 %d balas^1 para tu^4 %s^1."g_szPrefixiBulletsg_eWeaponsiRandom ][ Weapon_Name ] );
        }
    }
    else
    {
        if( 
random) > )
        {
            if( 
user_has_weaponiIdCSW_HEGRENADE ) )
            {
                
cs_set_user_bpammoiIdCSW_HEGRENADEcs_get_user_bpammoiIdCSW_HEGRENADE ) + );
                
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste otra^4 granada explosiva^1."g_szPrefix );
            }
            else
            {
                
give_itemiId"weapon_hegrenade" );
                
client_print_coloriIdprint_team_grey"^4[%s]^1 Hallaste una^4 granada explosiva^1."g_szPrefix );
            }
        }
        else
        {
            new 
iAmount random_num10100 ), CsArmorType:iType;
            
            
cs_set_user_armoriIdcs_get_user_armoriIdiType ) + iAmountCS_ARMOR_VESTHELM );
            
client_print_coloriIdprint_team_default"^4[%s]^1 Hallaste ^4%d^1 puntos de ^4chaleco^1"g_szPrefixiAmount);
        }
    }
}

CheckGameStatus( )
{
    new 
iCount;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iConnectediPlayer ) )
        {
            
iCount++;
        }
    }
    
    if( 
iCount >= )
    {
        if( 
g_iGame != Game_Started )
        {
            
g_iGame Game_Started;
            
g_iFirstRound 2;
            
            
server_cmd"sv_restartround 1" );
            
server_exec( );
            
            
client_print_color0print_team_default"^x04[%s]^x01 Se consiguieron jugadores suficientes. Preparense!"g_szPrefix );
        }
    }
    else if( 
g_iGame != Game_Waiting )
    {
        
g_iGame Game_Waiting;
        
g_bNoDamage true;
        
        
rg_round_end3.0WINSTATUS_DRAWROUND_END_DRAW );
        
        
client_print_color0print_team_default"^x04[%s]^x01 No hay jugadores suficientes para el modo."g_szPrefix );
    }
}

CheckRoundStatus( )
{
    new 
iPlayers32 ], iNum;
    
    for( new 
iPlayer 1iPlayer <= MAX_PLAYERSiPlayer++ )
    {
        if( 
GetPlayerBitg_iAliveiPlayer ) )
        {
            
iPlayersiNum++ ] = iPlayer;
        }
    }
    
    if( 
iNum )
    {
        if( 
iNum )
        {
            
FreezePlayeriPlayers] );
            
FreezePlayeriPlayers] );
            
            
entity_set_floatiPlayers], EV_FL_health300.0 );
            
entity_set_floatiPlayers], EV_FL_health300.0 );
            
            
RemovePlayerWeaponsiPlayers] );
            
RemovePlayerWeaponsiPlayers] );
            
            
give_itemiPlayers], g_szCache_WeaponKnife );
            
give_itemiPlayers], g_szCache_WeaponKnife );
            
            if( 
g_bLoaded )
            {
                
entity_set_originiPlayers], g_flDuelPosition] );
                
entity_set_originiPlayers], g_flDuelPosition] );
            }
            
            
set_task3.0"Task_DuelImmunity"TASK_DUELIMMUNITY );
            
            
g_iCountdown 60;
            
g_iRoundStatus Round_Versus;
        }
        else
        {
            
rg_round_end10.0WINSTATUS_DRAWROUND_END_DRAW );
        }
    }
}

FreezePlayer( const iId )
{
    
entity_set_floatiIdEV_FL_maxspeed1.0 );
    
entity_set_vectoriIdEV_VEC_velocityFloat:{ 0.00.00.0 } );
    
    
SetPlayerBitg_iFrozeniId );
}

UnfreezePlayer( const iId )
{
    
ClearPlayerBitg_iFrozeniId );
    
    
ExecuteHamBHam_CS_Player_ResetMaxSpeediId );


Lo compile bien sin errores, tengo amx 1.8.3 ultima version y cuando ando en mapa HG unknown unknown hunger.amxx bad load :,v y tengo los demas archivos necesarios, adv_vault, round_terminator
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)