Enargy,

Members
  • Content Count

    1,183
  • Joined

  • Last visited

Community Reputation

25 Good

6 Followers

About Enargy,

  • Rank
    Banger
  • Birthday 08/10/1999

Details

  • Gang
    I don't have one :(
  • Location
    Venezuela
  • Occupation
    Student

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. You can use the split function to separate a string into several sub-strings. local sep = "_" -- This character will be your separator local var1 = split("Bobby_Bob", sep) print(var1[1]) -- Result: Bobby print(var1[2]) -- Result: Bob
  2. Para crear el grupo del acl tienes que irte a la carpeta deathmatch de tu MTA y abrir el archivo acl.xml, agregas un nuevo grupo y luego las cuentas que podrán utilizar el comando. Ej: <object name="user.Enargy"></object> addCommandHandler("canspray", function(player) local aclGroup = aclGetGroup("NombreGrupo") local account = getPlayerAccount(player) if account then local accName = getAccountName(account) if isObjectInACLGroup("user." .. accName, aclGroup) then -- -- -- Funcion que abre el panel. end end end
  3. Me tomé la libertad de organizar mejor tu código, no está probado pero el código se ve "bien". local elements = { } local function loadText(id, text, x, y, z, interior, dimension, saveInDB) if id and elements[id] then return false end if type(x) ~= "number" or type(y) ~= "number" or type(z) ~= "number" then return false end if saveInDB then if not handler then return false end dbExec(handler, "INSERT INTO `3dtext`(`textID`, `text`, `x`, `y`, `z`, `interior`, `dimension`) VALUES (?,?,?,?,?,?,?)", id, text, x, y, z, interior, dimension) end interior = interior or 0 dimension = dimension or 0 elements[id] = createElement("3dtext") setElementPosition(elements[id], x, y, z) setElementInterior(elements[id], interior) setElementDimension(elements[id], dimension) setElementData(elements[id], "text", tostring(text)) return elements[id] end addEventHandler("onResourceStart", resourceRoot, function() local qh = dbQuery(handler, "SELECT * FROM 3dtext ORDER BY textID ASC") local result = qh and dbPoll(qh, -1) if result then for key, data in ipairs(result) do loadText(data.textID, data.text, data.x, data.y, data.z, data.interior, data.dimension, false) end end end ) local function createxto(player, cmd, textID, ...) if textID then if ((getElementData(player, "NivelAdmin", 5) or 0) == 5) then if textID and elements[textID] then outputChatBox( "Esta ID ya existe!", player, 255, 0, 0 ) return end local text = table.concat({ ... }, " ") local x, y, z = getElementPosition(player) loadText(textID, text, x, y, z, getElementInterior(player), getElementDimension(player), true) outputChatBox("Texto creado. (ID " .. textID .. ")", player, 0, 255, 0) else outputChatBox("No tienes permiso para usar este comando!", player, 255, 255, 255) end else outputChatBox("Comando: /" .. cmd .. " [ID] [texto]", player, 255, 255, 255) end end addCommandHandler("creartextoentorno", createxto)
  4. https://community.mtasa.com/index.php?p=resources&s=details&id=10673
  5. I think you are looking for something like this.
  6. O mapeas en una dimension normal y editas el archivo .map cambiando los valores del atributo dimension al numero que te parezca, o editas el archivo WORKING_DIMENSION del mapeditor.
  7. I did not see that lol. Anyways you're welcome.
  8. That's weird... the code is right. Are you typing the command after you get logged in?
  9. function SetearDatas() local KD = getElementData(source, "KD") or 0 if (KD < 1) then setElementData(source, "ranking", "Bronze") --Bronce elseif (KD >= 1 and KD < 2.5) then setElementData(source, "ranking", "Silver") --Plata elseif (KD >= 2.5 and KD < 4) then setElementData(source, "ranking", "Gold") --Oro elseif (KD >= 4 and KD < 7) then setElementData(source, "ranking", "Platinum") --Platino elseif (KD >= 7 and KD < 10) then setElementData(source, "ranking", "Diamond") --Diamante elseif (KD >= 10) then setElementData(source, "ranking", "Master") --Challenger end end addEventHandler ("onPlayerLogin", getRootElement(), SetearDatas) function statsss () outputChatBox("Your rank is: ".. (getElementData (source, "ranking") or "None"), source,0,255,0) end addCommandHandler ( "statinfo", statsss )
  10. Enargy,

    Dx Rotation

    Cuando iteras un elemento dx es importante el orden en que está establecido en tu código. Por ejemplo: -- La ultima funcion en iterarse va ser la que va a superponerse a la otra. addEventHandler("onClientRender", root, function() dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(255, 0, 0, 255), false) dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(0, 255, 0, 255), false) end ) En el caso de usar el argumento POSTGUI: -- La primera funcion en iterarse va ser la que va a superponerse a todas las demás que las siguen. addEventHandler("onClientRender", root, function() dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(255, 0, 0, 255), true) dxDrawImage(0, 0, 50, 50, "imagen.png", 0, 0, 0, tocolor(0, 255, 0, 255), false) end ) Ahora con el caso de adaptarse DX Image a todas las resoluciones, al igual que con guiCreateStaticImage, puedes utilizar los porcentajes para que se adapten de igual manera que los static-image. -- Se busca la resolución. local sx, sy = guiGetScreenSize() -- Calcular las posiciones utilizando porcentajes. ejemplo: x=0.5, y=0.5 crea la imagen a partir de la mitad de la pantalla. dxDrawImage(sx * 0.5, sy * 0.5, sx * 0.3, sy * 0.1, "imagen.png") Una forma más accesible sería re definir la misma función dxDrawImage para que se adapte a los porcentajes sin realizar los cálculos uno y otra vez. -- Primero redefinir la función. _dxDrawImage = dxDrawImage local function dxDrawImage(x, y, w, h, ...) local sx, sy = guiGetScreenSize() return _dxDrawImage(x * sx, y * sy, w * sx, h * sy, ...) end -- Luego dibujar addEventHandler("onClientRender", root, function() dxDrawImage(0.5, 0.5, 0.05, 0.05, "imagen.png", 0, 0, 0, tocolor(0, 255, 0, 255), false) dxDrawImage(0.3, 0.5, 0.05, 0.05, "imagen.png", 0, 0, 0, tocolor(255, 255, 0, 255), false) -- Ya como vez no haces el calculo una y otra vez ya que está realizandolo directamente cuando llamas a la función. end ) Puedes utilizar las posiciones del static-image como guía para usarlos en dx-image.
  11. Enargy,

    getElementData

    Change data[2] to data only
  12. Enargy,

    Dynamic colshapes

    When OnClientColShapeLeave is triggered you could check if the player is in any other colshape.
  13. Lmao. I'm not being negative. Clearly it says it does not tested. The gamemode concept as well is pretty good. Keep it going dude :)
  14. Why would you share your gamemode if it is not tested ?