Comando de Evento Admin - Exertency - 20/03/2016
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
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_maxplayers , hud , g_event_started , g_iLastChoosenPlayer , g_ScreenFade , g_iAdminCount new cvar_respawn , cvar_tiempo , cvar_selfkill new g_playername [ 33 ][ 32 ] public plugin_init () { register_plugin ( PLUGIN , VERSION , AUTHOR ) 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( i = 1 ; i <= g_maxplayers ; i ++ ) { 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 ( id , pev_maxspeed , SPEED ) 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 ( 0 , print_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_RoundRespawn , id ) client_print ( id , print_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 ( health , szHealth , charsmax ( szHealth )) //new Name[32] if( id == g_iLastChoosenPlayer ) { set_hudmessage ( 255 , 255 , 255 , - 1.0 , 0.0 , 0 , 6.0 , 2.0 ) // Hud de color Azul ShowSyncHudMsg ( id , hud , "---- Evento Admin ----^nNombre: [%s]^nVida: [%d]" , g_playername [ id ], szHealth ) } else { set_hudmessage ( 255 , 255 , 255 , - 1.0 , 0.0 , 0 , 6.0 , 2.0 ) // Hud de color Azul ShowSyncHudMsg ( id , hud , "---- Evento Admin ----^nVida del admin: [%d]" , szHealth ) } } public command_event ( id , level , cid ) { if( g_event_started ) { client_print ( id , print_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 = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( ID ) || g_iLastChoosenPlayer == ID ) continue; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_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 ( ID , CS_TEAM_T ) set_user_maxspeed ( ID , SPEED ) //Le podes poner velocidad asi se hace mas divertido set_user_health ( ID , 50000 ) // Le damos la vida 50k set_user_gravity ( ID , get_user_gravity ( ID ) - 0.50 ) get_user_name ( ID , g_playername [ ID ], charsmax ( g_playername [])) client_print ( 0 , print_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 ( victim , attacker , shouldgib ) { 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 ( 0 , print_chat , "[AMXX] El admin murio, el evento termina." ) round_end () set_hudmessage ( 50 , 50 , 255 , - 1.0 , - 1.0 , 0 , 6.0 , 2.0 ) ShowSyncHudMsg ( 0 , hud , "---- 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 ( iPlayers , iNum , "ac" ) if( iNum <= 1 || g_iAdminCount < 1 ) { return iPlayers [ 0 ] } new iRandomNum = random ( iNum ) new iRandomPlayer = iPlayers [ iRandomNum ] if(!( get_user_flags ( iRandomPlayer ) && ADMIN_BAN ) ) { ChooseRandomPlayer () return PLUGIN_HANDLED } if( iRandomPlayer == g_iLastChoosenPlayer ) { iPlayers [ iRandomNum ] = iPlayers [ -- iNum ] iRandomPlayer = iPlayers [ random ( iNum ) ] } g_iLastChoosenPlayer = iRandomPlayer player_var ( iRandomPlayer ) cs_set_user_team ( iRandomPlayer , CS_TEAM_T ) screenfade ( 0 , 1.5 , 1.5 , 50 , 200 , 200 , 100 ); user_var () return iRandomPlayer } stock acortar ( num , szNum [], len ) { if ( num <= - 1000000 || num >= 1000000 ) formatex ( szNum , len , "%.3fM" , floatdiv ( float ( num ), 1000000.0 )); else if ( num <= - 1000 || num >= 1000 ) formatex ( szNum , len , "%.2fk" , floatdiv ( float ( num ), 1000.0 )); else num_to_str ( num , szNum , len ); } stock screenfade ( id , Float : fDuration , Float : fHoldtime , red , green , blue , alpha ) { message_begin ( id ? MSG_ONE : MSG_ALL , g_ScreenFade , { 0 , 0 , 0 }, id ); write_short ( floatround ( 4096.0 * fDuration , floatround_round )); write_short ( floatround ( 4096.0 * fHoldtime , floatround_round )); write_short ( 4096 ); write_byte ( red ); write_byte ( green ); write_byte ( blue ); write_byte ( alpha ); message_end (); return PLUGIN_HANDLED ; }
Logs:
Tengan compasión conmigo
RE: Comando de Evento Admin - kikizon2 - 20/03/2016
Esta 'buena' la idea, pero el codigo no tanto, si tengo tiempo te paso uno un poco mejorsito
RE: Comando de Evento Admin - Exertency - 20/03/2016
(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
Si podes decime que esta mal
o que le puedo arreglar
RE: Comando de Evento Admin - OsweRRR - 21/03/2016
Pudiste haber usado client_PostThink para la velocidad del player
Ademas que pasara en dado caso que el admin se saliera del server
RE: Comando de Evento Admin - Skylar - 21/03/2016
Está bien el código, pero como dijo OsweRRR , falta esto..
Código PHP:
public client_disconnect ( id ) { if( g_iLastChoosenPlayer == id ) ChooseRandomPlayer ( ); }
RE: Comando de Evento Admin - Exertency - 21/03/2016
(21/03/2016, 09:01 PM) Skylar escribió: Está bien el código, pero como dijo OsweRRR , falta esto..
Código PHP:
public client_disconnect ( id ) { if( g_iLastChoosenPlayer == id ) ChooseRandomPlayer ( ); }
(21/03/2016, 01:16 PM) OsweRRR escribió: Pudiste haber usado client_PostThink para la velocidad del player
Ademas que pasara en dado caso que el admin se saliera del server Dale ahora edito, gracias no tenia idea de que podía hacerlo con client_PostThink
*edit* lo hice con fakemeta porque nose pero ahi lo actualice.
RE: Comando de Evento Admin - totopizza - 22/03/2016
mames, ya me quitastes la idea, lo venia haciendo desde el año pasado
RE: Comando de Evento Admin - Exertency - 22/03/2016
(22/03/2016, 09:02 PM) totopizza escribió: mames, ya me quitastes la idea, lo venia haciendo desde el año pasado
Ay no sabia me lo pidieron no fue mi idea
Igual te ahorre el trabajo
*ëdit* supuestamente no anda el para que se pasen todos a un team y el adm elegido a otro
RE: Comando de Evento Admin - Santjcs - 22/03/2016
(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
Ay no sabia me lo pidieron no fue mi idea
Igual te ahorre el trabajo
*ë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 = 1 ; ID <= g_maxplayers ; ID ++ ) { if( g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED ; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) return PLUGIN_HANDLED } return PLUGIN_HANDLED }
----------->
Código PHP:
public user_var () { for (new ID = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( id ) || g_iLastChoosenPlayer == ID ) continue; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) } }
Código PHP:
new g_playername [ 33 ][ 34 ]
----------->
Código PHP:
new g_playername [ 33 ][ 32 ]
RE: Comando de Evento Admin - Exertency - 22/03/2016
(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
Ay no sabia me lo pidieron no fue mi idea
Igual te ahorre el trabajo
*ë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 = 1 ; ID <= g_maxplayers ; ID ++ ) { if( g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED ; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) return PLUGIN_HANDLED } return PLUGIN_HANDLED }
----------->
Código PHP:
public user_var () { for (new ID = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( id ) || g_iLastChoosenPlayer == ID ) continue; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) } }
Código PHP:
new g_playername [ 33 ][ 34 ]
----------->
Código PHP:
new g_playername [ 33 ][ 32 ]
En el if que me corregiste, no iria un return en vez de continue? Despues reviso testeo y actualizo gracias.
RE: Comando de Evento Admin - totopizza - 24/04/2016
Al parecer no actualizastes el código...
Código PHP:
public user_var () { for (new ID = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( ID ) || g_iLastChoosenPlayer == ID ) return; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) } }
->
Código PHP:
public user_var () { for (new ID = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( ID ) || g_iLastChoosenPlayer == ID ) continue; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) } }
Y lo otro que te comentó santi..
Código PHP:
new g_playername [ 33 ][ 34 ]
->
Código PHP:
new g_playername [ 33 ][ 32 ]
RE: Comando de Evento Admin - Skylar - 24/04/2016
(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
Ay no sabia me lo pidieron no fue mi idea
Igual te ahorre el trabajo
*ë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 = 1 ; ID <= g_maxplayers ; ID ++ ) { if( g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED ; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) return PLUGIN_HANDLED } return PLUGIN_HANDLED }
----------->
Código PHP:
public user_var () { for (new ID = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( id ) || g_iLastChoosenPlayer == ID ) continue; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) } }
Código PHP:
new g_playername [ 33 ][ 34 ]
----------->
Código PHP:
new g_playername [ 33 ][ 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-Solucionado-Problema-con-set-user-rendering?page=2
Leé todos los comentarios de la página 2.
No se puede usar un return en un loop..
Buen aporte igual
RE: Comando de Evento Admin - Exertency - 24/04/2016
(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
Ay no sabia me lo pidieron no fue mi idea
Igual te ahorre el trabajo
*ë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 = 1 ; ID <= g_maxplayers ; ID ++ ) { if( g_iLastChoosenPlayer == ID ) return PLUGIN_HANDLED ; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) return PLUGIN_HANDLED } return PLUGIN_HANDLED }
----------->
Código PHP:
public user_var () { for (new ID = 1 ; ID <= g_maxplayers ; ID ++ ) { if( ! is_user_connected ( id ) || g_iLastChoosenPlayer == ID ) continue; set_task ( 1.0 , "HUD" , ID + TASK_HUD , _ , _ , "b" ) cs_set_user_team ( ID , CS_TEAM_CT ) } }
Código PHP:
new g_playername [ 33 ][ 34 ]
----------->
Código PHP:
new g_playername [ 33 ][ 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-Solucionado-Problema-con-set-user-rendering?page=2
Leé todos los comentarios de la página 2.
No se puede usar un return en un loop..
Buen aporte igual
Mira vos, que curioso no sabia, muchas gracias
toto ya lo habia editado solo que me quedo la duda del return y lo deje como estaba, gracias igual
RE: Comando de Evento Admin - kikizon2 - 24/04/2016
(24/04/2016, 07:11 PM) Skylar escribió: No se puede usar un return en un loop..
Claro que se puede
RE: Comando de Evento Admin - Skylar - 25/04/2016
(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
Bueno :'v, es lo que yo había entendido