Enviar respuesta 
[Beta] Mi Primer Plugin
Autor Mensaje
alan_el_more Sin conexión
Miembro Destacado


Plugin developer
Mensajes: 986
Registro en: Oct 2013
Reputación: 16
Mensaje: #1
[Beta] Mi Primer Plugin
IMPORTANTE! Antes que nada quiero decirles que los que quieran aprender, no lo lean ya que no está terminado porque puede ser que tenga errores en las explicaciones o agregarle algo que me faltó.

Si hay alguna correción para hacerme o sugerirme que agregue algo, comentalo así nos ayudamos entre todos

Código PHP:
// 'Mi Primer Plugin' hecho por 'alan_el_more' para 'amxmodx-es.com'
// Perfil: http://amxmodx-es.com/User-alan-el-more
// Twitter: https://twitter.com/alan_floresta94

// En las siguiente líneas agregaremos los 'includes'
// Estos incluyen distintos tipos de funciones que podremos agregar
// Estos 'includes' se alojan en la carpeta 'cstrike/addons/amxmodx/scripting/include'
// Estos usan la extension 'inc' (Ejemplo: 'amxmodx.inc')
#include <amxmodx>
#include <fun>

// Creamos una 'constante' en el cual le establecemos la cantidad de vida extra que recibirá
// el jugador al escribir en el say '/vida'
// Como bien lo dice el nombre, su valor es constante y no puede ser modificado bajo ningún
// aspecto, para eso existen las 'variables'
const CantidadVida 100

// Existen dos grupos de funciones: forwards y natives
// Los 'forwards' son llamados por ciertos eventos (Por medio de otro plugin o un módulo)
// Las 'natives' son ejecutadas dentro de los 'forwards'

// plugin_init() es un 'forward' ya que es llamado básicamente al inicio de un mapa
public plugin_init()
{
    
// register_plugin() es una 'native' ya que puede ser ejecutado dentro de un forward
    // Con esto, registramos los datos del plugin y para eso son los 'parámetros'
    // Como verán, usamos tres 'parámetros':
    // Primer parámetro:    "Mi Primer Plugin"    // Nombre del plugin
    // Segundo parámetro:    "1.0"            // Versión del plugin
    // Tercer parámetro:    "alan_el_more"        // Autor del plugin
    // Los parámetros son separados por una coma mientras que no esten dentro de las comillas
    
register_plugin("Mi Primer Plugin""1.0""alan_el_more")
    
    
// Registramos el comando que ejecuta un jugador, en este caso, cuando escribe en
    // el say /vida, llama a la función 'ComandoVida'
    
register_clcmd("say /vida""ComandoVida")
}

