Jump to content

GTX

Members
  • Posts

    1,273
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by GTX

  1. GTX

    Race Ghostmode.

    Ah woopsie. Okay, I got it now. But I got a strange error in this code: function GM() for i, v in ipairs(getElementsByType"vehicle") do if isElementCollidableWith(v, v) == true then setElementCollidableWith(v, v, false) else setElementCollidableWith(v, v, true) end end end addCommandHandler("gm", GM) But wtf... Error: attempt to call global 'isElementCollidableWith' (a nil value)
  2. GTX

    Race Ghostmode.

    Hello, as you may know, there's a bug in race ghostmode. When I'm trying to enable/disable ghostmode, it just doesn't... Any ideas? I tried many options and none of them did actualy work properly: #1: function GM(player) if not isGuestAccount(getPlayerAccount(player)) and isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup"Admin") then if getElementData(player, "overrideCollide.uniqueblah") == nil or not getElementData(player, "overrideCollide.uniqueblah") then for i, v in ipairs(getElementsByType"player") do setElementData(v, "overrideCollide.uniqueblah", 0, true) end outputChatBox('* Ghostmode enabled by ' .. getPlayerName(player), root, 0, 255, 0) else for i, v in ipairs(getElementsByType"player") do setElementData(v, "overrideCollide.uniqueblah", nil, true) end outputChatBox('* Ghostmode disabled by ' .. getPlayerName(player), root, 255, 0, 0) end end end addCommandHandler('gm', GM) addCommandHandler('ghostmode', GM) - Doesn't disable/enable. #2: function GM(player) if not isGuestAccount(getPlayerAccount(player)) and isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup"Admin") then for i, v in ipairs(getElementsByType"player") do if getElementCollisionsEnabled(getPedOccupiedVehicle(v)) then setElementCollisionsEnabled(getPedOccupiedVehicle(v), false) outputChatBox('* Ghostmode disabled by ' .. getPlayerName(player), v, 255, 0, 0) else setElementCollisionsEnabled(getPedOccupiedVehicle(v), true) outputChatBox('* Ghostmode enabled by ' .. getPlayerName(player), root, 0, 255, 0) end end end end addCommandHandler('gm', GM) addCommandHandler('ghostmode', GM) - Strange bug... When it disables, I can fly and texture/model of the car is... messing somehow. Screenshots: - http://shrani.si/f/26/bP/utJ6Dn5/mta-sc ... 2616-2.png (LOL) Thanks in advance.
  3. Yep, I think you should remake it
  4. function fixVeh ( theVehicle ) playerAccount = getPlayerAccount ( source ) playerCash = getAccountData ( playerAccount, "Cash" ) or "0" playerAllowed = getElementData ( source, "data.repairBuyAllowed" ) or "true" playerVehicle = getPedOccupiedVehicle ( player ) if ( playerVehicle ~= nil ) then if ( tonumber ( playerCash ) >= 1000 ) then if ( playerAllowed ) == "true" then fixVehicle ( playerVehicle ) setElementData ( source, "data.repairBuyAllowed", "false" ) else outputChatBox ( "You may buy only one vehicle repair per map.", source, 255, 0, 0, true ) else outputChatBox ( "You need to have at least 1000$ to fix your vehicle", source, 255, 0, 0, true) else outputChatBox ( "You need to be in a vehicle to buy a repair", source, 255, 0, 0, true ) end end end end addCommandHandler ( "buyrepair", fixVeh ) addCommandHandler ( "br", fixVeh )
  5. Why don't you test it and tell us what's wrong?
  6. GTX

    Access denied

    Add your resource to ACL.xml.
  7. What does debugscript say?
  8. Show us showGui function in client-side script.
  9. Line 2: aclGetGroup("admin")? function invisibility(source) if not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)),aclGetGroup("Admin"))then outputChatBox("Sorry, but you can't use this command!",source) return end local sourceVeh = getPedOccupiedVehicle(source) if getElementAlpha(sourceVeh) > 200 then setElementAlpha(sourceVeh, 0) outputChatBox("#FF0000Your car is now invisible.", source, 0, 255, 0, true) else setElementAlpha(sourceVeh, 255) outputChatBox("#FF0000Your car is now visible.", source, 0, 255, 0, true) end end addCommandHandler("v_inv", invisibility)
  10. local customKills = {} local config = { ["lines"] = 5, ["startY"] = 0.35, ["textHeight"] = 566, ["iconPosOffY"] = -10, ["iconHeight"] = 20, ["iconSpacing"] = 4, ["defaultWeapon"] = 255, ["fadeTime"] = 5000, ["startFade"] = 15000, ["align"] = "right", ["startX"] = -10 } local default = { ["lines"] = 5, ["startY"] = 0.25, ["textHeight"] = 16, ["iconPosOffY"] = -10, ["iconHeight"] = 20, ["iconSpacing"] = 4, ["defaultWeapon"] = 255, ["fadeTime"] = 5000, ["startFade"] = 15000, ["align"] = "right", ["startX"] = -10 } local endTime local screenX,screenY = guiGetScreenSize () local contentMessages = {} local fadingLines = {} --- local iconOrder = {} function setupTextOnStart ( resource ) if resource ~= getThisResource() then return end triggerServerEvent ( "onClientKillmessagesLoaded", getLocalPlayer() ) end addEventHandler ( "onClientResourceStart", getRootElement(), setupTextOnStart ) addEvent ("doSetKillMessageStyle",true) function setKillMessageStyle ( startX,startY,align,lines,fadeStart,fadeAnimTime ) if ( not startX ) then startX = default.startX end if ( not startY ) then startY = default.startY end if ( not align ) then align = default.align end if ( not lines ) then lines = default.lines end if ( not fadeStart ) then fadeStart = default.startFade end if ( not fadeAnimTime ) then fadeAnimTime = default.fadeTime end config.startX = startX config.startY = startY config.align = align config.lines = lines config.startFade = fadeStart config.fadeTime = fadeAnimTime if #contentMessages ~= 0 then for i=1,config.lines do if contentMessages[i] then destroyLine ( i ) end end end fadingLines = {} killMessages = {} if ( config.startY < 0 ) then config.startY = screenY - math.abs(config.startY*screenY) - (config.iconHeight*config.lines) config.startY = config.startY/screenY end createKillMessageGUI() return true end addEventHandler ( "doSetKillMessageStyle",getRootElement(),setKillMessageStyle) function createKillMessageGUI() local gap = config.iconHeight - config.textHeight gap = gap/2 for i=1,config.lines do local y = config.startY*screenY + (config.iconHeight*(i-1)) y = y + gap contentMessages[i] = { dxText:create("",0,y) } end endTime = config.fadeTime + config.startFade end function shiftUpGUI() local i = 1 for i=config.lines,2,-1 do local y = config.startY*screenY + (config.iconHeight*(i-1)) + (config.iconHeight - config.textHeight)/2 local targetY = config.startY*screenY + (config.iconHeight*(i-2)) + (config.iconHeight - config.textHeight)/2 if contentMessages[i] then for k,part in ipairs(contentMessages[i]) do local x,realY = getWidgetPosition(part) local diffY = realY - y setWidgetPosition(part,x,targetY + diffY) end end end for i=1,config.lines-1 do ---shift up the alpha too local tick = fadingLines[i+1] fadingLines[i] = tick fadingLines[i+1] = nil end end addEvent ( "doOutputMessage", true ) function outputMessage ( message, r, g, b, font ) if type(message) ~= "string" and type(message) ~= "table" then outputDebugString ( "outputMessage - Bad 'message' argument", 0, 112, 112, 112 ) return false end if type(font) ~= "string" then font = "default" end r = tonumber(r) or 255 g = tonumber(g) or 255 b = tonumber(b) or 255 ---shift everything up shiftUpGUI() --Delete the first line destroyLine (1) table.remove ( contentMessages, 1 ) if type(message) == "string" then message = {message} end local y = config.startY*screenY + (config.iconHeight*(config.lines-1)) + (config.iconHeight - config.textHeight)/2 local startX = config.startX if startX < 1 and startX > -1 then --auto calculate whether its relative or absolute startX = screenX/startX --make it relative end if startX < 0 then startX = screenX + startX end for i,part in ipairs(message) do if type(part) == "table" and part[1] == "image" then if not part.resource and not part.resourceName then part.resource = sourceResource end end end drawLine ( message, startX, y, config.align, config.lines, r, g, b, font, 1 ) fadeLine ( config.lines ) end addEventHandler ( "doOutputMessage", getRootElement(), outputMessage ) function drawLine ( message, x,y, align, line, r, g, b, font, scale ) --First draw it and work out the width local width = 0 contentMessages[line] = {} for i,part in ipairs(message) do if type(part) == "string" then local text = dxText:create ( part, width, y, false ) text:font ( font ) text:scale ( scale ) text:type("shadow",1) text:align"left" text:color ( r,g,b ) table.insert ( contentMessages[line], text ) width = width + text:extent() elseif part[1] == "icon" then local iconWidth = part.width or iconWidths[part.id or -1] or iconWidths[255] local iconHeight = part.height or config.iconHeight local image = dxImage:create ( icons[part.id or 0] or icons[255], width, y + (part.posOffY or config.iconPosOffY), iconWidth, iconHeight, false ) image:color ( part.r or 255, part.g or 255, part.b or 255 ) image:rotation ( part.rot or 0, part.rotOffX or 0, part.rotOffY or 0 ) width = width + iconWidth table.insert ( contentMessages[line], image ) elseif part[1] == "image" then if part.width and part.path then if part.resourceName then part.resource = getResourceFromName(tostring(part.resourceName)) or part.resource end local image = dxImage:create ( ":"..getResourceName(part.resource).."/"..part.path, width, y + (part.posOffY or config.iconPosOffY), part.width, part.height or config.iconHeight, false ) image:color ( part.r or 255, part.g or 255, part.b or 255 ) image:rotation ( part.rot or 0, part.rotOffX or 0, part.rotOffY or 0 ) width = width + part.width table.insert ( contentMessages[line], image ) end elseif part[1] == "color" or part[1] == "colour" then r = part.r or r g = part.g or g b = part.b or b elseif part[1] == "padding" then width = width + part.width or 0 end contentMessages[line].scale = scale end --Now reposition everything properly if align == "center" or align == "centre" then x = x - width/2 elseif align == "right" then x = x - width end for i,widget in ipairs(contentMessages[line]) do local wx,wy = getWidgetPosition ( widget ) setWidgetPosition ( widget, x + wx, wy ) end return true end function fadeLine ( line ) setLineAlpha ( line, 1 ) fadingLines[line] = getTickCount() end ----- addEventHandler ( "onClientRender",getRootElement(), function() for line,originalTick in pairs(fadingLines) do local tickDifference = getTickCount() - originalTick if tickDifference > endTime then destroyLine ( line ) setLineAlpha ( line, 1 ) fadingLines[line] = nil elseif tickDifference > config.startFade then local fadeTimeDifference = tickDifference - config.startFade --calculate the alpha local newAlpha = 1 - fadeTimeDifference/config.fadeTime --Set all the alphas setLineAlpha ( line, newAlpha ) end end end ) function setLineAlpha ( line, alpha ) for i,part in ipairs(contentMessages[line]) do setWidgetAlpha ( part, alpha ) end end function destroyLine ( line ) for k,part in ipairs(contentMessages[line]) do destroyWidget(part) end contentMessages[line] = {} end function destroyWidget ( widget ) if isElement(widget) then destroyElement ( widget ) elseif type(widget) == "table" and widget.destroy then widget:destroy() end end function getWidgetPosition ( widget ) if isElement(widget) then return
  11. Errors? Post errors next time. function gmon(player) acc = getAccountName(getPlayerAccount(player)) if(isObjectInACLGroup("user."..acc,aclGetGroup("Admin")))then for theKey,thePlayer in ipairs(getElementsByType("player")) do setElementData( thePlayer, "overrideCollide.uniqueblah", 0, false ) outputChatBox("Ghostmode on",thePlayer,186,212,71,true) end end end addCommandHandler("gmon", gmon) function gmoff(player) acc = getAccountName(getPlayerAccount(player)) if(isObjectInACLGroup("user."..acc,aclGetGroup("Admin")))then for theKey,thePlayer in ipairs(getElementsByType("player")) do setElementData(thePlayer, "overrideCollide.uniqueblah", nil, false ) outputChatBox("Ghostmode off",thePlayer,255,255,255,true) end end end addCommandHandler("gmoff", gmoff)
  12. Check first 2 tables in killmessages_server.lua. I think you need to change startY value in these tables.
  13. It is in utils folder. I edited it for you: dxText = {} dxText_mt = { __index = dxText } local idAssign,idPrefix = 0,"c" local g_screenX,g_screenY = guiGetScreenSize() local visibleText = {} ------ local defaults = { fX = 0.5, fY = 0.5, bRelativePosition = true, strText = "", bVerticalAlign = "center", bHorizontalAlign = "center", tColor = {255,255,255,255}, fScale = 1, strFont = "default", strType = "normal", tAttributes = {}, bPostGUI = false, bClip = false, bWordWrap = true, bVisible = true, tBoundingBox = false, --If a bounding box is not set, it will not be used. bRelativeBoundingBox = true, } local validFonts = { default = true, ["default-bold"] = true, clear = true, arial = true, pricedown = true, bankgothic = true, diploma = true, beckett = true, } local validTypes = { normal = true, shadow = true, border = true, stroke = true, --Clone of border } local validAlignTypes = { center = true, left = true, right = true, } function dxText:create( text, x, y, relative ) assert(not self.fX, "attempt to call method 'create' (a nil value)") if ( type(text) ~= "string" ) or ( not tonumber(x) ) or ( not tonumber(y) ) then outputDebugString ( "dxText:create - Bad argument", 0, 112, 112, 112 ) return false end local new = {} setmetatable( new, dxText_mt ) --Add default settings for i,v in pairs(defaults) do new[i] = v end idAssign = idAssign + 1 new.id = idPrefix..idAssign new.strText = text or new.strText new.fX = x or new.fX new.fY = y or new.fY if type(relative) == "boolean" then new.bRelativePosition = relative end visibleText[new] = true return new end function dxText:text(text) if type(text) ~= "string" then return self.strText end self.strText = text return true end function dxText:position(x,y,relative) if not tonumber(x) then return self.fX, self.fY end self.fX = x self.fY = y if type(relative) == "boolean" then self.bRelativePosition = relative else self.bRelativePosition = true end return true end function dxText:color(r,g,b,a) if not tonumber(r) then return unpack(self.tColor) end g = g or self.tColor[2] b = b or self.tColor[3] a = a or self.tColor[4] self.tColor = { r,g,b,a } return true end function dxText:scale(scale) if not tonumber(scale) then return self.fScale end self.fScale = scale return true end function dxText:visible(bool) if type(bool) ~= "boolean" then return self.bVisible end self.bVisible = bool if bool then visibleText[self] = true else visibleText[self] = nil end return true end function dxText:destroy() self.bDestroyed = true setmetatable( self, self ) return true end function dxText:extent() local extent = dxGetTextWidth ( self.strText, self.fScale, self.strFont ) if self.strType == "stroke" or self.strType == "border" then extent = extent + self.tAttributes[1] end return extent end function dxText:height() local height = dxGetFontHeight ( self.fScale, self.strFont ) if self.strType == "stroke" or self.strType == "border" then height = height + self.tAttributes[1] end return height end function dxText:font(font) if not validFonts[font] then return self.strFont end self.strFont = font return true end function dxText:postGUI(bool) if type(bool) ~= "boolean" then return self.bPostGUI end self.bPostGUI = bool return true end function dxText:clip(bool) if type(bool) ~= "boolean" then return self.bClip end self.bClip = bool return true end function dxText:wordWrap(bool) if type(bool) ~= "boolean" then return self.bWordWrap end self.bWordWrap = bool return true end function dxText:type(type,...) if not validTypes[type] then return self.strType, unpack(self.tAttributes) end self.strType = type self.tAttributes = {...} return true end function dxText:align(horzA, vertA) if not validAlignTypes[horzA] then return self.bHorizontalAlign, self.bVerticalAlign end vertA = vertA or self.bVerticalAlign self.bHorizontalAlign, self.bVerticalAlign = horzA, vertA return true end function dxText:boundingBox(left,top,right,bottom,relative) if left == nil then if self.tBoundingBox then return unpack(boundingBox) else return false end elseif tonumber(left) and tonumber(right) and tonumber(top) and tonumber(bottom) then self.tBoundingBox = {left,top,right,bottom} if type(relative) == "boolean" then self.bRelativeBoundingBox = relative else self.bRelativeBoundingBox = true end else self.tBoundingBox = false end return true end addEventHandler ( "onClientRender", getRootElement(), function() for self,_ in pairs(visibleText) do while true do if self.bDestroyed then visibleText[self] = nil break end local l,t,r,b --If we arent using a bounding box if not self.tBoundingBox then --Decide if we use relative or absolute local p_screenX,p_screenY = 1,1 if self.bRelativePosition then p_screenX,p_screenY = g_screenX,g_screenY end local fX,fY = (self.fX)*p_screenX,(self.fY)*p_screenY if self.bHorizontalAlign == "left" then l = fX r = fX + g_screenX elseif self.bHorizontalAlign == "right" then l = fX - g_screenX r = fX else l = fX - g_screenX r = fX + g_screenX end if self.bVerticalAlign == "top" then t = fY b = fY + g_screenY elseif self.bVerticalAlign == "bottom" then t = fY - g_screenY b = fY else t = fY - g_screenY b = fY + g_screenY end elseif type(self.tBoundingBox) == "table" then local b_screenX,b_screenY = 1,1 if self.bRelativeBoundingBox then b_screenX,b_screenY = g_screenX,g_screenY end l,t,r,b = self.tBoundingBox[1],self.tBoundingBox[2],self.tBoundingBox[3],self.tBoundingBox[4] l = l*b_screenX t = t*b_screenY r = r*b_screenX b = b*b_screenY end local type,att1,att2,att3,att4,att5 = self:type() if type == "border" or type == "stroke" then att2 = att2 or 0 att3 = att3 or 0 att4 = att4
  14. You need to edit textlib.lua.
  15. Code: db = dbConnect("mysql", "dbname=gtx;host=127.0.0.1", "gtx", "*******", "share=1") Error: dbConnect failed; Could not connect Title explains all. Details are correct and double-checked. Thanks.
  16. Use [ lua] [/lua] tags. You'll need to edit textlib.lua to make names coloured.
  17. Awesome! Long-awaited version.
  18. GTX

    Color GUI?:O

    Use guiSetProperty. wEmployment = guiCreateWindow(x, y, width, height, "Elérhető állások", false) guiSetProperty(wEmployment,"CaptionColour","FFFF0000") -- is red
  19. Is that what you wanted? addCommandHandler("sendmessage", function(player, command, ...) msgt = { ... } message = table.concat(msgt, " ") for i, v in ipairs(getElementsByType("player")) do while true do if not getPlayerAccount(v) or isGuestAccount(getPlayerAccount(v)) then break end if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(v)), aclGetGroup("Admin")) then outputChatBox("Message sent.", player, 255, 255, 255, true) outputChatBox(getPlayerName(player) .. " said: "..message, v, 255, 255, 255, true) end break end end end )
  20. GTX

    Setmatrix how?

    function cameraMatrix() setCameraMatrix(source, 1186.83203125, -1681.3076171875, 29.748865127563) end addEventHandler("onPlayerJoin", root, cameraMatrix)
  21. I think he wants to send a message to all online admins.
  22. Try this. function ghost() for index,vehicle in ipairs(getElementsByType("vehicle")) do if isElementCollidableWith(vehicle, getPedOccupiedVehicle(localplayer)) == false then outputChatBox("Server: Ghostmod: on", source, 0, 255, 0 ) setElementCollidableWith(vehicle, getPedOccupiedVehicle(localplayer), true) else setElementCollidableWith(vehicle, getPedOccupiedVehicle(localplayer), false) outputChatBox("Server: Ghostmode: off", source, 0, 255, 0 ) end end end addCommandHandler("Ghost", ghost)
  23. GTX

    Guest function

    https://wiki.multitheftauto.com/wiki/OnPlayerLogin
  24. Module doesn't work on Linux, as far as I remember.
×
×
  • Create New...