Enviar respuesta 
[TUT] Crear Clases
Autor Mensaje
Evil Spiret Sin conexión
Miembro Sr.


Mensajes: 578
Registro en: Dec 2013
Reputación: 12
Mensaje: #1
[TUT] Crear Clases
Hola chicos estoy usando un sistema de clases en "mi" HNS y bueno, les vengo a dejar una guía para que puedan tener clases en su MOD ; esto es adaptable a todo...
Lo extraje de un deathrun de pozejk y muy facil mente lo adapte al HNS

Bueno ; me puse las pilas y explique casi casi todo. ya es un TUTO

Aviso: Este sistema es por lvls ; es decir te pide niveles para poder elegir las clases

Comencemos

Vamos a usar el
Código PHP:
#include <fun> 

Cuando estaba explicando me di cuenta de que me olvide de las variables
Código PHP:
new g_class33 ]; // Hacemos una variable que contenga las clases    
new g_next_class33 ]; // Esta variable es para cuando elige una clase 

Abajo de los includes
Código PHP:
const Keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9); // Definimos esto para usar en el menu 

Debajo de los includes ponemos
Código PHP:
enum // Hacemos una enumeracion para lo siguiente
{
    
CLASE_NVL 0// Definimos su valor en 0
    
CLASE_VIDA,
    
CLASE_ARMOR
// Aca se pueden definir muchas cosas mas por ejemplo la gravedad, velocidad , danio, etc ; Siempre recuerden que el ultimo va sin la ","
}

new 
g_clases_name[][] = // Aca contenemos todos los nombres de las clases
{
    
"Iniciado",
    
"Experto",
    
"Avanzado",
    
"Elite",
    
"Ninja",
    
"Mafioso" // Recuerden que el ultimo va sin la ","
// Para agregar una clase tienen que poner un nombre y despues setearle el LVL , VIDA y CHALECO.
}

new const 
g_clases[][] = // Esta constante contiene los datos para las enumeraciones
{
    { 
0715303540 },                // Aca definimos NIVEL para cada clase
    
100125150175350375 },            // Aca definimos VIDA para cada clase
    
0100125150175200 }            // Aca definimos CHALECO para cada clase


En fw_playerspawn
Código PHP:
if (g_next_class[id] != -1)
    {
        
g_class[id] = g_next_class[id]
        
g_next_class[id] = -1
    
}
    
    
set_user_armoridget_user_armorid ) + g_clases[CLASE_ARMOR][g_classid ]] ) // Aca decimos que el chaleco se va a definir mediante una enumeracion , en este caso CLASE ARMOR
    
set_user_healthidget_user_healthid ) + g_clases[CLASE_VIDA][g_classid ]] - 100 // Aca decimos que la vida se va a definir mediante otra enum, en este caso CLASE_VIDA
    
// Para el que no entiende por que le ponemos g_clases adelante en todas las enums que uso ; es por que g_clases es la constante que contiene los datos de los lvl , vida , etc


En PutinServer
Código PHP:
g_class[plr] = // Decimos que cuando entra al server no tendrá clases elegidas
    
g_next_class[plr] = -// plr es el index, lo cambian por el que tengan ustedes 

y al final del code
Código PHP:
public show_clases(idpage// Hacemos un public para el menu que mostramos
{
    static 
szText350 ], szNum]
    
// Le damos celdas para los caracteres del menu
    
        
new menu menu_create"\wClases Sistem: ^n\dSeleccione su clase""clases_handle")
    
// Creamos el menu en la variable "menu" con un titulo
    
     
for (new 0sizeof(g_clases_name); i++)
    {
        
num_to_str(i+1szNum3)
        if (
g_nivelid ] >= g_clasesCLASE_NVL ][ ]) // Si es mayor o igual al nivel , se puede elegir la clase
        
{
            if (
g_class[id] == i// Creo que esto es obvio
                
formatex(szText554"\d%s \y[ EQUIPADO ]"g_clases_name]) // Si ya eligió clase , le ponemos EQUIPADO mediante la variable g_clases_name
                   // entre corchetes la "i" , por lo que definimos arriba
            
                               
else if (== g_next_classid ]) // Aca pasa lo mismo
                