// Agregamos el 'forward' que es llamado cuando el jugador escribe en el say /vida,
// para ejecutar nuestras 'natives' y otras cosas, en este caso, agregarle vida extra
// El id es el 'índice del jugador' el cual es un número y que identifica a cada jugador
public ComandoVida(id)
{
    
// if() es una declaración que significa 'si...'
    // En este caso vamos a comprobar que el jugador este vivo
    // is_user_alive() devuelve 1 o 0 dependiendo si está vivo o muerto respectivamente
    // Entonces esto se leería como: 'Si el jugador está vivo...'
    
if(is_user_alive(id))
    {
        
// Si está vivo...
        // Le establecemos la vida del jugador ya que 'set_user_health' hace eso
        // Pero si hacemos algo así: 'set_user_health(id, 100)' le estaríamos dando
        // 100 de vida sin importar la vida que tenemos y eso no es lo que queremos
        // Para eso usamos otra native 'get_user_health()' que devuelve la cantidad
        // de vida que tenemos
        // Entonces le establecemos 'la vida actual del jugador' + CantidadVida
        // Ejemplo: 58 + 100 = 158
        
set_user_health(idget_user_health(id) + CantidadVida)
        
        
// Le mostramos un mensaje donde le avisamos al jugador que ha recibido correctamente
        // la vida extra.
        // client_print() debe usar tres (requeridos obligatoriamente) o más parámetros
        // Primer parámetro: Indice del jugador al que le mostramos el mensaje
        // Segundo parámetro: Tipo de mensaje (En este caso, en el chat)
        // Tercer parámetro: Mensaje a mostrar
        // Como verán, hay un símbolo ('%d') que reemplaza la cantidad de vida que recibimos
        // Para eso creamos la constante 'CantidadVida', para facilitar la edición de la cantidad
        // Lo que hace '%d' es mostrar el siguiente parámetro (CantidadVida)
        // Entonces nos aparecerá un mensaje como 'Has recibido 100 de vida extra'
        
client_print(idprint_chat"Has recibido %d de vida extra"CantidadVida)
    }
    else 
// Si no [está vivo]...
    
{
        
// Le avisamos que no le podemos dar vida extra
        
client_print(idprint_chat"Lo siento pero debes estar vivo para recibir vida extra")
    }
    
    
// Opcional:
    // Esto nos sirve para que no muestre que el jugador ha escrito /vida en el say
    // Esto se explicará en otros tutoriales
    
return PLUGIN_HANDLED



Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
(Este mensaje fue modificado por última vez en: 10/11/2013 08:06 AM por alan_el_more.)
10/11/2013 08:03 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
[Anti] Sin conexión
Miembro Sr.


Mensajes: 725
Registro en: Oct 2013
Reputación: 20
Mensaje: #2
RE: [Beta] Mi Primer Plugin
Esta bueno el tuto y bien explicado.

Agrega un comentario en los includes de para que los vas a usar.

Gracias por el aporte.
10/11/2013 01:02 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Argenisv Sin conexión
Suspendido


Mensajes: 23
Registro en: Mar 2015
Mensaje: #3
RE: [Beta] Mi Primer Plugin
Buen tutorial Excitedeyes Excitedeyes Gracias me ayudo mucho
25/04/2015 03:53 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
joluis81 Sin conexión
Miembro Sr.


Mensajes: 518
Registro en: Jul 2014
Reputación: 1
Mensaje: #4
RE: [Beta] Mi Primer Plugin
Asi poco a poco se aprende. GRACIAS. Ojala sigas subiendo este tipo de tutos.Excitedeyes

Image
25/04/2015 04:06 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: #5
RE: [Beta] Mi Primer Plugin
A mi parecer esta bien.
Pero alguien podría preguntar:
Por que creas una constante que contenga la vida que queres dar y no pones directamente.
Código PHP:
set_user_health(idget_user_health(id) + 100
Aun que para muchos sea una tonteria, me parece que eso debe ser aclarado para los nuevos mas que nada.

Y yo usaria
Código PHP:
#include chatcolor 

a y otra cosa, no deria ir un
Código PHP:
return; 
abajo de
Código PHP:
if(is_user_alive(id)) 
Asi si no esta vivo returnea

Y te ahorras de hacer esto.
Código PHP:
else // Si no [está vivo]...
    
{
        
// Le avisamos que no le podemos dar vida extra
        
client_print(idprint_chat"Lo siento pero debes estar vivo para recibir vida extra")
    }
    
    
// Opcional:
    // Esto nos sirve para que no muestre que el jugador ha escrito /vida en el say
    // Esto se explicará en otros tutoriales
    
return PLUGIN_HANDLED


NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
(Este mensaje fue modificado por última vez en: 25/04/2015 04:38 PM por Evil Spiret.)
25/04/2015 04:24 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
wiD Sin conexión
Anti-cheat Team


Plugin developer Plugin popular
Mensajes: 803
Registro en: Nov 2013
Reputación: 18
Mensaje: #6
RE: [Beta] Mi Primer Plugin
10/11/2013 08:03 AM

Alan ya ni siquiera programa en pawn
25/04/2015 04:28 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: #7
RE: [Beta] Mi Primer Plugin
(25/04/2015 04:28 PM)wiD escribió:  10/11/2013 08:03 AM

Alan ya ni siquiera programa en pawn

Bfffff no vi la fecha jajajajj, en fin jajaj no puedo borrar mensajes.

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
25/04/2015 04:40 PM
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: [Beta] Mi Primer Plugin
(25/04/2015 04:24 PM)Evil Spiret escribió:  A mi parecer esta bien.
Pero alguien podría preguntar:
Por que creas una constante que contenga la vida que queres dar y no pones directamente.
Código PHP:
set_user_health(idget_user_health(id) + 100
Aun que para muchos sea una tonteria, me parece que eso debe ser aclarado para los nuevos mas que nada.

Esta perfectamente bien de ambas formas. La unica diferencia es que la constante la tenes "mas a mano" por asi decirlo, que buscar la linea del set_user_health.

De todas formas si yo necesito sumarle 100 en alguna otra funcion, la constatante seria mas optima. En este caso es lo mismo.

(25/04/2015 04:24 PM)Evil Spiret escribió:  Y yo usaria
Código PHP:
#include chatcolor 

Y que estas optimizando ahi?, esta pensado para realizar tus plugins con las cosas basicas que vienen por default en AMXX, el include no viene por default..

(25/04/2015 04:24 PM)Evil Spiret escribió:  a y otra cosa, no deria ir un
Código PHP:
return; 
abajo de
Código PHP:
if(is_user_alive(id)) 
Asi si no esta vivo returnea

Y supongo que te ahorras de hacer esto.
Código PHP:
else // Si no [está vivo]...
    
{
        
// Le avisamos que no le podemos dar vida extra
        
client_print(idprint_chat"Lo siento pero debes estar vivo para recibir vida extra")
    }
   
    
// Opcional:
    // Esto nos sirve para que no muestre que el jugador ha escrito /vida en el say
    // Esto se explicará en otros tutoriales
    
return PLUGIN_HANDLED


Es exactamente lo mismo. Y te comiste el !

------>
Código PHP:
if( !is_user_alive(id) )
{
     print...
     return;


El tutorial cumple su funcion. Para mi esta bien. Ademas de que tiene mas de 2 años.

(Este mensaje fue modificado por última vez en: 25/04/2015 04:53 PM por hud.)
25/04/2015 04:50 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: #9
RE: [Beta] Mi Primer Plugin
(25/04/2015 04:50 PM)hud escribió:  
(25/04/2015 04:24 PM)Evil Spiret escribió:  A mi parecer esta bien.
Pero alguien podría preguntar:
Por que creas una constante que contenga la vida que queres dar y no pones directamente.
Código PHP:
set_user_health(idget_user_health(id) + 100
Aun que para muchos sea una tonteria, me parece que eso debe ser aclarado para los nuevos mas que nada.

Esta perfectamente bien de ambas formas. La unica diferencia es que la constante la tenes "mas a mano" por asi decirlo, que buscar la linea del set_user_health.

De todas formas si yo necesito sumarle 100 en alguna otra funcion, la constatante seria mas optima. En este caso es lo mismo.

(25/04/2015 04:24 PM)Evil Spiret escribió:  Y yo usaria
Código PHP:
#include chatcolor 

Y que estas optimizando ahi?, esta pensado para realizar tus plugins con las cosas basicas que vienen por default en AMXX, el include no viene por default..

(25/04/2015 04:24 PM)Evil Spiret escribió:  a y otra cosa, no deria ir un
Código PHP:
return; 
abajo de
Código PHP:
if(is_user_alive(id)) 
Asi si no esta vivo returnea

Y supongo que te ahorras de hacer esto.
Código PHP:
else // Si no [está vivo]...
    
{
        
// Le avisamos que no le podemos dar vida extra
        
client_print(idprint_chat"Lo siento pero debes estar vivo para recibir vida extra")
    }
   
    
// Opcional:
    // Esto nos sirve para que no muestre que el jugador ha escrito /vida en el say
    // Esto se explicará en otros tutoriales
    
return PLUGIN_HANDLED


Es exactamente lo mismo. Y te comiste el !

------>
Código PHP:
if( !is_user_alive(id) )
{
     print...
     return;


El tutorial cumple su funcion. Para mi esta bien. Ademas de que tiene mas de 2 años.

Todo para hacer un +1, no pregunto eso yo, lo hice para que dejara en claro algunas cosas, lo del include chatcolor solo es para que quede mas bonito, y si me olvide del !, y ya se que esta haciendo exactamente lo mismo, solo queria dejar en claro que un return te podes ahorrar de hacer algunas cositas. No todo se trata de estar enloquecido con optimizar, sino de dejar en claro que se puede hacer lo mismo de algunas otras formas. Dejemos de comentar esto.

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
(Este mensaje fue modificado por última vez en: 25/04/2015 05:09 PM por Evil Spiret.)
25/04/2015 05:06 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Mouri Sin conexión
Miembro Junior


Mensajes: 3
Registro en: Jan 2018
Reputación: 0
Mensaje: #10
RE: [Beta] Mi Primer Plugin
Sé que este post es de hace una eternidad pero tengo una preguntita c:

Si yo quisiera que el jugador que escriba /vida ganase X cantidad de vida para llegar a 100, como tendría que editarlo? Por ejemplo, si tengo 65 de vida y pongo /vida tendría que ganar 35 (100 - 65 = 35) de vida para llegar a 100.

Código PHP:
set_user_health(idget_user_health(id) + CantidadVida

Esto de ahí no me funciona:
Código PHP:
set_user_health(idCantidadVida get_user_health(id)) 
24/01/2018 04:28 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