Comando de Evento Admin
#1
Exclamación 
Buenas tardes, este es un plugin que habían pedido hace poco y bueno ya que estaba lo dejo como un "aporte" por si alguno quiere sacarse alguna duda, si encuentran algún bug o error, o quizás algo que mejorar lo actualizo, discúlpenme por la pésima optimizacion Whatdone

Descripción:
- Es un plugin simple que al usar el comando "amx_event" le otorga a un administrador al azar vida, velocidad, - gravedad, y para los que no les toco ser el "suertudo" tendrán un respawn cada 5 segundos que mueran.

- La idea me la propuso @spininrecor1 el codeo lo hice yo, con algunas cosas que saque de por ahí (puse el autor que me acorde)

Modo de uso:
- amx_event (en consola, siendo administrador)

Creditos:
- Gonza-* Code del Respawn

Plugin:
Código PHP:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>

#define PLUGIN "Mata al admin [Evento]"
#define VERSION "1.0.6"
#define AUTHOR "Exertency"
#define SPEED 320.0

enum (+= 101)
{
    
TASK_HUD 2000,
    
TASK_RESPAWN
}
new 
g_maxplayershudg_event_startedg_iLastChoosenPlayerg_ScreenFadeg_iAdminCount
new cvar_respawncvar_tiempocvar_selfkill
new g_playername33 ][ 32 ]

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_concmd("amx_event","command_event",ADMIN_KICK)

    
register_logevent("round_end"2"1=Round_End")
    
    
RegisterHam(Ham_Killed"player""player_killed")    
    
register_forward(FM_PlayerPostThink"fw_PlayerPostThink")
    
    
cvar_respawn register_cvar("respawn_enabled""1")
    
cvar_tiempo register_cvar("respawn_delay""5.0")
    
cvar_selfkill register_cvar("respawn_selfkill""0")
    
    
g_ScreenFade get_user_msgid("ScreenFade");    
    
g_maxplayers get_maxplayers()
    
hud CreateHudSyncObj()
}
public 
round_end()
{
    if(
g_event_started)
    {
        
commands_off()
        
g_iLastChoosenPlayer 0
        
new i
        
for(1<= g_maxplayersi++ )
        {
            
remove_task(i+TASK_HUD)
            
remove_task(i+TASK_RESPAWN)
        }
    }
}

public 
fw_PlayerPostThink(id)
{
    if(!
g_event_started && !is_user_connected(id)) return PLUGIN_HANDLED
    
    
if(g_iLastChoosenPlayer == id)
    {
        
set_pev(idpev_maxspeedSPEED)
        return 
PLUGIN_HANDLED
    
}
}

public 
client_putinserver(id)
{
    if(
get_user_flags(id) & ADMIN_KICK)
        
g_iAdminCount++
}

public 
client_disconnect(id)
{
    if(
get_user_flags(id) && ADMIN_KICK)
        
g_iAdminCount--
        
    if( 
g_iLastChoosenPlayer == id )
    {
        
g_iLastChoosenPlayer 0
        g_event_started 
false
        client_print
(0print_chat"[AMXX] El admin se ha ido")
        
ChooseRandomPlayer()
    }
    
remove_task(id+TASK_HUD)
    
remove_task(id+TASK_RESPAWN)
}
    
