-
Contenido
137 -
Ingreso
-
Última visita
-
Días ganados
3
Tipo de contenido
Perfiles
Foros
Novedades
Novedad
Descargas
Tutoriales
Todo lo publicado por totopizza
-
Nombre: Tutorial de menues Author: [Anti] Imágenes: No hay.. Fuente: [TUT] Tutorial de menues Resto del tutorial: Les dejo un tuto de como hacer varios tipos de menu y otras herramientas. Tienen que tener una base en scripting de pawn. Creo que esta bastante bien explicado, cualquier duda consulten. Sistema Nuevo #include <amxmodx> public plugin_init() { register_plugin("Menu Basico", "1.0", "[Anti]"); register_clcmd( "say /menu", "cmdMenu" ); } public cmdMenu(id) { new gMenu = menu_create("\rHola soy un menu", "handlerMenu") //creamos el menu en la variable 'Menu' con el titulo 'Hola soy un menu' //que segun la opcion que elija el usuario va a llamar a la funcion 'handlerMenu' menu_additem(gMenu, "\wOpcion #1", "1") //Blanco = \w menu_additem(gMenu, "\dOpcion #2", "2") //Transparente = \d menu_additem(gMenu, "\yOpcion #3", "3") //Amarillo = \y //Rojo = \r //adderimos opciones al menu 'Menu' y le ponemos el numero de opcion menu_display(id, gMenu, 0) //aca le mostramos el menu 'Menu' al 'id'(indice de player) que queramos. //el '0' es la pagina del menu que le vamos a mostrar. } public handlerMenu(id, menu, item) //los parametros deben ir en este orden { if ( item == MENU_EXIT ) //si el item seleccionado es igual a '0'(Exit[salir]) { menu_destroy(menu) //destruimos el menu return PLUGIN_HANDLED; //y returnamos la funcion } switch(item) //hacemos un swicheo de los posibles resultados: { case 0: //en caso de que precione 1: le mandamos un msj { client_print(id, print_center, "HOLA SOY LA OPCION #1.") } case 1: //en caso de que precione 2: le mandamos otro msj { client_print(id, print_center, "HOLA SOY LA OPCION #2.") } case 2: //en caso de que precione 3: le mandamos otro msj { client_print(id, print_center, "HOLA SOY LA OPCION #3 MUAJAJAJA(?.") } } return PLUGIN_HANDLED; // returnamos la funcion... } Sistema Viejo #include <amxmodx> #include <amxmisc> new KEYSMENU = MENU_KEY_0 | MENU_KEY_1 | MENU_KEY_2; public plugin_init() { register_plugin("Menu con Len", "1.0", "[Anti]"); register_clcmd( "say /menu", "cmdOtroMenu"); register_menu("Menu", KEYSMENU, "HandMenu"); //registramos el menu 'Menu', con las teclas KEYSMENU //y el handler que al que va a llamar 'HandMenu' } public cmdOtroMenu(id) { new menu[100], len; // 'menu' es donde se va a alojar el string del menu, // en este caso le damos 99 celdas para sus caracteres len = 0; len += formatex(menu[len], sizeof menu - 1 - len, "\r Menu:^n"); len += formatex(menu[len], sizeof menu - 1 - len, "\y[1]\wOpcion #1^n"); len += formatex(menu[len], sizeof menu - 1 - len, "\y[2]\wOpcion #2^n^n"); len += formatex(menu[len], sizeof menu - 1 - len, "\r[0]\wSalir"); show_menu(id, KEYSMENU, menu, -1, "Menu"); //mostramos el menu al 'id' deseado, con las teclas ya definidas, el menu 'menu' //el timpo es lo que tarda el menu en cerrarse en este caso -1 que es infinito, como lo registre en el init 'Menu') } public HandMenu(id, keys, menu) //los parametros deben ir en este orden { switch(keys) //hacemos un swicheo de los posibles resultados: { case 0: client_print(id, print_chat, "HOLA SOY LA OPCION #1"); //en caso de que precione 1: le mostramos el menu 'gMenu', en la pagina '0' case 1: client_print(id, print_center, "HOLA SOY LA OPCION #2"); //en caso de que precione 2: le mandamos un msj case 9: menu_destroy(menu) //en caso de que precione 0: le destruimos el menu... } } 2 Menús 1 Handled #include <amxmodx> public plugin_init() { register_plugin( "2 Menus 1 Handled", "1.0", "[Anti]" ); register_clcmd("say /menu", "cmdMenu"); } public cmdMenu(id) { if ( get_user_team(id) == 1 ) //Si es del team TT. Menu_TT(id); //Mandamos al Menu TT. else if ( get_user_team(id) == 2 ) //Si es del team CT. Menu_CT(id); //Mandamos al Menu TT. } public Menu_TT(id) { new menu = menu_create("\rMenu TT:", "handMenu"); menu_additem(menu, "Opcion 1#", "T"); menu_additem(menu, "Opcion 2#", "T"); menu_additem(menu, "Opcion 3#", "T"); menu_display(id, menu, 0); //Mostramos el menu } public Menu_CT(id) { new menu = menu_create("\rMenu CT:", "handMenu"); menu_additem(menu, "Opcion 1#", "C"); menu_additem(menu, "Opcion 2#", "C"); menu_additem(menu, "Opcion 3#", "C"); menu_display(id, menu, 0); //Mostramos el menu } public handMenu(id, menu, item) { if ( item == MENU_EXIT ) //si el item seleccionado es igual a '0'(Exit[salir]) { menu_destroy( menu ); //destruimos el menu. return PLUGIN_HANDLED; //Returnamos la funcion. } new szData[2]; new item_access, item_callback; menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), _, _, item_callback ); //obtenemos informacion del menu y el item elegido. switch( szData[0] ) //Vemos la letra que hay en la primera celda de szData { case 'T': //En este caso si es "T". { switch( item ) //Switch del Menu TT { case 0: {}// Opcion 1# TT's case 1: {}// Opcion 2# TT's case 2: {}// Opcion 3# TT's } } case 'C': //En este caso si es "C". { switch( item ) //Switch del Menu CT { case 0: {}// Opcion 1# CT's case 1: {}// Opcion 2# CT's case 2: {}// Opcion 3# CT's } } } menu_destroy(menu); //Destruimos el menu return PLUGIN_HANDLED; //Returnamos el Handled } Diferentes natives(solo para el sistema nuevo) //Establece propiedades en un menu. Propiedades: #define MPROP_PERPAGE /* Numero de items en cada pagina (default 7)*/ #define MPROP_BACKNAME /* Nombre del boton "Back" */ #define MPROP_NEXTNAME /* Nombre del boton "Next" */ #define MPROP_EXITNAME /* Nombre del boton "Exit" */ #define MPROP_TITLE /* Establece el titulo de un menu */ #define MPROP_EXIT /* Establece la funcion del exit con MEXIT_NEVER(no aparece la opcion exit) y MEXIT_ALL(aparece la opcion exit[default]) */ #define MPROP_NOCOLORS /* Establece si los colores son automaticos */ #define MPROP_NUMBER_COLOR /* Establece el color de los numeros(default rojo) */ menu_setprop(menu, prop, ...); //Cancela el menu de un player. menu_cancel(player); //Adiere una linea de texto al menu. menu_addtext(menu, const text[], slot=1); //Adiere un espacio en blanco al menu. menu_addblank(menu, slot=1); //Destruye el menu. menu_destroy(menu); //Establece un texto para un item. menu_item_setname(menu, item, const name[]); //Obtiene el indice de item del menu y la pagina indicada(devuelve menor a 0 si es un item especial como MENU_EXIT) menu_find_id(menu, page, key); //Muestra a una player un menu. menu_display(id, menu, page=0); //Obtiene la cantidad de items en un menu. menu_items(menu); //Obtiene la cantidad de paginas en un menu. menu_pages(menu);
-
Nombre: Hacer Niveles Author: cLAANS Imágenes: No hay... Fuente: Tutorial - Hacer Niveles Resto del tutoriarl: #include < amxmodx > // Libreria que siempre y cada uno de nuestros plugins va a nesecitar #include < hamsandwich > // Libreria que vamos a utilizar para detectar cuando matamos a alguien y cuando revive alguien #define SetBit(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) ) // Bits, Leer tutorial de rocox para informarce mas #define ClearBit(%1,%2) ( %1 &= ~ ( 1 << ( %2 & 31 ) ) ) // Bits, Leer tutorial de rocox para informarce mas #define IsBit(%1,%2) ( %1 & ( 1 << ( %2 & 31 ) ) ) // Bits, Leer tutorial de rocox para informarce mas #define Siguiente_nivel(%1) %1 * 15 // Macro que se elevara segun otra variable ( Mas abajo lo veran ) #define SLOTS 14 // Los Slots maximos del servidor + 1; new const VERSION[ ] = "1.0" // Definimos la version del plugin new g_frags[ SLOTS ]; // Variable que va a almacenar nuestros frags new g_level[ SLOTS ]; // Variable que va a almacenar nuestros levels new g_conectado; // Variable que vamos a utilizar para no llamar a una native ( is_user_connected( index ) ) new g_vivo; // Variable que vamos a utilizar para no llamar a una native ( is_user_alive( index ) ) public plugin_init( ) { register_plugin( "Tutorial para hacer niveles", VERSION, "cLAANS" ); RegisterHam( Ham_Killed, "player", "fw_player_killed" ); // Llamamos a Ham Killed para ver Cuando matamos a alguien RegisterHam( Ham_Spawn, "player", "fw_player_spawn" ); // Llamamos a Ham Spawn para ver cuando revive un jugador } public client_putinserver( id ) SetBit( g_conectado, id ); // Seteamos en true una variable que usaremos despues para verificar si un usuario esta conectado y asi llamar una variable menos public client_disconnected( id ) { ClearBit( g_conectado, id ); ClearBit( g_vivo, id ); } // La varibale que seteamos en true cuando se conecto el usuario la seteamos en false para evitar errores public fw_player_spawn( id ) if( is_user_alive( id ) ) // Para evitar errores, si el usuario esta vivo SetBit( g_vivo, id ) // Seteamos en true nuestra variable public fw_player_killed( victim, attacker ) { if( !IsBit( g_conectado, victim ) || !IsBit( g_vivo, victim ) || victim == attacker ) // Si no esta conectada la victima, o si no esta viva o si la victima es igual al atacante return; // Paramos la funcion /* Si un usuario no esta conectado no podra atacar asi que no verificamos si el atacante esta conectado * lo mismo cuando algunos verifican si el atacante esta vivo, si no lo esta, pues no atacara */ g_frags[ attacker ]++; // Lo que hacemos aca es aumentar nuestra variable ( g_frags ) +1 /* Hay miles de formas de las que podemos hacer actuar esta variable */ /* SI queremos la aumentamos en 10 */ g_frags[ attacker ] += 10; ClearBit( g_vivo, victim ); // Seteamos en false la variable "g_vivo" para evitar problemas chequear_nivel( attacker ); // Chequeamos si nuestros frags son los suficientes para pasar de nivel } public chequear_nivel( index ) { if( g_frags[ index ] >= Siguiente_nivel( g_level[ index ] ) ) // SI nuestros frags son mayores o iguales a los requeridos por nuestra macro { g_frags[ index ] = 0 // Seteamos los frags en 0 ( SI QUIEREN ) g_level[ index ]++; // Aumentamos 1 nivel, o los que se les den la gana } } Ahà está todo explicado...
-
Nombre: Niveles por macro Author: Metrikcz Imágenes: No hay... Fuente: [TUT] Niveles por macro Resto del Tutorial: Bueno aquà les dejo un sistema de levels por macro Aclaro que este sistema sirve para cualquier MOD #include <amxmodx> #include <hamsandwich> // Lo usaremos para registrar el event cuando el jugador muere #define PLUGIN "Tutorial Levels" // Nombre de plugin #define VERSION "1.0" // Version #define AUTHOR "Metrikcz" // Author // Macro, en este definiremos la cantidad de experiencia que se ocupara para cada nivel, es una operacion // donde %1 es el level del usuario, Por ejemplo: // si es level 8 el resultado seria: 640 --- > 8 * 8 * 10 = 640 // El macro ustedes lo pueden definir a como ustedes quieran la operacion, como la sientan mas comoda #define level_up(%1) (%1 * %1 * 10) // Variables donde almacenaremos el nivel y experiencia del jugador new g_level[33], g_exp[33] // Variable de la cvar new cvar_expkill, cvar_maxlevel new menu public plugin_init() { // Registramos el plugin register_plugin(PLUGIN, VERSION, AUTHOR) // registramos el evento cuando alguien muere RegisterHam(Ham_Killed, "player", "fw_playerkilled_post", 1) // Registramos el comando para que el usuario vea su level y para que vea la exp de cada level register_clcmd("say /level", "clcmd_saylevel") register_clcmd("say /levels", "clcmd_saylevels") // registramos la cvar cvar_expkill = register_cvar("exp_kill", "25") cvar_maxlevel = register_cvar("maxlevel", "100") // Creamos el menu, global porque nunca cambiara amenos que cambien el valor de la cvar de maxlevel create_menu() } create_menu() { // Creamos el menu, primer parametro nombre del menu, el segundo es el handler menu = menu_create("Tutorial Sistema de Levels | Experiencia para cada level", "handler_menu") //Creamos una variable en la cual guardaremos el valor de el level maximo new len[40], maxlevel = get_pcvar_num(cvar_maxlevel) // Lopeamos entre todos los posibles levels for(new i = 0; i < maxlevel; i++) { formatex(len, charsmax(len), "\wLevel: \y%d - \r%i", i+1, level_up(i)) menu_additem(menu, len, "1") // tercer parametro no importa } } // Foward Cuando el usuario entra al servidor public client_putinserver(id) { // Reiniciamos los valores de level y experiencia g_level[id] = 1 g_exp[id] = 0 } public fw_playerkilled_post(victim, attacker) { // chequeamos si el atacante esta conectado, si no lo esta ignoramos la funcion if(!is_user_connected(attacker)) return HAM_IGNORED; // chequeamos si la victima es igual al attacker, osea si el jugador se suicido if(victim == attacker) return HAM_IGNORED; // Llamamos a la funcion donde al atacante le daremos la experiencia de la cvar // get_pcvar_num(cvar_exp_kill) Obtiene el valor de la cvar para darle la exp de la cvar // Primer parametro define para quien va la experiencia y el segundo la cantidad set_exp(attacker, get_pcvar_num(cvar_expkill)) // Le mandamos un mensaje disiendo que gano "X" experiencia por matar client_print(attacker, print_chat, "Ganas %d Experiencia por Matar", get_pcvar_num(cvar_expkill)) return HAM_IGNORED; } set_exp(id, exp) { // Le damos al usuario la experiencia del segundo parametro "exp" g_exp[id] += clamp(exp, 0, level_up(get_pcvar_num(cvar_maxlevel))) //Llamamos a esta funcion para checar su ha subido de nivel update_level(id) } update_level(id) { // Checamos si su experiencia es mayor o igual a la necesaria para su siguiente nivel y si no es el level maximo, por ejemplo: // Digamos que es level 5, la experiencia necesaria para su siguiente level es 250 deacuerdo al macro (5*5*10=250) // si su exp es 253 muy bien se cumple la condicion y subira de level // level_up(g_level[id]) == level_up(5) porque suponiendo que g_level[id] es 5 asi seria while(g_exp[id] >= level_up(g_level[id]) && g_level[id] < get_pcvar_num(cvar_maxlevel)) { // Aumentamos su level g_level[id]++ /* g_level[id] += 1 || es lo mismo que lo de arriba */ // Mandamos un mensaje disiendo que subio de level client_print(id, print_chat, "Felicidades has ascendido al level: %d", g_level[id]) } } public clcmd_saylevel(id) { // Mandamos un mensaje mostrando su level y experiencia client_print(id, print_chat, "Su level: %d / %d| Experiencia: %d / %i", g_level[id], get_pcvar_num(cvar_maxlevel), g_exp[id], level_up(g_level[id])) // Mandamos un return plugin_handled para que no salga en el say cuando el wey escribe /level // Regularmente no deberia de salir pero a algunos servers se les bugea el say (zp) y si aparece return PLUGIN_HANDLED; } public clcmd_saylevels(id) menu_display(id, menu, 0) public handler_menu(id, menu, item) { // si no le pico al 0, osea para salir del menu, le mostraremos el menu de nuevo if(!(item == MENU_EXIT)) clcmd_saylevels(id) } say /level - Vemos el level del usuario y level maximo y tambien vemos su exp y experiencia necesaria para su siguiente level say /levels - Vemos la lista de levels y la experiencia que se necesita para cada uno!
-
Nombre del plugin: Show HUD Armor & Health Author: acetatomil Descripción: con este plugin podremos saber nuestra vida y armor mientras estamos vivos. Imágenes: No hay... Fuente: Show Armor & Health Código: #include <amxmodx> #include <amxmisc> #include <fakemeta> #define PLUGIN "Show HUD Armor & Health" #define VERSION "1.0" #define AUTHOR "acetatomil" #define TASK_HUD 2100 new SyncHUD public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) SyncHUD = CreateHudSyncObj() } public client_putinserver(id) { set_task(1.0, "ShowHUD", id+TASK_HUD, _, _, "b") } public client_disconnect(id) { remove_task(id+TASK_HUD) } public ShowHUD(taskid) { new id = taskid-TASK_HUD if (!is_user_alive(id)) { id = pev(id, pev_iuser2) if (!is_user_alive(id)) return; } set_hudmessage(0, 255, 0, 0.39, 0.8, 0, 6.0, 1.0) ShowSyncHudMsg(id, SyncHUD, "Heatlh: %d Armor: %d", get_user_health(id), get_user_armor(id)) }
-
Nombre del plugin: Matanzas y Muertes por HUD Author: K.-' Descripción: Con este plugin sabremos simpre cuantos frags y muertes tenemos Imágenes: Fuente: Show Frags y Muertes por hud Código: #include <amxmodx> #include <amxmisc> #define PLUGIN "Plugin peruano" #define VERSION "1.0" #define AUTHOR "K.-'" new g_conectado[33] new g_hud public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_hud = CreateHudSyncObj() } public client_putinserver(id) /* Cuando el cliente (PLAYER) entra al server : */ { g_conectado[id] = 1 set_task(2.0,"hud_personal",id+100,_,_,"b"); // Hacemos un hud con "B" , signifca que se actualiza solo cada 2 seg } public client_disconnect(id) /* Cuando el cliente se desconecta del server */ { g_conectado[id] = 0 // Le Seteamos la variable g_conectado[33] en false o 0 , es lo mismo. } public hud_personal(taskid) // El hud , registrado cuando el cliente entra al servidor { new id = taskid - 100; // Algun dia voy a saber explicar esto if (!g_conectado[id]) return; set_hudmessage(85, 255, 212, 0.80, 0.12, 0, 6.0, 12.0) // Las caracteristicas del Hud ShowSyncHudMsg(id, g_hud, "Matanzas %d^nMuertes %d", get_user_frags(id), get_user_deaths(id)) }
-
Nombre del Plugin: Anti Graffitis Author: Avila Descripción: Con este plugin, podremos bloquear los graffitis en el servidor. El jugador no podra pintar en la pared Imágenes: No hay... Fuente: Anti Graffitis Código: #include <amxmodx> #include <engine> #define PLUGIN "Anti Graffitis" #define VERSION "1.0" #define AUTHOR "Avila" const IMPULSE_SPRAY = 201 new g_msgSayText, g_bMsgSend; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV", "event_round_start", "a", "1=0", "2=0"); register_impulse(IMPULSE_SPRAY, "cmd_grafity") g_msgSayText = get_user_msgid("SayText") } public event_round_start() g_bMsgSend = 0; public cmd_grafity(id) { if (~g_bMsgSend & (1 << id-1)) { g_bMsgSend ^= (1 << id-1) message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id); write_byte(id); write_string("^x01[AMXX] No esta permitido poner^x04 graffitis^x01 en este servidor"); message_end(); } return PLUGIN_HANDLED }
-
Nombre del plugin: Player PRo Author: Metrikcz DescripcÃon: Con este plugin, podremos saber quien es el mejor jugador, el que tiene mas frags mediantes un Mensaje HUD Imágenes: No hay.. Fuente: Player PRo Código: #include <amxmodx> #include <hamsandwich> #define PLUGIN "Player PRo" #define VERSION "1.1" #define AUTHOR "Metrikcz" new g_maxplayers, g_player_proname[32] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Killed, "player", "reload_playerpro", 1) g_maxplayers = get_maxplayers() set_task(1.0, "show_playerpro", _, _, _, "b") } public show_playerpro() { set_hudmessage(0, 255, 255, 0.80, 0.11, 1, 1.0, 1.0) show_hudmessage(0, "Jugador en cabeza: %s", g_player_proname) } public reload_playerpro() { new sort[33][2], count for(new id = 1; id <= g_maxplayers; id++) { if(is_user_connected(id)) { sort[count][0] = id sort[count][1] = get_user_frags(id) count++ } } SortCustom2D(sort, count, "sort_player_frags") get_user_name(sort[0][0], g_player_proname, charsmax(g_player_proname)) } public sort_player_frags(pl1[], pl2[]) { if(pl1[1] > pl2[1]) return -1; else if(pl1[1] < pl2[1]) return 1; return 0; }
-
Esto es un copy and paste! Nombre del plugin: AdminConnect1.0 Author: Skylar Descripción: Version 1.0 - Al entrar un admin sale un say, ejemplo del say "Nombre - Skylar || Admin - Vip" Version 1.1 - En el say sale "Nombre - Skylar || Admin - VIP || Vencimiento - 22/04/2015" y automaticamente se desactiva el admin cuando haya vencido. Adentro del sma pueden configurar los flags de los admin(Vip, full y basic) y el nombre del admin Creditos - alan_el_more( por su plugin de admin vencimiento ) Include unixtime ------------------------- Imágenes: No hay.. Fuente: AdminConnect1.0 Código sma: Descargar AdminConnect1.0 ------ Descargar AdminConnect1.1
-
Esto es un Copy and Paste! Autor: Pancho.-'+hud;Erater Descripción Extendida: Bueno esto lo hice hace mucho, y no sabia si ponerlo en plugins nuevos o aportes. Al final me decidi por aportes, pero edite el autor por mi y le di agradecimientos a Empower, ya que uso su algoritmo para detectar cuando es scroll. Es un buen metodo por cierto. Si bien esta el de Empower, es como que le falta un "plus" ya que detecta el scroll pero no lo bloquea completamente, y a mi se me ocurrio esta idea para bloquearlo definitivamente. Yo lo testie en mi server y funciona perfecto. Pero eso si!, no tuve buena experiencia ya que la mayoria duckeaba con la rueda.. o ni sabia lo que era scroll :roflmao: tanta gente pidiendo un anti-scroll bueno aca les traigo uno, y espero que les sirva. Anti-Scroll Fade to Black (v1.2) Que es Scroll?: Descripcion corta: Cuando un player duckea con scroll (rueda del mouse), a este mismo se le pondra la pantalla en negro o del color que hallamos pre-configurado con "color_type". A su vez tambien sera "tosqueado" (trabado). Nota: El fadescreen ira desapareciendo de a poco. Librerias: Cvars: anti_scroll "1" (cualquier valor diferente a 1, desactiva el plugin) screen_fade "1" (cualquier valor diferente a 1, desactiva el fadescreen) color_type "0 000 0" (cambia el color al momento de mostrar el fadescreen, formato RGB) Nota: Si ponen el valor en "255 0 0" o derivados del rojo. El hud de cuenta regresiva no se vera o sera dificultoso verlo. Instalacion: Inconvenientes (posibles bugs): v1.2 - (Esperando a ser encontrados). Creditos: v1.0- Pancho.-'+hud;Erater (mi tag de scripter). Empower (por tomar prestado el algoritmo de la deteccion del scroll). ConnorMCLoad (por el include). bibu (por sugerirme utilizar el include de screenfade). v1.2 - ErikMav94 (por ayudarme a setear task por id de player) Por Hacer: - Cuando el jugador recibe una flashbang, hacer que el efecto siga si el player scrolleo y el Fade Screen es colocado. (Solucionado) Changelog: Imagenes: v1.2 - Nuevo hud con un conteo regresivo hasta que se acabe el pantallazo: (Problemas de flashbang y transparencias arreglados). Nuevos creditos al primer spawn: ---------------- Es mas un post de la publicacion de un nuevo plugin pero.. hasta tiene Changelog :proud: Bueno tan solo deseaba compartirlo, si coinsideran que puede ir en Plugins Nuevos, bueno pueden moverlo y si no dejenlo aca en aportes!, espero que le sirva a mas de uno!. PD: No puse ni una sola tilde! Saludos!!! ----------------------------- Fuente: Anti-Scroll Fade to Black Código sma: Descargar Código inc: Descargar
-
Mala suerte lo han borrado!
-
Bienvenido!!
-
pues veo que lleva mucho trabajo PD: me gustaria aprender ese truco xDD
-
Están muy buenas! felicidades pero esto lo haces con el vhe? porque vi el de los auriculares, y vi que tienen resplandor en el suelo
-
jaja estaba en google buscando fotos y me encuentro esta XD Esta muy buena jaja
-
Muy buen Tuto
-
Muchas gracias, jaja cuidado se caen en una trampa que hay ahà :'D
-
O Dios Mio, pero que hermosas puertas, estan muy buenas, Buen aporte!
-
Usé el siguiente guardado: #include <adv_vault> Para que funcione el guardado tienes que tener activado el adv_vault.amxx en plugins.ini, aquà te dejare de donde lo puedes descargar. https://amxmodx-es.com/Thread-API-Advanced-Vault-System-1-4c-23-12-2014 PD: se me olvidada, para que las natives funcionen, el plugins tAPI_sis_frags.amxx tiene que estar activado :|
-
Muchas gracias, el guardado lo puse por nick, simplemente podrÃan usar cualquier sistema de registro y asà evitarian que entren con los nicks y que les arruinen su scorer. Ahora del otro lado de que tu me dices sobre el nvault, dejame decirte que yo ese guardado nunca lo supe usar, me contaron algunos amigos que sÃ, a ellos aveces se les bugeaba borrandole los datos como tu lo acabas de mencionar. PD: También podrÃan usar el no name changed
-
Parte #2 [-] Nombre del plugin: tAPI_Informacion.sma [-] Creador del plugin: totopizza [-] Breve descripción: Con este plugin, podrán ver su información, mediante unos comandos del say. [-] Comandos: [TABLE=class: grid, width: 500, align: center] [TR] [TD=align: center]Comando [/TD] [TD=align: center]say [/TD] [TD=align: center]say_team [/TD] [TD=align: center]consola [/TD] [/TR] [TR] [TD=align: center]/informacion [/TD] [TD=align: center]Sà [/TD] [TD=align: center]Sà [/TD] [TD=align: center]No [/TD] [/TR] [TR] [TD=align: center]/info [/TD] [TD=align: center]Sà [/TD] [TD=align: center]Sà [/TD] [TD=align: center]No [/TD] [/TR] [TR] [TD=align: center]/hora [/TD] [TD=align: center]Sà [/TD] [TD=align: center]No[/TD] [TD=align: center]No [/TD] [/TR] [/TABLE] [-] Código: #include <amxmodx> #include <amxmisc> #include <fun> #include <tAPI>//Incluimos el include para que funcionen los dias, horas, minutos etc.. new const szTag[] = "[Mundo Mapping]";//Este es un prefix, o como ustedes le quieran llamar public plugin_init() { register_plugin("Menu de informacion", "v1.0", "totopizza"); register_clcmd("say /info", "clcmd_info",_,"< Muestra tu informacion en un menu>");//Comando say para abrir el menu de informacion register_clcmd("say /informacion", "clcmd_info",_,"< Muestra tu informacion en un menu>");//Comando say para abrir el menu de informacion register_clcmd("say_team /info", "clcmd_info",_,"< Muestra tu informacion en un menu>");//Comando say_team para abrir el menu de informacion register_clcmd("say_team /informacion", "clcmd_info",_,"< Muestra tu informacion en un menu>");//Comando say_team para abrir el menu de informacion register_clcmd("say /hora", "clcmd_hora",_, "< Muestra la hora local del server>"); register_menucmd(register_menuid("Menu informacion"), 1023, "info_key"); } public clcmd_info(id) { static tTexto[256], tName[32], len; len = 0; get_user_name(id, tName, charsmax(tName));//Obtenemos el nombre del player, con tName new dia, hora, mins, segs, keys = MENU_KEY_0; dia = tGet_user_days(id);//Obtenemos los dias jugados del player hora = tGet_user_hrs(id);//Obtenemos las horas jugados del player mins = tGet_user_mins(id);//Obtenemos los minutos jugados del player segs = tGet_user_segs(id);//Obtenemos los segundos jugados del player len += formatex(tTexto[len], charsmax(tTexto) - len, "\r%s \yInformación de la cuenta:\w %s^n", szTag, tName); len += formatex(tTexto[len], charsmax(tTexto) - len, "\r* \wTiempo jugado: \d%d \yDias \w| \d%d \yHoras \w| \d%d \yMinutos \w| \d%d \ySegundos^n^n",dia,hora,mins,segs); len += formatex(tTexto[len], charsmax(tTexto) - len, "\r* \y Frags: \d%d^n", tGet_user_frags(id)); len += formatex(tTexto[len], charsmax(tTexto) - len, "\r* \y Muertes: \d%d^n^n", tGet_user_muertes(id)); len += formatex(tTexto[len], charsmax(tTexto) - len, "\r0. Salir"); show_menu(id, keys, tTexto, -1, "Menu informacion");//Mostramos el menu return PLUGIN_HANDLED; } public info_key(id, keys, menu) { if(keys == 1) return PLUGIN_HANDLED; else return PLUGIN_HANDLED; return PLUGIN_HANDLED; } public clcmd_hora(id) { new szHora[20]; get_time("%I:%M:%S %p", szHora, charsmax(szHora)); tChat(id, "^4%s ^1La hora local del servidor es: ^4%s", szTag, szHora) } public tChat(id, const input[], any:...) { static szMsg[191], msgSayText; if (!msgSayText) msgSayText = get_user_msgid("SayText"); replace_all(szMsg, 190, "!g", "^4"); replace_all(szMsg, 190, "!y", "^1"); replace_all(szMsg, 190, "!team", "^3"); vformat(szMsg, 190, input, 3); message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id); write_byte(id ? id : 33); write_string(szMsg); message_end(); } - - - Actualizado - - - Parte #3 [-] Nombre del include: tAPI.inc [-] Creador del include: totopizza [-] Breve descripción: Con este include podrán saber los frags, muertes, dias, horas, minutos, segundos, del usuario, tambien le podran dar, se los dejo aquà con una descripción: [TABLE=class: grid, width: 500, align: center] [TR] [TD=align: center]Native[/TD] [TD=align: center]GET[/TD] [TD=align: center]SET[/TD] [TD=align: center]Descripción[/TD] [/TR] [TR] [TD=align: center]tGet_user_frags(id)[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]No[/TD] [TD=align: center]Con esta native podemos saber los frags del jugador[/TD] [/TR] [TR] [TD=align: center]tGet_user_muertes(id)[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]No[/TD] [TD=align: center]Con esta native podemos saber las muertes del jugador[/TD] [/TR] [TR] [TD=align: center]tGet_user_segs(id)[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]No[/TD] [TD=align: center]Con esta native podemos saber los segundos que tiene el jugador[/TD] [/TR] [TR] [TD=align: center]tGet_user_mins(id)[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]No[/TD] [TD=align: center]Con esta native podemos saber los minutos que tiene el jugador[/TD] [/TR] [TR] [TD=align: center]tGet_user_hrs(id)[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]No[/TD] [TD=align: center]Con esta native podemos saber las horas que tiene el jugador[/TD] [/TR] [TR] [TD=align: center]tGet_user_days(id)[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]No[/TD] [TD=align: center]Con esta native podemos saber los dÃas que tiene el jugador[/TD] [/TR] [TR] [TD=align: center]---------------------------------------------------------------------------------[/TD] [TD=align: center]--------------[/TD] [TD=align: center]-------------[/TD] [TD=align: center]------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------[/TD] [/TR] [TR] [TD=align: center]tSet_user_frags(id, frags)[/TD] [TD=align: center]No[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]Con esta native podemos sumarle una cantidad de frags al player[/TD] [/TR] [TR] [TD=align: center]tSet_user_muertes(id, muertes)[/TD] [TD=align: center]No[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]Con esta native podemos darle una cantidad de muertes al player[/TD] [/TR] [TR] [TD=align: center]tSet_user_screenfade(id,rrr,ggg,bbb,duracion, alpha)[/TD] [TD=align: center]No[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]Con esta native podemos darle un ScreenFade al jugador, duración en minutos, alpha es la opacidad, esto es como el env_fade[/TD] [/TR] [TR] [TD=align: center]tSet_info(id, info)[/TD] [TD=align: center]No[/TD] [TD=align: center]SÃ[/TD] [TD=align: center]Con esta native podemos darle una info en la tabla de scorer al player: info = 0 (Solo le damos los frags) info = 1 (Solo le damos las muertes) info = 2 (Le damos los frags y muertes)[/TD] [/TR] [TR] [/TR] [/TABLE] - - - Actualizado - - - Codigo del inc: /****************************************** ** Included by totopizza ** ********** ************ *******************************************/ #if defined _tAPI_included #endinput #endif #define _tAPI_included native tGet_user_frags(id) native tGet_user_muertes(id) native tGet_user_segs(id) native tGet_user_mins(id) native tGet_user_hrs(id) native tGet_user_days(id) native tSet_user_frags(id, frags) native tSet_info(id, info) native tSet_user_muerts(id, muertes) native tSet_user_screenfade( id, rrr, ggg, bbb, duracion,alpha ) - - - Actualizado - - - Para este plugin deberan usar el guardado creado por destro: https://amxmodx-es.com/Thread-API-Advanced-Vault-System-1-4c-23-12-2014
-
[-] Nombre del plugin: tAPI_sis_frags.sma [-] Creador del plugin: totopizza [-] Breve descripción: Este plugin lo ise yo se 0, el plugin consiste en un sistema que te guarda los frags, muertes, también tiene un sistema de tiempo jugado - dias, horas, minutos, segundos - con guardadoal entrar tú al servidor se te darán los frags y muertes, también se te dará el conteo del tiempo jugado, al desconectarte se te guardaran los datos, también cuenta con un sistema de servers, te aparecen en consola. [-] Código: #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <cstrike> #include <fun> #include <adv_vault> #define TASK_CONTEO 5012 #define TASK_ID ( taskid - TASK_CONTEO) #define TIME_ANUNCIO 300.0 // 5 minutos new const szTag[] = "[Mundo Mapping]"; new const szWeb[] = "http://www.mundo-mapping.net/foro/"; #pragma semicolon 1 enum _:DATA_SERVER { SERVER[32], IP[25] }; new const szServers[][DATA_SERVER] = { /* Nombre del Server Ip del server */ { "[Mundo-Mapping] Servidor 1", "123.123.123.123:27015" }, { "[Mundo-Mapping] Servidor 2", "123.123.123.123:27016" }, { "[Mundo-Mapping] Servidor 3", "123.123.123.123:27017" } }; enum { CAMPO_FRAGS=0, CAMPO_MUERTES, CAMPO_SEGUNDOS, CAMPO_MINUTOS, CAMPO_HORAS, CAMPO_DIAS, MAX_CAMPOS }; new g_campos[MAX_CAMPOS], tGuardado; new tPlayerName[33][32]; new t_frags[33], t_muertes[33], t_segundos[33], t_minutos[33], t_horas[33], t_dias[33]; new g_msgScreenFade; public plugin_init() { register_plugin("SIS. FRAGS-MUERTES-DIAS", "v1.0", "totopizza"); //Menu... register_clcmd("chooseteam", "clcmd_menu"); register_clcmd("jointeam", "clcmd_menu"); //Guardado tGuardado = adv_vault_open("Tguardado", false); g_campos[CAMPO_FRAGS] = adv_vault_register_field(tGuardado, "FRAGS"); g_campos[CAMPO_MUERTES] = adv_vault_register_field(tGuardado, "MUERTES"); g_campos[CAMPO_SEGUNDOS] = adv_vault_register_field(tGuardado, "SEGUNDOS"); g_campos[CAMPO_MINUTOS] = adv_vault_register_field(tGuardado, "MINUTOS"); g_campos[CAMPO_HORAS] = adv_vault_register_field(tGuardado, "HORAS"); g_campos[CAMPO_DIAS] = adv_vault_register_field(tGuardado, "DIAS"); adv_vault_init(tGuardado); //Hams RegisterHam(Ham_Spawn, "player", "fw_hamspawn", 1);//al revivir RegisterHam(Ham_Killed, "player", "fw_hamkilled", 1);//Al matar set_task(TIME_ANUNCIO, "tAnuncio", _,_,_, "b"); g_msgScreenFade = get_user_msgid( "ScreenFade" );//Para que funcione el efecto del ScreenFase o lo que hacemos con los mapas: env_fade } /***************************** * NATIVES * ******************************/ public plugin_natives() { register_native("tGet_user_frags", "tGet_user_frags", 1); register_native("tGet_user_muertes", "tGet_user_muertes", 1); register_native("tGet_user_segs", "tGet_user_segs", 1); register_native("tGet_user_mins", "tGet_user_mins", 1); register_native("tGet_user_hrs", "tGet_user_hrs", 1); register_native("tGet_user_days", "tGet_user_days", 1); register_native("tSet_user_frags", "tSet_user_frags", 1); register_native("tSet_user_muertes", "tSet_user_muertes", 1); register_native("tSet_user_screenfade", "tSet_user_screenfade", 1); } /********************************** * Player Killed and Player Spawn * ***********************************/ public fw_hamspawn(id) { //tSet_info - id, 0 = frags, 1 = muertes, 2 = frags y muertes tSet_info(id, 2); tChat(id, "^4%s ^1Preciona la letra ^4M ^1Para abrir el menú principal", szTag); } public fw_hamkilled(victim, attacker) { if(!is_user_connected(victim) || !is_user_connected(attacker)) return HAM_IGNORED; if( victim == attacker) { t_frags[victim]--; t_muertes[victim]++; return HAM_IGNORED; } t_frags[attacker]++; t_muertes[victim]++; tSet_user_screenfade(victim, 255, 000, 000, 2, 100);//Esto es como el env_fade de los mapas (: return HAM_IGNORED; } /***************************** * MENU and SERVERS * ******************************/ public clcmd_menu(id) { if(get_user_team(id) == 1 || get_user_team(id) == 2) { new menu = menu_create("\r[Mundo Mapping] \yMenú principal", "opc_menu"); menu_additem(menu, "\wMi Información", "1"); menu_additem(menu, "\yLista de Servidores", "2"); if(is_user_admin(id)) menu_additem(menu, "\yMenú de Admin", "3"); else menu_additem(menu, "\dMenú de Admin", "3"); menu_setprop(menu, MPROP_EXITNAME, "\ySalir"); menu_display(id, menu, 0); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public opc_menu(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: client_cmd(id, "say /info"); case 1: show_servers(id); case 2: { if(!is_user_admin(id)) { tChat(id, "^4%s ^1No tienes acceso a este menú!", szTag); return PLUGIN_HANDLED; } else { client_cmd(id, "amxmodmenu"); } } } menu_destroy(menu); return PLUGIN_HANDLED; } public show_servers(id) { console_print(id, "=============== %s ===============", szTag); static i; for(i = 0; i < sizeof(szServers); i++) console_print(id, "#%d | %s - IP: %s", i+1, szServers[i][sERVER], szServers[i][iP]); console_print(id, "Está es la lista de Nuestros Servidores"); console_print(id, "=============== %s ===============", szTag); client_cmd(id, "toggleconsole"); return PLUGIN_HANDLED; } /********************************** * Client Connect and Disconnec * ***********************************/ public client_putinserver(id) { get_user_name(id, tPlayerName[id], charsmax(tPlayerName[])); t_frags[id] = 0; t_muertes[id] = 0; t_segundos[id] = 0; t_minutos[id] = 0; t_horas[id] = 0; t_dias[id] = 0; tCargar(id); set_task(1.0, "start_conteo", id); } public client_disconnect(id) { tGuardar(id); remove_task(id+TASK_CONTEO); } /***************************** * GUARDADO * ******************************/ public tCargar(id) { if(!adv_vault_get_prepare(tGuardado, _, tPlayerName[id])) return; t_frags[id] = adv_vault_get_field(tGuardado, g_campos[CAMPO_FRAGS]); t_muertes[id] = adv_vault_get_field(tGuardado, g_campos[CAMPO_MUERTES]); t_segundos[id] = adv_vault_get_field(tGuardado, g_campos[CAMPO_SEGUNDOS]); t_minutos[id] = adv_vault_get_field(tGuardado, g_campos[CAMPO_MINUTOS]); t_horas[id] = adv_vault_get_field(tGuardado, g_campos[CAMPO_HORAS]); t_dias[id] = adv_vault_get_field(tGuardado, g_campos[CAMPO_DIAS]); tSet_info(id, 2); } public tGuardar(id) { adv_vault_set_start(tGuardado); adv_vault_set_field(tGuardado, g_campos[CAMPO_FRAGS], t_frags[id]); adv_vault_set_field(tGuardado, g_campos[CAMPO_MUERTES], t_muertes[id]); adv_vault_set_field(tGuardado, g_campos[CAMPO_SEGUNDOS], t_segundos[id]); adv_vault_set_field(tGuardado, g_campos[CAMPO_MINUTOS], t_minutos[id]); adv_vault_set_field(tGuardado, g_campos[CAMPO_HORAS], t_horas[id]); adv_vault_set_field(tGuardado, g_campos[CAMPO_DIAS], t_dias[id]); adv_vault_set_end(tGuardado, 0, tPlayerName[id]); } /***************************** * TIEMPO JUGADO * ******************************/ public start_conteo(id) set_task(1.0, "tiempo_jugado", id+TASK_CONTEO,_,_, "b"); public tiempo_jugado(taskid) { t_segundos[TASK_ID]++; if(t_segundos[TASK_ID] > 60) { t_minutos[TASK_ID]++; t_segundos[TASK_ID] = 0; } if(t_minutos[TASK_ID] > 60) { t_horas[TASK_ID]++; t_minutos[TASK_ID] = 0; t_segundos[TASK_ID] = 0; } if(t_horas[TASK_ID] >= 24) { t_dias[TASK_ID]++; t_horas[TASK_ID] = 0; t_minutos[TASK_ID] = 0; t_segundos[TASK_ID] = 0; } return PLUGIN_HANDLED; } public tAnuncio() tChat(0, "^4%s ^1Visita nuestro foro para más información ^4%s", szTag, szWeb); /***************************** * NATIVE GET * ******************************/ public tGet_user_frags(id) return t_frags[id]; public tGet_user_muertes(id) return t_muertes[id]; public tGet_user_segs(id) return t_segundos[id]; public tGet_user_mins(id) return t_minutos[id]; public tGet_user_hrs(id) return t_horas[id]; public tGet_user_days(id) return t_dias[id]; /***************************** * NATIVE SET * ******************************/ public tSet_user_frags(id, frags) return t_frags[id] += frags; public tSet_user_muertes(id, muertes) return t_muertes[id] += muertes; public tSet_info(id, info) { static i; for(i = 1; i < get_maxplayers() ; i++) { if(!is_user_connected(i)) continue; if(info == 0) set_user_frags(i, t_frags[i]); if(info == 1) cs_set_user_deaths(i,t_muertes[i]); if(info >= 2) { set_user_frags(i, t_frags[i]); set_user_frags(i, t_frags[i]); cs_set_user_deaths(i,t_muertes[i]); } } } public tSet_user_screenfade(id, rrr, ggg, bbb, duracion, alpha) { message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_msgScreenFade, _, id ); write_short( duracion * 4096 ); write_short( duracion * 4096 ); write_short( 0x0000 ); write_byte( rrr ); // Color 1 write_byte( ggg ); // Color 2 write_byte( bbb ); // Color 3 write_byte( alpha ); message_end( ); } /***************************** * COLOR MENSAJE * ******************************/ public tChat(id, const input[], any:...) { static szMsg[191], msgSayText; if (!msgSayText) msgSayText = get_user_msgid("SayText"); replace_all(szMsg, 190, "!g", "^4"); replace_all(szMsg, 190, "!y", "^1"); replace_all(szMsg, 190, "!team", "^3"); vformat(szMsg, 190, input, 3); message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id); write_byte(id ? id : 33); write_string(szMsg); message_end(); }
-
Muchas Gracias! Me alegra que te haya gustado
-
-Slots: 32 -FPS: Más de 70 -Tipo: Zombie Escape -Peso: 768 Kilo Bytes -Descripción: Este mapa esta orientado al video juego clasico PACMAN. Espero que les guste el mapa y que lo disfruten en sus servidores/amigos/solo (? -Imágenes: -Link de Descarga: El mapa lo pueden descargar dando clic AquÃ