Pues con ver el nombre creo ya saben de que es , pos si no igual les digo,
Cuando el Jugador se conecta & desconecta aparece un mensaje diciendo el tipo de administrador y si no lo es dice sólo Usuario y tambien dice el rank que es y los rank que ya hay
Pienso en colocar que diga el Estado/Pais pero eso luego:3
Código PHP:
#include <amxmodx> #include <amxmisc> #include <colorchat> #include <csstats> /* GRACIAS A TODOS :) */
new const PLUGIN[][] = { "Player Connecting and Disconnecting + Rank", "1.0", "SoundBlaster" };
new const scon[] = "buttons/bell1.wav";
new const g_szPrefix[] = "[AMXX]";
public plugin_precache() { register_plugin(PLUGIN[0], PLUGIN[1], PLUGIN[2]);
precache_sound(scon); } public client_putinserver(id) { set_task(1.0, "JugadorEntrando", id); }
public JugadorEntrando(id) { new Jugador[32];get_user_name(id, Jugador, charsmax(Jugador))
new stats[ 8 ], body[ 8 ] new rank = get_user_stats( id, stats, body ) new rank_total = get_statsnum( )
if (equal(scon[strlen(scon)-4], ".mp3")) client_cmd(0,"mp3 play sound/%s", scon) else client_cmd(0,"spk %s", scon)
switch(get_user_flags(id)) { case ADMIN_LEVEL_B: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Dueño %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_LEVEL_C: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Encargado %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_LEVEL_D: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Administrador VIP %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_LEVEL_E: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Administrador Normal %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_USER: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Usuario %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) } }
public client_disconnect(id) { new Jugador[32];get_user_name(id, Jugador, charsmax(Jugador)) new stats[ 8 ], body[ 8 ] new rank = get_user_stats( id, stats, body ) new rank_total = get_statsnum( )
switch(get_user_flags(id)) { case ADMIN_LEVEL_B: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Dueño %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_LEVEL_C: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Encargado %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_LEVEL_D: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Administrador VIP %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_LEVEL_E: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Administrador Normal %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_USER: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Usuario %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) } }
Está es editada por Neeeeeeeeeel.- para el que la quiera
public plugin_precache(){ register_plugin("Player Connecting and Disconnecting + rank", "1.0", "SoundBlaster"); precache_sound(scon); }
public client_putinserver(id){ set_task(1.0, "JugadorEntrando",id+TASK_CONST); }
public JugadorEntrando(id){ id -= TASK_CONST; get_user_name(id, Jugador, charsmax(Jugador));
new stats[8], body[8]; new rank = get_user_stats(id, stats, body); new rank_total = get_statsnum();
if (equal(scon[strlen(scon)-4], ".mp3")){ client_cmd(0,"mp3 play sound/%s", scon); } else { client_cmd(0,"spk %s", scon); }
new flags = get_user_flags(id);
for (new i = 0; i < sizeof szFlags; i++){ if (flags & szFlags[i][FLAG]){ ChatColor(0, GREEN, "^x04%s^x01 El^x04 %s %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, szFlags[i][NAME], Jugador, rank, rank_total); break; } } }
public client_disconnect(id){ get_user_name(id,Jugador,charsmax(Jugador)); new stats[8], body[8]; new rank = get_user_stats(id, stats, body); new rank_total = get_statsnum();
new flags = get_user_flags(id);
for (new i = 0; i < sizeof szFlags; i++){ if (flags & szFlags[i][FLAG]){ ChatColor(0, GREEN, "^x04%s^x01 El^x04 %s %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, szFlags[i][NAME], Jugador, rank, rank_total) break; } } }
14/12/2015, 02:06 PM (Última modificación: 14/12/2015, 02:08 PM por kikizon2.)
Creo que la variable jugador es al pedo hacerla global ?) ya que igual obtienes el nombre en las 2 funciones, en vez de tantos "new" crealo en uno solo ( por funcion ) y en vez de tantos if ,else if, crea un switch.
EDIT: No todos tienen la libreria de "colorchat".
EDIT2:
Código PHP:
set_task(1.0, "JugadorEntrando") --> set_task(1.0, "JugadorEntrando", id )
(14/12/2015, 02:37 PM)BlackPower1 escribió: Una vez lo hice así, y cuando me conectaba lanzaba el mensaje las 4 veces por que tenia todas las letras por, eso lo cambie
14/12/2015, 02:50 PM (Última modificación: 14/12/2015, 02:51 PM por SoundBlaster.)
(14/12/2015, 02:48 PM)kikizon2 escribió:
(14/12/2015, 02:45 PM)Neeeeeeeeeel.- escribió:
(14/12/2015, 02:42 PM)kikizon2 escribió: Sera porque el player tenia todas las flags, o no hiciste la condicion correctamente...
Seguramente no le puso un "break" al loop.
El "break" seria para cuando tiene todas las flags, no ? si la condicion del loop solo se cumple una vez no entiendo porque mandaria 4 mensajes
Allí lo dije tenia todas las flags y mandaba 1 mensaje por cada tipo de admin por si no me entiendes, yo tengo admin_level_b y level_c y mandaba los dos mensajes, cuando me conectaba decia dueño y encargado ( es decir primero el mensaje de dueño y luego encargado )
Warning: Indeterminate array size in "sizeof" expression (symbol "") on line 44
Warning: Indeterminate array size in "sizeof" expression (symbol "") on line 60
Header size: 568 bytes
Code size: 3268 bytes
Data size: 2476 bytes
Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion
Total requirements: 22696 bytes
Warning: Indeterminate array size in "sizeof" expression (symbol "") on line 44
Warning: Indeterminate array size in "sizeof" expression (symbol "") on line 60
Header size: 568 bytes
Code size: 3268 bytes
Data size: 2476 bytes
Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion
Total requirements: 22696 bytes
Mira tengo un problema deje las partes de los nombres asi
Código PHP:
public JugadorEntrando(id) { new Jugador[32];get_user_name(id, Jugador, charsmax(Jugador))
new stats[ 8 ], body[ 8 ] new rank = get_user_stats( id, stats, body ) new rank_total = get_statsnum( )
if (equal(scon[strlen(scon)-4], ".mp3")) client_cmd(0,"mp3 play sound/%s", scon) else client_cmd(0,"spk %s", scon)
switch(get_user_flags(id)) { case ADMIN_LEVEL_E: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Dueño %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_KICK: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Admin %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_USER: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Usuario %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) } }
public client_disconnect(id) { new Jugador[32];get_user_name(id, Jugador, charsmax(Jugador)) new stats[ 8 ], body[ 8 ] new rank = get_user_stats( id, stats, body ) new rank_total = get_statsnum( )
switch(get_user_flags(id)) { case ADMIN_LEVEL_E: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Dueño %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_KICK: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Admin %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_USER: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Usuario %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) } }
Pero en el chat sale solo Admin normal :c Ni siquiera user :c
(14/12/2015, 06:12 PM)joluis81 escribió: Mira tengo un problema deje las partes de los nombres asi
Código PHP:
public JugadorEntrando(id) { new Jugador[32];get_user_name(id, Jugador, charsmax(Jugador))
new stats[ 8 ], body[ 8 ] new rank = get_user_stats( id, stats, body ) new rank_total = get_statsnum( )
if (equal(scon[strlen(scon)-4], ".mp3")) client_cmd(0,"mp3 play sound/%s", scon) else client_cmd(0,"spk %s", scon)
switch(get_user_flags(id)) { case ADMIN_LEVEL_E: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Dueño %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_KICK: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Admin %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_USER: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Usuario %s^x01 Se ha Conectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) } }
public client_disconnect(id) { new Jugador[32];get_user_name(id, Jugador, charsmax(Jugador)) new stats[ 8 ], body[ 8 ] new rank = get_user_stats( id, stats, body ) new rank_total = get_statsnum( )
switch(get_user_flags(id)) { case ADMIN_LEVEL_E: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Dueño %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_KICK: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Admin %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) case ADMIN_USER: ChatColor(0, GREEN, "^x04%s^x01 El^x04 Usuario %s^x01 Se ha Desconectado^x03 Su rank es^x04 %d^x03 de^x04 %d.", g_szPrefix, Jugador, rank, rank_total) } }
Pero en el chat sale solo Admin normal :c Ni siquiera user :c
Recuerda que el plugin va leer el acceso que este antes del otro acceso, es decir, ADMIN_KICK está primero que ADMIN_LEVEL_E , o sea, por eso sale Admin, no sé si me entendiste.
15/12/2015, 12:47 PM (Última modificación: 15/12/2015, 12:48 PM por hud.)
(14/12/2015, 02:52 PM)Neeeeeeeeeel.- escribió:
(14/12/2015, 02:48 PM)kikizon2 escribió:
(14/12/2015, 02:45 PM)Neeeeeeeeeel.- escribió:
(14/12/2015, 02:42 PM)kikizon2 escribió: Sera porque el player tenia todas las flags, o no hiciste la condicion correctamente...
Seguramente no le puso un "break" al loop.
El "break" seria para cuando tiene todas las flags, no ? si la condicion del loop solo se cumple una vez no entiendo porque mandaria 4 mensajes
Si está el break solo se puede mandar una vez. Cuando se cumple la condición, finaliza el loop.
Voy a explicarlo mejor, por si a alguien le quedo la duda..
break = romper.
Por lo tanto, su nombre lo indica, rompe una cadena(loop) de repeticiones(for).
Es útil, cuando ya hallamos lo que buscamos al iniciar tal loop y no nos interesa seguir continuándolo.
Acá les dejo un Plugin que hice para dar un ejemplo, algo vago, de como se puede implementar el break:
Código PHP:
#include <amxmodx>
new bool:getOwner; new bool:g_Owner[33];
new MaxPlayers;
public plugin_init() { register_plugin( "Break Owner", "0.1", "Pancho.-'+hud;Erater" );
else client_print(id, print_chat, "Ya existe un Owner.");
return PLUGIN_HANDLED; }
public EventNewRound() { client_print(0, print_chat, "Comienzo de Nueva Ronda, buscando si existe algun Owner..");
for( new i = 1; i <= MaxPlayers; i++ ) { if( !g_Owner[i] && i == MaxPlayers ) //Si ya llego al final del loop y no encontro un Owner. client_print(0, print_chat, "Busqueda finalizada, no existe ningun Owner.");