Leaderboard
Popular Content
Showing content with the highest reputation on 24/06/17 in all areas
-
DOWNLOAD: https://community.multitheftauto.com/index.php?p=resources&s=details&id=14512 This script allows you to detect Ban evaders who change IP or serial to try evade bans, it can fight:- Dynamic IP's (or static..)- changed (new) serialsHow? By resolving the IP hostname when they connect.You can choose to 'log' the connections (flag option) when a player connects with a defined hostname, which means Internet Provider hostname, so you can investigate if they are who you think they might be.VPN hostname: looks like; datacenter1.vpnworks.net (example; you would then block or log use of a specific proxy/VPN program if many ban evaders use it)Home internet connection; looks like: (develop a sense for how they often look) customer17135.ippool.t-mobile.com (you can both list the customer-or pool specific hostname (before the first dot); this to avoid logging or blocking innocent unrelated players, OR if they are (almost) the only using that Internet provider or VPN software, log or block general hostname ('ippool.t-mobile.com' as for fictive example) If you know one problematic ban evader uses one internet provider usually (ISP) you check the hostname of that IP and add it to the flag list, then when someone connects using this matching hostname, it will print a warning to server.log and you can investigate: - Does the player behave as the banned player? - Is he with the same friends or does he talk similarly, IS HE clearly the same person? This resource basically give you usable leads in order to identify these ban evaders; it provides you with suspects, based on Internet provider or customer account hostname, so you can start analyzing if they are the same person. It can also block the connection automatically instead of only logging a warning of the suspicious player connecting. Besides the lead-giving to investigate, if you got problematic ban evader(s) who mainly use the same VPN/proxy program that uses often specific hostnames of Datacenters/the VPN company, or the same Internet provider hostname or the evader himself has a Dynamic public IP, BUT.. a static hostname (like based upon f.e, customer82423.pool.telecomalgeria.com) you can define and nail them on this static hostname that belongs to the ISP provider customer who has the internet/DSL account. (aka, the same person). As said before, be careful by analyzing the specific use of hostnames to see how many potentially legit players you could hurt. It's the best choice to go for Flagging only and not refusing connections, so you can look on a case by case basis if the player seems to be the same as the ban evader; and then re-ban the new evading serial or IP's. This resource will prove to be a reliable tool. IMPORTANT!! You MUST have a bit of experience with web-hosting in order to get this resource working! It will NOT work straight out of the box, you'll need to host a resolver API (PHP) file on the web. This .php file is included, together with extensive README (documentation) for you to understand why this is required, and assist in setting the resource up. See below a copy of this documentation: (spoiler)5 points
-
سلام عليكم ورحمة الله وبركاته شباب زي ما تشوفون في العنوان اللعبه صارت قديمه وراحت عليها +ماصار فيها ناس واجد والمبرمجين صارو زي الرز واي واحد يلمس اي مود يقولك انا مبرمج لذلك يرجى التصويت وباذن الله حسب التصويت الاعلى نشوف2 points
-
Hello, We, the eXo-Reallife team, would like to release a module that is also used on our server. It is a pathfinding module developed by Jusonex and StiviK. The module uses the A * algorithm. (https://en.wikipedia.org/wiki/A*_search_algorithm) We use this for our GPS: Why did we develop a module for this and did not simply write a script? This has a very simple reason. The module calculates the routes in your own threads, which has the advantage that it is much faster than a script, and secondly, you can calculate how much routes as you want side by side. This will not cause any lags etc.! What are the features of the module? The module can load several graphs / nodes side by side The module calculates the routes in its own threads Very useful API functions (such as findNodeAt or getNodeNeighbors) What are the main features? int loadPathGraph (String pathToGraphFile) This function loads the graph from the given file and returns a GraphId which you need for all other functions. If something does not work, false is returned. bool findShortestPathBetween (int graphId, float startX, float startY, float startZ, float endX, float endY, float endZ, function callback) This function finds the shortest route between the points. (Unfortunately, no vectors can be handed over!) The callback function is called when the calculation is finished. As an argument, either a table is returned that contains all nodes, or false if no route is found. bool unloadPathGraph (int graphId) You can use this function if you no longer need and want to unload the graph, it returns true if everything is fine, false if an error has occurred. You will find all the other functions that are included in our documentation. Why is the eXo team releasing all this? Well, that has the simple reason, we want to share our work with others and not just keep it for us! We hope we can enrich you with it and vlt. Even help! Where can I download the module? The whole module is open-source and can be viewed in our GitHub organization. It's released under the MIT License. GitHub organization: https://github.com/eXo-MTA Repository: https://github.com/eXo-MTA/ml_pathfind Download the module (Windows / Linux): https://github.com/eXo-MTA/ml_pathfind/releases Nodes of all roads in SA: https://github.com/eXo-MTA/ml_pathfind/blob/master/test/sa_nodes.json If you find any mistakes or suggestions, you can simply create a new issue and we will look into it. So now that's it, have fun with the module! - StiviK and the eXo-Reallife team (Original thread in German: https://www.mta-sa.org/thread/36365-release-mta-sa-pathfinding-module/?postID=407938#post407938)1 point
-
Hello! I'm just a newbee in MTA, now I'm learning the wiki. I've found the function SetElementDimension with description for the argument Dimension: "You can also use -1 to make the element visible in all dimensions (only valid to objects)." So, I have a question, why only for the objects? Why not for peds(players) and vehicles? So, it would be cool to have a dimension that everyone will see but won't see each other, like if two players would be in one apartments, but in two different dimensions(eg. 1 and 2), so they wouldn't see each other, like they are in two different apartments, but they would be able to see everything that happens in the street(-1 dimension), cars, walking peds and so on. At least, it seems to be cool :) If I'm not mistaken, the apartments in GTA Online works this way.1 point
-
1 point
-
سيب اكيد باذن الله بس ببرمج سكربتات بفلوس واطلع فقط +_+ وعبد الكريم بالنسبه لي مثل اخ +_+1 point
-
1 point
-
لا تتعب نفسك ابداً في سيرفر لك .. فقط برمج لأشخاص يبون مبرمجين بمقابل او ساعد ناس الخ طبعاً بهدف الاستفادة من ناحيتين ( تعلم البرمجة ) و ( لو كنت تبي يعني .. مقابل مادي لأتعابك ) من رأيي تعتزل و تطبق السطرين اللي فوق لو تبي نصيحتي يعني انا اخذت قرارك هذا قبلك وصراحة فيه عائد كويس رجع لي1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
effect createEffect ( string name, float x, float y, float z [, float rX, float rY, float rZ, float drawDistance = 0 ] ) function Jets() local x, y, z = getElementPosition(localPlayer) for i=0, 20 do createEffect ("petrolcan", x + math.random(-5,5), y + math.random(-5,5), z) end end addCommandHandler("jet", Jets) -- There were multiple problems. First of all, local isn't a function. You don't have to close it. local just makes variables exist only in the code block it is in. In other words, varibales starting with local like "local pig = 'animal'" only exist until you end the function it is in. -- createEffect's first argument have to be string. -- You had a "(" before x, but you did not close it.1 point
-
1 point
-
comondo = {} laikas = 5000 function Tele(playerSource) teleportTimerLS = setTimer(function() if not isPedInVehicle(playerSource) then setElementPosition(playerSource, 1518.88757, -1668.16504, 13.54688) comondo[playerSource] = true remain = getTimerDetails(teleportTimerLS) outputChatBox(remain.. " seconds untill teleport", playerSource, r, g, b) setTimer(function() comondo[playerSource] = false end, laikas, 1) else car = getPedOccupiedVehicle(playerSource) comondo[playerSource] = true setElementPosition(car, 1518.88757, -1668.16504, 13.54688) warpPedIntoVehicle(playerSource, car) setTimer(function() comondo[playerSource] = false end, laikas, 1) end end, 3000, 1) end addCommandHandler("ls", Tele) ------------------------------------------------------------------------------------------------------------------------- function Tele(playerSource) teleportTimerLV = setTimer(function() if not isPedInVehicle(playerSource) then setElementPosition(playerSource, 2032.60022, 1343.41199, 10.82031) comondo[playerSource] = true remain = getTimerDetails(teleportTimerLV) outputChatBox(remain.. " seconds untill teleport", playerSource, r, g, b) setTimer(function() comondo[playerSource] = false end, laikas, 1) else car = getPedOccupiedVehicle(playerSource) comondo[playerSource] = true setElementPosition(car, 2032.60022, 1343.41199, 10.82031) warpPedIntoVehicle(playerSource, car) setTimer(function() comondo[playerSource] = false end, laikas, 1) end end, 3000, 1) end addCommandHandler("lv", Tele) ------------------------------------------------------------------------------------------------------------------------- function Tele(playerSource) teleportTimerSF = setTimer(function() if not isPedInVehicle(playerSource) then setElementPosition(playerSource, -2028.97644, 148.12634, 28.83594) comondo[playerSource] = true remain = getTimerDetails(teleportTimerSF) outputChatBox(remain.. " seconds untill teleport", playerSource, r, g, b) setTimer(function() comondo[playerSource] = false end, laikas, 1) else car = getPedOccupiedVehicle(playerSource) comondo[playerSource] = true setElementPosition(car, -2028.97644, 148.12634, 28.83594) warpPedIntoVehicle(playerSource, car) setTimer(function() comondo[playerSource] = false end, laikas, 1) end end, 3000, 1) end addCommandHandler("sf", Tele) that show only the timer , for damage and stop it you need event and killTimer function, replace r, g,b with numbers1 point
-
1 point
-
An example script directly not, but here is it how i use it in my Gamemode: function GPS:constructor() -- Check if module is loaded if not loadPathGraph then outputDebugString("GPS module not loaded. Continuing without...", 2) return end -- Load path graph self.m_GraphId = loadPathGraph("files/paths/sa_nodes.json") end function GPS:destructor() if unloadPathGraph then unloadPathGraph() end end function GPS:getRoute(callback, from, to) if not findShortestPathBetween then return false end return findShortestPathBetween(self.m_GraphId, from.x, from.y, from.z, to.x, to.y, to.z, callback) end1 point
-
1 point
-
You can do that calculating dxElement's position and use onClientRender for updating the gui's position.1 point
-
Creo que este script te puede ayudar, mira a ver: --[[ Author: danibayez MTA Forum: https://goo.gl/QX0mcT ]] local width, height, h_height, r_height, s_width = 500, 520, 70, 40, 15 local renderTarget = dxCreateRenderTarget( width, height, true ) local font = dxCreateFont( "files/font.ttf", 18 ) local posX = ( screenW - width ) / 2 local isScrollActive, scrollCache, scrollColor = _, 0, 0 local players = { } addEventHandler( "onClientRender", root, function( ) if ( getKeyState( "TAB" ) ) then local c_height = #players * r_height local posY = ( screenH - ( math.min( c_height, height ) + h_height ) ) / 2 dxDrawRectangle( posX, posY, width, h_height, tocolor( 42, 93, 132, 255 ), true ) dxDrawImage( posX + 10, posY + ( h_height - 64 ), 64, 64, "files/skins/" .. getElementModel( localPlayer ) .. ".png", 0, 0, 0, tocolor( 255, 255, 255, 255 ), true ) dxDrawText( #players .. "/100", posX, posY, posX + width - 10, posY + h_height, tocolor( 255, 255, 255, 255 ), 1, font, "right", "center", false, false, true ) local headerX, headerY = posX + 85, posY + 7 dxDrawImageSection( headerX, headerY, 16, 16, 16, 0, 16, 16, "files/icons.png", 0, 0, 0, tocolor( 255, 255, 255, 255 ), true ) dxDrawText( getPlayerName( localPlayer ):gsub( "_", " " ), headerX + 20, headerY, headerX + 20, headerY + 16, tocolor( 255, 255, 255, 255 ), 0.55, font, "left", "center", false, false, true ) dxDrawImageSection( headerX, headerY + 20, 16, 16, 32, 0, 16, 16, "files/icons.png", 0, 0, 0, tocolor( 255, 255, 255, 255 ), true ) dxDrawText( convertNumber( getPlayerMoney( ) ) .. "$", headerX + 20, headerY + 20, headerX + 20, headerY + 36, tocolor( 255, 255, 255, 255 ), 0.55, font, "left", "center", false, false, true ) dxDrawImageSection( headerX, headerY + 40, 16, 16, 0, 0, 16, 16, "files/icons.png", 0, 0, 0, tocolor( 255, 255, 255, 255 ), true ) dxDrawText( _getZoneName( getElementPosition( localPlayer ) ), headerX + 20, headerY + 40, headerX + 20, headerY + 56, tocolor( 255, 255, 255, 255 ), 0.55, font, "left", "center", false, false, true ) local offsetY = 0 local _width = c_height > height and width - s_width - 5 or width dxSetRenderTarget( renderTarget, true ) for i = 1, #players do local r, g, b = getPlayerNametagColor( players[ i ] ) local posY = offsetY - scrollCache dxDrawRectangle( 0, posY, width, r_height, tocolor( 0, 0, 0, 200 ) ) dxDrawText( ( getElementData( players[ i ], "playerid" ) or 0 ), 0, posY, 50, posY + r_height, tocolor( r, g, b, 255 ), 0.6, font, "center", "center" ) dxDrawText( getPlayerName( players[ i ] ):gsub( "_", " " ), 60, posY, 160, posY + r_height, tocolor( r, g, b, 255 ), 0.6, font, "left", "center" ) dxDrawText( getPlayerPing( players[ i ] ), _width - 70, posY, _width, posY + r_height, tocolor( r, g, b, 255 ), 0.6, font, "center", "center" ) offsetY = offsetY + r_height end if ( width ~= _width ) then local vRatio = height / c_height local s_height = height * vRatio local scrollY = ( vRatio * scrollCache ) + 5 local isHover = isCursorOnElement( posX + _width, posY + scrollY + h_height, s_width, s_height - 10 ) local r, g, b = interpolateBetween( 42, 93, 132, 22, 73, 112, scrollColor, "Linear" ) scrollColor = math.min( math.max( isScrollActive and scrollColor + 0.1 or scrollColor - 0.1, 0 ), 1 ) _dxDrawRectangle( _width, 5, s_width, height - 10, 10, tocolor( 0, 0, 0, 200 ) ) _dxDrawRectangle( _width, scrollY, s_width, s_height - 10, 10, tocolor( r, g, b, 255 ) ) if ( isHover and getKeyState( "mouse1" ) ) then isScrollActive = not isScrollActive and cursorY( ) - scrollY + 5 or isScrollActive elseif ( not getKeyState( "mouse1" ) ) then isScrollActive = nil end if ( isScrollActive ) then scrollCache = math.min( math.max( ( cursorY( ) - isScrollActive ) / vRatio, 0 ), c_height - height ) end end dxSetRenderTarget( ) dxDrawImage( posX, posY + h_height, width, height, renderTarget, 0, 0, 0, tocolor( 255, 255, 255, 255 ), true ) end showCursor( getKeyState( "mouse2" ) ) end ) addEventHandler( "onClientPlayerJoin", root, function( ) players = getElementsByType( "player" ) end ) addEventHandler( "onClientResourceStart", resourceRoot, function( ) players = getElementsByType( "player" ) end ) addEventHandler( "onClientPlayerQuit", root, function( ) players = getElementsByType( "player" ) scrollCache = math.min( scrollCache, #players * r_height ) end ) addEventHandler( "onClientKey", root, function( key ) local c_height = #players * r_height if ( getKeyState( "TAB" ) and ( c_height > height ) ) then if ( key == "mouse_wheel_up" ) then scrollCache = math.max( scrollCache - r_height, 0 ) elseif ( key == "mouse_wheel_down" ) then scrollCache = math.min( scrollCache + r_height, c_height - height ) end end end )1 point
-
1 point
-
Next time please include your serial (9D4898D737711F0D420745306905A0E2). You were reported by admins of server Trinity freeroam for DDOS'ing them, you admit it here and apoligize but I hardly think that's enough to get unbanned, as these acts are very malicious in nature; Maybe the ban can be commuted to temporary but for that please send a PM to @ccw and once again I think you won't easily get a new chance after doing something like this, as others also said. As you can send a PM to who I mentioned to try resolve it, I'm locking this topic. Edit January 2019: you have been unbanned after a late re-appeal. Edit 2: you have been re-banned (also on your second serial D61AEE621266CAC6719FACE16DEB7394) shortly after said unban, because you're under investigation of a new DDoS attack on player(s) from your server "R9 Freeroam". Refer to the PM you received.1 point
-
--Gridlist Class local Gridlist = {} Gridlist.__index = Gridlist --Create a new Gridlist at screenPosition x, y with a given width and displaying visibleRows to the client function Gridlist.new(x, y, width, visibleRows) local self = setmetatable({}, Gridlist) self._startRow = 1 self._selectedRow = 1 self._visibleRows = visibleRows self._rowHeight = 20 self._position = {x = x, y = y} --VisibleRows + 1 because we will display a header self._size = {width = width, height = (1 + visibleRows) * self._rowHeight} self._columns = {} self._rows = {} self._listeners = {} addEventHandler("onClientKey", root, function(button, isPress) if (isPress) then if (button == "arrow_u") then self:setSelectedRowID(self:getSelectedRowID() - 1) elseif (button == "arrow_d") then self:setSelectedRowID(self:getSelectedRowID() + 1) end end end) return self end --Works similar to MTA Event system. function Gridlist:addListener(eventName, callback) if (not self._listeners[eventName]) then self._listeners[eventName] = {} end self._listeners[eventName][#self._listeners[eventName] + 1] = callback end function Gridlist:callListeners(eventName, ...) if (not self._listeners[eventName]) then return false end for i, v in pairs(self._listeners[eventName]) do v(...) end end --Add a new visible column with the given title, width and textAlign function Gridlist:addColumn(title, size, textAlign) self._columns[#self._columns + 1] = {name = title, width = size, align = textAlign} end --Set the ColumnTitle of a given column to the newTitle function Gridlist:setColumnTitle(columnIDOrName, newTitle) --In case we've used a name as ID if (type(columnIDOrName) == "string") then local foundEntry = false --Figure out which actual ID belongs to the column for i, v in pairs(self._columns) do if (v.name == columnIDOrName) then columnIDOrName = i foundEntry = true break end end if (not foundEntry) then outputDebugString("Tried to edit Gridlist Column title, but column was not found!") return false end end self._columns[columnIDOrName].name = newTitle end --Set the selected row ID function Gridlist:setSelectedRowID(ID) if (not self._rows[ID]) then outputDebugString("Tried to edit Gridlist Selected Row ID, but rowID was not found!") return false end self._selectedRow = ID self:callListeners("selectedRowChanged", ID) self:adjustStartRow() end --Adjust start row (for scrolling) function Gridlist:adjustStartRow() if (self._selectedRow > (self._startRow + self._visibleRows - 1)) then self._startRow = self._selectedRow - self._visibleRows + 1 elseif (self._selectedRow < self._startRow) then self._startRow = self._selectedRow end end --Returns currently selected row (id) use gridlist:getRows()[gridlist:getSelectedRowID] to access row directly function Gridlist:getSelectedRowID() return self._selectedRow end --Returns all rows of this gridlist function Gridlist:getRows() return self._rows end --adds a new row to this gridlist, parameters have to fill columns, like normal GUI gridlist function Gridlist:addRow(...) self._rows[#self._rows + 1] = {...} end --Draws the headers of this gridlist function Gridlist:drawHeaders() local x = self._position.x for i,v in pairs(self._columns) do dxDrawText(v.name, x, self._position.y, x + v.width, self._position.y + self._rowHeight, tocolor(255, 255, 255, 255), 1, "default-bold", v.align, "center") x = x + v.width end end --Draws the rows of this gridlist function Gridlist:drawRows() local y = self._position.y + self._rowHeight for i = self._startRow, self._startRow + self._visibleRows - 1, 1 do local row = self._rows[i] if (row) then --Is this the selected row? local textColor = tocolor(255, 255, 255, 255) if (self:getSelectedRowID() == i) then dxDrawRectangle(self._position.x, y, self._size.width, self._rowHeight, tocolor(255, 255, 255, 255)) textColor = tocolor(0, 0, 0, 255) end --Draw it local x = self._position.x for id, text in pairs(row) do local col = self._columns[id] dxDrawText(text, x, y, x + col.width,y + self._rowHeight, textColor, 1, "default-bold", col.align, "center") x = x + col.width end y = y + self._rowHeight end end end --Renders this gridlist function Gridlist:render() --Background dxDrawRectangle(self._position.x, self._position.y, self._size.width, self._size.height, tocolor(0, 0, 0, 200)) self:drawHeaders() self:drawRows() end ------------------------------------------------------------------------------------------ local sX, sY = guiGetScreenSize() local w, elements = 300, 6 --Create a new gridlist at the center of the screen which displays (6) elements with the width of 300 pixels local grid = Gridlist.new(sX * 0.5 - (w * 0.5), sY * 0.5, w, elements) --Add 2 columns, both are 150 pixels wide (300 * 0.5) grid:addColumn("INTERACTION MENU", (w * 0.5), "left") grid:addColumn("0 / 0", (w * 0.5), "right") --Add different rows grid:addRow("QUICK GPS", "None") grid:addRow("Inventory", "") grid:addRow("Action", "Crew: The Bird") grid:addRow("Player Mood", "Normal") grid:addRow("Disable Passive Mode", "") grid:addRow("Highlight Player", "") grid:addRow("Another Option #1", "") grid:addRow("Another Option #2", "") grid:addRow("Another Option #3", "") grid:addRow("Another Option #4", "") grid:addRow("Another Option #5", "") --Update our column title local function newRowSelected(row) grid:setColumnTitle(2, grid:getSelectedRowID() .. "/ " .. #grid:getRows()) end grid:addListener("selectedRowChanged", newRowSelected) grid:setSelectedRowID(1) --Let's draw our gridlist! addEventHandler("onClientRender", root, function() grid:render() end) Here's a small example of how you could do it, obviously this doesn't have all the features you need, but this should work as a base that you can expand on.1 point
-
Hi, I've updated the community to reflect the change that @pa3k suggested. Whenever the community is next updated the "feature" will be added.1 point
-
1 point
-
1 point
-
i think it's the wrong section anyway could you please help me ? when i join a server it comes up with a text '' kicked from the game (SD #20 0410911) This server requires a non-modified gta3.img and gta_int.img please replace gta3.img or gta_int.img ''1 point
-
1 point
-
1 point
-
1 point
-
MY Laptop won't probably handle these stuff, Rip, i can't play this server.1 point
-
1 point
-
stop acting like a retard and go look after your server instead of minding other businesses , By this i mean Watchout badass ;), You can't talk with my friend like that other wise it will be me and you in a corner .1 point
-
Can you get a text out to the chat with outputChatBox when you click on the element?1 point
-
function dxDrawBorderedText(text, left, top, right, bottom, color, scale, font, alignX, alignY, clip, wordBreak,postGUI) for oX = -1, 1 do -- Border size is 1 for oY = -1, 1 do -- Border size is 1 dxDrawText(text, left + oX, top + oY, right + oX, bottom + oY, tocolor(0, 0, 0, 255), scale, font, alignX, alignY, clip, wordBreak,postGUI) end end dxDrawText(text, left, top, right, bottom, color, scale, font, alignX, alignY, clip, wordBreak, postGUI) end1 point
