santi_elkpo12
Usuario (Argentina)
Hola amigos de T! hoy les traigo un tutorial que cree con mis propias manos (? (amen ) con la intencion de enseñarles como programar( o la forma mas negra como digo yo, "codear" ) en lenguaje pawn. El lenguaje pawn es uno de los lenguajes mas basicos dentro de "el mundo de la internet" (?, y practicamente sirve para juegos como Gta San Andreas Multi Player(que nombre largo carajo ¬¬) o SA-MP, y tambien el juego del que les voy a enseñar, Counter Strike 1.6 =D. DESDE YA Y NO ME AGAN CALENTAR: (?La programacion es, mmm como se podria decir?, algo deprimente y ABURRIDA en todos los juegos, ya sea Sa-MP o Cs 1.6, si no le meten onda, a lo que me refiero es que tienen que tener un buen humor, para que las cosas salgan bien, y no tengamos problemas con que "hay no me sale", "hay que mierda", por que los mando al carajo, ok? (? , y por ultimo, todos pueden programar, pero es mas sencillo si saben ingles Van a tener que descargar un programa solamente , se llama Amx Mod x, si alguna ves instalaron algun mod en el cs, ya lo deben tener y aca ↓↓↓↓↓ les dejo un video de como configurarlo... link: http://www.youtube.com/watch?v=InnMEkQAsn0 http://6.hidemyass.com/ip-1/encoded/Oi8vd3d3LmFteG1vZHgub3JnLw%3D%3D entran al link de arriba ↑↑↑↑↑ por ese proxy y buscan Amx Mod X 1.8.1 Released y lo descargan, si no saben como instalarlo, busquen una guia, bagos -.-" (? Nivel Basico:( Chan Chan Chan (? ) bueno empesamos con una "plataforma" de plugin, en el que van a encontrar algo como esto: esas cosas raras que estan hay ↓↓↓↓↓, se llaman modulos o bibliotecas, contienen las "funciones" que veremos mas adelante, hay distintos tipos de modulos este es un ej de 3 de los modulos que hay, y crean mas de ves en cuando, pero con distintas funciones, ejemplo: #include <amxmodx> // <-- este modulo es esencial para todos los plugins, contiene las funciones basicas. #include <fun> // <-- este modulo contiene funciones para dar/sacar/matar/revivir/boludiar con un usuario. #include <cstrike> // <-- este modulo contiene las funciones basicas del counter strike. hay mas, pero la paja me enseguese a la hora de escribir (?, despues les dejo una pag con todas las funciones de c/u de los modulos.... new g_variable[33] ↑↑↑↑↑ no, no digas WTF, eso es una "variable" , hay variables globales que se pueden usar a lo largo de todo el plugin, y variables que solamente se usan en una sola funcion, las variables sirven para almacenar datos( NO ES TAN DIFICIL COMO PARECE), les dare un ejemplo con mi gran imaginacion (? maria y ponete estudiaban medicina, maria se recibio en 2(este seria el valor que le podes dar a una variable, en este caso 2) años, y ponete en 4(este seria otro valor) !. aca un ejemplo: si yo creo una variable que sean los años de maria estudiando seria algo asi: new g_maria_años_escuela[33] (la variable a la cual despues le daremos el valor de maria en la escuela, pero si a una variable le quieren poner g_pepito[33] funciona, pueden hacer que pepito sea un objeto, o simplemente un valor) new g_ponete_años_escuela[33] (esta es la variable de ponete) plugin_init() // esto, es una "funcion principal", aca vamos a registrar todas las funciones que utilicemos { // las llaves sirven para abrir o cerrar una funcion, en este caso "{" abre una funcion, y "}", la cierra, ↓↓↓↓↓ los register, es medio ovio que lo que van a hacer es registrar una funcion, y pueden ser distintos register_clcmd( "say /mariayponete", "clcmd_mariayponete" ) //////////////↑↑↑↑↑//////↑↑↑↑↑////////////////// ↑↑↑↑↑ ese es el nombre que le damos a la funcion, que luego publicaremos... //////////////↑↑↑↑↑///// ↑↑↑↑↑ este es el comando que registra, osea que si el usuario escriba /mariayponete, llama la funcion ///////////// ↑↑↑↑↑ eso significa que es un comando }//cerramos el "plugin_init()" que es el nombre de la funcion principal.. ↓↓↓↓↓ aca estamos publicando la funcion, ↓↓↓↓↓//↓↓↓↓↓↓↓↓↓↓↓↓↓↓ aca especificamos que funcion publicamos ↓↓↓↓↓//↓↓↓↓↓↓↓↓↓↓↓↓↓↓////↓↓ id significa que es el usuario, osea que a un usuario especifico, se le publicara la funcion public clcmd_mariayponete(id) {//abrimos llaves ↓↓↓↓↓ esta es una de las tantas natives de los modulos, esta native, deja un mensaje en el chat del usuario ↓↓↓↓↓////////↓↓ le ponemos que se la de al usuario osea el "id" ↓↓↓↓↓////////↓↓////↓↓↓↓↓↓↓ especificamos que sea en el chat ↓↓↓↓↓////////↓↓////↓↓↓↓↓↓↓////↓↓↓↓↓ este es el mensaje que le daremos al usuario ↓↓↓↓↓////////↓↓////↓↓↓↓↓↓↓////↓↓↓↓↓////////////////////////////////////////////////////////////////////////////////////////////////////////////////↓↓ esto ↓↓↓↓↓////////↓↓////↓↓↓↓↓↓↓////↓↓↓↓↓////sera remplazado por el valor de la variable -->///////////////////////////////////////////↓↓ client_print( id, print_chat, "[Nombre de servidor]Maria y ponete fueron estudiaron medicina, maria se recibio en %d años y poenete en %d.", g_maria_años_escuela, g_ponete_años_escuela) //////////////////↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ estas son las variables por las cuales los %d seran remplazados, osea el valor de la variable sera la que aparecera en el mensaje, y las variables deven estar acomodados segun el orden de los %d, sino se remplazaran mal }// cerramos la funcion ya que esta terminada ! /////////↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ este es el nombre de otra de las funciones principales, lo que hace es automatico, cada ves que un /////////↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ usuario se conecte le dara lo que nosotros pongamos aqui, miren: public client_putinserver(id) { // abrimos llave, funcion empezada g_maria_años_escuela = 2 // listo, los simbolos >, <, -, +, =, aqui funcionan, entonces aca ponemos que la variable es 2 g_ponete_años_escuela = 4 // y aca 4 } // cerramos llave, funcion termianda // posdata: los // en el pawn sirven para dejar un mensaje por ejemplo para acordarce de algo miren: new g_variable[33] //esta variable la cree el dia 06/06/06 //entienden?, si?, les conviene ¬¬ (? asi es como quedaria el plugin: plugin_init() { register_clcmd("say /mariayponete", "clcmd_mariayponete" } public clcmd_mariayponete(id) { client_print(id,print_chat, "[Nombre del Servidor]Maria y Ponete estudiaron medicina Maria se recibio en %d años y ponete en %d.", g_maria_años_escuela, g_ponete_años_escuela) } public client_putinserver(id) { g_maria_años_escuela = 2 g_ponete_años_escuela = 4 } si tienen problemas, no duden en mandarme mensajes privados, ya sea por q no les sale algo, o quieren preguntar alguna boludes, manden mensajes que yo se los voy a responde Y asi es como se hace un plugin, ustedes con su gran imaginacion (? pueden hacer lo que se les cante las pelotas, nada mas falta que pongan huevos Bueno gente esto fue todo espero que les alla gustado el tutorial, les voy a dejar el link si ago la 2 parte, saludos y recuerden: No sean Forros! (?
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 <nombre-del-modulo> 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 <amxmodx> #include <amxmisc> #include <fun> #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 <amxmodx> #include <amxmisc> #include <fun> #include <cstrike> #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...
Bueno gente en este video no vemos ningun juego jaja, sino que vemos un especial de Halloween de nuestros amigos de Cordoba for the WIN!, espero que les guste, suscribanse y denle like =D link: http://www.youtube.com/watch?v=vQPjS9rWrBc&feature=g-u-u

Bueno nuevo Slender Prison y algunas escenas de un domingo al pedo conforman el nuevo video de Cordoba for the WIN! link: http://www.youtube.com/watch?v=tJg3i_5_6jQ&feature=g-user-u
![Steve Jobs vs Bill Gates. Epic Rap Battles [Muy Bueno]](https://storage.posteamelo.com/assets-adonis/assets/2018/06/19/big2v5-aDPScosNw3r.webp)
Batallas epicas de rap, muy buenas y graciosas, tienen muchas para ver, aca les dejo la que mas me gusto ami ...
Una nueva entrega del ahora popular juego Slender, llamada CLAUSTROPHOBIA, junto con ella el nuevo video de Cordoba for the WIN! espero que les guste =D
Bueno gente aca les dejo el nuevo video de Cordoba for the WIN, con el nuevo mapa de Slender, llamado 7th Street, espero que lo disfruten y se diviertan =D link: http://www.youtube.com/watch?v=mWMA9sVYuSQ&feature=plcp http://www.facebook.com/pages/Cordoba-for-the-WIN/401461103219942 UNITE =D
Videos Varios =D Dia de la Tierra: link: http://www.youtube.com/watch?v=KEN1nBXYYQ0&feature=plcp Dia de la Tierra [Escenas Eliminadas]: link: http://www.youtube.com/watch?v=qMhlSuu4_UU&feature=plcp Presentacion: link: http://www.youtube.com/watch?v=jXWDJvlpHAA&feature=plcp Anuncio Nuevo Slender 7th Street: link: http://www.youtube.com/watch?v=ayxoOhzEnGg&feature=plcp Slenders: Slender link: http://www.youtube.com/watch?v=O5lzXI-7QZg&feature=plcp Sanatorium: link: http://www.youtube.com/watch?v=oKDbthi35Cs&feature=plcp Hospice: link: http://www.youtube.com/watch?v=7NsO4nP0yNo&feature=plcp Elementary: link: http://www.youtube.com/watch?v=PZoN24d4DfQ&feature=plcp Mansion: link: http://www.youtube.com/watch?v=7nUNoTE_B28&feature=plcp Claustrophobia: link: http://www.youtube.com/watch?v=5fGJ8BJmaEs&feature=plcp 7th Street: link: http://www.youtube.com/watch?v=mWMA9sVYuSQ&feature=plcp Amnesia House of Creep 1º y 2º Parte: link: http://www.youtube.com/watch?v=L45DHn7NxL4&feature=plcp link: http://www.youtube.com/watch?v=8uUkkJsLVzo&feature=plcp House of Creep 2 - 1º y 2º Parte: link: http://www.youtube.com/watch?v=uKbdp0LJ_dA&feature=plcp Ken's Nightmare link: http://www.youtube.com/watch?v=tygBYjQuCwo&feature=plcp
Nuevo video de Cordoba for the WIN! esta vez vamos a ver el nuevo juego de Slender, el mapa se llama Mansion y tiene muy buena pinta... aparte de ser la primera vez que se usa la camara en el video, espero que les guste UNITE