Jump to content

aka Blue

Members
  • Posts

    2,106
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by aka Blue

  1. Oh, pues muchas gracias a ambos
  2. El de coches me vendría de lujo, editandolo un poquitín jaja. ¿Son free to use dices?
  3. Estaba en ello pero igualmente, muchísimas gracias, me salvaste la vida jaja. Justo iba a preguntar una cosilla, ¿hay alguna función (ya que nunca usé el dx ) que cuando pulse el rectangulo del dx haga x función? Es decir, igual que el onClientGUIClick pero para el dx.
  4. Oye. Muchas gracias por la ayuda PD: Os hamo.
  5. Hum, osea, ¿no se puede hacer por comando? ¿Me podrías dar un ejemplo si es que se puede?
  6. Cierto, lo estuve hablando con un amigo y me dijo que funciones así van en el serverside conectados por un trigger jaja. Igual, gracias. PD: Si, uso MTA Paradise, lo siento jaja. Aprovechando que éste tema sigue así medio vivo y para evitar hacer 10000000000000 de temas. Publico otro problema que tengo con un draw. Resulta que quería hacer un panel así más mejorado y pues usé la función, dxDraw. El problema viene cuando le pongo un commandhandler, me lo abre por un segundo y lo cierra, es rarísimo. function as () dxDrawRectangle(344, 266, 334, 316, tocolor(127, 127, 127, 50), false) dxDrawRectangle(344, 179, 334, 87, tocolor(255, 255, 255, 40), false) dxDrawText("Panel Mecánico", 415, 206, 607, 256, tocolor(255, 255, 255, 255), 1.00, "bankgothic", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 297, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Reparar", 440, 297, 587, 330, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Pintar", 440, 348, 587, 381, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 349, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 406, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Ruedas", 441, 406, 588, 439, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Inflar", 441, 466, 588, 499, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 467, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 526, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Luces", 441, 525, 588, 558, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(344, 582, 334, 23, tocolor(255, 255, 255, 40), false) end addCommandHandler ("abrirlo", as)
  7. Cierto, lo estuve hablando con un amigo y me dijo que funciones así van en el serverside conectados por un trigger jaja. Igual, gracias. PD: Si, uso MTA Paradise, lo siento jaja. Aprovechando que éste tema sigue así medio vivo y para evitar hacer 10000000000000 de temas. Publico otro problema que tengo con un draw. Resulta que quería hacer un panel así más mejorado y pues usé la función, dxDraw. El problema viene cuando le pongo un commandhandler, me lo abre por un segundo y lo cierra, es rarísimo. function as () dxDrawRectangle(344, 266, 334, 316, tocolor(127, 127, 127, 50), false) dxDrawRectangle(344, 179, 334, 87, tocolor(255, 255, 255, 40), false) dxDrawText("Panel Mecánico", 415, 206, 607, 256, tocolor(255, 255, 255, 255), 1.00, "bankgothic", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 297, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Reparar", 440, 297, 587, 330, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Pintar", 440, 348, 587, 381, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 349, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 406, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Ruedas", 441, 406, 588, 439, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawText("Inflar", 441, 466, 588, 499, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(441, 467, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawRectangle(441, 526, 146, 32, tocolor(255, 255, 255, 40), false) dxDrawText("Luces", 441, 525, 588, 558, tocolor(255, 255, 255, 255), 1.00, "pricedown", "center", "top", false, false, false, false, false) dxDrawRectangle(344, 582, 334, 23, tocolor(255, 255, 255, 40), false) end addCommandHandler ("abrirlo", as)
  8. Hum. Creo que no, no me sale nada en la consola, tampoco InGame. Simplemente, no me abre el panel estando en dicha facción y tampoco fuera de ella.
  9. Estaba terminando mi interfaz para un script de mecánico cuando derrepente se me ocurrió poner que solo los jugadores de x facción puedan acceder a la misma pero algo no funciona bien... function panelmeca () if exports.players:isPlayerInFaction (source, 4) then Panel = guiCreateWindow(355, 186, 434, 338, "Panel de mecánico", false) guiWindowSetSizable(Panel, false) guiSetAlpha(Panel, 0.76) guiSetProperty(Panel, "CaptionColour", "FF140287") BotonReparacion = guiCreateButton(17, 41, 152, 81, "Reparación ", false, Panel) guiSetAlpha(BotonReparacion, 0.48) guiSetFont(BotonReparacion, "sa-header") guiSetProperty(BotonReparacion, "NormalTextColour", "FF03932C") Gasolina = guiCreateButton(268, 41, 152, 81, "Gasolina", false, Panel) guiSetAlpha(Gasolina, 0.50) guiSetFont(Gasolina, "sa-header") guiSetProperty(Gasolina, "NormalTextColour", "FF03932C") Luz2 = guiCreateButton(267, 228, 152, 81, "Luz2", false, Panel) guiSetAlpha(Luz2, 0.49) guiSetFont(Luz2, "sa-header") guiSetProperty(Luz2, "NormalTextColour", "FF03932C") Luz1 = guiCreateButton(21, 228, 152, 81, "Luz1", false, Panel) guiSetAlpha(Luz1, 0.54) guiSetFont(Luz1, "sa-header") guiSetProperty(Luz1, "NormalTextColour", "FF03932C") Grid = guiCreateGridList(18, 135, 402, 80, false, Panel) guiGridListAddColumn(Grid, "Precio", 0.3) guiGridListAddColumn(Grid, "Pieza", 0.3) for i = 1, 12 do guiGridListAddRow(Grid) end guiGridListSetItemText(Grid, 0, 1, "300$", false, false) guiGridListSetItemText(Grid, 0, 2, "Reparación", false, false) guiGridListSetItemText(Grid, 1, 1, "250$", false, false) guiGridListSetItemText(Grid, 1, 2, "Gasolina", false, false) guiGridListSetItemText(Grid, 2, 1, "50$", false, false) guiGridListSetItemText(Grid, 2, 2, "Luz1 Izquierda", false, false) guiGridListSetItemText(Grid, 3, 1, "50", false, false) guiGridListSetItemText(Grid, 3, 2, "Luz2 Derecha", false, false) CerrarPanelBoton = guiCreateButton(174, 312, 93, 16, "Cerrar panel", false, Panel) guiSetAlpha(CerrarPanelBoton, 0.46) guiSetProperty(CerrarPanelBoton, "NormalTextColour", "FFFFFFFF") showCursor (true) addEventHandler ("onClientGUIClick", CerrarPanelBoton, cerrarlo, false) addEventHandler ("onClientGUIClick", BotonReparacion, reparar, false) addEventHandler ("onClientGUIClick", Luz1, luz1, false) addEventHandler ("onClientGUIClick", Luz2, luz2, false) addEventHandler ("onClientGUIClick", Gasolina, gasolina1, false) else outputChatBox ("No eres mecánico.", source, 255, 0, 0) end end addCommandHandler ("mecanico", panelmeca) Ésta es la parte client del script. Creo que el problema está en eso
  10. Claro que puedes hacerlo Puedes hacer lo siguiente. Puedes usar el script guieditor, crear tu propio panel y en la opción del guieditor, pones que solo lo puedan leer y no editar. Después, solo bindeas una tecla con la cual, los jugadores podrán abrir el panel (te recomiendo los f's). Suerte en ello.
  11. Mira, a mí hace tiempo me dieron un código. addCommandHandler("mychars", function(player) local chars = exports.sql:query_assoc("SELECT COUNT(*) AS count FROM characters WHERE userID = ".. exports.players:getUserID(player)) if chars then for key, value in ipairs(chars) do if (value.count < 3) then outputChatBox("Tienes " .. value.count .. " personajes.", player) else outputChatBox("Ya has creado todos los personajes permitidos.", player) triggerClientEvent( player, "players:characterCreationResult", player, 1 ) end end end end Lo que yo quiero hacer es que, con ésta función. local chars = exports.sql:query_assoc("SELECT COUNT(*) AS count FROM characters WHERE userID = ".. exports.players:getUserID(player)) if chars then for key, value in ipairs(chars) do if (value.count < 3) then outputChatBox("Tienes " .. value.count .. " personajes.", player) else outputChatBox("Ya has creado todos los personajes permitidos.", player) triggerClientEvent( player, "players:characterCreationResult", player, 1 ) end Sustituir el TriggerEvent del último por la eliminación de la GUI para crear el personaje.
  12. aka Blue

    AYUDA

    Si no me equivoco, puedes usar una conexión a una base de datos mysql o getElementData y setElementData. Pero no estoy seguro la verdad. PD: Yo uso MTA Paradise, una GM Roleplay y conseguí hacer una... ¿agenda? para los jugadores que su contenido se va guardando en la base de datos de mi localhost.
  13. Bueno, estuve mirando mis posts viejos (para limitar la creación de personajes) y me ayudó bastante el código que me dieron pero no fue lo que necesitaba. Vengo a preguntar si alguien me podría ayudar en hacer una función la cual sería ocultar la gui de "crear personaje" en paradise cuando tenga un número de 2 personajes ya creados. Supongo que utilizaría la ventana create_character.lua que da paradise así que la dejo aquí abajo. --[[ Copyright (c) 2010 MTA: Paradise This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ]] local selectedSkin = false local messageTimer local messageCount = 0 local timer local function setMessage( text ) windows.create_character[#windows.create_character].text = text if messageTimer then killTimer( messageTimer ) end messageCount = 0 setTimer( function() messageCount = messageCount + 1 if messageCount == 50 then windows.create_character[#windows.create_character].text = "" messageTimer = nil else windows.create_character[#windows.create_character].color = { 255, 255, 255, 5 * ( 50 - messageCount ) } end end, 100, 50 ) end local function tryCreate( key ) local name = destroy["g:createcharacter:name"] and guiGetText( destroy["g:createcharacter:name"] ) local error = verifyCharacterName( name ) or verifySkin( selectedSkin ) if not error then triggerServerEvent( "gui:createCharacter", getLocalPlayer( ), name, selectedSkin ) else setMessage( error ) end end local function cancelCreate( ) if exports.players:isLoggedIn( ) then hide( ) else show( 'characters', true, true, true ) end end windows.create_character = { onCreate = function( ) selectedSkin = false windows.create_character[4].text = "Sube/baja con la rueda para ver más skins." end, { type = "label", text = "Nuevo personaje", font = "bankgothic", alignX = "center", }, { type = "edit", text = "Nombre:", id = "g:createcharacter:name", onAccepted = tryCreate, }, { type = "vpane", lines = 5, panes = { } }, { type = "label", text = "Sube/baja con la rueda para ver más skins.", alignX = "center", }, { type = "button", text = "Crear", onClick = tryCreate, }, { type = "button", text = "Cancelar", onClick = cancelCreate, }, { type = "label", text = "", alignX = "center", } } timer = setTimer( function( ) local skins = exports.players:getSkins( ) if not skins then return end killTimer( timer ) for k, skin in ipairs( skins ) do table.insert( windows.create_character[3].panes, { image = ":players/images/skins/" .. skin .. ".png", onHover = function( cursor, pos ) dxDrawRectangle( pos[1], pos[2], pos[3] - pos[1], pos[4] - pos[2], tocolor( unpack( { 255, 255, 0, 63 } ) ) ) end, onClick = function( ) selectedSkin = skin windows.create_character[4].text = "Skin seleccionado #" .. skin .. "." end, onRender = function( pos ) if selectedSkin == skin then dxDrawRectangle( pos[1], pos[2], pos[3] - pos[1], pos[4] - pos[2], tocolor( unpack( { 0, 255, 0, 63 } ) ) ) end end } ) end end, 500, 0 ) addEvent( "players:characterCreationResult", true ) addEventHandler( "players:characterCreationResult", getLocalPlayer( ), function( code ) if code == 0 then if exports.players:isLoggedIn( ) then show( 'characters', false, false, true ) else show( 'characters', true, true, true ) end elseif code == 1 then setMessage( "Otro jugador con ese nombre existe." ) end end ) Sería hacer algo como cancelar la función onCreate, pero no sé que ¿variable? usar para ello.
  14. Quizás sea así jaja pero ya acabé la gui de eso y me gustaría pues, acabarlo ya. PD: Ya está solucionado, gracias a todos. Pueden cerrar.
  15. Ahora sí funciona, pero funciona mediante RGB. No sé si me di a entender bien, en ese caso, lo siento jaja. En la propia wiki de esa función, debajo, salen unos cuadritos con colores y sus id's en el MTA. Lo que hice para crear el panel, fue, copiar cada uno de esos cuadritos, para así, cuando los pulses, te asigne el color que sale en el cuadrito con su ID. La función es esta. bool setVehicleColor ( vehicle theVehicle, int color1, int color2, int color3, int color4 ) Por si no me entendieron, aquí están los famosos cuadritos jaja.
  16. Nono, errores no jaja, lo que hace es que me pinta todo el coche y yo lo que quiero es que pinte solamente una parte. Osea, la primera capa.
  17. Bueno, a ver si me pueden ayudar... Uso un panel con las imágenes de cada color de la wiki de mta (los cuadritos, los copié uno a uno para el panel) y lo que hice es que cuando le des click a la imagen, te pinte el coche. Todo bien, pero no sé en que fallo de momento, a ver si me pueden ayudar. function pnegro () local coche = getPedOccupiedVehicle ( source ) --Coge el coche en el que está el ped local color2 = getVehicleColor (coche) --Coge el color del vehiculo que no quiero cambiar if takePlayerMoney (source, 150) then -- Le coge x dinero if coche then --Si está en el coche, hace... setVehicleColor( coche, 0, 0, color2, color2 ) --Pone el color negro a la primera capa outputChatBox ("Pintaste el coche satisfactoriamente", source) --Le envía un pequeño mensaje else outputChatBox ("No estás en un vehículo", source, 255, 0, 0) --Si el jugador no esta en un coche, le dice end else outputChatBox ("No puedes permitirte el cambio de color.", source, 255, 0, 0) --Si el jugador no tiene ese dinero, le dice end end addEvent( "onNegro", true ) --Evento de conexion addEventHandler( "onNegro", getRootElement(), pnegro ) --Conexion con el cliente, la gui
  18. Oh, gracias. Y una duda, ¿para cambiar solamente el color 2 digamos? Los demás les pongo un getVehicleColor o, ¿cómo?
×
×
  • Create New...