Menu de voto para kill
#1
hola todos, encontre este codigo de manu que hace que cuando un jugador escriba /votekill le sale un menu con todos los jugadores y cuando selecciona un nombre a todos los jugadores les sale que si quieren matar a ese jugador si la mayoria vota que si lo mata y si es lo contrario no lo mata, lo que quiero hacer es que cuando uno escriba /votekill les salga a todos los jugadores vivos un menu con todos los nombres de los jugadores vivos del servidor y que voten a quien quiere matar el jugador que reciba mas votos lo mata, esto es porque quiero hacer un modo de among us, alguien me podria ayudar porfavor? ... gracias antemano

este es el codigo:

Código PHP:
#include <amxmodx>

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

enum _:Vote_Type {
    
VT_Accept,
    
VT_Reject
}

const 
MENU_KEYS MENU_KEY_1|MENU_KEY_2;

new const 
g_szCountdown[ ][ ] = { "one","two","three","four","five","six","seven","eight","nine","ten" };

new 
g_iVoted,
    
g_iJudged,
    
g_iSayText,
    
g_iConnected,
    
g_iCountDown,
    
g_iSyncObject,
    
g_iMaxPlayers,
    
g_szVoted32 ],
    
Float:g_fLastKill,
    
g_iPlayerVotesVote_Type ];

public 
plugin_init( )
{
    
register_plugin"Votekill""1.0""Manu" );
    
    
register_clcmd"say /votekill""CommandVotekill" );
    
    
register_menucmdregister_menuid"Votekill Menu" ), MENU_KEYS"VoteHandler" );
    
    
g_iSyncObject CreateHudSyncObj( );
    
g_iMaxPlayers get_maxplayers( );
    
g_iSayText get_user_msgid"SayText" );
}

/* ===================================================
*                 [ Tasks ]
* ==================================================== */

public DoCountdown( )
{
    
set_hudmessage85212255, -1.00.812.01.0 );
    
ShowSyncHudMsg0g_iSyncObject"[ Votekill ] La votacion finalizara en %d segundo(s)"g_iCountDown );
    
    
ShowVotekillMenu);
    
    
client_cmd0"spk %s"g_szCountdown[ --g_iCountDown ] );
}

public 
EndVotekill( )
{    
    
set_hudmessage85212255, -1.00.812.03.0 );
    
    if( 
g_iPlayerVotesVT_Reject ] < g_iPlayerVotesVT_Accept ] )
    {
        new 
iId GetUserIndexg_iJudged );
        
        if( 
GetPlayerBitg_iConnectediId ) )
        {
            
user_killiId );
            
            
ShowSyncHudMsg0g_iSyncObject"Se obtuvieron votos suficientes^nEl jugador %s ha sido asesinado!"g_szVoted );
        }
        else
            
ShowSyncHudMsg0g_iSyncObject"El jugador %s se desconecto antes del castigo"g_szVoted );
    }
    else
        
ShowSyncHudMsg0g_iSyncObject"No se obtuvieron votos suficientes" );
}

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

public client_putinserveriId SetPlayerBitg_iConnectediId );
public 
client_disconnectiId ClearPlayerBitg_iConnectediId );

public 
CommandVotekilliId )
{
    if( 
g_fLastKill get_gametime( ) )
    {
        if( 
get_playersnum( ) >= )
        {
            static 
iMenuiPlayerszData], szName16 ]; iMenu menu_create"\wLista de jugadores""VotekillHandler" );
            
            for( 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
            {
                if( !
GetPlayerBitg_iConnectediPlayer ) || ( get_user_flagsiPlayer ) & ADMIN_IMMUNITY ) )
                    continue;
                
                
get_user_nameiPlayerszNamecharsmaxszName ) );
                
formatexszDatacharsmaxszData ), "%d %d"iPlayerget_user_useridiPlayer ) );
                
                
menu_additemiMenuszNameszData );
            }
            
            
menu_setpropiMenuMPROP_NEXTNAME"Siguiente" );
            
menu_setpropiMenuMPROP_BACKNAME"Anterior" );
            
menu_setpropiMenuMPROP_EXITNAME"Cancelar" );
            
            
menu_displayiIdiMenu );
        }
        else
            
