Pido Su Opinion
#1
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:

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(PLUGINVERSIONAUTHOR)
    
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 
vidaname[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(idvida Vida_A_Dar)
        
client_print(0print_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(1print_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_RCONset_user_health(idvida + (Vida_A_Dar 2)) // Si Tiene Acceso a Rcon le da el doble de la vida asignada en la variable
            
case ADMIN_KICKset_user_health(idvida Vida_A_Dar// Sino le da la cantidad normal
    


y gracias por leer apreciare sus criticas constructivas.
Responder
#2
Si no me equivoco, los accesos se empiezan a leer desde izquierda a derecha, y como ADMIN_KICK esta primero que ADMIN_RCON se te da nada más el de ADMIN_KICK. No me acuerdo bien no he tocado Pawn en un buen tiempo gg
Responder
#3
Usate los otros Flags, ADMIN_LEVEL_A, etc, y debes tener un solo permiso de lo que especifiques dentro del swith
Responder
#4
Código PHP:
if (get_user_flags(id) & ADMIN_KICK// tiene el flag de kick, si tiene más, esto igual vale

if (get_user_flags(id) == ADMIN_KICK// Solamente ADMIN_KICK, el switch es equivalente a esto 

Es la primera condición la que debes usar.
Responder
#5
Gracias por la informacion me servira.

(14/08/2017, 12:32 PM)Mario AR. escribió:
Código PHP:
if (get_user_flags(id) & ADMIN_KICK// tiene el flag de kick, si tiene más, esto igual vale

if (get_user_flags(id) == ADMIN_KICK// Solamente ADMIN_KICK, el switch es equivalente a esto 

Es la primera condición la que debes usar.

gracias queria probar con los switch pero veo que para este tipo de cosas tendre que utilizar los if gracias !
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)