public 
respawn(id)
{
    
id -= TASK_RESPAWN
    
    
if (!is_user_connected(id)) return
    
    
ExecuteHamB(Ham_CS_RoundRespawnid)
    
client_print(idprint_center"Fuiste revivido!")
}
public 
HUD(id)
{
    
id -= TASK_HUD
    
if(!is_user_connected(id) && !is_user_alive(id) || !g_event_started) return
            
    new 
health get_user_health(g_iLastChoosenPlayer)
    new 
szHealth[10]
    
acortar(healthszHealthcharsmax(szHealth)) 
    
//new Name[32]
    
if(id == g_iLastChoosenPlayer)
    {
        
set_hudmessage(255255255, -1.00.006.02.0// Hud de color Azul
        
ShowSyncHudMsg(idhud"---- Evento Admin ----^nNombre: [%s]^nVida: [%d]"g_playername[id], szHealth)
    }
    else
    {
        
set_hudmessage(255255255, -1.00.006.02.0// Hud de color Azul
        
ShowSyncHudMsg(idhud"---- Evento Admin ----^nVida del admin: [%d]"szHealth)
    }



public 
command_event(idlevelcid)
{
    if(
g_event_started)
    {
        
client_print(idprint_chat"[AMXX] Un evento ya empezo, espera que termine la ronda.")
        return 
PLUGIN_HANDLED
    
}
    
    if(
get_user_flags(id) & level)
        
ChooseRandomPlayer()
    else
        
console_print(id"[AMXX] No tenes acceso a este comando, lo siento.")
    return 
PLUGIN_HANDLED
}
public 
user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedID ) || g_iLastChoosenPlayer == ID ) continue;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }
}
public 
player_var(ID)
{
    if(
g_iLastChoosenPlayer != ID) return PLUGIN_HANDLED;
        
    if(!
is_user_alive(ID) && !is_user_connected(ID)) return PLUGIN_HANDLED;
    
    
commands_on()
    
set_task(1.0"HUD"ID+TASK_HUD__"b")
    
cs_set_user_team(IDCS_TEAM_T)
    
set_user_maxspeed(IDSPEED//Le podes poner velocidad asi se hace mas divertido
    
set_user_health(ID50000// Le damos la vida 50k
    
set_user_gravityIDget_user_gravity(ID) - 0.50)
    
get_user_name(IDg_playername[ID], charsmax(g_playername[]))
    
client_print(0print_chat"[AMXX] Comenzo el evento Mata al administrador, %s tiene 50.000 de HP"g_playername[ID])
    
    return 
PLUGIN_HANDLED
}
public 
commands_on()
    
g_event_started true
    
public commands_off()
    
g_event_started false

public player_killed(victimattackershouldgib)
{
    if ( !(
g_event_started) || !get_pcvar_num(cvar_respawn) ||
    (
victim == attacker && !get_pcvar_num(cvar_selfkill))) return HAM_IGNORED;
    if(
g_iLastChoosenPlayer == victim)
    {
        
client_print(0print_chat"[AMXX] El admin murio, el evento termina.")
        
round_end()
        
set_hudmessage(5050255, -1.0, -1.006.02.0)
        
ShowSyncHudMsg(0hud"---- Evento Admin ----^nEl admin [%s] murio."g_playername[victim])
        return 
HAM_IGNORED
    
}
    
    
set_task(get_pcvar_float(cvar_tiempo), "respawn"victim TASK_RESPAWN)
    return 
HAM_IGNORED
}

ChooseRandomPlayer()
{
    new 
iPlayers[32], iNum
    get_players
(iPlayersiNum"ac")
    
    if( 
iNum <= || g_iAdminCount )
    {
        return 
iPlayers[0]
    }
    
    new 
iRandomNum random(iNum)
    new 
iRandomPlayer iPlayersiRandomNum ]
    
    if(!(
get_user_flags(iRandomPlayer) && ADMIN_BAN) )
    {
        
ChooseRandomPlayer()
        return 
PLUGIN_HANDLED
    
}
    
    if( 
iRandomPlayer == g_iLastChoosenPlayer )
    {
        
iPlayersiRandomNum ] = iPlayers[ --iNum ]
        
iRandomPlayer iPlayersrandom(iNum) ]
    }
    
    
g_iLastChoosenPlayer  iRandomPlayer
    player_var
(iRandomPlayer)
    
cs_set_user_team(iRandomPlayerCS_TEAM_T)
    
screenfade(01.51.550200200100);
    
user_var()
    
    return 
iRandomPlayer
}
stock acortar(numszNum[], len)
{
    if (
num <= -1000000 || num >= 1000000)
        
formatex(szNumlen"%.3fM"floatdiv(float(num), 1000000.0));
    else if (
num <= -1000 || num >= 1000)
        
formatex(szNumlen"%.2fk"floatdiv(float(num), 1000.0));
    else
        
num_to_str(numszNumlen);
}

