Tomas
Members-
Posts
2,530 -
Joined
-
Last visited
Everything posted by Tomas
-
Nunca he visto ninguna
-
Probably it has some security check which is preventing you from starting the resource and trying to shutdown the server, if you have the source post it so we can help you removing it.
-
Con Javascript puedes llamar a funciones de MTA utilizando OOP, por ejemplo: <input type="button" value="login" onclick="login()"> <script> var login = function() { mta.triggerEvent("login", document.getElementById("user").text, document.getElementById("password").text) } </script>
-
[APORTE] Editor de archivo acl.xml | Con GUI DX
Tomas replied to aka Blue's topic in Recursos y aportes
Ahora sí , por cierto, como que está un poco hacia el costado.. no? -
Es que si no explicas qué es la maldita lista no entendemos for i = 1, #guiGridListGetRowCount(grid) do local player = getPlayerFromName(guiGridListGetItemText(grid, i, 1)) if ( player) then setElementDimension(player, 69) end end Vas a tener que cambiar la columna en la que está el nombre de los jugadores o de lo contrario no funcionará.
-
1. Se crea la tabla vacía. 2. Él crea los objetos en el juego. 3. El recurso se para y se guarda en la tabla. 4. El recurso se vuelve a iniciar, se cargan los objetos y se limpia la tabla. (y así una y otra vez, si la tabla ya tiene cosas los objetos se reescribirían)
-
[APORTE] Editor de archivo acl.xml | Con GUI DX
Tomas replied to aka Blue's topic in Recursos y aportes
no pic no r8 -
if not tonumber(jailtime) or tonumber(jailtime) == 0 then
-
Ahora solo me da el error que dije antes (bad argument #1 to 'ipairs' (table expected, got userdata) el otro de 'no such table: position' ya no aparece, pero sigue sin funcionar. ¿En qué linea?
-
Ahora que me pongo a ver el codigo original, esta lleno de errores, intenta con esto: local connects = dbConnect ("sqlite", "file.db") dbExec(connects, "CREATE TABLE IF NOT EXISTS `position` (`table` TEXT)") cache = {} function saveP () for i,v in ipairs(getElementsByType("object", resourceRoot)) do local modelid = getElementModel(v) local x,y,z = getElementPosition (v) local rx,ry,rz = getElementPosition (v) cache[i] = {modelid, x, y, z, rx, ry, rz} end dbExec(connects, "INSERT INTO `position` (`table`) VALUES(?)", toJSON(cache)) end addEventHandler ("onResourceStop", resourceRoot, saveP) function loadP () dbQuery(function(qh) local result = dbPoll(qh, 0) for _, v in ipairs(qh) do t = fromJSON(v[1]) end for _,vv in ipairs(t) do model, x, y, z, rx, ry, rz = unpack(vv) createObject(model, x, y, z, rx, ry, rz) end end, db, "SELECT * FROM `position`") dbExec(db, "DROP TABLE IF EXISTS `position`") end addEventHandler ("onResourceStart", resourceRoot, loadP)
-
Esto debería funcionar: local connects = dbConnect ("sqlite", "file.db") dbExec(connects, "CREATE TABLE IF NOT EXISTS `position` (`table` TEXT)") cache = {} function saveP () for i,vp in ipairs(getElementsByType("object"), resourceRoot) do local modelid = getElementModel(vp) local x,y,z = getElementPosition (source) local rx,ry,rz = getElementPosition (source) cache[i] = {modelid, x, y, z, rx, ry, rz} end dbExec(connects, "INSERT INTO `position` (`table`) VALUES(?)", toJSON(cache)) end addEventHandler ("onResourceStop", getRootElement(), saveP) function loadP () dbQuery(function(qh) local result = dbPoll(qh, 0) for _, v in ipairs(qh) do for _,vv in ipairs(fromJSON(v)) do model, x, y, z, rx, ry, rz = unpack(vv) createObject(model, x, y, z, rx, ry, rz) end end end end, db, "SELECT * FROM `position`") dbExec(connects, "DROP TABLE IF EXISTS `position`") end addEventHandler ("onResourceStart", getRootElement(), loadP)
-
Eso es lo que estoy intentando hacer. ¿Debo hacer un loop con getResources y getResourceScripts, ¿cierto? Gracias @El_Zorro No es necesario utilizar MTA, con un script BAT o SH se puede hacer mas simple sin sobrecargar MTA.
-
Es mejor tener un script que compile cualquier archivo .lua a .luac :v
-
Mmm aun no sale el output cuando le doy click, con isCursorInside si me salen los output pero me salen muchas veces . Estas son las funciones que estoy usando: Y así como lo estoy haciendo: function h() boton = dxDrawButton("#ffffffhola",300,300,300,300,tocolor(0,0,0,255),"default",2) if boton.isClicked() then outputChatBox("sirve",255,255,255) end end addEventHandler("onClientRender", root, h) No uses onClientRender, usa onClientKey y esa función que mencionaste: isMouseInside
-
Pues lo mismo, aritmética
-
Eso es un poco más complicado, pero onClientClick y bastante aritmética, en un rato si tengo tiempo pruebo hacerlo
-
startX, startY, width, height, iPR = 150, 150, 75, 75, 3 El tres es la cantidad de rectángulos por celda, lo otro son las posiciones que tienes que adaptar. Si, gracias, ya lo hice jaja. ¿Cómo podría juntarlos un poco más? Ya que cuando hago el cálculo para todas las resoluciones queda un espacio bastante grande entre ellos x = (startX * index)*0.65; y = startY * row Ve jugando con el 65.
-
startX, startY, width, height, iPR = 150, 150, 75, 75, 3 El tres es la cantidad de rectángulos por celda, lo otro son las posiciones que tienes que adaptar.
-
maletero = {1, 2, 3, 4, 5, 6} startX, startY, width, height, iPR = 150, 150, 75, 75, 3 addEventHandler('onClientRender', root, function () local row, index = 1, 1 for i = 1, #maletero do x = startX * index; y = startY * row if ( i%iPR == 0 ) then row = row + 1 index = 1 else index = index + 1 end dxDrawRectangle(x, y, width, height) end end )
-
Pues a mi me funciona bien http://prntscr.com/c9ln7b
-
El código que te dejé arriba hace eso.
-
for i=1, slots_disponibles do if contenido_caja[ caja ][ i ] == nil then contenido_caja[ caja ][ i ] = { arma = arma, ammo = ammo } takeWeapon( player, arma ) outputChatBox( "Has guardado un arma en la caja", player, 0, 255, 0 ) break end outputChatBox( "Todos los slots están ocupados", player, 255, 0, 0 ) end
-
addEventHandler("bomba", function (player, _, time) if ( not time or not tonumber(time) ) then return end time = tonumber(time) setTimer(outputChatBox, time, 1, "La bomba ha explotado gg") end end ) Gracias Tomas. Por cierto... Estas drogado ? addEventHandler("bomba", . . . Necesitaba era ayuda para lo del /comando [tiempo], pensé que iba a ser más complicado. (también pensé en hacerlo algo parecido a lo que me dio Tomas, pero creí que tenia que usar setTimer en algunas partes pero no, solo había que poner 'time'). Edit: Una pregunta, como puedo decir que diga en el outputChatBox segundos en vez de milisegundos? Tengo esto: function plantarBomba(_,time) local playerX,playerY,playerZ = getElementPosition(localPlayer) if getElementData(localPlayer, "Bombas") > 0 then if (not tonumber(time) or not tonumber(time)) then outputChatBox("SYNTAX: /bomba [milisigundos] e.j: /bomba 3000 = 3 segundos." ) return end time = tonumber(math.floor(time) ) obj = createObject(1945,playerX,playerY,playerZ - 1) setTimer(outputChatBox,time,1,"Ha explotado la bomba que has plantado hace unos " ..time.. " segundos.") setTimer(createExplosion, time,1, playerX,playerY,playerZ,10) setTimer(destroyElement, time,1,obj) setElementData(localPlayer, "Bombas", getElementData(localPlayer, "Bombas" ) -1 ) else outputChatBox("#ff0000No puedes plantar bombas, ve a compra más bombas. #ffffff[escribe #D50000/items #ffffff para ir a comprar]",255,255,255,true) end end addCommandHandler("bomba",plantarBomba) Donde dice ''Ha explotado la bomba que has plantado hace unos '' ..time..''segundos.'' me lo dice en milisegundos, ya intente dividiendo el time entre /60 (si lo divido entre /60 me explotan de una vez), /1000 (si lo divido entre /1000 me da error en setTimer [interval is below 50] y también intente con math.floor pero igual me lo cuenta en milisegundos en el outputChatbox. setTimer(outputChatBox,time,1,"Ha explotado la bomba que has plantado hace unos " ..time/1000.. " segundos.")