-
Posts
1,273 -
Joined
-
Last visited
-
Days Won
1
Everything posted by GTX
-
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)
-
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.
-
Yep, I think you should remake it
-
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 )
-
Why don't you test it and tell us what's wrong?
-
What does debugscript say?
-
Show us showGui function in client-side script.
-
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)
-
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
-
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)
-
Check first 2 tables in killmessages_server.lua. I think you need to change startY value in these tables.
-
English?
-
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
-
You need to edit textlib.lua.
-
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.
-
Use [ lua] [/lua] tags. You'll need to edit textlib.lua to make names coloured.
-
Awesome! Long-awaited version.
-
Use guiSetProperty. wEmployment = guiCreateWindow(x, y, width, height, "Elérhető állások", false) guiSetProperty(wEmployment,"CaptionColour","FFFF0000") -- is red
-
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 )
-
function cameraMatrix() setCameraMatrix(source, 1186.83203125, -1681.3076171875, 29.748865127563) end addEventHandler("onPlayerJoin", root, cameraMatrix)
-
I think he wants to send a message to all online admins.
-
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)
-
https://wiki.multitheftauto.com/wiki/OnPlayerLogin
-
Module doesn't work on Linux, as far as I remember.