PrintColoriId,"^x04[Votekill]^x01 Debe haber al menos tres jugadores para iniciar una votacion." );
    }
    else
        
PrintColoriId,"^x04[Votekill]^x01 Quedan^x04 %d^x01 segundos restantes antes de poder iniciar otro votekill.",floatroundg_fLastKill get_gametime( ) ) );
    
    return 
PLUGIN_HANDLED;
}

public 
VotekillHandleriIdiMenuiItem )
{
    if( 
iItem != MENU_EXIT )
    {
        static 
szData], szPlayer], iNumiPlayerszName32 ];
        
        
menu_item_getinfoiMenuiItemiNumszDatacharsmaxszData ), __iNum );
        
        
strtokszDataszPlayercharsmaxszPlayer ), szDatacharsmaxszData ), ' 'true );
        
        if( 
GetPlayerBitg_iConnected, ( iPlayer str_to_numszPlayer ) ) ) && ( get_user_useridiPlayer ) == str_to_numszData ) ) )
        {
            
g_iJudged get_user_useridiPlayer );
            
get_user_nameiIdszNamecharsmaxszName ) );
            
get_user_nameiPlayerg_szVotedcharsmaxg_szVoted ) );
            
            
PrintColor0"^x04[Votekill]^x01 El jugador^x04 %s^x01 ha iniciado un^x04 votekill^x01 contra^x04 %s^x01."szNameg_szVoted );
            
            
StartVotekill( );
        }
    }
}

public 
VoteHandleriIdiKey )
{
    if( !
GetPlayerBitg_iConnectediId ) || GetPlayerBitg_iVotediId ) )
        return 
PLUGIN_HANDLED;
    
    
g_iPlayerVotesiKey ]++;
    
SetPlayerBitg_iVotediId );
    
client_cmdiId,"spk buttons/lightswitch2.wav" );
    
    
ShowVotekillMenuiId );
    
    return 
PLUGIN_HANDLED;
}

/* ===================================================
*                 [ Other functions ]
* ==================================================== */

GetUserIndex( const iUserId )
{
    for( new 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
    {
        if( !
GetPlayerBitg_iConnectediPlayer ) || ( get_user_useridiPlayer ) != iUserId ) )
            continue;
        
        return 
iPlayer;
    }
    
    return 
0;
}

StartVotekill( )
{
    
g_iCountDown 10;
    
    
g_iPlayerVotesVT_Accept ] = 0;
    
g_iPlayerVotesVT_Reject ] = 0;
    
    
g_fLastKill get_gametime( ) + 120.0;
    
    for( new 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
        
ClearPlayerBitg_iVotediPlayer );
    
    
set_task1.0"DoCountdown", .flags "a", .repeat 10 );
    
set_task12.0"EndVotekill" );
}

ShowVotekillMenuiId )
{
    static 
szBuffer256 ], iLen;
    
    
iLen formatexszBuffercharsmaxszBuffer ), "Votar para asesinar a \y%s\w^n^n"g_szVoted );
    
iLen += formatexszBufferiLen ], charsmaxszBuffer ) - iLen"\r[1] \yAceptar \w[ Votos: \y%d \w]^n"g_iPlayerVotesVT_Accept ] );
    
iLen += formatexszBufferiLen ], charsmaxszBuffer ) - iLen"\r[2] \yRechazar \w[ Votos: \y%d \w]^n^n"g_iPlayerVotesVT_Reject ] );
    
iLen += formatexszBufferiLen ], charsmaxszBuffer ) - iLen"\r[!] \wLa votacion termina en \y%d segundo(s)"g_iCountDown );
    
    
show_menuiIdMENU_KEYSszBuffer1"Votekill Menu" );
    
    return 
PLUGIN_HANDLED;
}

PrintColoriIdszText[ ], any:... )
{
    static 
szBuffer192 ]; vformatszBuffercharsmaxszBuffer ), szText);
    
    if( !
iId 
    {
        
message_beginMSG_ALLg_iSayText_iId );
        
write_byte);
        
write_stringszBuffer );
        
message_end( );
    }
    else 
    {
        
message_beginMSG_ONEg_iSayText_iId );
        
write_byteiId );
        
write_stringszBuffer );
        
message_end( );
    }

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)