formatex(szText554"\w%s \d[ POR EQUIPARSE ]"g_clases_name]) // Esto es cuando elige la clase y esta por elegirse en la próxima ronda
            
            
else if (g_classid ])
                
formatex(szText554"\w%s \y[ NUEVO ]"g_clases_name])// Si desbloquea la clase de ponemos esto
            
            
else
                
formatex(szText554"\w%s "g_clases_name] )
        }
        else
            
formatex(szText554"\d%s \r[ BLOQUEADO ]"g_clases_name], g_clasesCLASE_NVL ][ ]) // Cuando no tiene el nivel suficiente mediante "g_clases[ CLASE_NVL ]"
        
        
menu_additem(menuszTextszNum)
    }
    
    
menu_setpropmenuMPROP_BACKNAME"Anterior" )
    
menu_setpropmenuMPROP_NEXTNAME"Siguiente^n" )
    
menu_setpropmenuMPROP_EXITNAME"\yAtras" )
    
    
menu_display(idmenupage)
}

public 
clases_handle(idMenuitem)
{
    
    static 
iName200 ], iAccessiData], iCallbackkey
    
    menu_item_getinfo
MenuitemiAccessiData3iName199iCallback)

    
key str_to_numiData )-// Esto lo usaremos mas abajo
    
    
if (g_nivelid ] >= g_clasesCLASE_NVL ][ key ]) // Si el lvl es mayor o igual se puede elegir la clase
    
{
        
// Todos los hns_print lo pueden cambiar por CHATCOLOR o client_print, recuerden que para usar el chatcolor deben agregar el include
                 
hns_print(id" !yTu proxima clase sera !g%s"g_clases_name[key]) // Mandamos un mensaje con el nombre de su siguiente clase mediante "g_clases_name"
        
hns_print(id" !yVida !g%d !yChaleco !g%d"g_clases[CLASE_VIDA][key], g_clases[CLASE_ARMOR][key])// Le mandamos un mensaje dando info de los stats de las clases mediante "g_clases[CLASE_VIDA] y g_clases[CLASE_ARMOR]"
        
        
g_next_classid ] = key // Esto se entiende
        
        
if ( str_to_numiData ) <= // Aca lo usamos...
            
show_clasesid// Si no pudo elegir la clase , se abre el menu
        
else if ( str_to_numiData ) > 28 )
            
show_clasesid)
        else if ( 
str_to_numiData ) > 21 )
            
show_clasesid)
        else if ( 
str_to_numiData ) > 14 )
            
show_clasesid)
        else if ( 
str_to_numiData ) > )
            
show_clasesid)
        return 
PLUGIN_HANDLED
    
}
    else
    {
        
hns_print(id"yNesesitas ser nivel !g%d !ypara esta clase"g_clasesCLASE_NVL ][ key ]) // Mandamos mensaje cuando no tiene niveles suficiente para elgir mediante "g_clases[ CLASE_NVL ]"
        
        
if ( str_to_numiData ) <= )
            
show_clasesid)
        else if ( 
str_to_numiData ) > 28 )
            
show_clasesid)
        else if ( 
str_to_numiData ) > 21 )
            
show_clasesid)
        else if ( 
str_to_numiData ) > 14 )
            
show_clasesid)
        else if ( 
str_to_numiData ) > )
            
show_clasesid)
        return 
PLUGIN_HANDLED
    
}
    
    return 
PLUGIN_HANDLED


y si quieren abrir el menu mediante un comando...
en plugin_init
Código PHP:
    register_clcmd"say /class""show_clases" ); // Decimos que al poner /class se abre el menu , mediante "SHOW_CLASES" que es public del menu
register_clcmd("say_team /class""show_clases"); // Aca hacemos que si el usuario toca la letra "U" en ves de "Y" y escriba /class , el menu tambien se abre 