stock screenfade(idFloat:fDurationFloat:fHoldtimeredgreenbluealpha)
{
    
message_begin(id MSG_ONE MSG_ALLg_ScreenFade, {000}, id);
    
write_short(floatround(4096.0 fDurationfloatround_round));
    
write_short(floatround(4096.0 fHoldtimefloatround_round));
    
write_short(4096);
    
write_byte(red);
    
write_byte(green);
    
write_byte(blue);
    
write_byte(alpha);
    
message_end();

    return 
PLUGIN_HANDLED;


Logs:
Cita:
  • v1.0.0 - [14/03/2016]
  • Creacion del plugin.

    v1.0.1 - [15/03/2016]
  • Agregado respawn.
  • Fix ChooseRandomPlayer.

    v1.0.3 - [19/03/2016]
  • Fix speed.
  • Fix round_end.

    v1.0.4 - [20/03/2016]
  • Agregado hud.
  • Publicacion del plugin.

    v1.0.5 - [21/03/2016]
  • Agregado speed con fw_PostThink. *OsweRR*
  • Fixeado disconnect admin. *Skylar*
  • Agregado contador de admin's.

    v1.0.6 - [29/03/2016]
  • Optimizado un poco mas.
  • Agregado pequeño screen fade al seleccionarse adm.

Tengan compasión conmigo Fap


Archivos adjuntos
.sma   Descargar AMXX / evento_admin_v1.0.5.sma (Tamaño: 5.77 KB / Descargas: 219)
.sma   Descargar AMXX / evento_admin_v1.0.6.sma (Tamaño: 6.21 KB / Descargas: 253)
Responder
#2
Esta 'buena' la idea, pero el codigo no tanto, si tengo tiempo te paso uno un poco mejorsito pacman
Responder
#3
(20/03/2016, 05:17 PM)kikizon2 escribió: Esta 'buena' la idea, pero el codigo no tanto, si tengo tiempo te paso uno un poco mejorsito pacman

Si podes decime que esta mal pacman
o que le puedo arreglar
Responder
#4
Pudiste haber usado client_PostThink para la velocidad del player Whatever

Ademas que pasara en dado caso que el admin se saliera del server pacman
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#5
Está bien el código, pero como dijo OsweRRR, falta esto..

Código PHP:
public client_disconnectid )
{
    if( 
g_iLastChoosenPlayer == id )
        
ChooseRandomPlayer( );


Responder
#6
(21/03/2016, 09:01 PM)Skylar escribió: Está bien el código, pero como dijo OsweRRR, falta esto..

Código PHP:
public client_disconnectid )
{
    if( 
g_iLastChoosenPlayer == id )
        
ChooseRandomPlayer( );

(21/03/2016, 01:16 PM)OsweRRR escribió: Pudiste haber usado client_PostThink para la velocidad del player Whatever

Ademas que pasara en dado caso que el admin se saliera del server pacman
Dale ahora edito, gracias no tenia idea de que podía hacerlo con client_PostThink

*edit* lo hice con fakemeta porque nose pacman pero ahi lo actualice.
Responder
#7
mames, ya me quitastes la idea, lo venia haciendo desde el año pasado Whatdone
[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
#8
(22/03/2016, 09:02 PM)totopizza escribió: mames, ya me quitastes la idea, lo venia haciendo desde el año pasado Whatdone

Ay no sabia Roflmao me lo pidieron no fue mi idea Whatdone
Igual te ahorre el trabajo Proud

*ëdit* supuestamente no anda el para que se pasen todos a un team y el adm elegido a otro
Responder
#9
(22/03/2016, 10:05 PM)Exertency escribió:
(22/03/2016, 09:02 PM)totopizza escribió: mames, ya me quitastes la idea, lo venia haciendo desde el año pasado Whatdone

Ay no sabia Roflmao me lo pidieron no fue mi idea Whatdone
Igual te ahorre el trabajo Proud

*ëdit* supuestamente no anda el para que se pasen todos a un team y el adm elegido a otro

Creo que seria asi:

Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( 
g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
        
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED

----------->
Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedid ) || g_iLastChoosenPlayer == ID ) continue;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }


