Jump to content

aka Blue

Members
  • Posts

    2,106
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by aka Blue

  1. Es que no se trata de dar dinero a todos los jugadores sino, un comando administrativo que le de dinero al otro jugador... PD: El command ese es innecesario en caso de que quieras poner que el comando es erróneo ya que yo mismo probé mi script y no da ningun error. Funciona perfectamente. Un ejemplo de lo que quise decir. --Digamos que nos olvidamos de poner la cantidad, usando el "command", podríamos poner un else con lo siguiente. else outputChatBox ("Debes utilizar /"..command.. " [jugador] [cantidad]", thePlayer, 255, 255, 255) end Algo que debes saber es que si quieres coger el nombre de una función, por ejemplo, el nombre de otro jugador el cual consigues mediante local otro = getElementByID (otherPlayer) --Por ejemplo En el chatBox debes poner ese "otro" en puntos. Algo así: outputChatBox ("Se llama "..otro, thePlayer, 255, 0, 0 Debes tener en cuenta que si hay una coma después de eso, debes poner únicamente dos puntos al principio ".." y no ponerlos al final ya que te dará error. En caso de que quieras añadir algo más y el nombre del "otro" quede en medio del mensaje, sí se utilizarían ambos puntos, ejemplo outputChatBox ("Has matado a "..otro.. " usando una M4", thePlayer, 255, 255, 255) --Por ejemplo Espero que me hayas entendido
  2. Ahí voy a probar, muchas gracias por el código
  3. El script lo que hace es que al crear la barrera la asigna al jugador, luego pones soltarbarrera para dejarla en el suelo. Eso de meter una tabla dentro de otra, sería usar table.insert ¿cierto? PD: ¿Me podrían dar un pequeño ejemplo?
  4. Que elija la ID la cual borrar, exacto.
  5. Más de una, exacto y que la pueda borrar usando el value de dicha barrera. Algo como una ID, vamos.
  6. Bien, como editaste pues no pude leer bien jaja. Bueno, hice más o menos ésto, ¿estaría bien? barreras = {} function ponerbarrera (thePlayer) local x, y, z = getElementPosition (thePlayer) local faccion = exports.factions:isPlayerInFaction (thePlayer, 2) if faccion then --SI ERES DE LA FACCIÓN, PASA ÉSTO barreras [ value ] = createObject (1228, x + 1, y + 1, z, 0, 0, 50) table.insert(barreras, value) exports.chat:me (thePlayer, "saca una barrera y la lleva consigo en ambas manos") attachElementToElement ( barreras, thePlayer) outputChatBox ("Creada la barrera "..value, thePlayer, 0, 255, 120) --COMANDO QUE SUELTA LA BARRERA addCommandHandler ("soltarbarrera", function () detachElementFromElement ( barreras, thePlayer ) exports.chat:me (thePlayer, "suelta la barrera en el suelo.") end ) --COMANDO QUE BORRA LA BARRERA addCommandHandler ("quitarb", function () table.insert(barreras, value) destroyElement (barreras, value) outputChatBox ("Has borrado la barrera "..value, thePlayer, 255, 0, 0) end ) --SI NO ERES POLICÍA TE PASA ÉSTO else outputChatBox ("No eres policía", thePlayer, 255, 0 ,0) end end addCommandHandler ("barrera", ponerbarrera)
  7. No, si yo tampoco entendí muy bien si es que era un comando administrativo o que le de de un jugador a otro jajajaja.
  8. No pero, se supone que es un comando administrativo (hasta donde entendí), en caso contrario, puedo pasar otro código utilizando un math.ceil y demás pero, como dije, entendí que sería un comando administrativo.
  9. Perfecto, muchas gracias. PD: Para que salga x id en el outputChatBox, ¿tiene que ser así? outputChatBox ("Has creado la barrera con la ID: "..barreras, thePlayer, 0, 255, 120)
  10. ¿Creando algo parecido a ésto? barreras = {} Eso bien, pero, ¿después?
  11. Buenas, estoy haciendo un pequeño script de barreras (bastante simple) y querría saber como puedo asignarle a cada barrera creada un value o ID con el cual, posteriormente poder borrarla. Dejo el código por aquí, el script será posteado en la comunidad de MTA una vez acabado: function ponerbarrera (thePlayer) local x, y, z = getElementPosition (thePlayer) local faccion = exports.factions:isPlayerInFaction (thePlayer, 2) if faccion then --SI ERES DE LA FACCIÓN, PASA ÉSTO barresita = createObject (1228, x + 1, y + 1, z, 0, 0, 50) exports.chat:me (thePlayer, "saca una barrera y la lleva consigo en ambas manos") attachElementToElement ( barresita, thePlayer) outputChatBox ("Creada la barrera", thePlayer, 0, 255, 120) --COMANDO QUE SUELTA LA BARRERA addCommandHandler ("soltarbarrera", function () detachElementFromElement ( barresita, thePlayer ) exports.chat:me (thePlayer, "suelta la barrera en el suelo.") end ) --COMANDO QUE BORRA LA BARRERA addCommandHandler ("quitarb", function () destroyElement (barresita) outputChatBox ("Has borrado la barrera", thePlayer, 255, 0, 0) end ) --SI NO ERES POLICÍA TE PASA ÉSTO else outputChatBox ("No eres policía", thePlayer, 255, 0 ,0) end end addCommandHandler ("barrera", ponerbarrera)
  12. Yo creo que para que sean todos, se usa https://wiki.multitheftauto.com/wiki/GetElementsByType PD: Lo sigo viendo bien, será porque yo uso un export llamado exports.players:getFromID (creo que era así, no estoy del 100% seguro) pero creo que estaría bien
  13. Creo que sería algo como ésto. function spawn (thePlayer) local x = --Aquí le pones las coordenadas x local y = --Aquí las coordenadas y local z = --Aquí las coordenadas z setElementPosition ( thePlayer, x, y, z ) outputChatBox ("Bienvenido al servidor " ..thePlayer.. " pásalo bien!", thePlayer, 255, 100, 100) end addEventHandler ("onPlayerJoin", getRootElement(), spawn) PD: Recuerda, para guardar la posición del jugador, puedes utilizar un contacto entre MySQL o bien, crear tablas en el propio .xml aunque eso no tengo ni idea de hacerlo ya que la GM que uso usa el contacto vía MySQL jaja. PD2: Mirando la Wiki más atentamente me di cuenta que esa función ni funciona (creo), por lo cual, te pongo una recomendada por la propia wiki, la cual sería, spawnPlayer. function spawnear (thePlayer, x, y, z) local x = --Aquí le asignas una coordenada x local y = --Le asignas una coordenada y local z = --Le asignas una coordenada z spawnPlayer (thePlayer, x, y, z, [puedesponerrotacion], [puedesponerunaskin], [puedesponeruninterior], [puedesponerunadimension], [puedesponerunteam]) outputChatBox ("Bienvenido al servidor "..thePlayer.. " pásalo bien!", thePlayer, 255, 100, 100) --Ejemplo de como quedaría con todo puesto. -- locos = createTeam ("Los locos", 255, 0, 0) --Crea un team -- x = -10023 -- y = 20 -- z = -111 (es uno inventado ) -- spawnPlayer (thePlayer, x, y, z, 90, 299, 1, 30, locos) -- outputChatBox ("Bienvenido al servidor "..thePlayer.. " pásalo bien!", thePlayer, 255, 100, 100) end addEventHandler("onPlayerLogin", getRootElement(), spawnear)
  14. También soy algo nuevo en ésto pero tengo experiencia por otros lenguajes anteriores de programación así que, te ayudaré en lo que sepa. Lo del function name (command, etc, etc), esos son los valores que le puedes dar a dicho comando. Me explico, digamos que quieres hacer un comando con dos funciones, /dardinero [jugador] [cantidad]. Ahora bien, deberías poner algo como ésto: --Cuando se pone local es una variable dentro de la función (hasta donde tengo entendido) y si no tiene local es una función que puede funcionar dentro y fuera de la función. (Repito, es algo que no tengo muy claro). function dareldinero (thePlayer, amount, otherPlayer) local otro = getElementByID (otherPlayer) --Coge al otro jugador por ID local cantidad = tonumber(amount) --Amount es cantidad en inglés y como ves, es lo que pusimos arriba en la función. if otro then --Si ese 'otro' existe, hace... givePlayerMoney (otro, cantidad) --Le da al jugador del cual pusiste la ID, la cantidad que asignaste de dinero. outputChatBox ("Le has dado "..cantidad.." a "..otro, thePlayer) --Ésto envía un mensaje al que puso al comando diciendo satisfactoriamente le diste el dinero outputChatBox ("Has recibido "..cantidad.." de "..thePlayer, otro) --Ésto enviaría un mensaje al jugador al que le diste el dinero, diciendo que tú le diste el dinero y la cantidad que le diste. else --si ese 'otro', no existe, hace outputChatBox ("El jugador introducido es inválido", thePlayer, 255, 0, 0) --Envía un mensaje en rojo (El rojo es el formato RGB, 255, 0, 0) al jugador que puso el comando, diciendo que el jugador no está conectado y por lo cual, no puede enviar dicho dinero. end end addCommandHandler ("dardinero", dareldinero) Te recomiendo ir mirando la Wiki o simplemente otros scripts que haya por la comunidad. Con mirar no me refiero a robarlos sino en fijarte como lo programan e intentar hacer tú mismo, algo parecido o mejor. Suerte en ello
  15. Me refiero a que dibuje el progreso poco a poco. Creo que es la segunda función PD: Hum, no me funciona. Lo que me refería es eso, que el progreso vaya poniendose poco a poco.
  16. Listo, ya me funciona. ¿Se le puede poner un timer por ejemplo? Algo parecido a ésto: Sé que está mal, es para dar un ejemplo, supongo. function draw() progreso = setTimer (draw, 2000) dxDrawProgressBar( 5, 200, 50, 50, progreso, tocolor( 0, 255, 120, 255), tocolor( 255, 255, 255, 255) ) end addEventHandler("onClientRender", root, draw)
  17. Posteo ésto porque tengo una duda relacionada con la función dxDrawPogressBar. En primer lugar quiero preguntar, ¿desde qué versión de MTA se implementó esa función? básicamente porque en la 1.4.1 no me va (puede ser que el código de la Wiki esté mal). ¿El código de la wiki está mal? Código de la Wiki. function draw() dxDrawProgressBar( 10, 10, 200, 200, math.random(0,100), tocolor( 250, 50, 50, 255), tocolor( 255, 255, 255, 255) ) end addEventHandler("onClientRender", root, draw Bien, en la Wiki, dice This example draws a progress bar in the top-left corner of the screen, with a random progress that changes every frame. Traducido: En este ejemplo se dibuja una barra de progreso en la esquina superior izquierda de la pantalla, con un avance aleatorio que cambia cada fotograma. Ahora bien, ¿por qué a mí no me lo dibuja? ¿puede ser por mi versión de MTA? (1.4.1)
  18. Estuve mirando varios VPS la verdad, entre ellos nfoservers, me gustó pero no me convence mucho el tema de la interfaz de la página web, deja mucho que desear (parece la típica página troll, disculpadme por ello jaja) aunque sea una de las páginas más recomendadas para poder alquilar tu VPS. Al grano, estuve mirando que hostinger te ofrece un servicio de hosting de VPS y querría saber si es bueno o no. Gracias
  19. Es que verás, yo utilizo, para la función de pintar el color, un script llamado colorblender que exporta el color a formato RGB por lo que veo. ¿Hay alguna diferencia entre los colores del 126 y el #ffffff?. Lo que me sale al utilizar la función es un panel, típico del guieditor o del freeroam mismo, ya me entiendes, el tipico para elegir color blabla.
  20. No, no quiere. Es que no lo entiendo, le doy a restart vehicles y nada, es como si no se guardase y el código de guardado del color (el exports), lo he comprobado con el otro comando (/setvehiclecolor) y si que va. Lo que hace es guardarlo con el código de MTA y no RGB, no entiendo nada. Aquí dejo una foto de como se guarda en mi base de datos.
  21. Creo que es lo que dice Tomas lo que quiero lograr hacer. A ver, lo que viene siendo pintar el vehículo lo pinta lo que pasa es que no lo almacena en la base de datos porque es formato RGB y eso se ve que no lo lee o ni idea. Explicandome un poco mejor, la tabla almacena los colores de MTA, es decir, los 126 colores que da MTA. Lo que no se hacer es que al usar un color, lo transforme en el formato de MTA y lo almacene en la base de datos. PD: CREO que es así.
  22. Es fácil usar set/getElementData. Te pondré un pequeño ejemplo a continuación así te haces una idea. lastexturas = 0 addCommandHandler("text", --Enciende y apaga las texturas con el mismo comando, importante. function(thePlayer) local rootPlayers = getElementsByType('player') --Si no me equivoco, comprueba si es un 'player'. for key, value in ipairs(rootPlayers) do --Si lo es, hace. if lastexturas == 0 then --Importante, el 0 es, si las textuas están apagadas, haría lo que pongas abajo. lastexturas = 1 --Ésto hará que el script ponga que están activadas. elseif lastexturas == 1 then --Si las texturas ya están activadas, haría esto. lastexturas = 0 --Le asigna el valor 0, lo que quiere decir que el script ponga que están desactivadas, importante también end end end ) PD: Leí un poco mejor y para que te vaya pulsando solo una tecla debes bindear la misma, facilísimo, más abajo podrías poner. bindKey ("o", "down", "text") Y con eso ya tendrías todo, solamente tendrías que meter los trigger o las funciones que tengas para que se activen las texturas o no teniendo en cuenta el elementData (si están activadas o no).
  23. Para activarlo pon /debugscript 3 o mira el error que te aparece en la consola.
  24. Justo lo solucioné, todo va perfectamente. Pueden cerrar o borrar el tema.
  25. No, es que verás, la GM de Paradise por defecto, crea tablas destinadas a ello, en éste caso, color1 y color2, de las cuales, edité su formato, cambiandolo por varchar(500), por lo que me dijeron. { name = 'color1', type = 'varchar(500)'}, { name = 'color2', type = 'varchar(500)'}, También añadí una nueva función que me pasaron. La función de arriba de RGB viene por defecto en la GM de Paradise, la de abajo es la añadida. function RGB2HEX(r,g,b) local hex = string.format("#%02X%02X%02X", r,g,b) return hex end function HEX2RGB(hextring)--Ésta es la que me pasaron hextring = tostring(hextring) if string.len(hextring) < 4 then return 0,0,0 end hextring = string.gsub(hextring,"#","") local r,g,b = tonumber("0x"..string.sub(hextring, 1, 2)) or 0, tonumber("0x"..string.sub(hextring, 3, 4)) or 0, tonumber("0x"..string.sub(hextring, 5, 6)) or 0 return r,g,b end Al iniciar el servidor, ejecutaría lo siguiente. if data.color1 and data.color2 then r, g, b = HEX2RGB(data.color1) r2, g2, b2 = HEX2RGB(data.color2) setVehicleColor( vehicle, r, g, b, r2, g2, b2 ) end setVehicleColor( vehicle, data.color1, data.color2, data.color1, data.color2 ) Al crear un vehículo haría local r,g,b,r2,g2,b2 = getVehicleColor( vehicle ) Éste comando es del que más hablaba. Lo que hace es que al usar /setvehiclecolor [id] [idcolor1] [idcolor2], pone el color al vehículo. addCommandHandler( { "setvehiclecolor", "setcolor" }, function( player, commandName, other, color1, color2 ) local color1 = tonumber( color1 ) local color2 = tonumber( color2 ) or color1 if other and color1 and color2 and color1 >= 0 and color1 <= 255 and color2 >= 0 and color2 <= 255 then local other, name = exports.players:getFromName( player, other ) if other then local vehicle = getPedOccupiedVehicle( other ) if vehicle then local data = vehicles[ vehicle ] if data then if data.vehicleID < 0 or exports.sql:query_free( "UPDATE vehicles SET color1 = " .. color1 .. ", color2 = " .. color2 .. " WHERE vehicleID = " .. data.vehicleID ) then setVehicleColor( vehicle, color1, color2, color1, color2 ) outputChatBox( "Cambiado el color del vehículo de " .. name .. "." .. getVehicleName( vehicle ) .. ".", player, 0, 255, 153 ) else outputChatBox( "Error MYSQL.", player, 255, 0, 0 ) end else outputChatBox( "Error del vehículo.", player, 255, 0, 0 ) end else outputChatBox( name .. " no está conduciendo un vehículo.", player, 255, 0, 0 ) end end else outputChatBox( "Syntax: /" .. commandName .. " [player] [color 1] [color 2]", player, 255, 255, 255 ) end end, true ) Ahora bien, tenemos todo eso pero estoy muy perdido la verdad, probé de todo y nada. Éste es el código final que tengo. function pintarlo ( player, r, g, b, colorsio, colorsio2) local vehicle = getPedOccupiedVehicle( player ) local data = vehicles[ vehicle ] if vehicle and r and g and b then r1, g1, b1, r2, g2, b2 = getVehicleColor(vehicle, true) if colorsio then local colorsio = 1 setVehicleColor (vehicle, r, g, b, r2, g2, b2) exports.sql:query_free( "UPDATE vehicles SET color1 = " .. colorsio .. " WHERE vehicleID = " .. data.vehicleID ) end if colorsio2 then local colorsio2 = 2 setVehicleColor (vehicle, r1, g1, b1, r, g, b) exports.sql:query_free( "UPDATE vehicles SET color2 = " .. colorsio2 .. " WHERE vehicleID = " .. data.vehicleID ) end end end addEvent( "onPintura", true ) addEventHandler( "onPintura", getRootElement(), pintarlo) Por si no entendieron muy bien lo que quiero hacer, lo expongo. Estoy scripteando un pequeño script de mecanico tanto para mi servidor como para la comunidad de MTA (lo postearé y cualquiera lo puede descargar, editar y lo que quiera hacer). Lo que pasa es que uso el colorblender que exporta el color en formato rgb, cosa que, no sé como almacenar en las tablas que crea MTA Paradise. (Creo que me he explicado más o menos bien).
×
×
  • Create New...