InicioHazlo Tu MismoProgramacion Counter Strike 1.6 Pawn 2º Parte

Programacion Counter Strike 1.6 Pawn 2º Parte

Hazlo Tu Mismo2/16/2013
Hola gente como andan, aca les vengo a dejar la 2º parte de este tutorial de programación... si no viste la primera, te recomiendo que la veas Haciendo click Aca Bien, en el primer post aprendimos que para la programación se necesita un buen humor, tener paciencia e imaginación y estar decidido a hacer las cosas porque no se pueden dejar a la mitad. Eso en la parte psicológica, y en lo practico, aprendimos que son las variables y para que sirven. Hoy vamos a aprender un poco mas para que sirven los Módulos y a hacer un simple Menú Módulos Los Módulos o Librerías son por decir, los contenedores de todas las funciones o mejor conocidos como natives que vamos a utilizar en un plugin, desde darle vida a un usuario, hasta matarlo o detectar en que equipo esta. Los módulos básicos que un plugin puede llegar a utilizar son: - Amxmodx [Nivel Básico]: Contiene las funciones básicas del programa Amx y del lenguaje Pawn - Amxmisc [Nivel Básico]: Al igual que el anterior, contiene funciones básicas del programa y del lenguaje Pawn - Cstrike [Nivel Básico]: Este modulo contiene funciones del juego al que estamos programando, osea CS, en este caso, contiene las IDS de las armas que ya veremos mas adelante, modelos del juego y equipos, entre otros. - Fun [Nivel Básico]: Este modulo contiene funciones básicas y fáciles de usar, ya que los nombres de sus funciones son casi todos en ingles y sin ninguna complicación, que pueden servir, entre muchas otras cosas, para cambiar la vida, chaleco, gravedad y velocidad entre otros. - Fakemeta [Nivel Medio]: Este modulo ya pasa a ser un nivel un poco mas avanzado, es un poco mas optimizado en cuanto a rendimiento y consumo de pc pese que el modulo FUN y tiene funciones similares, casi todas las funciones de fun están también en Fakemeta. Este modulo es mas diverso, ya que contiene hasta otro tipo de registro en el plugin init, cada una de sus funciones tiene uno diferente. También, contiene funciones para cambiar daño de los usuarios, modelos y hasta para modificar armas, ya sea en daño, velocidad de tiro, calibración de mira y muchas cosas mas. Uno de los mas importantes a mi gusto. - Hamsandwich [Nivel Medio]: Hamsandwich, tiene casi todas las funciones de FUN, y alguna que otra de Fakemeta.Es mas optimizado y consume menos que ambos Módulos aunque Fakemeta tiene otros usos tambien. Las funciones basicas de Hamsandwich son las mismas que la de FUN pero tiene otro tipo de registro en el plugin init y tambien tiene otras funciones para cambiar los modelos de los usuarios, cambiar propiedades de las armas y de los usuarios, entre muchas otras cosas mas. - SQL [Nivel Avanzado]:Este modulo sirve para hacer conexiones a bases de datos, es un nivel muy avanzado, sus funciones son usadas básicamente para sistemas de cuentas y de guardado. Entre otros modulos, estos son los mas usados para aprender lo basico. Los modulos como bien vimos en el primer tutorial, se "incluyen" en el plugin a través de el codigo #include a la cabeza del plugin y solamente es necesario incluirlo cuando necesitamos usar alguno de sus natives, vamos a un ejemplo de un plugin basico... Vamos a hacer que un player, al escribir /heal recupere la vida perdida usando el modulo FUN. #include #include #include #define PLUGIN "Vida" // nombre del plugin #define VERSION "1.0" // version del plugin #define AUTHOR "Codes" // autor del plugin public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) // registramos el plugin con las definiciones que dimos al inicio register_clcmd( "/heal", "clcmd_heal" ) // registramos el comando y el callback del mismo } public clcmd_heal(id) // publicamos el callback( donde diremos que hacer cuando coloque el comando) del comando { set_user_health(id, 100) // Lo que hicimos acá es a través del native "set_user_health" del modulo FUN le dimos o seteamos(dicho de la forma villera) 100 de vida, así de simple. return PLUGIN_HANDLED // damos por concluido el callback } // cerramos la función y terminamos Y de esa forma le seteamos 100 de vida a el usuario usando el modulo fun, les voy a dejar ACA una lista de todas las funciones de todos los módulos, les recomiendo que se vallan aprendiendo los que comienzan con "set_", "get_"cs_set" y "cs_get" porque son los que vamos a usar por el momento, mas adelante los van a ir aprendiendo solos... Menu Simple Los Menús simples se ven como en esta imagen: Y se hacen de la siguiente manera: #include #include #include #include #define PLUGIN "Menu Simple" #define VERSION "1.0" #define AUTHOR "Codes" public plugin_init(){ register_clcmd("/menu", "clcmd_menu" ) } public clcmd_menu(id) { new menu = menu_create("Titulo","menu_callback" ) // ponemos titulo y el callback menu_additem(menu, "Comprar 100 de Vida r- y$600", "1", 0) // aca agregamos la opcion al menu, le damos nombre y le damos su orden, en este caso va a ser la opcion "1" ) menu_additem(menu, "Comprar 100 de Chaleco r- y$200", "2", 0) // en este caso, la opcion seria la numero "2" menu_setprop(menu, MPROP_EXITNAME, "Salir" ) // le damos el nombre al boton "Salir" osea el 0 por defecto menu_display(id, menu, 0) } public menu_callback(id, menu, item) // ATENCION, a como se publica el callback de un menu. { if(item == MENU_EXIT) // *1 explicacion mas abajo de el condicional "if" { menu_destroy(menu) return PLUGIN_HANDLED } // en este condicional hacemos que si el usuario elije el numero "0" osea "Salir" se cierre el menu new data[6], iName[64], access, callback // creamos unas variables estáticas menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback) //obtenemos a traves de las variables la info del menu switch(str_to_num(data)) // codificamos los datos a numeros a traves de "switch" { case 1: // en el caso de que haya elegido el numero "1" osea, comprar vida { if(cs_get_user_money(id) >= 600) // vemos si el usuario tiene mayor o igual cantidad de dinero que el precio { cs_set_user_money(id, cs_get_user_money(id) - 600) // le restamos al dinero del valor del item a traves de un native del modulo "cstrike" como pueden ver, contiene un "cs_" adelante. set_user_health(id, get_user_health(id) + 100) // en caso de que la tenga, nos fijamos la vida que tiene, y le sumamos 100 } // cerramos el if else // *1 explicacion de condicionales mas abajo client_print(id, print_chat, " Sos pobre y no tenes plata" // en caso de que no lo tenga, le enviamos un mensaje de que es pobre } // cerramos el case 1 case 2: // en el caso de que haya elegido el numero "2" osea, comprar chaleco { if(cs_get_user_money(id) >= 200) // nos fijamos si tiene una cantidad mayor o igual de dinero al precio { cs_set_user_money(id, cs_get_user_money(id) - 200) // le restamos el dinero del valor del item set_user_armor(id, get_user_armor(id) + 100) // le damos el chaleco y cerramos el if } else // en caso de que no tenga el dinero client_print(id, print_chat, " yo que vos me dedico a vender ajo porque estas cortado" // y le mandamos un mensaje de que es pobre. } // cerramos case 2 } // cerramos switch menu_destroy(menu) // cerramos el menu cuando elige una opcion return PLUGIN_HANDLED } // damos por finalizada la funcion, y con esto, finalizamos el plugin y el menu. Los condicionales sirven para hacer la pregunta "si...", "sino...", "sino, si...", que son las traducciones de las palabras "if", "else", "else if", y con ellas lo que logramos es preguntar si el usuario es, tiene, o hizo tal cosa, en este caso, si leemos el codigo como lo haria la maquina, en el primer if del case 1, seria algo asi "si la obtencion de el dinero del usuario es mayor o igual a 600" ... y seguido abrimos la llave que explica que va a pasar en ese caso, si seguimos leyendo como lo haria lo computadora: "se le va a establecer, obteniendo el dinero del usuario, una resta de 600", y si leemos la linea de mas abajo: "y se le va a establecer al usuario, segun la vida que tenga, un aumento de 100", entonces asi le cobramos el valor del item que eligio y le damos el mismo. En el caso de "else", nunca puede haber uno sin un "if" ya que significaria "sino..." y si leemos como va a interpretar el codigo la maquina, quedaria algo asi: "sino(osea si la obtencion de el dinero del usuario no da un numero mayor al precio, osea 600)", bajamos una linea y abrimos que pasara... seguimos leyendo: "enviamos un mensaje a traves del chat diciendo que pobre y no tiene plata". En el caso del "else if", que en este caso no usamos, el termino "sino si" sirve para hacer varias opciones seguidas en vez de poner todo el tiempo "if", con el tiempo y la practica van a ir viendo y entendiendo, por el momento no se me ocurre otra forma de explicarlo. Les recomiendo que cuando vallan haciendo algun plugin y les salte algun error que no entiendan, o por simple seguridad de que lo estan haciendo bien, se pongan a leer lo que la computadora razonaria con ese codigo, para esto necesitan entender bien para que sirve cada native y como funciona, no es muy dificil y te facilita MUCHISIMO las cosas, en caso de plugins cortos no es un problema, pero cuando te encaminas a plugins largos como mods o cosas asi, es muy estresante recorrer linea tras linea sin ver errores y que el compilador te diga que tenes uno. El compilador te va a tirar siempre una linea, pero a veces el error esta en la funcion completa, o tambien cuando pones algo que no tiene sentido y se contradiga. Antes de irte Y si no te gusto el post, es porque...
Datos archivados del Taringa! original
75puntos
4,213visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

s
Usuario
Puntos0
Posts9
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.