Código PHP:
new g_playername33 ][ 34 
----------->
Código PHP:
new g_playername33 ][ 32 
Hide&SeekCrab
Responder
#10
(22/03/2016, 10:35 PM)Santjcs escribió:
(22/03/2016, 10:05 PM)Exertency escribió:
(22/03/2016, 09:02 PM)totopizza escribió: mames, ya me quitastes la idea, lo venia haciendo desde el año pasado Whatdone

Ay no sabia Roflmao me lo pidieron no fue mi idea Whatdone
Igual te ahorre el trabajo Proud

*ëdit* supuestamente no anda el para que se pasen todos a un team y el adm elegido a otro

Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( 
g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
        
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED

----------->
Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedid ) || g_iLastChoosenPlayer == ID ) continue;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }


Código PHP:
new g_playername33 ][ 34 
----------->
Código PHP:
new g_playername33 ][ 32 
En el if que me corregiste, no iria un return en vez de continue? Despues reviso testeo y actualizo gracias.
Responder
#11
Al parecer no actualizastes el código...
Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedID ) || g_iLastChoosenPlayer == ID ) return;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }

->
Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedID ) || g_iLastChoosenPlayer == ID ) continue;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }


Y lo otro que te comentó santi..
Código PHP:
new g_playername33 ][ 34 
->
Código PHP:
new g_playername33 ][ 32 
[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
#12
(22/03/2016, 10:56 PM)Exertency escribió:
(22/03/2016, 10:35 PM)Santjcs escribió:
(22/03/2016, 10:05 PM)Exertency escribió:
(22/03/2016, 09:02 PM)totopizza escribió: mames, ya me quitastes la idea, lo venia haciendo desde el año pasado Whatdone

Ay no sabia Roflmao me lo pidieron no fue mi idea Whatdone
Igual te ahorre el trabajo Proud

*ëdit* supuestamente no anda el para que se pasen todos a un team y el adm elegido a otro

Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( 
g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
        
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED

----------->
Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedid ) || g_iLastChoosenPlayer == ID ) continue;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }


Código PHP:
new g_playername33 ][ 34 
----------->
Código PHP:
new g_playername33 ][ 32 
En el if que me corregiste, no iria un return en vez de continue? Despues reviso testeo y actualizo gracias.

https://amxmodx-es.com/Thread-Solucionad...ing?page=2

Leé todos los comentarios de la página 2.
No se puede usar un return en un loop..



Buen aporte igual Nothingdohere

Responder
#13
(24/04/2016, 07:11 PM)Skylar escribió:
(22/03/2016, 10:56 PM)Exertency escribió:
(22/03/2016, 10:35 PM)Santjcs escribió:
(22/03/2016, 10:05 PM)Exertency escribió:
(22/03/2016, 09:02 PM)totopizza escribió: mames, ya me quitastes la idea, lo venia haciendo desde el año pasado Whatdone

Ay no sabia Roflmao me lo pidieron no fue mi idea Whatdone
Igual te ahorre el trabajo Proud

*ëdit* supuestamente no anda el para que se pasen todos a un team y el adm elegido a otro

Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( 
g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
        
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED

----------->
Código PHP:
public user_var()
{
    for (new 
ID ID <= g_maxplayers ID++ )
    {
        if( !
is_user_connectedid ) || g_iLastChoosenPlayer == ID ) continue;
        
        
set_task(1.0"HUD"ID+TASK_HUD__"b")
        
cs_set_user_team(IDCS_TEAM_CT)
    }


Código PHP:
new g_playername33 ][ 34 
----------->
Código PHP:
new g_playername33 ][ 32 
En el if que me corregiste, no iria un return en vez de continue? Despues reviso testeo y actualizo gracias.

https://amxmodx-es.com/Thread-Solucionad...ing?page=2

Leé todos los comentarios de la página 2.
No se puede usar un return en un loop..



Buen aporte igual Nothingdohere

Mira vos, que curioso no sabia, muchas gracias Gran sonrisa
toto ya lo habia editado solo que me quedo la duda del return y lo deje como estaba, gracias igual
Responder
#14
(24/04/2016, 07:11 PM)Skylar escribió: No se puede usar un return en un loop..

Claro que se puede Roflmao
Responder
#15
(24/04/2016, 08:09 PM)kikizon2 escribió:
(24/04/2016, 07:11 PM)Skylar escribió: No se puede usar un return en un loop..

Claro que se puede Roflmao

Bueno :'v, es lo que yo había entendido Roflmao Roflmao
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)