[Beta] Mi Primer Plugin
#1
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.
Responder
#2
Esta bueno el tuto y bien explicado.

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

Gracias por el aporte.
Responder
#3
Buen tutorial Excitedeyes Excitedeyes Gracias me ayudo mucho
Responder
#4
Asi poco a poco se aprende. GRACIAS. Ojala sigas subiendo este tipo de tutos.Excitedeyes
[Imagen: 76561198086476173.png]
Responder
#5
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
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#6
10/11/2013 08:03 AM

Alan ya ni siquiera programa en pawn
Responder
#7
(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
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#8
(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.
Responder
#9
(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
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#10
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)) 
Responder
#11
(24/01/2018, 04:28 PM)Mouri escribió: 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)) 

Código PHP:
client_print(idprint_chat"Has recibido %d de vida extra"CantidadVida get_user_healthid ) )
set_user_healthidCantidadVida ); 
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#12
(24/01/2018, 04:28 PM)Mouri escribió: 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)) 

No esta prohibido revivir temas, no hay problema

set_user_health es para establecer una cantidad fija de vida, date cuenta que tu estas estableciendo la cantidad de vida sumando la cantidad de vida actual mas la variable CantidadVida

Este es un ejemplo de como dar 100 de vida a un jugador, suponiendo que el jugador tiene 70 de HP
Código PHP:
set_user_health(id100// Establece 100 HP al jugador 

Este es otro ejemplo de como sumar 50 de vida a un jugador. Suponiendo que el jugador tiene 70 de HP
Código PHP:
set_user_health(idget_user_health(id) + 50// Establece 120 HP 

Si aun tienes dudas, mándame mensaje privado.
[Imagen: 76561198068808877.png]
Responder
#13
Vale ya lo entiendo, gracias Sonrisa
Responder
#14
para aprender un poco si quiero setear vida a un player determinado como tendria que editar esto para hacerlo con un say . Por ejemplo si quiero que player1 tenga 200 de vida say 200 player1

char nick= cualquiercosa
int vida= 150
register_clcmd("say /vida nick", "setearVida") // aca no tengo ni idea como podria poner para que me guarde el valor numerico de la vida en la variable vida y el nombre del jugador en la variable nick o hacer algo como un scanner para guardar lo que hay en el say en las respectivas variables
en vez de set_user_health(id, 100) seria set_user_health(nick, 100) aca tampoco se como seria.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)