13/08/2017, 07:38 PM
Hola, ayer tome la decision de dejar la flojera y ponerme a aprender pawn para no tener solo la capacidad de editar o modificar plugins sino crearlos desde cero.Ya hice el primer code desde cero solo para probar algo de lo que he aprendido leyendo teniendo la mas minima guia y quisiera que hicieran criticas constructivas acerca de la tabulacion si es correcta etc, y si pueden responder un par de dudas con las que me encontre mientras codeaba, decidi empezar por una de las cosas mas basicas (el tipico plugin de vida) y bueno esto fue lo que salio. Fui usando comentarios segun lo que yo entiendo hace cada parte de el codigo y si no es asi corregirme porfavor para eso estoy creando este post.ya para no alargarlo mas el code:
Quise Hacer esto pero no le daba la vida al que tiene mas de un flag, ejemplo : tengo Admin rcon pero si tengo otro no me da la vida debo tener solo ese igual con el admin kick solo debo tener unicamente el q me piden para q me setee la vida,
esta parte la hice segun entendi como funciona el switch aunque creo que si usaba los if() si me funcionaria, si alguien puede tambien explicarme la estructura de el swith y por que no me funciono.
y gracias por leer apreciare sus criticas constructivas.
Código PHP:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
new Vida_A_Dar = 100 // Creo una variable con la vida para mas comodidad
new Costo = 3500
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /vida", "CmdVida") // registro el comando
}
public CmdVida(id) // La Funcion
{
if(!is_user_alive(id)) // Si no esta vivo tambien le returneamos
{
client_print(1,print_chat, "Necesitas Estar Vivo Para Ejecutar Este Comando") // Mas etica
return PLUGIN_HANDLED // tambien returneamos si se comple la condicion
}
if(!is_user_admin(id)) // Chekeamos si NO es administrador y si es asi returneamos
{
client_print(1,print_chat, "Necesitas Ser Administrador Para Usar Este Comando") // Print para darle algo de etica
return PLUGIN_HANDLED
}
new vida, name[32], money // Creo la variable para guardar la vida y el nombre del usuario
vida = get_user_health(id) // Le asigno la vida de el user a la variable
get_user_name(id,name,31) // para el nombre, ah y si alguien me explica un poco mejor la parte de las 31 celdas y el carcter nulo xfa
money = cs_get_user_money(id)
if(money >= Costo)
{
cs_set_user_money(id,money - Costo)
set_user_health(id, vida + Vida_A_Dar)
client_print(0, print_chat, "%s acaba de recibir vida por usar el comando /vida ", name)
}
else // lo siguiente es si no se cumple ninguna condicion anterior ocurre esto, y mandamos print para mas etica
{
client_print(1, print_chat, "No Tienes Dinero suficiente para comprar la vida extra")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED_MAIN // returneo para que no se vea el comando en el chat /vida
}
Quise Hacer esto pero no le daba la vida al que tiene mas de un flag, ejemplo : tengo Admin rcon pero si tengo otro no me da la vida debo tener solo ese igual con el admin kick solo debo tener unicamente el q me piden para q me setee la vida,
esta parte la hice segun entendi como funciona el switch aunque creo que si usaba los if() si me funcionaria, si alguien puede tambien explicarme la estructura de el swith y por que no me funciono.
Código PHP:
switch(get_user_flags(id)) // Para Chekear su flag
{
case ADMIN_RCON: set_user_health(id, vida + (Vida_A_Dar * 2)) // Si Tiene Acceso a Rcon le da el doble de la vida asignada en la variable
case ADMIN_KICK: set_user_health(id, vida + Vida_A_Dar) // Sino le da la cantidad normal
}
y gracias por leer apreciare sus criticas constructivas.