Bueno , si falta algo avisen... no lo testie del todo, ando sin tiempo.

PD ; Cuando pueda le agrego la gravedad, la velocidad y daño... pero no es nada complicado asi que...

SALUDOS
(Este mensaje fue modificado por última vez en: 04/09/2014 08:44 PM por Evil Spiret.)
04/09/2014 05:06 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Side^^ Sin conexión
Miembro Sr.


Mensajes: 555
Registro en: Jul 2014
Reputación: 33
Mensaje: #2
RE: [GUIA] Crear Clases
Es bastante interesante pero si puedes dar mas explicaciones ya que hay gente que hara un C&P sin entender lo que hace..

Pero por lo demas me ha gustado Gracias^^

Image
04/09/2014 06:12 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Evil Spiret Sin conexión
Miembro Sr.


Mensajes: 578
Registro en: Dec 2013
Reputación: 12
Mensaje: #3
RE: [GUIA] Crear Clases
Si , en cuanto pueda explico todo.
saludos

Edit ; listo Side, code explicado.

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
(Este mensaje fue modificado por última vez en: 04/09/2014 07:50 PM por Evil Spiret.)
04/09/2014 06:43 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
CSAxel Sin conexión
Miembro Héroe


Plugin developer 1k
Mensajes: 1,837
Registro en: Dec 2013
Reputación: 40
Mensaje: #4
RE: [TUT] Crear Clases
Si miras aquí xD
https://amxmodx-es.com/Thread-Crear-clas...a-distinta

Es para no hacer tantos aportes o tutoriales un poco al dope con un mismo sistema.
07/09/2014 03:21 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
totopizza Sin conexión
http://www.MexicanServers.com


Donador Forum supporter Trebol verde Trebol de oro 1k
Mensajes: 2,094
Registro en: Mar 2014
Reputación: 40
Mensaje: #5
RE: [TUT] Crear Clases
para mi opinión esta bueno el tuto..
PD: creo que el de CSAxel esta un poco mejor

Image

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)
07/09/2014 04:26 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Evil Spiret Sin conexión
Miembro Sr.


Mensajes: 578
Registro en: Dec 2013
Reputación: 12
Mensaje: #6
RE: [TUT] Crear Clases
No habia visto ese e.e ; sino ni me gasto.
No estoy mucho en la seccion tutoriales...

Bastante similar la forma jaja

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
07/09/2014 09:48 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Lordie Sin conexión
Miembro


Mensajes: 113
Registro en: Mar 2015
Reputación: 0
Mensaje: #7
RE: [TUT] Crear Clases
Hola, soy muy novato en esto. Tengo unos cuantos problemas. A la hora de compilarlo, me sale este error:

Error: Invalid function or declaration on line 40
Error: Symbol already defined: "set_user_armor" on line 46
Error: Symbol already defined: "set_user_health" on line 49
Error: Invalid function or declaration on line 52
Error: "sizeof" operator is invalid on "function" symbols on line 66
Warning: Redundant code: constant expression is zero on line 66
Error: Undefined symbol "g_nivel" on line 69
Warning: Expression has no effect on line 69
Error: Expected token: ";", but found "]" on line 69
Error: Invalid expression, assumed zero on line 69
Error: Too many error messages on one line on line 69

He solucionado los que tenia, pero estos no sé como arreglarlos.
10/03/2015 11:36 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
hud Sin conexión
Miembro Destacado


Mensajes: 798
Registro en: Jan 2014
Reputación: 20
Mensaje: #8
RE: [TUT] Crear Clases
(10/03/2015 11:36 AM)Lordie escribió:  Hola, soy muy novato en esto. Tengo unos cuantos problemas. A la hora de compilarlo, me sale este error:

Error: Invalid function or declaration on line 40
Error: Symbol already defined: "set_user_armor" on line 46
Error: Symbol already defined: "set_user_health" on line 49
Error: Invalid function or declaration on line 52
Error: "sizeof" operator is invalid on "function" symbols on line 66
Warning: Redundant code: constant expression is zero on line 66
Error: Undefined symbol "g_nivel" on line 69
Warning: Expression has no effect on line 69
Error: Expected token: ";", but found "]" on line 69
Error: Invalid expression, assumed zero on line 69
Error: Too many error messages on one line on line 69

