Jump to content

Sergioks

Members
  • Posts

    260
  • Joined

  • Last visited

Everything posted by Sergioks

  1. Buenas. Hoy, les traigo un mini-aporte. Digo mini, porque tampoco es la gran cosa (creo yo). Definicion: Un Panel de Ingreso y creacion de cuentas totalmente realizado con funciones dx. Basico, sencillo y facil de entender. El mismo lo hice para un SpeedWork a peticion de como hacer un panel dx. Caracteristicas: Realizado con dx puro Adaptable a todas las pantallas Totalmente en español Codigo.. ¿sencillo? no se como definir "dificil", "optimizado" o "facil" en el codigo, solo es codigo y ya :'v Precio: Ninguno, It's Free seria ridiculo vender un login tan sencillo de hacer No tengo imagenes para mostrar, pero les dejo aqui el SpeedWork de donde realice el dichoso panel y su funcionalidad. ((se que en el SpeedWork se ven algunos errores de codificaciones, mas que todo en eventos y triggers. Pero los arregle detras de camara o al final :'v)) Video: Click aqui para descargar! ¡RECUERDA! Para que el script funcione, debes colocar en consola lo siguiente: aclrequest allow sergioksrgc_dxlogin all Lo digo, para no dar malos entendidos despues. Bueno ahora si, espero les guste. Si encuentran algun bug o algo, avisadme y lo actualizo.
  2. Si, me di cuenta mientras hacia el procedimiento guiandome de la wiki . Soy nuevo en la cosa de tablas, siempre hacia era accountData's de las cosas por este estilo.. gracias igual.
  3. Buenas. Estoy haciendo un sistema de inventario para un DayZ completamente hecho por mi (optimizado, sin ninguna guia de codigo de otras versiones). Por ello, quiero aplicar un sistema de inventario nuevo, dejando de lado los elementData's. Entonces, mi duda es la siguiente: ¿Que seria mejor para guardar los items del usuario? Una tabla SQLite? local db = dbConnect("sqlite", "inventory.db") dbExec(db, "CREATE TABLE IF NOT EXISTS Inventory(player, itemName, itemUniCode)") O una tabla normal? items = {} --- function giveItem(player, itemName) local itemUniCode = math.random(0, 99999999) table.insert(items, {player, itemName, itemUniCode}) end Cabe destacar que en parte quiero hacer un sistema de Inventarios parecido al de Paradise RolePlay. Es decir, que no aparezca por ejemplo: Agua (3), si no 3 iconos de agua en el dxPanel de Inventario que estoy desarrollando ((el cual esta finalizado, solo resta esto)). Un saludo y gracias de antemano!
  4. basicamente a eso . Porque, cuando usaba table.insert en el onClientRender, me lo creaba como 1000 veces el mismo item en la tabla y se bugeaba. Gracias PST: Las tablas son mi talon de aquiles, nunca aprendi como funcionan :'v
  5. ¿Como puedo guardar esos datos en un onClientRender? dado que cuando lo hago, se crean miles de variables con el mismo elemento en las tablas..
  6. Hola! Tengo una pequeña duda. Quisiera saber, como puedo hacer para que aparezca una cantidad de imagenes dadas por una tabla y que estas, aparezcan una a lado de la otra, sin chocarse entre si. local items = { {"Item1"}, {"Item2"}, {"Item3"}, }, addEventHandler("onClientRender", root, function() for i=1, #items do dxDrawImage(x, y, w, h, "images/"..items[i]..".png") -- ¿que calculo puedo hacer para definir 'x', 'y', 'w' y 'h'?? end end) Es decir, que por ejemplo, en la tabla hallan 5 items.. bueno, que aparezcan 5 imagenes una alado de la otra. Ademas de que, tambien quiero, que aparezcan solo 3 por linea. Osea, que cuando hallan 3 imagenes, continue la cuarta imagen abajo de la primera.. ya creo que me entienden ¿Alguien me podria decir como hacer eso? - Gracias de Antemano
  7. Era justo eso lo que estaba buscando Muchas gracias. - Que ironía, estaba forzando un script de Ren_712 para que haga lo que otro script de Ren_712 ya hace
  8. Si, la idea es algo así. Lo que quiero hacer, es como estoy haciendo un servidor DayZ, un sistema de inventarios que tenga al ped en el centro y poder ver en tiempo real las cosas que te vas añadiendo y eso. el cam2rt me permite tener al ped solo, sin fondo. Eso me da mucha ayuda en esto, la cuestión es esa, que necesita estar el jugador mirando al ped. Me sigue pasando lo mismo. Cuando lo veo, esta en la pantalla. Cuando no lo veo, desaparece de la pantalla.
  9. añadiendo el hecho de que si se coloca un ped como "objetivo", lo toma, pero el jugador debe estar mirando al ped y estar cerca de el. (en su campo de visión). Si no estas en su campo, el ped desaparece al igual que la pantalla. O al menos así funciona la prueba que estoy haciendo.
  10. Buenas, quisiera saber si es posible hacer que en un dxDrawImage se muestre un ped, como una visualización del mismo. Algo así: Claro, ya tengo este hecho, con la ayuda del script cam2rt de la comunidad. Sin embargo, este solo funciona con jugadores. Yo quiero que sea con un ped y ya probé modificando las variables del script mismo y no funciona. ¿me podrían decir una manera de poder hacer esto? Claro, yo no quiero que el ped este en movimiento ni nada, solo quiero que este allí, estático. Lo único que llegaría a modificar del ped serian la ropa y el modelo mismo, para que se parezca al usuario en question. Gracias de antemano
  11. jeje si, la creatividad no es precisamente mi punto fuerte
  12. Desde hace un tiempo atrás, he querido aprender a manipular el dx, es decir, usar el dxDrawText como un botón y gracias a la ayuda y apoyo de la comunidad lo he conseguido . Pero, por ser.. "nuevo" en esto, quisiera saber que les parece el panel de Login que estoy realizando. Es una mezcla de dx y GUI, para no hacer un código muy extenso, ya que apenas hace unos dias aprendí a como darle funcion a un dx y hacerlo completo es imposible para mi actualmente. Este login es para un proyecto de DayZ que estoy construyendo de a poquito PD: Cabe destacar que el mismo aun esta en desarrollo, la opción Configuración aun no tiene funcion, aunque planeo colocarle configuraciones gráficas para computadores de bajos recursos.
  13. mi test.lua esta asi: -- -- test.lua -- --[[ local thisMirror = nil addEventHandler( "onClientResourceStart", resourceRoot, function() setCameraInterior ( 15 ) setElementInterior( localPlayer, 15 ) setElementPosition( localPlayer, 2222, -1151, 1026 ) local mirrorMat = Matrix( Vector3( 2217.229, -1150.458, 1026.796 ), Vector3( 0, 0, 275 )) thisMirror = cam2RTMirror:create( mirrorMat, Vector2( 4, 3 )) end ) addEventHandler( "onClientResourceStop", resourceRoot, function() thisMirror:destroy() end ) addEventHandler( "onClientPreRender", root, function() if thisMirror then thisMirror:draw() end end ) --]] --[[ local thisScreen = nil addEventHandler( "onClientResourceStart", resourceRoot, function() setCameraInterior ( 15 ) setElementInterior( localPlayer, 15 ) setElementPosition( localPlayer, 2222, -1151, 1026 ) local screenMat = Matrix( Vector3( 2217.229, -1150.458, 1026.796 ), Vector3( 0, 0, 275 )) local cameraMat = Matrix( Vector3( 2217.229, -1150.458, 1026.796 ), Vector3( 0, 0, 275 )) thisScreen = cam2RTScreen:create( cameraMat, screenMat, Vector2( 4, 3 )) end ) addEventHandler( "onClientResourceStop", resourceRoot, function() thisScreen:destroy() end ) addEventHandler( "onClientPreRender", root, function() if thisScreen then thisScreen:draw() end end ) --]]-- --[ local thisImage = nil addEventHandler( "onClientResourceStart", resourceRoot, function() outputChatBox('You might want to change world drawing range by changing shader range from 60 to 0 - look in c_cam2RTImage.lua line 12, 13') local cameraMat = getCamera():getMatrix() thisImage = cam2RTImage:create( cameraMat, true ) end ) addEventHandler( "onClientResourceStop", resourceRoot, function() thisImage:destroy() end ) addEventHandler( "onClientPreRender", root, function() if thisImage then local mat = localPlayer:getMatrix() local pos = mat:getPosition() - mat:getForward() * 2 local rot = mat:getRotation() - Vector3( 0, 0, 180 ) local camMatrix = Matrix( pos, rot) thisImage: setCameraMatrix( camMatrix ) end end ) local sx, sy = guiGetScreenSize () addEventHandler( "onClientHUDRender", root, function() if thisImage then myImage = thisImage:getRenderTarget() local colR, colG, colB = getSkyGradient() dxDrawRectangle(sx / 2 - sy * 0.25, 0, sy * 0.5, sy * ((sy/ sx) * 0.4), tocolor(colR, colG, colB, 255)) dxDrawImage(sx / 2 - sy * 0.25, 0, sy * 0.5, sy * ((sy/ sx) * 0.4), myImage) end end ) --]]-- y me funciona
  14. ¿me podrías decir mas o menos con que funciones?
  15. Buenas, quisiera saber si es posible apuntar (que aparezca la mira y todo) sin necesidad de tener un arma en la mano. Quiero hacer un sistema de armas (explicado en otro post) con createWeapon y attachElement. Por el momento coloca el arma en la mano, pero quiero saber como hacer para que el personaje apunte, sin necesidad de tener un arma "oficial" en la mano... ¿Existe alguna manera? - Gracias de antemano. + Añadiendo a eso, quisiera también saber como hacer que el personaje tena una animación (la de tener el arma, en el caso de ser pesada) y poder caminar. Eso nunca me aclararon como hacerlo
  16. A mi me funciono bien . Es el segundo, en test.lua hay 3 pruebas. Una con una pantalla "real" en el mundo, otra con dxDrawImage y no recuerdo la otra. La de dxDrawImage es la que muestra la cámara trasera.
  17. Hay un script en la comunidad que se llama cam2rt que hace exactamente eso. Inclusive, tiene lo que pides en 'test.lua': Claro, yo lo edite un poco para hacerlo de esa forma de la fotografía, pero la funcion original "de fabrica", tiene lo que dices.
  18. No eso no es. Buscando por internet me encontré con este vídeo que tenia un radar algo parecido al que quiero hacer, con la única diferencia que quiero que tenga un marco cuadrado a su alrededor. Todo eso ya lo tengo hecho, lo único que me falta es hacer que el mapa se mueva de la manera del vídeo: Video y no se como hacerlo
  19. Buenas! Tengo una duda y espero me la respondan. Quisiera saber como hacer para crear un dxDrawImage, pero en 3D, pero no del tipo que utiliza dxDrawMaterialLine3D, si no que este en la pantalla y tenga una rotación 3D. No se si me entienden
  20. Utiliza esta UseFull Function que un amigo me dio (no esta en la wiki) local screenW, screenH = guiGetScreenSize() function isMouseWithinRangeOf(posX, posY, sizeX, sizeY) if isCursorShowing() == false then return false end -- local cx,cy = getCursorPosition() cx,cy = cx*screenW,cy*screenH if cx >= posX and cx <= posX+sizeX and cy >= posY and cy <= posY+sizeY then return true,cx,cy else return false end end Ya lo demas es utilizar el evento onClientClick. Algo así: screenW, screenH = guiGetScreenSize() -- function isMouseWithinRangeOf(posX, posY, sizeX, sizeY) if isCursorShowing() == false then return false end -- local cx,cy = getCursorPosition() cx,cy = cx*screenW,cy*screenH if cx >= posX and cx <= posX+sizeX and cy >= posY and cy <= posY+sizeY then return true,cx,cy else return false end end addEventHandler("onClientClick", root, function() if ( isMouseWithinRangeOf(posX, posY, sizeX, sizeY) ) then -- el X, Y, Width y Heigth del dx, sea dxDrawText, dxDrawRectangle, lo que sea... --aqui colocas la funcion del "boton". end end) Espero te halla servido También lo puedes usar para cuando el mouse este sobre el elemento en cuestión, algo así: addEventHandler("onClientRender", root, function() if ( isMouseWithinRangeOf(posX, posY, sizeX, sizeY) ) then --fade end end)
  21. Buenas! Tengo un problema y es que, intento hacer un dxEditBox sencillo para un dxLogin. En fin, lo que hice para que se pueda escribir en este, es esto: addEventHandler("onClientCharacter", root, function(c) if ( elementClicked == "password-edit" ) then passwordBox = passwordBox..""..c elseif ( elementClicked == "username-edit" ) then usernameBox = usernameBox..""..c end end ) Okay, me escribe bien. La cuestión es.. ¿como borrar? Un amigo me paso esto: bindKey("backspace", "down", function () if ( elementClicked == "password-edit" ) then passwordBox = "" elseif ( elementClicked == "username-edit" ) then usernameBox = "" end end) pero esto básicamente deja en blanco el editBox, no borra 1 carácter. ¿Alguien me puede decir como hacer para borrar un solo carácter sin tener que borrar todo el texto?
  22. Hola a todos. He estado preguntando esto a amigos en los últimos dias y no me ha quedado claro... Lo que busco hacer, es reemplazar la textura de UN ARMA, así como CS:GO Por ejemplo. Digamos que Juan tiene una AK-47 con este estilo: y Pedro tiene una de este diseño: y ambos pueden ver el diseño del otro. Me dijeron que era posible con Shaders, pero que no específicamente como lo necesito. Y otros me han dicho que si, sin problemas, al punto de confundirme... Entonces, a lo que vengo es.. esto es en verdad posible o no? Y de ser así... ¿me podrían decir mas o menos como hacerlo? No soy de usar mucho los shaders. Espero sus respuestas, gracias por leer.
  23. Sergioks

    Chat(Ayuda)

    settings = { ['enableTeamChat'] = true, ['adminTag'] = { ['enabled'] = true, ['ACL'] = { -- A bit more advanced. { 'Admin', '' }, { 'Moderator', ' ' }, { 'Everyone', '' }, } }, ['swearFilter'] = { ['enabled'] = true, ['swearCost'] = 0, ['swears'] = { -- Allows you to set the blocked swear words, syntax is ['WORD'] = 'REPLACEMENT' ['fghg'] = '*****', ['gffgh'] = '*****' } }, ['antiSpamFilter'] = { ['enabled'] = true, ['execeptionGroups'] = 'Admin', -- Groups which can spam, eg. 'Admin,SuperModerator,Moderator' ['chatTimeOut'] = 1.5 -- Set in seconds. }, ['freezeChat'] = { ['enabled'] = true, ['command'] = 'fchat', -- Command to use when activating frozen chat. ['allowedGroups'] = 'Admin', -- Groups which have access to this command. ['resetTime'] = 5 -- Time in minutes before it automatically resets. }, ['clearChat'] = { ['enabled'] = true, ['command'] = 'cchat', ['allowedGroups'] = 'Admin' } } -- Required variables spam = { } stopChat = false function chatbox(message, msgtype) if stopChat then cancelEvent() outputChatBox('', source, 255, 255, 255, true) return end local account = getAccountName(getPlayerAccount(source)) local name = getPlayerName(source) local serial = getPlayerSerial(source) local r, g, b = getPlayerNametagColor(source) local text = message:gsub("%a", string.upper, 0) local check = 0 local spamCheck = false local tag = exports.gang_system:getPlayerGang(source) if settings['swearFilter']['enabled'] then for i, v in pairs(settings['swearFilter']['swears']) do while text:lower():find(i:lower(),1,true) do local start, end_ = text:lower():find(i:lower(),1,true) local found = text:sub(start,end_) text = text:gsub(found,v) if settings['swearFilter']['swearCost'] ~= 0 then takePlayerMoney(source, settings['swearFilter']['swearCost']) end end end end if msgtype == 0 then cancelEvent() if not settings['adminTag']['enabled'] and not spam[serial] then message = RGBToHex(r, g, b) .. name .. ":#FFFFFF " .. text if 600 <= #message then outputChatBox('#FF0000Error: El mensaje que escribiste es muy largo!', source, 255, 255, 255, true) else outputChatBox(message, getRootElement(), 255, 255, 255, true) aclgroup = split(settings['antiSpamFilter']['execeptionGroups'], ', ') or settings['antiSpamFilter']['execeptionGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(source)), aclGetGroup(v)) then spamCheck = true end end if not spamCheck then if settings['antiSpamFilter']['enabled'] then spam[serial] = true setTimer(function() spam[serial] = false end, settings['antiSpamFilter']['chatTimeOut']*1000, 1) end end outputServerLog('CHAT: ' .. name .. ': ' .. text) end return end for _,v in ipairs(settings['adminTag']['ACL']) do if isObjectInACLGroup('user.' .. account, aclGetGroup(v[1])) and check == 0 and not spam[serial] then --- if ( tag == "None" ) then gangTag = "" else gangTag = tag end --- local message = v[2] .. RGBToHex(r, g, b) .. name .. ""..gangTag..":#FFFFFF " .. text if 600 <= #message then outputChatBox('#FF0000Error: El mensaje que escribiste es muy largo!', source, 255, 255, 255, true) check = 1 else check = 1 outputChatBox(message, getRootElement(), 255, 255, 255, true) if settings['antiSpamFilter']['enabled'] then aclgroup = split(settings['antiSpamFilter']['execeptionGroups'], ', ') or settings['antiSpamFilter']['execeptionGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(source)), aclGetGroup(v)) then spamCheck = true end end if not spamCheck then spam[serial] = true check = 1 setTimer(function() spam[serial] = false end, settings['antiSpamFilter']['chatTimeOut']*1000, 1) end end outputServerLog('CHAT: '.. v[2] .. name .. ': ' .. text) end elseif spam[serial] and check == 0 then outputChatBox('#FF0000Error: Por favor espere '..settings['antiSpamFilter']['chatTimeOut']..' segundos para escribir otro mensaje!', source, 255, 255, 255, true) check = 1 end end elseif msgtype == 1 and not settings['enableTeamChat'] then cancelEvent() end end addEventHandler("onPlayerChat", getRootElement(), chatbox) addEventHandler("onPlayerQuit", getRootElement(), function() local serial = getPlayerName(source) spam[serial] = false end ) -- Freeze chat addCommandHandler(settings['freezeChat']['command'], function(player) if not settings['freezeChat']['enabled'] then return end aclgroup = split(settings['freezeChat']['allowedGroups'], ', ') or settings['freezeChat']['allowedGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(player)), aclGetGroup(v)) then check = true end end if not check then return end if not stopChat then outputChatBox('', getRootElement(), 255, 255, 255, true) stopChat = true frozenTimer = setTimer(function() stopChat = false end, (settings['freezeChat']['resetTime'] * 60000), 1) else outputChatBox('', getRootElement(), 255, 255, 255, true) stopChat = false end end ) -- Clear chat addCommandHandler(settings['clearChat']['command'], function(player) if not settings['clearChat']['enabled'] then return end aclgroup = split(settings['clearChat']['allowedGroups'], ',') or settings['clearChat']['allowedGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(player)), aclGetGroup(v)) then check = true end end if not check then return end for i = 2, getElementData(player, 'chatLines') do outputChatBox(' ') end outputChatBox('', getRootElement(), 255, 255, 255, true) end ) function RGBToHex(red, green, blue, alpha) return string.format("#%.2X%.2X%.2X", red,green,blue) end Prueba esto a ver, no lo he testeado, pero algo así haría yo.
  24. local respawn = 30 local r function respawnVehicle() if isTimer(r) then resetTimer(r) outputDebugString("Timer Reset") return end outputChatBox("Todos los vehiculos vacios se respawnearan en 10 ".. respawn.."segundos") outputDebugString("Cars Respawning") r = setTimer(function() for _, vehicle in ipairs ( getElementsByType ( "vehicle" ) ) do if isEmpty( vehicle ) then resetVehicleIdleTime ( vehicle ) respawnVehicle ( vehicle ) end end outputDebugString("Cars Respawned") outputChatBox("Todos los vehiculos vacios han sido respawneados") end,respawn*1000,1) end) addEventHandler("onResourceStart", getRootElement(), respawnVehicle) function isEmpty( vehicle ) local passengers = getVehicleMaxPassengers( vehicle ) if type( passengers ) == 'number' then for seat = 0, passengers do if getVehicleOccupant( vehicle, seat ) then return false end end end return true end Trata con esto
×
×
  • Create New...