-Rex-

Members
  • Content count

    231
  • Joined

  • Last visited

Community Reputation

5 Neutral

4 Followers

About -Rex-

  • Rank
    Trick

Details

  • Location
    Ecuador
  • Interests
    Powerlifting
  1. [Presentacion y ayuda] Mta.

    Puedes preguntarle a alguno de los 103.026 miembros de tu comunidad si te pueden ayudar gratis v:
  2. [APORTE] Sistema básico de grupos

    En esta nueva versión la mayoria de bugs fueron corregidos, además de eso hubo mejoras en la interfaz. El codigo fue simplificado para que sea lo mas editable posible. Entre lo que destaca es que en la mayoria de acciones se implemento un sistema de ventanas de dialogo, además de haberse creando un sistema de eventos propio para el script. Puedes cambiar el nombre de tu grupo las veces que quieras. Las acciones que haga cada jugador ( por ejemplo cuando se expulse un jugador ) será mostrada en el chat para todos los miembros del grupo, asi como cada mensaje que se registra en el sistema de logs. Fueron muchísimos cambios que se dieron en esta versión por lo que no podre mencionarlas todas. Espero que les guste esta nueva versión, lo he subido a github con la intención de que si algún dia abandono su desarrollo, la comunidad lo siga manteniendo. Link: https://github.com/xNout/gpsystem GALERIA DE IMAGENES
  3. [APORTE] Sistema básico de grupos

    Nueva versión disponiblen! ( v2.0.0 ) Pronto subire imagenes https://github.com/R3xit0/gpsystem
  4. No funciona ClientTriggerEvent

    function Parada_58_a_1 (DispPasajeros) if (PasajENP_a_1 > 0) and (DispPasajeros > 0) then DispPasajeros = DispPasajeros -1 PasajENP_a_1 = PasajENP_a_1 -1 PasajSuben = PasajSuben +1 outputChatBox ("Pasajeros que suben: " .. PasajSuben, source) outputChatBox ("Pasajeros Disponibles: " .. DispPasajeros, source) setTimer ( Parada_58_a_1, 1000, 1, source, DispPasajeros) else outputChatBox ("Pasajeros Nuevos Disponibles: " .. DispPasajeros, source) timer = setTimer (greetingCommand, 500, 1, PasajSuben) --Pasa a la otra func, para realizar el Trigger Client end end addEvent( "onGreeting", true ) addEventHandler( "onGreeting", resourceRoot, Parada_58_a_1 ) function greetingCommand ( playerSource, PasajSuben ) local playerSource = getPlayerName( playerSource ) triggerClientEvent ( playerSource, "onGreeting2", playerSource, PasajSuben ) --Aca es el dato que se pasa a Cliente outputChatBox ("Pasajeros que suben: " .. PasajSuben, playerSource) end
  5. Callbacks

    ¿Qué es un callback? Como la palabra en inglés lo indica un callback es una “llamada de vuelta”. Es simple: llamo a una funcion y le envío por parámetro otra función (un callback) esperando que la función que llamé se encargue de ejecutar esa función callback. Concepto de google. Siendo más explicito, es una funcion a la cual le vamos a pasar como parametro otra función, esperando que esta se encargue de ejecutarla. ¿Cuando es necesario usar un callback? Desde mis inicios en MTA hasta en la actualidad no he visto ningún Scripter que haya empleado el uso de un callback, yo me familiarize con este concepto cuando empeze a trabajar con C# y realmente es muy útil para muchas situaciones. Por ejemplo un uso que yo le di en MTA, fue cuando desarrolle un sistema de Ventanas de dialogo para mi sistema de grupos ( basado en el MessageBox de C# ), como parametros a esta funcion para las ventanas de dialogo, fueron 2: Tipo de ventana ( SI/NO, OK, SI/NO/CANCELAR ) Funcion de callback En el primer argumento enviaba el tipo de ventana y en el segundo argumento la funcion a ejecutar como callback, esta funcion iba a ser empleada de tal forma que cuando un jugador de click al boton SI la funcion de callback seria ejecutada enviando parametros adicionales indicando que boton fue clickeado. Ahora les daré un pequeño ejemplo: Crearemos una funcion que se encargará de insertar productos en una Base de datos, la cual queremos que después de ejecutar la sentencia SQL, ejecute otra funcion que imprima un mensaje. local data_base = dbConnect( "sqlite", "sql.db" ) dbFree( dbQuery( data_base, "CREATE TABLE IF NOT EXISTS producto ( codigo STRING, producto STRING, precio INT )" ) ); -- funcion que sera usada para el callback function mensajeDB( text ) outputServerLog(text) end function insertarDatos( cmd, funcion_mensaje ) -- Ejecutamos el código SQL dbExec( data_base, cmd ) -- Luego de esto vamos a ejecutar la funcion enviada para imprimir el mensaje indicando que los datos fueron insertados correctamente funcion_mensaje( "Datos insertados" ); end -- Aqui estamos enviando como primer argumento un codigo SQL para que se inserte en la base de datos -- Como segundo argumento estamos enviado a la funcion mensajeDB que será ejecutada una vez se inserten los datos en la DB. insertarDatos( "INSERT INTO producto( codigo, producto, precio ) VALUES( '00001', 'Computadora', 276.89 )", mensajeDB ) Bien, en la funcion de insertarDatos estamos enviando como primer parametro una sentencia SQL, en el segundo estamos enviando la funcion mensajeDB que se encargaria de imprimir un mensaje en la consola. Cuando usamos esta funcion lo primero que se hizo fue ejecutar la sentencia SQL y luego de esto la funcion que se encargaría de imprimir el mensaje, pero como nos fijamos el segundo argumento de insertarDatos se llama 'funcion_mensaje', la cual estamos ejecutando como una función normal mandando una Cadena de texto como argumento, Esto no afectara en absoluto la función original mensajeDB. Espero haber sido lo más especifico posible intentando explicar el concepto de los callbacks en Lua, puede ser usado en muchos ambitos.. Aparte de yo hacer uso de la misma en un sistema de Ventanas de dialogo, tambien la emplee creando mi propio sistema de eventos el cual dejare como aporte a continuación: --[[ * ******************************************* * * Developed by: -Rex- * * Last modified: - * * Description: * * ******************************************* * ]]-- events = {} events.handled = {}; events.callbacks = { }; function exec_event( event_name, ... ) local arguments = { ... }; arguments.lenght = #arguments; local event_callback = function( event_name, arguments ) for i, _function in ipairs(events.callbacks) do _function( event_name, arguments); end end if( events.handled[event_name] ~= nil ) then event_callback( event_name, arguments ); for i, _functions in ipairs(events.handled[event_name] or { }) do _functions( arguments ); end end end function handle_event( _function, event ) if ( not events.handled[event] ) then events.handled[event] = { }; end local result = false; if not exists_in_table( events.handled[event] ) then table.insert( events.handled[event], _function ) result = true; end if( not result ) then outputDebugString( "Event: [ ".. event .." ] already handled", 3, 255, 0, 0 ); return; end outputDebugString( "Event: [ ".. event .." ] handled", 0, 0, 255, 0 ); end -- //Este funcion se ejecuta cada que sucede un evento y retorna los argumentos del mismo ( En pocas palabras, un delegado ) function add_ecallback( _function ) if not exists_in_table( _function, events.callbacks) then table.insert( events.callbacks, _function ); outputDebugString( debug.getinfo(1,"n").name .." was added to events callback" ); else outputDebugString( debug.getinfo(1,"n").name .." was already been added" ) end end Funciones -- Esta funcion se encarga de añadir un evento. handle_event( _function, event_name ) -- Con esta funcion ejecutaremos un evento y podremos mandar parametros. exec_event ( event_name, ... arguments ) -- Esta funcion se ejecutara cuando cualquier evento añadido se ejecute, enviando a la funcion del callback el nombre del evento y sus argumentos. add_ecallback( _function ) Ejemplo de uso: -- Por ejemplo creamos un evento que notifique cuando se cree un grupo. function create_gp( creador, nombre_grupo, fecha_creacion ) outputChatBox( "El jugador: "..getPlayerName( creador ) .." fundo el grupo: "..nombre_grupo.." a la fecha: "..fecha_creacion, root, 255, 255, 255, true ) end handle_event( "on_player_create_group", create_gp ) -- Aquí ejecutaremos el evento enviando siertos argumentos, por ejemplo: -- El jugador X creo el grupo xNout a la fecha 18/04/2018 15:45 exec_event("on_player_create_group", player, "xNout", "18/04/2018 15:45" ) -- Resultado: --> El jugador: X fundo el grupo: xNout a la fecha: 18/04/2018 15:45 -- Cada vez que se cree un grupo el evento será ejecutado enviando todos los parametros que se le den.
  6. ¿Necesitas ayuda?

    Niños rata hay cualquier cantidad, al igual que personas muy toxicas.. la mayoria de publicaciones que ves allí son de: "Solicito un scripter, pago con rango" o niños presumiendo el robo de un script. Además que venden Gamemodes de DayZ filtradas. Para NADA hay publicaciones de ayuda, existen muy pocas.
  7. Hola (: Para explicarlo sin tanto bla bla, vengo a presentar un sistema de ventanas de dialogo que esta basado en el de Windows Forms ( C# ). Por ahora el sistema posee 3 tipos de ventanas de dialogo Si/No/Cancelar OK Aceptar/Cancelar Cualquier critica pueden comentarla(:
  8. pantallazos en el juego

    Deberias comprar un tostador nuevo
  9. ¿Por qué a todo servidor DayZ le ponen una 'Z' al último ? Pdsta: Deberías poner fotos y una descripción más explicita
  10. GridList y string.find

  11. Bug en inventario dayz

    Si no pones el codigo, como te vamos a ayudar? hahaha
  12. Solicito ayuda en un script.

    onVehicleExit no tiene nada que ver con lo que quiere hacer, debe usar este evento https://wiki.multitheftauto.com/wiki/OnVehicleExplode
  13. AYUDA

    busca en la comunidad, savesystem
  14. GET account ID

    .
  15. Buenas, paso que hace tiempo un cliente me pidio que le haga un script de duelos lo cual luego me arrepenti por haber pedido demasiado poco por el script. Entonces decidí nunca entregarlo, logré desarrollarlo casi por completo pero después por temas de la Universidad no segui trabajando en nada que tenga que ver con MTA y deje muchos proyectos sin terminar. Yendo al grano, el script posee estas caracteristicas Interfaz en DX ( No multiresolucion, fue hecha en 1280x600 ) Puedes elegir entre 8 mapas diferentes Cada duelo es creado en una dimension diferente junto con el mapa ( Es decir cada vez que crees un duelo automaticamente se buscara X dimension desocupada creando el mapa en dicha dimension y redireccionando a los jugadores a la misma ). Se otorgaran armas al jugador en cada respawn Para ganar el duelo debes matar a tu contrincante 5 veces. En fin, el script esta casi por completo, faltaron agregar las Coordenadas de los spawns, los mapas y siertas cosillas en la interfaz. Espero lo puedan modificar a su gusto. Imagenes: https://imgur.com/a/DKkHy Código Cliente Código server link de descarga: https://mega.nz/#!JuY3UKiI!IeYNbel4Ll0pUS5jCx6t0D_ixdZH3NWzNl6KcQL89IE