He solucionado los que tenia, pero estos no sé como arreglarlos.

Abri un tema en la seccion scripting, y postea tu codigo ahi. Y asi te vamos a poder ayudar.

Por el momento lo que veo ahi es que, te faltan declarar variables, algun error con algun parentesis, y mas cosas..

Pero hace lo que te dije, para que podamos darte soporte.

10/03/2015 12:30 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
matrix123 Sin conexión
Miembro Destacado


1k
Mensajes: 1,441
Registro en: Oct 2014
Reputación: 16
Mensaje: #9
RE: [TUT] Crear Clases
(10/03/2015 11:36 AM)Lordie escribió:  Hola, soy muy novato en esto. Tengo unos cuantos problemas. A la hora de compilarlo, me sale este error:

Error: Invalid function or declaration on line 40
Error: Symbol already defined: "set_user_armor" on line 46
Error: Symbol already defined: "set_user_health" on line 49
Error: Invalid function or declaration on line 52
Error: "sizeof" operator is invalid on "function" symbols on line 66
Warning: Redundant code: constant expression is zero on line 66
Error: Undefined symbol "g_nivel" on line 69
Warning: Expression has no effect on line 69
Error: Expected token: ";", but found "]" on line 69
Error: Invalid expression, assumed zero on line 69
Error: Too many error messages on one line on line 69

He solucionado los que tenia, pero estos no sé como arreglarlos.

ah pero sos el genio de los copy&paste ! ni los includes pusiste

PD:

Código PHP:
enum // Hacemos una enumeracion para lo siguiente
{
    
CLASE_NVL 0// Definimos su valor en 0
    
CLASE_VIDA,
    
CLASE_ARMOR
// Aca se pueden definir muchas cosas mas por ejemplo la gravedad, velocidad , danio, etc ; Siempre recuerden que el ultimo va sin la ","


--->

Código PHP:
enum // Hacemos una enumeracion para lo siguiente
{
    
CLASE_NVL 0// Definimos su valor en 0
    
CLASE_VIDA,
    
CLASE_ARMOR,

    
CLASE_NIVEL
// Aca se pueden definir muchas cosas mas por ejemplo la gravedad, velocidad , danio, etc ; Siempre recuerden que el ultimo va sin la ","


Código PHP:
new const g_clases[][] = // Esta constante contiene los datos para las enumeraciones
{
    { 
0715303540 },                // Aca definimos NIVEL para cada clase
    
100125150175350375 },            // Aca definimos VIDA para cada clase
    
0100125150175200 }            // Aca definimos CHALECO para cada clase

--->

Código PHP:
new const g_clases[CLASE_NIVEL][] = // Esta constante contiene los datos para las enumeraciones
{
    { 
0715303540 },                // Aca definimos NIVEL para cada clase
    
100125150175350375 },            // Aca definimos VIDA para cada clase
    
0100125150175200 }            // Aca definimos CHALECO para cada clase


(Este mensaje fue modificado por última vez en: 10/03/2015 01:36 PM por matrix123.)
10/03/2015 01:35 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Evil Spiret Sin conexión
Miembro Sr.


Mensajes: 578
Registro en: Dec 2013
Reputación: 12
Mensaje: #10
RE: [TUT] Crear Clases
Lordie , no revivas solo para eso.
Hace un thread y pone ahi todo lo que necesitas.

Código PHP:
ErrorSymbol already defined"set_user_armor" on line 46 // Esto ya lo tenes definido
ErrorSymbol already defined"set_user_health" on line 49 // Esto igual
ErrorUndefined symbol "g_nivel" on line 69 // Crea la variable g_nivel 

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
(Este mensaje fue modificado por última vez en: 15/03/2015 05:06 PM por Evil Spiret.)
15/03/2015 05:00 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS