Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 21/04/24 in all areas

  1. E aí, @Doongogar — tranquilo? Só para complementar neste tópico, há algumas configurações que você pode alterar enquanto o servidor está online. Use a função setServerConfigSetting. No próprio site da função existem algumas propriedades que estão disponíveis para serem alteradas. Off-topic: Gostei dos passos a seguir pro servidor desligar. Geralmente o pessoal só fecha o MTA Server e os jogadores ficam sem entender nada... @Lord Henry
    2 points
  2. Não é possível. Esse arquivo é lido ao iniciar o servidor. Se mexer nele com o servidor ligado, ele não vai mudar nada. O que recomendo que você faça é um resource que faça o seguinte: Coloca uma senha no servidor para nenhum novo jogador entrar. Avisa todos os jogadores online com uma mensagem no centro da tela que o servidor será reiniciado e o tempo restante para o restart. Ao zerar o tempo restante, dá kick em todos os jogadores online. Remove a senha do servidor e dá shutdown. Depois faça as alterações no mtaserver.conf, salve e inicie o servidor novamente.
    2 points
  3. Preface Hi all! Today I want to present to you a piece of work that I have been working on for two and a half years! I was once an MTA:SA scripter, but life has turned out in such a way that now I develop Android applications, but I still have a love for MTA. That's why I wanted to make a small contribution to the MTA and create a mobile application. Actually, let me introduce MTA:SA Developers: Mobile - a mobile application for MTA:SA developers! About the application MTA:SA Developers: Mobile is an improved version of the MTA Compiler & Script editor application, which contains features such as: Mobile version of the MTA:SA forum Readable MTA:SA Wiki Improved file manager And, of course, a code editor By the way, I wrote about MTA Compiler & Script editor in this article. Now the file manager has the ability to work separately with archives and individual files, as well as the ability to save and encrypt both a separate script and an entire archive with a resource. The code editor has acquired a new engine, it has become more convenient to work with. Also, in addition to XML, Lua, HLSL syntaxes, I introduced into it support for HTML syntax with support for Lua functions. In addition, the application allows you to follow MTA:SA online: by opening the application, or by placing a widget on your desktop. Background In fact, three years ago I did not plan to improve the application; the idea arose spontaneously when I opened the MTA Wiki on my mobile phone and the site seemed very inconvenient to me. Later, I decided that it would be cool to also have news when opening the application. Two years later, I had the Forum and Wiki tab ready. But they didn’t look very cool, to put it mildly. And everything worked poorly: images in the news feed jumped after loading when scrolling, there were a lot of bugs. In part, this is due to the fact that I essentially did not have (and ultimately did not have) a forum API. Here's what it looked like: Thanks to my wife, she was the one who implemented the new mobile application design! What is the status now and what are your plans for the future? I'm very glad that I finally released this app! In version 3.0 of the application, I tried to implement a Minimum Viable Product (MVP). In addition, I have removed all advertising from the application. I have a project on GitHub that has scheduled issues for versions 3.0.1 and 3.1. In future versions of the application, I would also like to implement the MTA Server list, as well as the MTA Community. Naturally, the project will live if I see that it is being used and there is some support in my direction. What else Haha, I forgot the most important thing, to leave you links to the application! Actually, at the moment, you can download and use the application as a regular user, as well as as an open testing tester (updates will come earlier for testers). Link to participate in the testing program: https://play.google.com/apps/testing/ru.limedev.mtacse Link to install the application on Google play: https://play.google.com/store/apps/details?id=ru.limedev.mtacse Link to install the application in Huawei App Gallery (if you see an old application, it means the new one has not yet been approved): https://appgallery.huawei.com/#/app/C103285117 Please, if you find a bug in the application, report it here, or better yet, become a tester and write to me on Google Play! I would like to express special thanks to @Sarrum and @Tut for their good feedback and help when I had questions. Thank you all for your attention!
    2 points
  4. Made a 10 minute showcase video of it today, as I feel it helps to show it better than a handful of screenshots! TM
    2 points
  5. Join us, today! @ UCP: https://ardicgaming.com/ Forums: https://forums.ardicgaming.com/ Community Rules: https://wiki.ardicgaming.com/ Discord: https://ardicgaming.com/discord/ Server IP: mtasa://164.132.200.104:22003
    2 points
  6. Hello there, today I'm presenting you my new FDD (Fun Destruction Derby) map: "Tenshukaku 鳴神" I have initiated my plan to convert the G.I regions into the FDD gamemode. First up is Tenshukaku, the first G.I region I've created, as I've promised in the Fontaine thread. Map story Tenshukaku is the residence of the Electro Archon, her excellency, the Raiden Shogun herself. The heart of Inazuma city. And our triumph over the Raiden Shogun in the duel has led to the abolishment of the Vision Hunt Decree once and for all, making us the living heroes of the Inazuma city. Our objective is finalized, and we now have the privilege to walk the very city at our own leisure. Features Now, I would like to showcase a few notable aspects that I have been planning ahead and intend to utilize on my future FDD maps. The feedback compelled me to make adjustments on my next FDD maps. We have enabled a texture remover script for users with limited computers. If you experience lag or freezing while playing the map, simply type '/hidec' to remove the textures. However, if your computer is sufficiently powerful, you can execute '/hidec' once more to bring back the textures. This map consists of two phases – the Tenshukaku main town center and the Inazuma boss domain known as 'Oneiric Euthymia' You can effortlessly shift between these two domains via teleports, which we have meticulously configured to prevent getting stuck while teleporting. I wish to extend my deepest gratitude to @Nico834 from the MTA path contributors for the wonderfully crafted custom teleport and 'hidec' texture scripts! Enjoy the video! Best regards, Nebla
    2 points
  7. Join us, today! @ UCP: https://ardicgaming.com/ Forums: https://forums.ardicgaming.com/ Community Rules: https://wiki.ardicgaming.com/ Discord: https://ardicgaming.com/discord/ Server IP: mtasa://164.132.200.104:22003
    2 points
  8. G&T Mapping & Loki present: Cinema Experience Beta 2.0.2 Description We're happy to finally release the first beta version of our Cinema Experience! Check out its features down below... Video Screenshots Download Now Beta Ver. 2.0.2 [ October 7, 2019 ] Changelog Authors: Tails - Follow his group G&T Mapping on Facebook: http://fb.com/gtmapping Check out their other resources as well: http://gtmapping.blogspot.com Loki - Check out his original Cinema script here: https://community.multitheftauto.com/in ... s&id=11993 and his profile here: https://forum.multitheftauto.com/memberlist.php? ... le&u=79989 Please note that this resource is not 100% complete yet. Some features are disabled and there may still be some bugs. To get started, scroll down the page and read "How to install". The Features - YouTube TV browser - Fully automated playlist - VIP manager - Add/remove VIPs who can manage the Cinema. - Synced playback - Vote to skip video - Real-time Ambilight - Open/close the cinema - Kick players from the cinema - And a lot more! Commands Global Cmds: - F2 - Toggle the Cinema Panel (You have to be inside) - M - Mute the playback [This is currently bugged] - /play url - Adds a video to the playlist - /playlist - Shows the playlist in the chat - /geturl - Gives you the URL to the current video - /proper - Adjusts the width of the screen making it more normal VIP/Admin Cmds: - /replay - Replays the current video - /skipvideo - Force skip the current video - /stopplay - Stops all playback and clears the playlist - /remove nr - Removes a video from the playlist. E.x.: /remove 2 How to install Step 1 (Unpack resource) First update your server to the latest version! You need atleast version 1.5.2 anything lower is not supported! Type 'ver' without quotes into the server console (F8) to see what version you're running. Unpack the zip file to your server resources folder: Multi Theft Auto\server\mods\deathmatch\resources\ in a new folder called CinemaExperience Make sure you're an admin on your server if you don't know how to do that go and read the MTA wiki. Step 2 (grant resource admin access) Press P on your keyboard to open your admin panel and add the resource to the Admin ACL group To do that go to the Resources tab and click on the 'Manage ACL' button in the top right corner then double click 'Admin' under 'Groups' and press 'Add Object'. Type in resource.CinemaExperience and click on OK. Step 3 (start resource) Now start the resource. Open the in-game console (F8) and type in refresh and press enter, then type in start CinemaExperience and hit enter again. Step 4 (add yourself as VIP) Finally, you need to add yourself as VIP in the cinema panel. In order to do that, enter the cinema and press F2 to open up the cinema panel. Now open the Settings tab, then open the Visitors tab (on the right side of the panel) and select your name. Click on 'Add/remove VIP'. That's it! You have now access to all the settings so you can enjoy our Cinema Experience to the fullest How to change binds You can change the bind for toggling the panel in the s-binds.Lua file. Known issues / FAQ Installation: - I can't connect to API? Make sure the resource has admin privileges and server is up to date (1.5.2). Also try extracting the resource. - I can't add videos? If you can't control the settings after you've added yourself as VIP, unpack the resource and delete the config files in the cfg folder. Still need help? Leave us a message below or contact me through the G&T Mapping Facebook page (link at the bottom or top) Panel: - There's ads covering the screen! Sometimes there may be ads covering the video on the screen. You can click on the Skip Ads button to refresh the video, usually this will remove any ads on the video. Sorry for the inconvenience. There is no other solution at the moment. In the future - Add option to limit how many videos can be added per user - Add option to set the max length of a video - Add option to change the screens width and height and position This list isn't finished yet Bug reports / Questions / Feedback If you encounter any bugs, glitches, have any suggestions, feature requests, or simply just like to ask a question, please don't hesitate to post them Thanks!
    1 point
  9. Utilize a função útil GetPlayerFromPartialName. Ele converte tanto a pesquisa quanto os nomes dos jogadores em letra minúscula. (vale lembrar que funções úteis vc precisa incluir o código-fonte dela no seu script para funcionar)
    1 point
  10. Taking a look at those milestones really says a lot about the project. It's appears to not in a state of decline per-se, but rather maintenance. I think the world has largely moved on from GTA SA whether we like it or not. There's a tonne of much cooler tech for developers to play with in other mods. There's a tonne of much cooler gameplay mechanics for players in other mods. There's a way more active, motivated and committed teams running those other mods. I think we should be very glad there is still a team here, no matter how small, who still share the passion for the game and want to keep it going. I don't think the excitement or commitment from the MTA Team is the same as what it was 10 years ago. And to be honest, I don't blame them. What do you gain from a roadmap that has a few cool pie-in-the-sky features, but mostly details small improvements, maintenance and platform upkeep? Because to be honest, that's what the roadmap would likely be. Small iterative fixes and improvements are worthy of talking about, I agree. It comes back to this team are doing this in their free time. I would rather they spend their time on MTA on keeping it alive, rather than busywork like updating superfluous roadmaps.
    1 point
  11. 1 point
  12. Does it work with 7 IDs but not with 8 IDs? I am asking because it could just be a scripting limit so maybe it only allows 1 ID in the line Anyhow, I have moved this into the Scripting section so that it can get the best possible reception
    1 point
  13. Hello, you need an event to trigger your function. You could use onPlayerDamage if your script is server side, or onClientPlayerDamage if its client side.
    1 point
  14. As the title says, im looking for any server that host this mod, is super adictive and fun so i wanna give it a try... also if anyone has any tutorial on how to host this server it will very helpful.
    1 point
  15. Animated trailer unloading marker with vertex alpha
    1 point
  16. A new arena? Youuu betcha! Get ready to experience a new and exciting way to play in San Andreas. Become one of the first ever to play GeoGuesser inside the world of San Andreas. TRY IT OUT NOW! Server: mtasa://mta.ffs.gg:22003 Website: https://ffs.gg/ Discord: https://ffs.gg/discord How It Works GeoGuessr is a popular game where you are dropped into a random location on the globe, and you are supposed to guess your position on the map. Well, that is essentially what our new arena GeoGuesser is, except... You are in San Andreas! Join or Create your own room Each round, right-click on the map to mark where you think you are Click on GUESS! button or press Spacebar to make your guess At the end of each round you get a score based on how close your guess was The winner is the player with the highest score at the end of the game Room Features Categories: choose the locations you want to play in (see list below) Lock Camera Rotation: want to make it more challenging? You can restrict players from looking around their surroundings Time & Weather: you can set the time and weather for everyone in your room. Sandstorm, anyone? Categories San Andreas (all categories) Los Santos San Fierro Las Venturas Los Santos & San Fierro & Las Venturas Countryside Badlands Desert Countryside & Badlands & Desert Los Santos & Countryside San Fierro & Badlands Las Venturas & Desert Map Controls Zoom: use the Mouse Wheel or the and buttons to zoom in and out Resize: shrink or enlarge the map using the and buttons Lobby Creating a Room Joining a Room Waiting Room Help Page HUD Best regards, -ffs-PLASMA, -ffs-JessePinkman, -ffs-NitroN & -ffs-Leadership
    1 point
  17. Pretty unique! Definitely going to try this one out.
    1 point
  18. Só para complementar, recentemente foi criado uma nova propriedade para a função setWorldSpecialPropertyEnabled. Basta você usar desta maneira e nenhum carro do servidor irá pegar fogo e/ou explodir ao capotar. -- Server addEventHandler("onResourceStart", resourceRoot, function() setWorldSpecialPropertyEnabled("burnflippedcars", false) end)
    1 point
  19. Eu testei e funciona. Ele inicia o fogo para explodir, depois conserta, depois inicia o fogo e fica nesse loop até você descapotar o carro. Mas não explode.
    1 point
  20. Read this https://wiki.multitheftauto.com/wiki/Script_security and don't buy anything
    1 point
  21. Join us, today! @ UCP: https://ardicgaming.com/ Forums: https://forums.ardicgaming.com/ Community Rules: https://wiki.ardicgaming.com/ Discord: https://ardicgaming.com/discord/ Server IP: mtasa://164.132.200.104:22003
    1 point
  22. Airplane This resource adds ambient aircraft to your MTA map. As many as you want, as long as the MTA element stream engine likes it. The aircraft models can be modified in config_s.lua. The resource was pre-mentioned in the Server time sync resource, because it is was an example resource which made use of serverside time. (And still makes use of) But by posting updates there for a different resource is a bit confusing. It is beyond a test resource now. Note: you still need to download the server time sync resource for this resource to work. You will be given an option to download server time sync resource, when you the download the resource airplane. The resource doesn't only creates planes, but also helicopters. Which is confusing I know, since the resource name is 'airplane'. But it was already too late for that without losing my version archive. Version 1.2.0 / 1.1.1 video's Admin settings Quantity aircraft Developermode Displaying the airplanes and other useful information. Demomode true - Let the resource create the aircraft false - Fill in your own aircraft list manually in file: config_s.lua How the aircraft is adjusted according to the GTA map. The blue crosses are used to display the max ground height of that specific area(200x200). You see that the crosses are placed higher near trees and buildings. The resource will adjust the aircraft height according to this data. This view is visible when development mode is active and some adjustments in the config_s.lua for the ground height data. Dataset for the aircraft height is available here: https://wiki.multitheftauto.com/wiki/Dataset-map-height Pro's: Low CPU usage after initialization. No network usage after initialization. Only the dependency server time sync will use network usage after initialization. Not that many lines of code for you have to scan through, if you want to modify the resource. Simple to implement. If you find a bug, I will be here. Con's No AI implementation. Brain-dead AI. The 'time based driven (animations)' concept is used, not everybody is familiar with that concept. That makes it harder to edit. It basically means that the aircraft animations are unstoppable, since time doesn't stop either. Pro: Which nearly nullifies the need of constant network usage between the server and the client. All aircraft are indestructible (even if not set to damage proof). (Can also be a pro) But I might add something in the future to counter that... but I first must figure out how that is suppose to work. Does not work outside of the GTA map. Download link: Resource Airplane Other downloads: Resource Server time sync Dataset GTA map height
    1 point
  23. After a worrying discussion on Discord last night regarding password storage and remember me functionality I've decided to write a tutorial on how it should be done. This guide assumes you are not using MTA's built in account system, but a custom one. Any code shown in this tutorial is purely for illustrative purposes, and is not finished code, you should use it as a guideline, not a solution. The following topics will be discussed in this tutorial: How to hash and salt passwords (register) How to validate a hashed password (login) How to add "remember-me" functionality How to offer password recovery How to migrate from an older hashing algorithm, to a newer one Using a password policy (Extra) How to handle database leaks (Extra) What even is hashing and salting? For the purpose of this tutorial we expect a database structure which is somewhat similar to this: How to hash and salt passwords When you have a user register on your service, that user expects of you to keep their password safe. Whilst it is generally bad practice to use the same password for multiple services there are many users that still do so. Because of this it's crucial that you save the user's passwords in a way that an attacker will be unable to find out the original password the user typed. This includes if they have full access to your database. In order to do this we do what is called "Password hashing" When a user registers, your server receives the user's intended username, (email) and password. Before you save that password to the database you have to hash and salt this, luckily MTA has a function that takes care of this. If you wish to know more about what exactly it does, there's more information at the end of this tutorial. In order to hash this password you use the passwordHash function. This function is relatively slow (by design), so it is highly recommended you pass a callback to this function, so your entire script doesn't wait for it to complete. https://wiki.multitheftauto.com/wiki/PasswordHash local mysqlHandle -- we're assuming this value is set somewhere else in code function register(username, email, password) local player = client passwordHash(password, "bcrypt", {}, function(hashedPassword) -- callback function for hashing the password local handle = dbExec(function(handle) -- callback function for storing the user in the database if (handle) then triggerClientEvent(player, "registrationSuccess") -- inform the user that registration was successful else triggerClientEvent(player, "registrationFailed") end end,mysqlHandle, "INSERT INTO users (email, username, password) VALUES (?, ?, ?)", email, username, hashedPassword) end) end addEvent("passwordTutorial:register", true) addEventHandler("passwordTutorial:register", getRootElement(), register) How to validate a hashed password Once you've saved the hashed pasword to your database you need to do a little bit of additional work when authenticating the user. Luckily MTA offers a passwordVerify() function, which is the counterpart of the previously discussed passwordHash(). What this function does it basically hashes the password in the same way, resulting in the same output hash. https://wiki.multitheftauto.com/wiki/passwordVerify In order to get the account the user is trying to log in to you have to do a query for an account which has the user submitted username, and of which the password matches through passwordVerify. PasswordVerify is also a relatively slow function, thus you should use a callback. function login(username, password) local player = client dbQuery(function (handle) -- callback for the query selecting the user by username local results = dbPoll(handle, -1) if (#results == 0) then triggerClientEvent(player, "loginFailed") return end passwordVerify(password, results[1].password, {}, function(matches) -- callback function for the password verify if (matches) then -- Do anything you wish with the database result to log the player in with the rest of your scripts triggerClientEvent(player, "loginSuccess") else triggerClientEvent(player, "loginFailed") end end) end, mysqlHandle, "SELECT * FROM users WHERE username = ?", username) end addEvent("passwordTutorial:login", true) addEventHandler("passwordTutorial:login", getRootElement(), login) How to add "remember me" functionality When users on your server log in, they often do not want to have to enter their username and password every time they want to log in. In order to satisfy this need you can implement a "remember me" function. What I've seen happen in the past, is people would store the user's password (encrypted) on the client. This is NOT safe, and should never be done! In order to properly use remember me functionality what you would do is upon login in, generate a random string. The longer the better. This random string is what we call an access token. You would then allow the user to log in with such an access token, preferably only once generating a new access token each time one is used. To implement this you would generate that token every time the user logs in, whilst they have "remember me" enabled. You will have to save this token in your database alongside your user. For extra security you could also store the user's serial alongside the access token, you can then validate that the access token is being used from the same device. https://wiki.multitheftauto.com/wiki/Filepath function login(username, password) -- This code should be put in the callback to the dbQuery function, but to keep the example clean that's not shown here if (rememberMe) then local token = generateRandomToken() dbExec(function() triggerClientEvent(player, "loginSuccess", token) end,mysqlHandle, "INSERT INTO access_tokens (user_id, token) VALUES (?, ?)", results[1].id, token) end end function rememberMeLogin(username, accessToken) -- this function handles a user's login attempt dbQuery(function(handle) local result = dbPoll(handle, -1) if (#result == 0) then triggerClientEvent(player, "loginFailed") else -- Do anything you wish with the database result to log the player in with the rest of your scripts triggerClientEvent(player, "loginSuccess") end end,mysqlHandle, "SELECT users.* FROM access_tokens JOIN users ON users.id = access_tokens.user_id WHERE users.username = ?", username) end addEvent("passwordTutorial:loginRememberMe", true) addEventHandler("passwordTutorial:loginRememberMe", getRootElement(), login) How to offer password recovery Offering password recovery requires a little bit more than just your MTA server. Generally password recovery is done with emails. So you would need access to an email server / service which you can use to send an email from an HTTP request. (Like you can do with fetchRemote()). When a user requests a password reset, have them enter the email you registered with. You then fetch a user from the database with this email address. You would then store a password recovery token for this user. This token, just like the remember me token, is a random string. Ideally, you would send the user a link with a password reset form that goes to a webpage where the user can reset their password. You could do this with an external service, like a webserver. Or you could use MTA's Resource web access for it, but if you do make sure you handle permissions properly for anything else that uses this. However another option would be to have the user copy paste the generated token from the email into you server's login window. Which of the two solutions you pick is up to you, my personal preference goes to the one with the link in the email. But in either case the server side logic is the same. When the user attempts to perform password recovery, verify that the token they give you belongs to a user, and then change the password to the newly requested password. Make sure you hash this password the same way you do in your login. function requestPasswordRecovery(email) dbQuery(function (handle)) local result = dbPoll(handle, -1) if (#result == 0) then triggerClientEvent(player, "passwordTutorial:passwordRecoveryRequestFailed") else local token = generateRandomToken() dbExec(mysqlHandle, "UPDATE user_data SET recovery_token = ?", token) -- mail the token to the user, mail implementation depends on the mail server/service you use triggerClientEvent(player, "passwordTutorial:passwordRecoveryRequestSuccess") end end, mysqlHandle, "SELECT * FROM users WHERE email = ?", email) end function recoverPassword(recoveryToken, password) dbQuery(function (handle) local result = dbPoll(handle, -1) if (#result == 0) then -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoveryFailed") else passwordHash(password, "bcrypt", {}, function(hashedPassword) -- callback function for hashing the password local handle = dbExec(function(handle) -- callback function for storing the new password in the database if (handle) then -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoverySuccess") -- inform the user that registration was successful else -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoveryFailed") end end,mysqlHandle, "UPDATE user_data SET password = ? WHERE recovery_token = ?", username, recoveryToken) end) end end, "SELECT * FROM users WHERE recovery_token = ?", recoveryToken) end Besides changing the password, it's important you also delete any access tokens that user might have if you're using remember me functionality. It is also good practice to make recovery tokens expiry after a certain amount of times, and not allow a recovery token to be created whilst one is already in prgoress. This prevents a user from sending a large number of emails from your service. How to migrate from an older hashing algorithm, to a newer one Maybe after reading this topic you realise that your password security is not what it should be. So you want to change your old password hashing / validation logic to the ones explained in this topic. And due to the nature that hashes can not be "unhashed", you can't simply migrate your passwords over. So in order to migrate the passwords what you have to do is when a user logs in, first validate their password with the old hashing algorithm. If this matches, then hash (and salt) it with your new hashing algorithm and save it in your database. Make sure to delete the old password otherwise your password security is not any better than before. Using a password policy Passwords policies are important to prevent your users from picking a password that is too easily cracked / brute forced. Many password policies come in the form of "Must have at least one capital letter, one digit and one number". But that discards that fact that the best way to make your password more difficult to crack, is making your password longer. So in the code snippet below is a function that measures the 'search space' of a password. The search space of a password is the amount of possible passwords there are with a certain combination of characters. In order to use this, you would have to set a minimum password search space when a user registers for an account. This minimum is up for you to set, but be reasonable, you shouldn't expect a user's password to be impossible to remember / create. I recomend playing with the function a bit to see what values you get out of it, and pick something you believe is sensible. function getPasswordSearchSpace(password) local lowerCase = password:find("%l") and 26 or 0 local upperCase = password:find("%u") and 26 or 0 local digits = password:find("%d") and 10 or 0 local symbols = password:find("%W") and 32 or 0 local length = password:len() return (lowerCase + upperCase + digits + symbols) ^ length end -- The below function calls are to indicate the difference in search space for a set of passwords print(getPasswordSearchSpace("a")) print(getPasswordSearchSpace("abc")) print(getPasswordSearchSpace("Abc")) print(getPasswordSearchSpace("Ab!")) print(getPasswordSearchSpace("Ab!0")) print(getPasswordSearchSpace("Mu#9A0h.")) print(getPasswordSearchSpace("This is a demonstration of how easy an incredibly strong password is to remember")) How to handle database leaks If you have reason to believe that your database has been leaked or otherwise compromised, it is important that your first course of action is removing any access tokens stored in your database. Once you have done that you have to inform your users. Whilst when properly hashed and salted it's extremely difficult / time consuming to find out a user's password it is still a possibilty. So you should inform your users of the breach, tell them that their passwords were properly hashed, and they do not need to fear for their passwords immediately. However you should suggest to your users that they change their password either way, just in case. What even is hashing and salting? Hashing has been brought up several times in this tutorial, whilst you do not need to know what it is / does, you might be interested in knowing regardless. I won't be going too far in depth as I simply do not have the knowledge, but the basic idea of hashing is this: When you hash anything, you turn it into a string of characters (or other value) that has no relation to the original input, other than when you hash the original input again, it will always generate the same hash. For example, when you hash the stirng 'banana' using the sha512 hashing algorithm, it will always yield the output: "F8E3183D38E6C51889582CB260AB825252F395B4AC8FB0E6B13E9A71F7C10A80D5301E4A949F2783CB0C20205F1D850F87045F4420AD2271C8FD5F0CD8944BE3" Now hashing can not be reverted, you can not "unhash" a hash, so in order to verify someone's password you hash it again, and see if the two hashes are the exact same. Now this is great, passwords are safely stored. However there is still more to do, salting. Salting is adding some random data to your password prior to hashing it. This prevents when two users (on the same service, or on others) have the same password, that their hashes are also the same. Meaning if one password is compromised, the other password is not. It is important that a salt is random for every user in your application, not one salt for your entire application. Now you might think we didn't do any salting in the code / tutorial above. This is not true, we just didn't do it ourselves. MTA's passwordHash function actually hashes the passwords and salts it, this salt is then stored in the output hash it self, just before the actual password hash. In the case of bcrypt it actually stores a little bit more info in the resulting hash, but you need not worry about that.
    1 point
  24. Does anyone know where I could download this tool? Cant find it anywhere. Thanks in Advance.
    1 point
  25. ты тут? cрочно ответ
    1 point
  26. I recently watched a video of Clan War in Deathmatch racing mode. I noticed that some maps are not entirely fair due to the fact that one player dies closer to the end of the map, but before the last player who was further from the finish line. The idea came to mind, why not make it mandatory for all maps to create huge checkpoints (which you will 100% hit when you pass a certain place). Previously, I developed MTA resources and at the moment I understand that such an idea is quite real, but unfortunately now I do not have time to implement it. So, which implementations are real: The map author must embed a certain script with checkpoints into the map, which the server will read. People will generate their own checkpoints by going through the map, but this implementation has disadvantages: campers can break the system and it will not work correctly. You will have to create an admin script to correct checkpoints. Yes, naturally it will be difficult to implement such a resource in servers that have tens of thousands of cards without checkpoints, but there are also advantages of the resource: fair and higher-quality autonomous play. How do you like this idea? Do you think it’s realistic to implement it or are there any other side effects? Interested to hear your thoughts on this!
    1 point
  27. Send message to Discord from MTA:SA STEP I. Make a new webhook on your Discord server STEP II. Change the variable to your webhook URL. STEP III. Start the resource, and test it with the /dcmessage <string> command, or use it with another script using the following export: exports.webhook:sendDiscordMessage("string") Download the script here.
    1 point
  28. ^ The above post is because again, we know you're spreading false stories about MTA (AC team/me) and the TOP-GTA DayZ server owner samr46, besides that you have a lot of friends you're spreading it to as well, who may believe you on your word. This is the debunk, information to fight your disinformation, everyone should know you're a ** cheater. No one likes cheaters, and no, you will never play MTA again. Have a good evening!
    1 point
  29. To take away some confusion, understand that the changes being announced here are mostly focussed on cutting out the 'community front' of AC team operations, so that we can optimize limited manpower and rebalance expectations for our users to accept there will be periods we can't make waves, if you were able to move yourself into our perspective on how people always want everything solved, fixed, sorted out immediately on their whim, and how persistent they are in that (and in most cases bring something misconceived/invalid, after which they can't even be convinced otherwise or that would take from our time disproportionally), you'd be straight out scared and quickly stressed out. OP was clarified by adding in this segment 1 day after the topic was made: We will continue to bring AC improvements and get rid of emerging cheats and cheaters, but at our own pace, without external pressure or too high community expectations, from now on everything is on a best-effort basis and the point is that there may be periods during which we can't make any waves due to manpower constricts. You can see that this topic intends to lower your expectations and respect the amount of free time we (as volunteers) are able to invest, and get off our backs for things being different compared to some years ago. We're also OK to restrict ban appeals and player reports so we can delegate all of the manpower that's left on our new strategy, breaking cheats (patching them) and just preventing them from working to begin with, instead of permanently banning cheat users and having to deal with them "regretting" in ban appeals. We are also OK to restrict reporting cheaters as our focus shifts to breaking the cheats, and to get the required information to break one, we have our own methods and channels so much that we don't need any sort of reports. Due to the state of anticheat and heuristics, we always have a good picture of abnormalities and what cheats are doing, so the main limiting factor is manpower to get to work with what we have & know. After all, cheating on MTA will not be left alone, and AC team will disrupt it and raise the border even more whenever manpower allows it to do so. Cheaters should realize that their fun may come to an end at any unexpected moment, and that if they're too used to being able to cheat, they will be very upset to have to adapt to playing normally for as long it takes the cheat devs to catch back up to us again.
    1 point
  30. Скачайте актуальную версию на данный момент по этой ссылке: https://nightly.mtasa.com/mtasa-1.5.9-rc-21342-20221004.exe Затем установите поверх текущей версии.
    1 point
  31. Download (Github) https://github.com/gta191977649/MTASA-SkyGfx Note: the resource updates frequently, please always check the github for the latest verion SkyGfx (Sky is name of Renderware for the PS2, any semblance to the actual sky is purely accidental) brings accurate PS2 and Xbox graphics to the PC version of San Andreas, Vice City and III. if you enjoy vanilla San Andreas graphic, this mod is essential to have. to learn more about it from the original author (AAP), please see here. Now i will straight go through the documentation. Screenshots The Thanks List ren712 - for shaders & coronas help aap - for the original work & renderware engine help What have done or working in progress? Not Start yet/ not invesgate ? Partically Works Done & Fully Supported Pre-request Library Timecyc Parser Rendering the timecyc interpolation directly from timecyc.dat, interpretation algorithm conveted from librwgta. custom_coronas For rendering the classicFX, like VC style vehicle big headlight, trail light effect. DGS - (Optional) for the debugTools, But you're need dgs to work, i just a bit lazy with gui things Features Postfx Trails(Blur) - blurLeft,blurTop,blurRight,blurBottom works! Radiosity - Color Filter - ? PS2 PC Mobile - Night Version Goggles - Infrared Goggles - Building Pipeline SimplePS - BuildingVS - ? partially, some engine data requires to work, still working on that BuildingVSFX - For model with specular lighting property Not even start yet Vehicle Pipeline PS2 Pipeline - Done, you happy? Xbox Pipeline - ? Only specular lighting works. Pipeline tweaks radiosityFilterPasses - radiosityRenderPasses - radiosityIntensity - zwriteThreshold - detailMaps - leedsShininessMult - neoShininessMult - neoSpecularityMult - envShininessMult - envSpecularityMult - envPower - envFresnel - sunGlare - just see my feature PR. ps2ModulateBuilding - World Effect Dual Pass Render - Yeah, it's done, thanks to ren712 PS2 Alpha Test not even start yet Grass dualPassGrass - it overrides by dual pass render. grassBackfaceCull - grassAddAmbient - grassFixPlacement - only can do it via modify the mta engine ps2ModulateGrass - Shadows pedShadows - stencilShadows - Misc disableClouds - disableGamma - neoWaterDrops(xbox rain postfx) - neoBloodDrops - transparentLockon - lightningIlluminatesWorld - toogle timecyc lighting on world object. fixPcCarLight - coronaZtest - ? partially works, however this will breaks and bugs up the other corona's ztesting in mta. needs to work on a new solution. fixShadows - Special Misc FX (Unique addon by nurupo) vehicleClassicFx Show VC/III liked vehicle big headlight and light trails when you rotate the screen vehicleTrailLength Length of light trails (buffered frame) vehicleTrailDrawDist What distance should trails start visiable? vehicleHeadLightAlpha Alpha multiplier for head light vehicleRearLightAlpha Alpha multiplier for rear light buildingExtraBrightness Multiplier for building extra brightness vehicleExtraBrightness Multiplier for building extra brightness stochasticFilter Make repeative texture look better, ported from Valdir da Costa Júnior Bugs/Issue Sun can see through by walls -> Due to zTest disabled fixed by manually re-create sun from shader, thanks to Ren712 Element garbage collection for vehicle classic fx
    1 point
  32. شباب دة ملف الداتا بتاعت الحفظ فى الباك اب الى معايا @ Ahmed Ly @xlive هل فى شى من هنا السبب Datas, Query = { 'Money', 'Jewelers', 'Level', 'Exp', 'Hours', 'Bank', 'Gang-P', 'Police-P' }, executeSQLQuery function getJSON( Player ) local Save = { } for _, v in ipairs( Datas ) do table.insert( Save, getElementData( Player, v ) or 0 ) end return toJSON( Save ) end Query( 'CREATE TABLE IF NOT EXISTS SaveSystem ( Serial, Data )' ) for _, Player in ipairs( getElementsByType( 'player' ) ) do setTimer( setPedWalkingStyle, 50, 1, Player, 0 ) local Serial, JSON = getPlayerSerial( Player ), getJSON( Player ) if ( #Query( 'SELECT * FROM SaveSystem WHERE Serial = ?', Serial ) == 0 ) then Query ( 'INSERT INTO SaveSystem VALUES ( ? , ? ) ', Serial, JSON ) end end addEventHandler( 'onElementDataChange', root, function( aData, Old, New ) if ( getElementType( source ) == 'player' ) then for _, Value in ipairs( Datas ) do if ( aData == Value ) then setAccountData( getPlayerAccount( source ), aData, New ) end end end end ) addEventHandler( 'onPlayerLogin', root, function( _, Account ) setTimer( function( source ) if ( not isElement( source ) ) then return end for _, Data in ipairs( Datas ) do local AccountData = getAccountData( Account, Data ) if ( AccountData ) then setElementData( source, Data, AccountData ) end end exports['guimessages']:outputServer( source, '#00FF00Your data has been retrieved' ) end , 1000, 1, source, Account ) end ) addEventHandler( 'onPlayerSpawn', root, function( ) for _, v in ipairs( Weapons ) do takeWeapon( source, v ) end setTimer( setPedWalkingStyle, 50, 1, source, 0 ) end ) addEventHandler( 'onPlayerQuit', root, function( ) local Account = getPlayerAccount( source ) if ( Account ) then for _, Data in ipairs( Datas ) do setAccountData( Account, Data, getElementData( source, Data ) ) end end end ) kill = { } addCommandHandler( 'kill', function( Player ) if ( isTimer( kill[Player] ) ) then killTimer( kill[Player] ) exports['guimessages']:outputServer( Player, '#FF0101The suicide process has been completed' ) setElementFrozen( Player, false ) return end exports['guimessages']:outputServer( Player, '#FCFF01You will die after : 10 Seconds' ) exports['guimessages']:outputServer( Player, '#FCFF01To cancel /kill' ) setElementFrozen( Player, true ) kill[Player] = setTimer ( function( Player ) if ( isElement( Player ) and not isPedDead( Player ) ) then killPed( Player ) setElementFrozen( Player, false ) end end , 1000 * 10, 1, Player ) end ) Weapons = { 4,36,38,35,37,42,5,6,7,8,9,10,11,12,13,15,14,18,41} addEventHandler( 'onPlayerWasted', root, function( _, Killer ) if ( isTimer( kill[source] ) ) then killTimer( kill[source] ) setElementFrozen( source, false ) kill[source] = nil end if ( Killer and getElementType( Killer ) == 'player' and getElementData( Killer, 'Mission' ) ) then if ( Killer and getElementType( Killer ) == 'player' ) then local Data = ( ( ( getTeamName( getPlayerTeam( Killer ) ) == 'Police' ) and 'Police-P' ) or 'Gang-P' ) setElementData( Killer, Data , ( getElementData( Killer, Data ) or 0 ) + 1 ) end end end ) addCommandHandler( '77', function( Player ) local Account = getElementData( Player, 'Account' ) if ( Account and hasObjectPermissionTo( 'user.' .. Account , 'general.adminpanel', true ) ) then for Index = 1, 35 do outputChatBox( ' ', root ) end exports['guimessages']:outputServer( root, '#FF0000Chats were cleaned By :#00FF00 ' .. getPlayerName( Player ) ) end end ) addEvent( 'VehicleFIX', true ) addEventHandler( 'VehicleFIX', root, function( ) local Money = getElementData( source, 'Money' ) or 0 if ( Money >= 5000 ) then local Vehicle = getPedOccupiedVehicle( source ) if ( Vehicle ) then fixVehicle( Vehicle ) setElementData( source, 'Money', Money - 5000 ) exports['guimessages']:outputServer( source, '#00FF00Your car has been repaired' ) else exports['guimessages']:outputServer( source, '#FF0000You do not have enough money' ) end end end ) createPed( 0, 2036.15, 1535.68, 10.82 )
    1 point
  33. local SHADER_CODE = [===[ float3 g_f3Color = (float3)0.0; struct PSInput { float4 Position : POSITION0; float2 TexCoord : TEXCOORD0; }; float4 PixelShaderFunction ( PSInput PS ) : COLOR0 { return float4( g_f3Color, 1.0 - PS.TexCoord.x ); }; technique { pass P0 { PixelShader = compile ps_2_a PixelShaderFunction(); } } ]===]; local _dxDrawRectangle = dxDrawRectangle; local g_pShader = dxCreateShader( SHADER_CODE ); function dxDrawRectangle( fX, fY, fWidth, fHeight, pColor, bPostGUI, bLerpAlpha ) if ( not bLerpAlpha ) then _dxDrawRectangle( fX, fY, fWidth, fHeight, pColor, bPostGUI ); else dxSetShaderValue( g_pShader, "g_f3Color", pColor ); dxDrawImage( fX, fY, fWidth, fHeight, g_pShader, 0, 0, 0, -1, bPostGUI ); end end; addEventHandler( "onClientRender", root, function ( ) dxDrawRectangle( 600, 400, 256, 256, { 0, 0, 0 }, false, true ); end ); Please put a reaction to the message, it is on the bottom right. Don't be indifferent.
    1 point
  34. بسم الله الرحمن الرحيم ... السلام عليكم ورحمة الله وبركاته بعد رحلة طويلة مع لغة Lua بدأت التعلم في لغات البرمجة والتصميم الخاصة بالويب وحبيت اشاركم تجربتي HELLO WORLD After along journey learning Lua, I've started learning web design and web development And I would like to share my experience with you hoping that you like it معروف إن في لغة HTML لا يوجد (radiobutton/checkbox) مباشر وإنما الحل انك تعمل input وتغير نوعه we know that HTML doesn't have a direct *checkbox/radio* tags but the method is to create an input and change its type <!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <input type="checkbox" value="Click 1" > <input type="checkbox" value="Click 2" > <input type="checkbox" value="Click 3" > <input type="radio" name="g" value="Click 4" > <input type="radio" name="g" value="Click 5" > <input type="radio" name="g" value="Click 6" > </body> </html> ودي الطريقة اللي هتكمل بيها باقي الشرح and that is what we going to use with HTML طيب ده موضوعه سهل،، أما بالنسبة لتعديل التصميم أو الهيكل شئ مش سهل بالمرة أو مزعج نوعا ما لأن مفيش تاج معين مثلا تقدر تعدل بيه ولكن بفضل الله قدرت اعمل تاجات جديدة في ok, that was an easy part.. but the problem is in designing as it doesn't have a direct tags to be edited But, I've created a new tags/attr to make the design easier CSS ( checkbox, radio, bg, check ) checkbox { /* css code */ } checkbox bg { /* css code */ } checkbox bg check { /* css code */ } checkbox[checked=true] bg { /* css code */ } checkbox[checked=true] bg check { /* css code */ } radio { /* css code */ } radio bg { /* css code */ } radio bg check { /* css code */ } radio[checked=true] bg { /* css code */ } radio[checked=true] bg check { /* css code */ } التفاصيل radio: الهيكل العام للعنصر و يحتوي على الشكل الداخلي كله radio: the hole element checkbox: الهيكل العام للعنصر و يحتوي على الشكل الداخلي كله checkbox: the hole element bg: الخلفية الخاصة بالشكل الداخلي bg: the background of the checkbox/radio itself check: الأيقونة اللي داخل الخلفية الخاصة بالشكل الداخلي check: the icon inside the bg طيب بالنسبة اكون الجافا سكربت javascript // created by Ahmed Mostafa "killerProject" alert ("the best code i have ever made\n\nBETA\n\nCreated By: Ahmed Mostafa 'killerProject'") msg = function (zmsg) {console.log(zmsg)} function changeInput (_input) { if ( _input.getAttribute("modified") ) { return } if ( true ) { /* ignored */ var op = _input.parentElement; var np = document.createElement( _input.type /*"label"*/ ); op.replaceChild (np, _input); np.appendChild(_input); np.appendChild ( document.createTextNode( _input.value ) ); np.style.display = "inline-block"; np.style.overflow = "auto"; np.setAttribute( "child", _input ); np.setAttribute( "modified", true); np.setAttribute( "checked", _input.checked); _input.setAttribute( "modified", true); /* var w = _input.offsetWidth; var h = _input.offsetHeight; np.style.width = w+"px"; np.style.height = h+"px"; */ np.style.position = "relative"; var pw = np.offsetWidth; var ph = np.offsetHeight; var bg = document.createElement( "bg" ); bg.appendChild ( document.createTextNode( "" ) ); np.appendChild( bg ); var check = document.createElement( "check" ); check.appendChild ( document.createTextNode( "" ) ); bg.appendChild( check ); bg.style.position = "position: absolute; z-index: 2;"; check.style.position = "position: absolute; z-index: 3;"; _input.style = "position: absolute; left: 0; top: 0; padding: 0; margin: 0; width: "+pw+"px; height: "+ph+"px; -webkit-appearance: none; moz-appearance: none; appearance: none; outline: none; background: red; opacity: 0; z-index: 5;"; np.setAttribute( "class", _input.getAttribute("class") ); np.setAttribute( "id", _input.getAttribute("id") ); } } /* onchange = function () { changeInput (event.target) } */ function check_create () { var nInput = event.target; changeInput (nInput); var parent = nInput.parentElement; parent.setAttribute( "checked", nInput.checked); var all = document.getElementsByTagName ("input"); for ( let i = 0; i < all.length; i++ ) { if ( all[i].type == "radio" ) { let parent = all[i].parentElement; parent.setAttribute( "checked", all[i].checked); } } } onload = function () { var all = document.getElementsByTagName ("input"); for ( let i = 0; i < all.length; i++ ) { changeInput (all[i]) all[i].addEventListener("change", check_create); } } المميزات - advantages متاح فيه التعديل عن طريق الآي دي أو الكلاس Id, class (edit by id or class) سهولة التصميم بشكل كبير جدا (too easy to edit) تبسيط الاكواد في HTML, CSS (makes html, css *radio/checkbox* more easier to be edited) مثال على التعديل على ال CSS example (css) radio { padding-top: 5px; padding-left: 35px; width: 250px; height: 25px; background: #ccc5; border-radius: 45px; /*box-shadow: inset 0 0 0 1px #4a148c;*/ } checkbox { padding-top: 5px; width: 250px; height: 25px; padding-left: 55px; background: #ccc5; border-radius: 45px; /*box-shadow: inset 0 0 0 1px #4a148c;*/ } radio bg { transition: .5s; box-shadow: inset 0 0 0 2px #4a148c; position: absolute ; top: 2.5px; left: 2.5px; background: #fff0; width: 25px; height: 25px; border-radius: 50%; } radio check { transition: .5s; position: absolute ; top: 5px; left: 5px; background: #fff0; width: 15px; height: 15px; border-radius: 50%; box-shadow: inset 0 0 0 1px #4a148c; } checkbox bg { transition: .5s; box-shadow: inset 0 0 0 2px #4a148c; position: absolute ; top: 2.5px; left: 2.5px; background: #fff0; width: 50px; height: 25px; border-radius: 45px; } checkbox check { transition: .5s; position: absolute ; top: 5px; left: 5px; background: #fff0; width: 15px; height: 15px; border-radius: 45px; box-shadow: inset 0 0 0 1px #4a148c; } /* when true */ radio[checked=true] bg { transition: .5s; background: #b39ddb; } radio[checked=true] check { transition: .5s; background: #4a148c; } checkbox[checked=true] bg { transition: .5s; background: #b39ddb; } checkbox[checked=true] check { transition: .5s; background: #4a148c; left: 30px; } صورة للتصميم A picture أتمنى تقولولي رأيكم في الفكرة وشكرا ? Please, rate the Idea ?
    1 point
  35. Cześć, mam problem z edytorem. Nic już nie pomaga, nawet reinstalacja gry. Nie wiem kompletnie co z tym robić. Może ktoś ma jakiś pomysł? = Server name : Map Editor Server = Server IP address: auto = Server port : 22010 = = Log file : ..rver/mods/deathmatch/logs/editor_server.log = Maximum players : 1 = HTTP port : 22011 = Voice Chat : Disabled = Bandwidth saving : None ================================================================== [13] Resource 'acpanel' requests some acl rights. Use the command 'aclrequest list acpanel' [13] Resource 'guieditor' requests some acl rights. Use the command 'aclrequest list guieditor' [13] ERROR: Couldn't find map StadiumMapping.map for resource maps [13] Loading of resource 'maps' failed [13] ERROR: Problem with resource: assault; Failed to link to scoreboard [13] ERROR: Not processing resource 'briefcase' as it has duplicates on different paths: Path #1: "resources\briefcase" Path #2: "resources\[gamemodes]\[briefcaserace]\briefcase" [13] ERROR: Problem with resource: briefcaserace; Failed to link to scoreboard [13] ERROR: Problem with resource: cdm; Failed to link to scoreboard [13] ERROR: Problem with resource: ctf; Failed to link to scoreboard [13] ERROR: Problem with resource: ctf-bombsite; Failed to link to scoreboard [13] ERROR: Problem with resource: ctf-canals; Failed to link to scoreboard [13] ERROR: Problem with resource: ctf-hydrastrike; [13] ERROR: Problem with resource: ctf-tbd; Failed to link to scoreboard [13] ERROR: Problem with resource: ctv; Failed to link to scoreboard [13] ERROR: Problem with resource: deathmatch; Failed to link to scoreboard [13] ERROR: Problem with resource: editor; [13] ERROR: Problem with resource: editor_main; Failed to link to freecam [13] ERROR: Problem with resource: fallout; Failed to link to freecam [13] ERROR: Not processing resource 'freecam' as it has duplicates on different paths: Path #1: "resources\freecam" Path #2: "resources\[editor]\freecam" [13] ERROR: Problem with resource: hay; Failed to link to scoreboard [13] ERROR: Not processing resource 'ipb' as it has duplicates on different paths: Path #1: "resources\ipb" Path #2: "resources\[admin]\ipb" [13] ERROR: Problem with resource: maps; Couldn't find map StadiumMapping.map for resource maps [13] ERROR: Not processing resource 'parachute' as it has duplicates on different paths: Path #1: "resources\parachute" Path #2: "resources\[gameplay]\parachute" [13] ERROR: Problem with resource: race; Failed to link to scoreboard [13] ERROR: Not processing resource 'scoreboard' as it has duplicates on different paths: Path #1: "resources\scoreboard" Path #2: "resources\[gameplay]\scoreboard" [13] ERROR: Problem with resource: scores; Failed to link to scoreboard [13] ERROR: Problem with resource: stealth; Failed to link to scoreboard [13] ERROR: Problem with resource: tdm; Failed to link to scoreboard [13] ERROR: Problem with resource: tdma; Failed to link to scoreboard [13] Resources: 336 loaded, 20 failed [13] Starting resources... [13] Server minclientversion is now 1.3.5 [13] ERROR: Couldn't find resource parachute. Check it exists. [13] Server started and is ready to accept connections! [13] To stop the server, type 'shutdown' or press Ctrl-C [13] Type 'help' for a list of commands. [13] CONNECT: Karol998 connected (IP: bla bla bla Serial: nie pokoze Version: 1.5.6-9.16588.5) * Connected! [MTA:SA Server 1.5.6 [Windows]] [13] JOIN: Karol998 joined the game (IP: 127.0.0.1) [13] WARNING: [editor]\edf\scriptreader.Lua:88: Bad argument @ 'getElementData' [Expected element at argument 1, got boolean] Server FPS limit: 50 Server AC info: [Allowed client files: None] [Disabled AC: None] [Enabled SD: None] GUI load time measures (ms): createWorldDetector() : 0
    1 point
  36. DOWNLOAD: https://community.multitheftauto.com/index.php?p=resources&s=details&id=14305 This script adds infinite nitro to your car, never re-add the upgrade anymore!Also changes mechanism:- Hold down Mouse button left-click to use nitro aslong you need it, release it and it'll be gone. (useful for when you need just that extra boost)- Press right CTRL for infinite persistent nitro (it will never stop) and you don't have to hold down anything. Drive with Nitro permanently, until you interrupt it (interrupt: click left-mouse again, or press right CTRL again to switch it off)The first mode (hold left click) works similarly to the ''nos-nfs'' script, so it may be familiar - but it's all from scratch and implemented differently.By default, it also removes the speed blur of nitro, due to it becoming annoying to the eye when you keep using nitro as it's infinite. Remove that from .lua beginning if you want to keep blur. Simple, but useful for several types of gamemodes.
    1 point
  37. LuaRocks is the package manager for Lua modules. Small tricks allow you to use it on MTA server. Installing Linux x64: Windows x86: Usage example: Installing packages is done by typing commands such as: Linux: luarocks install lua-cjson Windows: luarocks.exe install lua-cjson Now you are ready to load this package from MTA. Do this in your Lua script file: -- You should run this function once in your resource initLuaPackage() -- Load library local json = require "cjson" -- Use it print( json.encode({ key = "example" }) ) It's done. Tell me in PM, if you have any remarks and additional information for this tutorial. Thx
    0 points
×
×
  • Create New...