-
Posts
206 -
Joined
-
Last visited
Everything posted by -Rex-
-
Si realmente se quiere superar en el scripting, debe hacerlo, si no, no se podra superar @PDMTA Tambien debes ser autodidacta y la logica te ayudara en lo que es scripting avanzado, ciclos while, etc...
-
El post de Gaberiel contiene algo de lógica Yo te recomendaria que empiezes con lógica de programación, de hay lo demás depende de tu imaginación. http://aprenderaprogramar.com/index.php ... &Itemid=59
-
Solucionado... Use el 2 metodo de Gabriel solo para resoluciones menores a 800 x 600 y el primero para otras mas grandes.. PD: @Gabriel Gracias
-
La variable sy tiene como valor 600 asi que divido entre 600 dara 1 y no pasaria nada..
-
Hola a todos, Tengo un problema con la multiresolución, Lo que pasa es que en la resolucion 1280 x 600 ( En la que cree todo ) se ve muy bien todo lo que se ha creado en DX, Pero lo que pasa que en resoluciones como 800 x 600, Se ve los textos del mismo tamaño que en la resolucion 1280 x 600 y los textos sobresalen de la interfaz Aqui dejo unas fotos del inventario en las dos resoluciones 1280 x 600 800 x 600 ¿Como pudiera hacer para que en cualquier resolución el tamaño del texot se ajuste automaticamente con su resolución? El mismo problema me pasa con el scoreboard.. Todo se ve muy pegado y sobreencimado.. Aqui dejo un ejemplo de como aplico la multiresolucion local x,y = guiGetScreenSize() local sx, sy = 1280, 600 dxDrawText("Login", ( 300 / sx ) * x, ( 257 / sy ) * y, ( 330 / sx ) * x, ( 268 / sy ) * y, tocolor(255, 255, 255, 255), 1.00, dayzfont, "left", "top", false, false, false, false, false)
-
No tengo con quien testear pero, Leyendo el codigo me parece que esta bien, Gracias
-
Observando por buen rato el recurso voice, Hice esto, Pero como no tengo con quien testear, Funcionara asi? --- addEventHandler ( "onClientPlayerVoiceStart", root, function() if isPlayerVoiceMuted ( source ) then cancelEvent() return end local x,y,z = getElementPosition( getLocalPlayer( ) ) local x2,y2,z2 = getElementPosition( source ) if getDistanceBetweenPoints3D( x, y, z, x2, y2, z2 ) > 20 then cancelEvent() return end voicePlayers[source] = true end )
-
Se puede hacer con el recurso Voice, que solo escuchen lo que habla X jugador si estan cerca de el? Por ejemplo hablo por el micro y lo que yo hablo quiero que solo lo escuchen las personas que estan cerca mio, y las que no no. ¿Como lo podría hacer?
-
Mm interesante se me han ocurrido algunas formas de optimizar partes del código, Me pondré a trabajar vuelta en mi función cuando me desocupe de mi servidor.
-
Si sabia que existía el método sort, Pero para mi esa función como que no la entendía del todo y habia visto el post de ASuS ( Visualizaciones ) y Dije, Why not? Recreare esa función. En eso de forma de arbol no se a que te refieres, mis conocimientos En lógica son muy pocos, Me vendría muy bien que me muestrea como funciona eso.
-
De nada @CiBeR, el primer argumento es el elemento que ejecuta el triggeo, luego nombre del evento y luego el/los elementos que definiran el source del evento, y lo demas argumentos adicionales. Épico
-
En las ultimas lineas esta un ejemplo. Ves una tabla con números del 1 al 10 puestos en forma Ascendente y usando la función con el tipo de organizacion "Desc" este printea la tabla de forma descendente, No solo puedes hacerlo con números también con palabras, También después del argumento de tipo de organización, puedes establecer un límite ( Así como en sql ) Ejemplo: orderTable ( tabla, tipo_organización [ "Desc" o "Asc"], limite ) --De esta forma retona una tabla con los datos organizados de la tabla "tabla" de forma Ascendente y con un limite de 3 ( Los que han usando SQLite Entenderán ) orderTable ( tabla, "Asc", 3 ) --De esta forma retorna una tabla organizada de forma Descendente. orderTable ( tabla, "Desc", 3 ) --De esta forma retorna una tabla organizada de forma Ascendente sin limite orderTable ( tabla, "Asc" ) Si pone a una tabla que esta de esta forma: local table5 = { { dato }, } Te retorna una tabla de la misma forma. Si pones una tabla de esta forma: local table5 = { "a", "b", } Te la retorna la tabla de la misma forma. Hay te he hecho mas detalladamente como funciona.
-
Que muerto esta este foro....
-
El script lo hize por que estaba aburrido y queria Proponorme un reto, Asi que me puse a crearlo y me cabe aclarar que este no es un metodo tan optimizado, el tiempo que tarda la funcion en organizar la tabla es de 0.1 segundo o mucho menos. Si ves que algo esta de mas en la funcion o que te parece algo inutil... que la funcion lee demasiado codigo... que use muchos ciclos... Bla Bla Bla, Puedes ayudar a mejorar el código y tratar de no comentar tonterias. La función retorna una tabla con los datos ya organizados, al último encontraras un ejemplo de como se usa esta función. ------------------------------------- --Proyecto: Ninguno. --Autor: Rex. --En Desarrollo: 3 Dias. --Recurso: Organizar una tabla. ------------------------------------- function orderTable( Table, type_Order, limit ) --Si el argumento Table no es una tabla entonces retornamos una tabla vacia if type ( Table ) ~= "table" then return { } end if type ( type_Order ) ~= "string" then return { } end if not limit then limit = #Table end if type ( limit ) ~= "number" then return { } end ---->Funciones utiles<---- --Tabla de letras con su respectivo valor local wordOrderingTable = { { 'a', 1 }, { 'b', 2 }, { 'c', 3 }, { 'd', 4 }, { 'e', 5 }, { 'f', 6 }, { 'g', 7 }, { 'h', 8 }, { 'i', 9 }, { 'j', 10 }, { 'k', 11 }, { 'l', 12 }, { 'm', 13 }, { 'n', 14 }, { 'o', 15 }, { 'p', 16 }, { 'q', 17 }, { 'r', 18 }, { 's', 19 }, { 't', 20 }, { 'u', 21 }, { 'v', 22 }, { 'w', 23 }, { 'x', 24 }, { 'y', 25 }, { 'z', 26 }, { 'A', 1 }, { 'B', 2 }, { 'C', 3 }, { 'D', 4 }, { 'E', 5 }, { 'F', 6 }, { 'G', 7 }, { 'H', 8 }, { 'I', 9 }, { 'J', 10 }, { 'K', 11 }, { 'L', 12 }, { 'M', 13 }, { 'N', 14 }, { 'O', 15 }, { 'P', 16 }, { 'Q', 17 }, { 'R', 18 }, { 'S', 19 }, { 'T', 20 }, { 'U', 21 }, { 'V', 22 }, { 'W', 23 }, { 'X', 24 }, { 'Y', 25 }, { 'Z', 26 }, } --Función que permite obtener el tipo de indexado de la tabla local function typeIndex( Table ) local tipoIndexado = false for _, v in ipairs( Table ) do if type( v ) ~= "table" then tipoIndexado = true break end end return tipoIndexado end --Función que permite obtener el numero mas alto de una tabla local function getMaxNumberTable( Table ) local contador = 1 local finalCiclo = #Table+1 local numeroMasAlto = 1 while contador < finalCiclo do local tipoIndexado = typeIndex( Table ) local dato if tipoIndexado == true then dato = Table[contador] else dato = Table[contador][1] end for _, value in ipairs( Table ) do local valorTabla if tipoIndexado == true then valorTabla = value else valorTabla = value[1] end if dato > valorTabla then if numeroMasAlto < dato then numeroMasAlto = dato end end end contador = contador + 1 end return numeroMasAlto end --Identificamos el tipo de indexado de la tabla local firstConstant local tipoIndexado = typeIndex ( Table ) if tipoIndexado == true then firstConstant = Table[1] else firstConstant = Table[1][1] end local typeOfTable --Analizando el primer dato y identificamos si es un numero o una tabla con palabras if type ( tonumber( firstConstant ) ) == "number" then typeOfTable = "numbers" elseif type ( firstConstant ) == "string" then typeOfTable = "words" end if typeOfTable then --Se ordenara la tabla segun el tipo de orden dada desde el argumento type_Order ( Asc o Desc ) if typeOfTable == "numbers" then local tablaOrganizada = { } if type_Order == "Asc" then --obtenemos el numero mayor de la tabla, para que el ciclo se repita hasta ese numero local numeroMasAlto = getMaxNumberTable ( Table ) local posicionesOrganizadas = 1 while posicionesOrganizadas < numeroMasAlto+1 do --Detenemos el bucle cuando se haya llegado al limite if posicionesOrganizadas > limit+1 then break end for i, v in ipairs( Table ) do local tipoIndexado = typeIndex ( Table ) if tipoIndexado == true then if posicionesOrganizadas == v then table.insert( tablaOrganizada, v ) end else if posicionesOrganizadas == v[1] then table.insert( tablaOrganizada, { v[1] } ) end end end posicionesOrganizadas = posicionesOrganizadas + 1 end elseif type_Order == "Desc" then --obtenemos el numero mayor de la tabla, para que el ciclo se repita --hasta que el valor alamacenado en la variable 'posicionesOrganizadas' llege a 1. local posicionesOrganizadas = getMaxNumberTable ( Table ) local contadorLimite = 0 while posicionesOrganizadas >= 1 do if contadorLimite >= limit then break end for i, v in ipairs( Table ) do local tipoIndexado = typeIndex ( Table ) if tipoIndexado == true then if posicionesOrganizadas == v then table.insert( tablaOrganizada, v ) contadorLimite = contadorLimite + 1 end else if posicionesOrganizadas == v[1] then contadorLimite = contadorLimite + 1 table.insert( tablaOrganizada, { v[1] } ) end end end posicionesOrganizadas = posicionesOrganizadas - 1 end end return tablaOrganizada elseif typeOfTable == "words" then local temporalyTable = { } local contadorT = 0 for i, v in ipairs( Table ) do local palabra local palabraNoSub local tipoIndexado = typeIndex ( Table ) if tipoIndexado == true then palabra = v palabraNoSub = v else palabra = v[1] palabraNoSub = v[1] end --Transformamos las letras a numeros para ser organizadas for _, value in ipairs( wordOrderingTable ) do local wordF, totalValue = value[1], value[2] palabra = string.gsub( palabra, wordF, totalValue ) end contadorT = contadorT + 1 if contadorT > limit then break end
-
Hola, lo que pasa es que quiero saber si es que se puede editar la distancia de dibujado para los objetos, Ya que reemplaze algunos objetos de mta para poner unos objetos del DayZ y me di cuenta que hay unos objetos grandes que no se ven de tan lejos o algunos que solo se ven estando muy cerca y quisiera saber como pudiera solucionar eso. Gracias de antemano.
-
gracias, Pero al parecer no funciona en mi Pc, me sale esto: Object preview: Multiple RT in shader not supported
-
Queria saber como pudiese dibujar un ped en la pantalla con dxDrawImage? Me parecio que hace tiempo vi un recurso de spawn donde se veia en una esquina de la pantalla un ped con una animacion y quisiera hacer algo parecido. Una imagen de lo mas o menos quiero hacer:
-
[REL] Sistema de guardado de Tiendas & Vehiculos para DayZ
-Rex- replied to -Rex-'s topic in Recursos y aportes
Gracias, Seguire haciendo aportes -
Hello, everyone, I 've decided to release my system kept shops and vehicles for your DayZ , this works through a SQLite database . How do I use it? Well simply to start the resource this restores all shops and cars that have been saved , but to save the stores and vehicles just enough to stop the resource and this began to save All shops and vehicles on your server ( Destroy each store and auto it is storing ) in the database and this will only seconds of network trouble .. In short , When you start the appeal restores what has been saved and stopping the resource keeps shops and vehicles. What I can edit ? Sure, but do not remove the credits . Need ACL permissions ? Not necessarily, only need ACL permissions if the database is in an external folder . You must add the goal this, there are some functions using OOP . true The code here --///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// --Proyect: N/A. // --Developers: -Rex- // --Testers: "N/A". // / --Information: system kept shops and vehicles for your DayZ Through a SQLite database. --Version: 1.0 BETA // --Rights : You have the right to edit 100 % code , but you have no right to sell or remove the credits of the same , without permission of the author. // --///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// local inventoryItems = { --Paste your items table of inventory.lua {"AK-74", 3}, {"AKM", 3}, {"AKS-74 Kobra", 3}, {"PKP", 3 }, {"PKM", 3 }, {"L85A2 Holo", 3}, {"L85A2 SUSAT", 3}, {"M16A2", 3}, {"M16A2 M203", 3}, {"M16A4 ACOG", 3}, {"M4A1", 3}, {"M4A1 CCO", 3}, {"M4A1 CCO SD", 3}, {"M4A1 Holo", 3}, {"M4A3 CCO", 3}, {"SA-58 CCO", 3}, {"SA-58P", 3}, {"SA-58V", 3}, {"SA-58V ACOG", 3}, {"M240", 3}, {"MAX_Slots"}, } --The Directory of your database ( Use SQLitebrowser to create one) local db = dbConnect( "sqlite", ":sqlitedb/dbData.db" ) local cache = {} local objeto = {} local vehis = {} local actual = 0 local totaltents = 0 local totalveh = 0 function onStart( ) local qh = db:query( "CREATE TABLE IF NOT EXISTS tents_backups ( tent_n INTEGER, dato STRING, cantidad INTEGER, posx FLOAT, posy FLOAT, posz FLOAT ) ") local qh2 = db:query( "CREATE TABLE IF NOT EXISTS vehiculos_backups ( modelo INTEGER, maxslots INTEGER, fuel INTEGER, maxfuel INTEGER, ruedas INTEGER, motor INTEGER, deposito INTEGER, posx FLOAT, posy FLOAT, posz FLOAT, rotx FLOAT, roty FLOAT, rotz FLOAT ) ") dbFree( qh ) dbFree( qh2 ) outputServerLog( "Being restored all server data") outputChatBox("Attention! Being restored all server data , please no disconnect !",getRootElement( )) local qee = db:query("SELECT tent_n, posx, posy, posz FROM tents_backups") for ide, valor in pairs( dbPoll( qee, -1 ) ) do if actual ~= valor["tent_n"] then actual = valor["tent_n"] totaltents = totaltents +1 local x, y, z = valor["posx"], valor["posy"], valor["posz"]; objeto.tent = createObject(3243, x,y,z) setObjectScale(objeto.tent,1) objeto.tentCol = createColSphere(x,y,z,10) attachElements ( objeto.tentCol, objeto.tent, 0, 0, 0 ) setElementData(objeto.tentCol,"parent",objeto.tent) setElementData(objeto.tent,"parent",objeto.tentCol) setElementData(objeto.tentCol,"tent",true) setElementData(objeto.tentCol,"vehicle",true) setElementData(objeto.tentCol, "MAX_Slots", 100) local qeee = db:query("SELECT dato, cantidad FROM tents_backups WHERE tent_n=?", valor["tent_n"] ) for _, v in pairs( dbPoll( qeee, -1 ) ) do setElementData(objeto.tentCol, v["dato"], tonumber( v["cantidad"] ) ) end end end local qhj = db:query( "SELECT * FROM vehiculos_backups") local vehiclesTable = dbPoll( qhj, -1 ) for t, columna in ipairs( vehiclesTable ) do totalveh = totalveh + 1 local modelo, maxsl, fuel, maxfue = columna["modelo"],columna["maxslots"],columna["fuel"],columna["maxfuel"]; local rueda, motor = columna["ruedas"], columna["motor"] local deposito, vehx = columna["deposito"],columna["posx"] local vehy, vehz, vehrx = columna["posy"],columna["posz"],columna["rotx"]; local vehry, vehrz = columna["roty"],columna["rotz"]; vehis.vehic = createVehicle( modelo, vehx, vehy, vehz ) setElementRotation( vehis.vehic, vehrx, vehry, vehrz ) vehis.colS = createColSphere( vehx, vehy, vehz, 4 ) attachElements ( vehis.colS, vehis.vehic, 0, 0, 0 ) setElementData(vehis.colS,"parent",vehis.vehic) setElementData(vehis.vehic,"parent",vehis.colS) setElementData(vehis.colS,"vehicle",true) setElementData(vehis.colS,"MAX_Slots",maxsl) setElementData(vehis.colS,"maxfuel",maxfue) setElementData(vehis.colS,"Tire_inVehicle",rueda) setElementData(vehis.colS,"Engine_inVehicle",motor) setElementData(vehis.colS,"Parts_inVehicle",deposito) setElementData(vehis.colS,"fuel",fuel) end outputChatBox("Se han restaurado "..totaltents.." Tiendas y "..tostring( totalveh ).." Vehiculos!") end addEventHandler("onResourceStart", getResourceRootElement( getThisResource()), onStart) local tentNum = 0 function startBackup( ) local qhr = db:query( "DROP TABLE tents_backups" ) dbFree( qhr ) local qhrE = db:query( "DROP TABLE vehiculos_backups" ) dbFree( qhrE ) local qh3 = db:query( "CREATE TABLE IF NOT EXISTS tents_backups ( tent_n INTEGER, dato STRING, cantidad INTEGER, posx FLOAT, posy FLOAT, posz FLOAT ) ") dbFree( qh3 ) local qh2 = db:query( "CREATE TABLE IF NOT EXISTS vehiculos_backups ( modelo INTEGER, maxslots INTEGER, fuel INTEGER, maxfuel INTEGER, ruedas INTEGER, motor INTEGER, deposito INTEGER, bateria INTEGER, rotor INTEGER, posx FLOAT, posy FLOAT, posz FLOAT, rotx FLOAT, roty FLOAT, rotz FLOAT ) ") dbFree( qh2 ) outputChatBox("Attention! Being restored all server data , please no disconnect !",getRootElement( )) --Guardado de tents En la base de datos for i, col in ipairs( getElementsByType("colshape") ) do if col:getData("tent") == true then local x,y,z = getElementPosition( col ) local ta = db:query("SELECT * FROM tents_backups WHERE posx=? AND posy=? AND posz=?", x,y,z ) if #dbPoll( ta, -1 ) == 0 then tentNum = tentNum + 1 db:exec("INSERT INTO tents_backups ( tent_n, dato, cantidad, posx, posy, posz ) VALUES ( ?, ?, ?, ?, ?, ? )", tentNum, "",1, x,y,z ) end for _, datot in ipairs( inventoryItems ) do local qh = db:query("SELECT * FROM tents_backups WHERE posx=? AND posy=? AND posz=?", x,y,z ) for _, columna in ipairs( dbPoll( qh, - 1 )) do local ntent = columna["tent_n"] if cache["tentguardada_"..tostring(ntent)] then if cache["tentguardada_"..tostring(ntent)] == true then break end end local itemD = datot[1]; local dat = col:getData( itemD ) or 0 if dat and dat >= 1 then local q = db:query("SELECT * FROM tents_backups WHERE dato=? AND tent_n=?", itemD, tentNum) local h = #dbPoll( q, -1 ) if h == 0 then db:exec("INSERT INTO tents_backups ( tent_n, dato, cantidad, posx, posy, posz ) VALUES ( ?, ?, ?, ?, ?,? )", ntent, itemD, dat, 0,0,0 ) end end end end destroyElement(getElementData(col,"parent")) destroyElement(col) cache["tentguardada_"..tostring(tentNum)] = true end end --Vehiculos for _, vehiculo in ipairs( getElementsByType("vehicle") ) do local veh = getElementData( vehiculo,"parent" ) local modelID = getElementModel( vehiculo ) local vehx, vehy, vehz = getElementPosition( vehiculo) local rx, ry, rz = getElementRotation( vehiculo ) if getElementData( veh, "vehicle" ) then totalveh = totalveh + 1 local maxSl = getElementData( veh, "MAX_Slots" ) local maxFuel = getElementData( veh, "maxfuel" ) local fuel = getElementData( veh, "fuel" ) local ruedas = getElementData( veh, "Tire_inVehicle" ) local motor = getElementData( veh, "Engine_inVehicle" ) local deposito = getElementData( veh, "Parts_inVehicle" ) db:exec( "INSERT INTO vehiculos_backups ( modelo, maxslots, fuel, maxfuel, ruedas, motor, deposito, posx, posy, posz, rotx, roty, rotz ) VALUES ( ?, ?, ?,?,?, ?, ?, ?,?, ?, ?, ?, ? )", modelID, maxSl, fuel, maxFuel, ruedas, motor, deposito, vehx, vehy, vehz, rx, ry, rz) destroyElement( getElementData( veh,"parent" ) ) destroyElement( veh ) end end outputChatBox("Backup Saved!",getRootElement( )) end addEventHandler("onResourceStop", getResourceRootElement( getThisResource()), startBackup) Any bug or error will not hesitate to let me know. Sorry my bad english