Bueno, como se vio el tema de los rangos...
voy a hacer mi primer aporte en el caso de ser un "tutorial" :$
Para crear rangos, hice 2 maneras...
Todo explicado en el code
Cualquier cosa, bugs, bla bla... digan y arreglo.
PHP Code:
/* Esto es un ejemplo
-- Por supuesto, esta pensado para los que ya tienen niveles creados
-- Reemplazar variable_de_nivel por su variable de nivel que hallan creado ustds
-- Con eso, y adaptarlo a lo que ustedes quieran, tendria que andar
/\ FORMA 1 /\
*/
// Includes
#include <amxmodx>
#include <amxmisc>
// Creditos y pelotudeces
#define PLUGIN "Tuto Rangos"
#define VERSION "1.0"
#define AUTHOR "Manu"
// Ni ganas de explicar :P Jaja
// Creamos la variable que contiene los nombres de los rangos...
new szRango[][] = {
"",
"Recluta",
"Cabo",
"Jefe",
"General",
"Comandante"
}
// La cantidad de niveles necesarios para avanzar de un rango a otro
new gRangoNecesario[] = {
0,
5,
7,
13,
17,
32
}
// Creamos otra variable mas la cual nos va a servir para definir el rango
new gRango[33]
// Iniciamos el plugin
public plugin_init()
{
// Registramos..
register_plugin(PLUGIN, VERSION, AUTHOR)
// Registramos el evento DeathMsg, para checkearle al atacante el rango
register_event("DeathMsg","event_death","a")
// Registramos /rango para despues mostrarselo
register_clcmd("say /rango","show_rango")
}
// Evento del deathmsg
public event_death()
{
// Creamos una nueva variable que contendra el id del atacante
new gAttacker = read_data(1)
// Con este while, estamos haciendo esto:
// Verificamos si la variable de nivel es mayor a los niveles necesarios para subir de rango
// Si es asi, y si el rango es menor a 5, subimos. El si es menor a 5, es porque si hay un "sexto"
// Este, se buguea, al no haber sexto
while(variable_de_nivel >= gRangoNecesario[gRango[gAttacker]] && gRango[gAttacker] < 5)
{
// Si se cumple, aumentamos el rango
gRango[gAttacker]++
// Le imprimimos un msj de que subio de rango :$
client_print(gAttacker,print_center,"Has subido de RANGO")
}
}
// Llamada por el /rango
public show_rango(index)
{
// Le printeamos el rango actual
client_print(index,print_chat,"[AMXX] Tu rango es: %s",szRango[gRango[index]])
// Es decir, szRango[el rango actual del user]
// Pongamosle que mi rango es 4, me saltaria el string: General
return PLUGIN_HANDLED
}
// Tambien, el rango lo tienen que checkear antes de mostrarselo por primera vez, porque sino el gRango esta en 0
// Esto equivaldria a este resultado: [Tu rango es: ] es decir, nada :P
FORMA 2
PHP Code:
/* Esto es un ejemplo
-- Por supuesto, esta pensado para los que ya tienen niveles creados
-- Reemplazar variable_de_nivel por su variable de nivel que hallan creado ustds
-- Con eso, y adaptarlo a lo que ustedes quieran, tendria que andar
-- En este, se usa directamente multiplos de la variable del level
/\ FORMA 2 /\
*/
// Includes... :O
#include <amxmodx>
#include <amxmisc>
// Los creditos, la version y el name pA'
#define PLUGIN "Tuto Rangos"
#define VERSION "1.0"
#define AUTHOR "Manu"
/* Aqui, creamos una variable para los nombres de los rangos
-- En la cual, insertamos los nombres jOjO */
new szRango[][] = {
"Recluta",
"Cabo",
"Jefe",
"General",
"Comandante"
}
// Inicia el plugin...
public plugin_init()
{
// Lo registramos
register_plugin(PLUGIN, VERSION, AUTHOR)
// Registramos el comando /rango para que cuando lo escriba, se lo mostremos posteriormente
register_clcmd("say /rango","show_rango")
}
// Funcion llamada por el /rango
public show_rango(index)
{
// Le enviamos un print diciendole su rango
client_print(index,print_chat,"[AMXX] Tu rango es: %s",szRango[variable_de_nivel/12])
/*
Aca, se usa esta logica:
Si vos tenes el nivel en 1, esto vendria a ser 1 dividido 12 que daria 0,08
Pero si vos tenes nivel 15, seria 15 dividido 15, lo cual es 1..
Y como observamos, quedaria el rango 1...
*/
return PLUGIN_HANDLED
}
// Como se abran dado cuenta, si yo tengo nivel 72, Esto se buguearia ya que 72 / 12 6
// Y no existe el rango 6, para ello, yo ponia los rangos dificiles... pero de todos modos
// Con un poquito mas de logica, puedes hacerlo sin bugs...
/*
client_print(index,print_chat,"[AMXX] Tu rango es: %s",variable_de_nivel > 60 ? szRangos[4]:szRangos[variable_de_nivel/12])
Aca lo que hariamos es, si el nivel es mayor a 60, ya no tenemos porque dividir el level para sacar el rango
Ya que a los 72 se buguearia, entonces se lo dejamos en el 4... el cual seria "Comandante"
*/
EDIT:
Me olvide de aclarar en el primer caso, que si se agregarian mas rangos, se tendrian que agregar mas:
Nombre del rango
Nivel requerido para el rango
Y, donde esta el while, aumentar la forma de que no se buguee. Es decir, enves de un 5, un 6, y asi...
Lo que no se, es si sirve con un sizeof (szRangos), pero we.
Tambien, pueden checkear si el nivel alcanzo el maximo de rangos, se los djeo a su eleccion
Lo mismo para el caso 2, si agregan mas, ponen mas. Si no entendieron es porque no saben matematicas D:
Yo la desaprobe con un 6 fuck u_U
__________________