-
Posts
2,301 -
Joined
-
Days Won
114
Everything posted by Dutchman101
-
Both AC #11 8DA6 and AC #4 8DA6 are because of running Cheat Engine. Don't try to launch Cheat Engine (or have it running in the background) while playing MTA. It will kick you for a good reason. As long you don't run it together with MTA, there should be no need to uninstall it.
-
MTA doesn't check your connection speed before deciding whether or not you can connect (it doesn't decide that). Servers may have specific measures in place though, like a pingkicker, packetloss measurements, region lock, you name it.. If it seems like you can't connect, try a couple of different servers, sort by ping (lower to high) in the server browser.. if all of that doesn't work then you should open a topic in the client support section, because then it would be something up with your configuration, or most likely yes, a firewall or maybe even ISP issues. However, this is not a suggestion because we don't limit players with low bandwith at all, that's just not a thing. @SharK_
-
You DDoS'ed 2 different freeroam servers in succession and sent spambots to their Discord servers for a couple of weeks. People engaging in (atleast the combination of) these kind of malicious, illegal acts on MTA (going around attacking servers) risk being globally banned, as they clearly do not belong. More often than not, the ban duration is longer to permanent in the case of DDoS'ers. It's been a bit more than 1 month since you got banned (dont twist the truth), as a result of this topic I will set the ban to expire in 6 months, consider yourself lucky.
- 1 reply
-
- 1
-
-
It was a false-positive, fixed
- 1 reply
-
- 1
-
-
[REL] Cinema Experience 2.0 [Updated 13th January 2017]
Dutchman101 replied to Tails's topic in Resources
There's a global defining aclGroup as "Admin", make sure you're not logging in as Moderator or any custom ACL group account, and that you're using an unmodified version of the resource (re-download) or else go to cinemaexperience\cfg and either wipe it (as recommended by the creator) or if nothing is working then manually add the VIPs, it would appear like this; <Privileges> <Serial Name="Playernick">817027ADH99B39A1C76310B00EBC9E4</Serial> </Privileges> -
[REL] Cinema Experience 2.0 [Updated 13th January 2017]
Dutchman101 replied to Tails's topic in Resources
After adding ACL access for the resource, you still need to do the following; You will need to be logged in as Admin (user account) in order to use the 'Add/remove VIP' button. Also, you'll need to select the name of player you want to make VIP from the "Visitors" tab in cinema F2 panel (so they gotta be physically present in the cinema area). Note: as of August 2018 there's a bug in recent MTA builds that breaks compatibility with all cinema scripts (or other resources drawing CEF browsers on surfaces, like cinema canvases here..). The main browser view will work, but the canvas will stay empty or paused (unable to play). In order for players to use cinema, for that reason, they will need to downgrade to the latest non-bugged build found at https://nightly.multitheftauto.com/mtasa-1.5.5-full_rc-13814-20180725.exe while we're working on it. Not sure if this is applicable to your own build, but just saying. -
Next time mention your serial (6BD7AA4520169D841D70F4A4ED44FE34) You were banned for creating and spreading a fake "MTA cheat" which contained njRAT remote control trojan. There's no way out because you have done it before with earlier 'cheats'. I will PM you details, locked
-
I believe that clothes modding always means multi-clump DFF (like CJ skin), which is tricky to export correctly. Thus, someone who has no experience exporting multi-clump skin models, can easily generate a corrupt DFF which can lead to a MTA crash.
-
Show us your full code and tests first, assuming (or the suggestion by pirulax) it's a bug is kinda hurried.
-
It is.. my advice is more for general purpose.
-
You can easily find the resource/piece of code responsible for anything you'd like to locate, by using certain tools. My favourite method: - download & install Notepad++ (https://notepad-plus-plus.org/download) - go to the main folder (parent to all your resource folders) and use Windows explorer to perform a file search for: *.lua like this; Depending on the size of your gamemode, all script files (.lua) will be the search result after a while. Now, select all of them (CTRL + A) and rightclick, "Edit with Notepad++". Notepad++ will take a while to open all files at the same time, again depending on the amount and size of them (trust me, it's never a hang.. just wait). The final step is, once Notepad has the files open, to press CTRL + F which is the "Find" window. Now, enter the keyword or what you need to locate in which script it is (in your case the "OMG ...arabic text.. OMG") and don't just hit enter or search, but click: "Find All in All Opened Files". It's exactly this button: Now we're done, all results from any script files are listed at the bottom of your screen, nicely sorted. Ofcourse grep is easier and quicker ('better' editors like VS code can even include similar functionality), this is just for beginners. You can use these instructions for any type of file if you change the search query in explorer (like .xml, .fx, .js, anything that can be found in resources and contains code or text). Novice tip: you could search (in Notepad++) for anything you see visually in-game (in text form) to identify the resource and part of the code responsible, just write it over from your screen or copy it. These methods are especially helpful when you're not very familiar with your codebase.
-
Read this about CD16 error: https://forum.multitheftauto.com/topic/105515-help-cd16/?do=findComment&comment=908569 https://forum.multitheftauto.com/topic/90317-disconnecting-for-no-reason/?do=findComment&comment=819646 https://forum.multitheftauto.com/topic/95511-error-cd16/?do=findComment&comment=855986 I will have to lock this topic because the problem is most often different for those getting these errors and the troubleshooting process therefore is individual. I'm planning to write a general-purpose guide on the most commonly effective fixes for the problem soon. Anyone reading this and is encountering the same problem should create a new topic to post in and get help there
-
Hey... Can someone help me? About my ban...
Dutchman101 replied to Plutonism's topic in Ban appeals archive
You were banned for these 2 violations; - Using a private aimbot (ILAV) until it got patched - Trying to change serial with specialised software Unfortunately for cheaters like you, they were (already) detected. Trying to change your serial after a ban for cheating doesn't exactly show regret for your actions tho. It was exactly this that turned your ban into a permanent one. We will put it back to the ban duration it had for only the cheating (duration: 1 month total), which means you'll be unbanned in 3 weeks. Don't do any of this again.. moved to Trash. @Plutonism -
use SetObjectScale and setElementDoubleSided after creation.. the .map to LUA converter at http://mta.cemgokmen.com/converter/converter.php even features keeping scale and doublesizing information, for easy applying in batch. If you prefer tho, you can easily go back to using .map and utilize the LOD functionality in mapEditorScriptingExtension_s and mapEditorScriptingExtension_c (a common mistake of mappers is not retaining these files, or not using the neccesary setting "useLODs" on affected maps)
-
The object creation is a server-side script, and it's supposed to create the objects only once. So if there is any lag at all, it would only be at the start of MTA server and before any players join, or maybe when you restart the resource due to changing something in the resource. It's not heavier than regular .map files though as far I know, so it shouldn't really have additional impact to begin with.
-
The first 2 pages of results on https://www.google.com/search?q=mta+map+to+lua contain quite a few useful .map to lua createObject converters. I would just append the function embed and eventhandler, and automatise embedding the assignLod call; if you got a huge table of objects it's most convenient to use something like Notepad++, CTRL + F, replace tab, input (find what): "createObject" and replace with: "assignLOD(createObject" and then hit "Replace all". After that, you just add the assignLod function code at the bottom. And yes, applying assignLod to a table itself shouldn't be a problem.
-
I don't really work with LOD's very often so not sure about your problem (could open a new topic in this section to see why something that should work isn't with your code), but I advise you to just use assignLod. Also take a look at; engineSetModelLODDistance Let me know if assignLod works out for you
-
IP addresses for MTA master server list / firewall whitelisting
Dutchman101 replied to rafaelburjack's question in Server
whitelist this IP address: 91.121.44.90 It need to be able to communicate for your server to be listed properly -
Go to your GTA installation folder > audio > streams, and replace that file with this backup: https://www.dropbox.com/s/nnvxxme2gltpysm/AA?dl=1 If that doesn't solve it, re-install GTA with a clean, unmodded version. @SoFunny
-
All of your recent crashes are offset 0x002FEC20 which is related to GTA engine loading/handling roadsigns. I suspect that your GTA installation contains modded roadsigns, please re-install with a clean GTA (not pre-modded). @Tank13
-
You can add the stats to scoreboard like this; for _,v in ipairs({"Best Drift","Total Drift","Last Drift"}) do exports["scoreboard"]:addScoreboardColumn(v) end Calculate the drift scores on client, insert it to scoreboard and save the personal topscore to db (in this case preferably sqlite); connection = Connection("sqlite",":/drifttab.db") connection:exec("CREATE TABLE IF NOT EXISTS records (username TEXT, playername TEXT, score NUMBER)") Rather than a vast set of scripting functions, the code used to calculate/detect drifting is more utility-like. It's hard to point it out without looking at the complete picture, so I will just post the code of a recent drifting score resource; (you can study it to see how it calculates drifting scores) CLIENT: local screenWidth,screenHeight = guiGetScreenSize() local score = 0 local combo = 0 local multiplier = 1 local failDrift = false local size = 0.9 local fps = getFPSLimit() local vehicle local inVehicle = false local multipliers = { {100000,5}, {50000,4}, {25000,3}, {10000,2}, {0,1}, } local textX = screenWidth/2 local textY = screenHeight/4 local lineY = 45 local textScale = 0.95 local red = tocolor(255,0,0) local green = tocolor(0,255,0) local font = "bankgothic" local alignX = "center" local alignY = "center" local gui = {} local allowedType = { ["Automobile"] = true, ["Quad"] = true, ["Monster Truck"] = true, } local forcedEvents = { ["onClientElementDestroy"] = true, ["onClientPlayerWasted"] = true, } local function convertNumber ( number ) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1 %2') if ( k==0 ) then break end end return formatted end local function checkVehicleHandling() local flags = getVehicleHandling(vehicle)["handlingFlags"] if (bitAnd( flags, 32 ) == 32) or (bitAnd( flags, 64 ) == 64) then return true end end local function driftEnd (endscore,endcombo) local oldBestDrift = getElementData (localPlayer,"Best Drift") or 0 local oldTotalDrift = getElementData (localPlayer,"Total Drift") or 0 score = 0 combo = 0 if endscore ~= 0 then setElementData(localPlayer,"Total Drift",math.floor(endscore+oldTotalDrift)) setElementData(localPlayer,"Last Drift",math.floor(endscore)) end if endscore > oldBestDrift then setElementData(localPlayer,"Best Drift",endscore) end if endscore >= 2000 then triggerServerEvent("onDriftEnd",localPlayer,endscore) triggerEvent("onClientDriftEnd",localPlayer,endscore) end end local function calculateAngle () if not allowedType[vehicle.vehicleType] then return 0,0 end if not isVehicleOnGround(vehicle) then return 0,0 end if failDrift then return 0,0 end local vx,vy,vz = getElementVelocity(vehicle) local rx,ry,rz = getElementRotation(vehicle) local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz)) local speed = (vx^2 + vy^2 + vz^2)^(0.5) local modV = math.sqrt(vx*vx + vy*vy) local cosX = (sn*vx + cs*vy)/modV if modV <= 0.2 then return 0,0 end if cosX > 0.966 or cosX < 0 then return 0,0 end return math.deg(math.acos(cosX))*0.5,speed end local function updateFPS(msSinceLastFrame) fps = (1 / msSinceLastFrame) * 1000 end local function resetFail() failDrift = false showScore=false end local function onCollide(attacker) if attacker or failDrift then return end failDrift = true driftEnd(0,0) setTimer(resetFail,2000,1) end local function drawMeter () if isWorldSpecialPropertyEnabled("hovercars") then return end if checkVehicleHandling() then return end if localPlayer.vehicle ~= vehicle then removeEventHandler("onClientVehicleDamage",vehicle,onCollide) removeEventHandler("onClientElementDestroy",vehicle,checkVehicle) removeEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) removeEventHandler("onClientRender",root,drawMeter) removeEventHandler("onClientPreRender", root, updateFPS) vehicle=nil inVehicle=false checkVehicle() return end local angle,speed = calculateAngle() if isTimer (resetTimer) and angle ~= 0 then killTimer(resetTimer) showScore = true if comboReady then combo = combo + 1 comboReady = false end end if angle == 0 then if not isTimer(resetTimer) then comboReady = true resetTimer = setTimer (function() if score == 0 then return end driftEnd (score,combo) score = 0 combo = 0 showScore = false end,1300,1) end end local gameSpeed = getGameSpeed() for k,v in ipairs(multipliers) do local pointsNeeded,multi = unpack(multipliers[k]) if score > pointsNeeded then multiplier = multi break end end local fpsMultiplier = 100/fps local angleScore = angle/2 local speedScore = speed*3 local driftScore = angleScore*speedScore local addScore = math.floor(driftScore*multiplier) local gameSpeedFixedScore = math.floor(gameSpeed*addScore) score = score + math.floor(fpsMultiplier*gameSpeedFixedScore) if showScore then local color = (failDrift and red or green) dxDrawText ("Drift points x"..tostring(combo),textX,0,textX,textY-lineY,color,textScale,font,alignX,alignY) dxDrawText (score,textX,0,textX,textY,color,textScale,font,alignX,alignY) end end function checkVehicle(vehicleEntered) local isForcedFalse = forcedEvents[eventName] ~= true if localPlayer.inVehicle == inVehicle and isForcedFalse then return end local tempVehicle = vehicleEntered or getPedOccupiedVehicle(localPlayer) local seat = getPedOccupiedVehicleSeat(localPlayer) inVehicle = ((seat == 0 and allowedType[tempVehicle.vehicleType]) and (isForcedFalse and localPlayer.inVehicle or false) or false) if inVehicle and seat==0 then vehicle = tempVehicle addEventHandler("onClientVehicleDamage",vehicle,onCollide) addEventHandler("onClientElementDestroy",vehicle,checkVehicle) addEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) addEventHandler("onClientRender",root,drawMeter) addEventHandler("onClientPreRender", root, updateFPS) elseif not inVehicle and vehicle then removeEventHandler("onClientVehicleDamage",vehicle,onCollide) removeEventHandler("onClientElementDestroy",vehicle,checkVehicle) removeEventHandler("onClientPlayerWasted",localPlayer,checkVehicle) removeEventHandler("onClientRender",root,drawMeter) removeEventHandler("onClientPreRender", root, updateFPS) vehicle=nil end end local function loadRecords(records,maxPosition,myAcc) guiSetText(gui.window,"Top "..tostring(maxPosition).." drifters") guiGridListClear(gui.list) local guestID = 0 for position,record in ipairs(records) do local player,score,name,isGuest = record.username,record.score,record.playername,record.isGuest if isGuest == "true" then guestID=guestID+1 if myAcc == "guest" then myAcc = hash("sha512",getPlayerSerial()) end end local row = guiGridListAddRow(gui.list,"#"..tostring(position).." "..name,(isGuest == "true" and "guest_"..tostring(guestID) or player),convertNumber(score)) if player == myAcc then guiGridListSetItemColor(gui.list,row,gui.namecolumn,0,255,0,255) guiGridListSetItemColor(gui.list,row,gui.usercolumn,0,255,0,255) guiGridListSetItemColor(gui.list,row,gui.scorecolumn,0,255,0,255) end end end local function toggleGUI() local isVisible = guiGetVisible(gui.window) if isVisible then guiSetVisible(gui.window,false) showCursor(false) else guiSetVisible(gui.window,true) showCursor(true) end end local function initScript() addEvent("onClientDriftEnd",false) addEvent("Drift:loadRecords",true) gui.window = guiCreateWindow(0.35,0.15,0.3,0.7,"",true) gui.list = guiCreateGridList(0,0.05,1,0.95,true,gui.window) gui.namecolumn = guiGridListAddColumn(gui.list,"Player",0.4) gui.usercolumn = guiGridListAddColumn(gui.list,"User",0.3) gui.scorecolumn = guiGridListAddColumn(gui.list,"Score",0.2) guiGridListSetSortingEnabled(gui.list,false) guiSetVisible(gui.window,false) bindKey("F5","down",toggleGUI) checkVehicle() addEventHandler("Drift:loadRecords",localPlayer,loadRecords) addEventHandler("onClientPlayerVehicleEnter",localPlayer,checkVehicle) addEventHandler("onClientPlayerVehicleExit",localPlayer,checkVehicle) triggerServerEvent("Drift:scriptLoaded",localPlayer) end addEventHandler("onClientResourceStart",resourceRoot,initScript) SERVER: local connection local driftRecords = {} local loadedClients = {} local recordListMaxPosition = 50 local excludedUsernames = -- Add accountnames of who you want to blacklist from ranking, like to prevent players tracking (undercover) admins through F5 (current nick + username) { ["Adminusername1"] = true, ["Test2"] = true, } local function comp(a,b) return a.score > b.score end local function checkDriftRecord(score) if not client.account then return end if excludedUsernames[client.account.name] then return end local acc = (client.account.name~="guest" and client.account.name or hash("sha512",client.serial)) local name = client.name local oldJSON = toJSON(driftRecords) local isGuest = tostring(isGuestAccount(client.account)) if driftRecords[#driftRecords] == nil or (score > driftRecords[#driftRecords].score or #driftRecords < recordListMaxPosition) then local existingPosition = false for position,record in ipairs(driftRecords) do if record.username == acc then existingPosition = position break end end if existingPosition and score > driftRecords[existingPosition].score then driftRecords[existingPosition].score = score driftRecords[existingPosition].playername = name elseif not existingPosition then table.insert(driftRecords,{username=acc,score=score,playername=name,isGuest=isGuest}) end else return end table.sort(driftRecords,comp) if #driftRecords > recordListMaxPosition then for position=recordListMaxPosition+1,#driftRecords do driftRecords[position]=nil end end if oldJSON == toJSON(driftRecords) then return end for player,_ in pairs(loadedClients) do triggerClientEvent(player,"Drift:loadRecords",player,driftRecords,recordListMaxPosition,player.account.name) end connection:exec("DELETE FROM records") for position,record in ipairs(driftRecords) do connection:exec("INSERT INTO records VALUES (?,?,?,?)",record.username,record.playername,record.score,record.isGuest) end end local function recheckPlayer() triggerClientEvent(source,"Drift:loadRecords",source,driftRecords,recordListMaxPosition,source.account.name) end local function resetPlayer() loadedClients[source] = nil end local function clientLoaded() if source~=client then return end triggerClientEvent(client,"Drift:loadRecords",client,driftRecords,recordListMaxPosition,client.account.name) addEventHandler("onDriftEnd",client,checkDriftRecord) loadedClients[client] = true addEventHandler("onPlayerLogin",client,recheckPlayer) addEventHandler("onPlayerLogout",client,recheckPlayer) addEventHandler("onPlayerQuit",client,resetPlayer) end local function initScript() connection = Connection("sqlite",":/drift.db") connection:exec("CREATE TABLE IF NOT EXISTS records (username TEXT, playername TEXT, score NUMBER, isGuest TEXT)") local handle = connection:query("SELECT * FROM records") driftRecords = handle:poll(-1) addEvent("Drift:scriptLoaded",true) addEvent("onDriftEnd",true) addEventHandler("Drift:scriptLoaded",root,clientLoaded) for _,v in ipairs({"Best Drift","Total Drift","Last Drift"}) do exports["scoreboard"]:addScoreboardColumn(v) end end addEventHandler("onResourceStart",resourceRoot,initScript) The code originates from https://community.multitheftauto.com/index.php?p=resources&s=details&id=14911, and this resource is a little different from your wishes; it does not persistently store the scores to scoreboard, but to a GUI located in F5 rankings, and moreover it offers this storing system which you didn't mention at all. It should be easy to adapt the code a little so that it saves only to scoreboard, or you could just take out the core (calculation of drift) and write the rest from scratch to your desires. Even better it would be if you just looked at it so you know how to achieve something like that, and rewrite it. You could also review & decide that the resource fullfills most of your needs and just use it. However, I would recommend you to adapt it or reproduce the utility code so you can write your own resource, in which process you can return here with any issues you stumble upon while doing so. I hope this gave you some insights on how to achieve it
- 3 replies
-
- 1
-
-
- scoreboard
- drift
-
(and 1 more)
Tagged with:
-
This is what happens to people who upload resources to community with malicious backdoors Ban set to expire in 3 months
- 1 reply
-
- 1
-
-
Useful: https://wiki.multitheftauto.com/wiki/AssignLod
-
You'll need to 'appeal' the ban with that server's admins through any forums or communication channels with them, because over here (MTA) has no central involvement with any server's bans. Search the server name or IP:port on Google to see if they have a site or something similar on which you can contact them or appeal bans appropiately. Będziesz musiał "odwołać" się do bana z adminami serwera za pośrednictwem forów lub kanałów komunikacyjnych z nimi, ponieważ tutaj (MTA) nie ma centralnego zaangażowania w żadne zakazy serwera. Wyszukaj nazwę serwera lub adres IP: port w Google, aby sprawdzić, czy mają witrynę lub coś podobnego, na które możesz się z nimi skontaktować, lub odwołać się od banów. @zaczepisty
-
Anyone who is using this resource; should stop using and delete it immediately. Likewise with his previous resources that were deleted, as we are unable to check them for backdoors or similar practises now.
