Jump to content

Search the Community

Showing results for tags 'mtasa'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Multi Theft Auto: San Andreas 1.x
    • Support for MTA:SA 1.x
    • User Guides
    • Open Source Contributors
    • Suggestions
    • Ban appeals
  • General MTA
    • News
    • Media
    • Site/Forum/Discord/Mantis/Wiki related
    • MTA Chat
    • Other languages
  • MTA Community
    • Scripting
    • Maps
    • Resources
    • Other Creations & GTA modding
    • Competitive gameplay
    • Servers
  • Other
    • General
    • Multi Theft Auto 0.5r2
    • Third party GTA mods
  • Archive
    • Archived Items
    • Trash

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Member Title


Gang


Location


Occupation


Interests

  1. Dear Multi Theft Auto players and supporters! Today is the 20 Year Anniversary of Multi Theft Auto! On the February 9th 2003, a rudimentary GTA3 multiplayer prototype was released by our founder, IJsVogel. It did not take long for contributors to join the effort and turn it into a real multiplayer mod. The mod IJsVogel created was originally named “GTA3: Alternative Multiplayer”, but soon after it became “GTA3: Multi Theft Auto”. The Multi Theft Auto (MTA) name became the identity of all following projects. As new GTA games were released, new projects were created for GTA3, GTAVC, GTASA and GTAIV. Respectively, the main project names are: GTA3:MTA, MTA:VC, MTA:SA, MTA:IV. The development during GTA3 showed what the team was capable of with enough learning and reverse engineering. At this time, game modes were made for deathmatch and vehicle stunts. These game modes were hard-coded into the mod and could not be altered. It was not perfect, but it was an amazing accomplish for the time. Not only was it the first multiplayer for GTA, but it was an unprecedented undertaking. An early version of GTA3:MTA 0.2 (client and server). Some time in the first half of 2003. The working experience on GTA3 laid the framework for the second project, MTA:VC. It did not take long after GTA: Vice City for the 1st version of MTA:VC to release. The MTA Team succeeded in creating the basic multiplayer functionality much quicker through past-experience. At this point, MTA was well-known and there were mentions on gaming websites, magazines and even a TV interview on the gaming channel G4TV. Even Rockstar Games developers, the creators of GTA, contacted the MTA Team from time to time. The MTA:VC mod still offered a hard-coded deathmatch and vehicle stunting game mode that could not be altered. However, it had better synchronization and supported many new features. When GTA:SA came out, the contributors to the project were much more seasoned and mature. The 3rd project, MTA:SA, was much more ambitious. Although the first release was restricted to racing in vehicles, it was a proof of concept for a vastly superior framework that empowered users to make their own content. An editor was produced to allow in-game editing for the first time. When the full-featured product began development, a constantly evolving Lua-based scripting system accompanied it. This allowed the user to manipulate game code and modify various settings, elements and added features to create unique servers and game modes. Some added features include: voice chat, custom GUIs, web browser components. The MTA Team had the foresight to release this modification to the public as Open-Source code to attract future developers and embraced many new tools of game development that have become commonplace today such as installers, bug reporting, nightly builds, wiki documentation, anti-cheat, and Steam version support to name a few. MTA:SA 1.1 public tests. August, 2011. The release of GTA:IV did result in the beginning stages of MTA:IV, but once Rockstar released their official multiplayer, many of MTA’s most seasoned developers and contributors were ready to move on with their professional lives. Providing the same level of quality to GTA:IV would have been an extreme undertaking. It was decided that the best course of action would be to discontinue further projects and continue making MTA:SA better. The MTA:SA project still receives Open-Source contributions and still retains a consistent player base that is large enough to make developers of new games jealous! Thank You We would like to thank everyone who helped and participated over the years: developers, community/clan leaders, moderators, patch contributors, helpers, donators, testers, translators, scripters, mappers, server hosts/owners, streamers, players and fans. There were hundreds of thousands of such people over the years and they all had their place here. Many people have come and gone. Some are still very young and some are quite old now! Some of us have even developed life careers from our experiences working on this modification. We had the honor of befriending a lot of wonderful people in various stages of the project and many were just as enthusiastic about MTA as we were. Multi Theft Auto would not be here right now, had it not been for their hard work, interest and dedication. No seats? No problem. Screenshot from MTA:SA 1.0.5, taken by Zango. August, 2011. The social aspect has always been strong in MTA. No one knows what the future will bring, but there are things that will remain regardless of anything - and that is the time you all have spent here and your memories. Feel free to share your MTA stories in the comments! Feel free to say hi to us in Discord as well! Thank you all past and present MTA staff members, players and fans for sticking with us! Happy Birthday, Multi Theft Auto! Onwards to the next 20 years or more! -MTA Team
  2. Multi Theft Auto: San Andreas 1.6 is released! Hi there! We've been working hard and today we're proud to announce the release of MTA:SA 1.6. You will receive an automatic update soon, but if you don't have MTA installed, you can get it from the home page. Statistics This is the 27th 1.x.x release 623 days of which 553 for beta release 12 backwards incompatible changes 26 new functions 1 new event 5 deprecations 289+ bug fixes and changes 956+ commits (mtasa-blue) (mtasa-resources) 199 new open GitHub issues (see list) 102 resolved GitHub issues (see list) 92 closed GitHub issues (see list) 44 new open GitHub pull requests (see list) 219 merged GitHub pull requests (see list) 107 closed GitHub pull requests (see list) 45+ contributors of which 17+ are new (see list) 100+ total contributors (see list) 23 vendor updates Download This release is not backwards compatible with previous releases. This means that you cannot use 1.6 to play on 1.5.9 servers. If you're a server owner, please take note of the Changes in 1.6 wiki page, more specifically the Backwards Incompatible Changes. You may need to update your scripts for 1.6. Servers: binaries are available. Don't forget to backup and update your default resources. WANT TO DOWNLOAD THE MOD? CLICK HERE (Win7/Win8/Win10/Win11) Important notice to Windows 7 and Windows 8.x users If you are using Windows 7 or 8.x, please upgrade your system to Windows 10 or 11 as soon as possible. Windows 7 and 8.x are no longer supported by Microsoft (since January 2020 and January 2023 respectively) and most software (including Google Chrome and Steam) which means you are running an insecure system. Multi Theft Auto will also eventually drop Windows 7 and 8.x support sometime in the future, so it would be a good idea to start looking at upgrade options right now. Thank you! CEF in MTA is no longer updated for Windows 7 or 8.x. This is because CEF no longer supports those versions of Windows. This bad for security, so please upgrade to Windows 10+ and MTA to 1.6+ We currently provide two variants of the MTA client, one for Windows 10+ and one for Windows 7/8.x and you can find the download links also conveniently on our home page by pressing the Download button, which reveals a dropdown with the two options. Merch If you feel like getting some of that official MTA swag, check out the merch store here: https://streamlabs.com/mtaqa/merch and wear that MTA gang drip at school or work. Our Spreadshirt store has been discontinued in favor of Streamlabs. AMX (SAMP) amx is a software package that allows the execution of unmodified San Andreas: Multiplayer 0.3.7 gamemodes, filterscripts and plugins on Multi Theft Auto: San Andreas 1.5.8 and higher servers. It is open source, and a prebuilt binary for Windows is available for testing purposes right now. The AMX team hopes that more people get involved with the development on GitHub as they need some help! Check out our GitHub repo for more information on how to use your SAMP scripts in MTA! 1.6 Highlights This update is meant to focus on fixes and changes, that were held back for a few releases in the past due to their compatibility-breaking nature, rather than new features, but there are already a lot of features planned for the next release! Here's a list of highlights for this release: Many high FPS related inconsistency issues have been fixed by @MerlinMagic Script support for custom IMG containers, and ability to set model flags. Thanks to @TheNormalnij A number of graphical effects Added support for vehicle sun glare effect. Thanks to @Nurupo and @TheNormalnij Added corona rain reflections. Thanks to @lopezloo Added big sun lens flare effect. Thanks to @Nurupo Added dynamic ped shadows. Thanks to @lopezloo Grass should now render correctly. Thanks to TFP-dev. ARM support for MTA server is here! This support should still be considered experimental. Thanks to @botder Added new Default 2023, GWEN Blue and GWEN Orange GUI skins. Thanks to @Haxardous Added missing GTA special character skins (3, 4, 5, 6, 8, 42, 65, 86, 119, 273, 289). Thanks to @Allerek Pictures taken with the camera weapon are now saved in higher quality. Thanks to @lopezloo Many stability improvements Many synchronization improvements Many varying size fixes, quality of life improvements, updates and security enhancements to both core and resources! Updates to all language translations from our Crowdin If you are a scripter, you really should wanna dig in to these improvements! Show off your creations on our #showroom channel on our Discord server and have a chance at getting your work featured on our social media pages. Read the 1.6 release notes for a complete set of changes and more information about the improvements listed above. Watch or star our GitHub repository to keep on top of all the things we're working on. Important script changes In this version of MTA there are numerous backwards incompatible changes and refactors that may affect old code. Bloodring Banger (504) is now defined as doorless, to fix animations to be consistent with single player, this also causes setVehicleLocked to not lock the vehicle anymore, as entry happens through the window. callRemote callbacks currently set the error code to nil when there is no error. In 1.6, to be consistent with fetchRemote, the error code reported will be 0. See GitHub #294. Since July 2016 if you provide an invalid string like "randomstring" when a function expects a number, the string will be treated as 0 and raise a script warning. In 1.6 this will be an error. You will still be able to provide strings containing numbers (e.g. "100" and "12.34"), this change only affects invalid strings. See GitHub #1043. When providing a width and height of (0, 0) to createBrowser or guiCreateBrowser you will encounter a script error instead of a warning. The warning was introduced Feb 2019. See GitHub #1069. Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error. See GitHub #1070. Since Aug 2015, we replaced the custom mtalocal:// URL scheme with http://mta/resourceName/blah.html. This mtalocal:// URL scheme will now be removed. See GitHub #1071. The previously unused z argument in getElementsWithinRange now calculates elements in 3D space instead of 2D space. See GitHub #1994. Flamethrower ammo is no longer multiplied by 10. See GitHub #481. Server-side createBlip now syncs blip size and color regardless of icon ID, previously only icon ID 0 had its size and color synced to clients. See GitHub #1399. Server-side givePlayerMoney and setPlayerMoney cap has been raised from 99.999.999 (8 digits) to 999.999.999 (9 digits) to match the maximum native UI value. See GitHub #2654. Players are now synced when exiting vehicle. See GitHub #2084. Server-side objects that were unbreakable by default, but would have been breakable client-side by default, are now breakable by default also server-side (commit). Deprecation: Changed getCameraShakeLevel, setCameraShakeLevel to throw a warning on use, please upgrade to getCameraDrunkLevel and setCameraDrunkLevel instead (commit 2651903). You can use the upgrade console command to automatically upgrade your scripts to use the new functions. Deprecation: Changed givePedJetPack, removePedJetPack and doesPedHaveJetPack to throw a warning on use, please upgrade to setPedWearingJetpack and isPedWearingJetpack instead (commit 804c66b). You can use the upgrade console command to automatically upgrade your scripts to use the new functions. What happens to 1.5? 1.5 installations will be kept intact, to let players and server owners switch over to the new version whenever they feel they are ready. However, new features and changes will only be available on 1.6, so please upgrade! Note, that you can have both 1.5 and 1.6 installed at the same time on your computer to allow you to switch between if you want. MTA will prompt you to switch to the correct version if the server doesn't support your current version. What's next? We already have new features lined up for 1.6.1, and you can find them on our 1.6.1 milestone on GitHub. Multi Theft Auto depends on community input and contributions. To keep a project like MTA going we need LOTS of people. You can help in the following areas: Testing and bug reporting Whenever you encounter a bug or recognise a need for improvement, we can't fix it until you tell us your problem! We're continually working on new features and fixes for MTA, and this always needs testing. Join our Nightly release stream and make sure you keep in touch with on Discord and report issues on GitHub. Programming If you know C++ you may be interested in helping improve Multi Theft Auto's client. Working on open-source software may seem scary, but the best way is to try! Read GitHub's open source guide, and then find an itch to scratch, or scratch your own! Documentation Documentation is important, but also time consuming. If you enjoy writing and have some knowledge of English, or you would like to translate the English version to your native language, you’re very welcome to do so. Just head over to our wiki, create an account, and start editing! Support Do you like people? Can you give calm and thought-out responses to users needing help? Then you can spend some time providing support to those who need it. Many answers can be found on our wiki, so make sure to take some time to read it. Then, either join our chat or forums (linked below), or simply help us sort out issues and answer questions on the GitHub repository. Translation We moved to Crowdin from our old Pootle setup, and people have been actively contributing fixes and new translations. Thank you all! Work is still not over, though, as translations may update in the future or new ones may come along, so keep an eye on Crowdin Want to translate MTA to your own language? Awesome! Visit us on Crowdin. As soon as your translation is approved, it will be pushed to our repository for use in future releases. Donations Keeping the MTA downloads, master server and websites alive costs money! If you want to help us sustain our financial expenses, please donate! Show your creativity! We are actively looking for new creations on our #showroom channel on Discord, as well as #mtasa on Twitter for content we would like to repost on our social media pages and pin on our annual recap forum post. Follow us on our social media channels: Twitch, YouTube, Facebook, Reddit, LinkedIn. Thank you! Thank you to the following communities and community members for their donations since last release: @Blokker_1999, NEXTRP, MTA DayZ Ultimate, DubaiRP, INCEPTION-MEDIA, Purge Roleplay, @Arran, @0xCiBeR, @IIYAMA, fransg, Badandy, Nasser Alshahrani, @JessePinkman, Complex Roleplay, FoxG, Grand Roleplay, Lopaha, Matrix Network, @Platin, San Andreas Roleplay, Scott Malone, ChefaoDev, DonNiko and 6 others who did not provide a name. (If your name is missing or you want to change your entry above, please let us know on Discord!) Thank you very much to the following community members for their work towards this release: @4O4 @Addlibs @AGENT_STEELMEAT @Allerek @androksi @Arran @BCG2000 @botder @ccw @cleopatra @darkdreamingdan Dark-Dragon DarkDrifter Nacim @Disinterpreter @Dutchman101 @efex @Exilepilot Fernando Rocha @Haxardous @Inder00 itslewiswatson @JessePinkman @Jusonex @lopezloo @Lpsd @Lvrent lyncon @Megadreams @MerlinMagic @Mkl @Mvrat @myonlake @NanoBob @Nurupo @pieT @Pirulax @qaisjp RatajVaver ricksterhd123 @samr46 @Santi @Sarrum se16n @srslyyyy @Strix@TEDERIs TeteX1 TFP-dev @TheNormalnij Tracer @turret001 vahook vyn666 @Xenius @xLive @Zango and many others who contributed to our Wiki and helped out with issues. (If your name is missing or you want to change your entry above, please let us know on Discord!) Thank you also to our translation contributors on Crowdin: Khazarli, Vampire, FernandoMTA, Shady, xLive, turret001, markenzy, Danx, Zorgman, Maestro-17, deihim007, pieT, mcak105, Hydra45, efex, NetroX, Megadreams, Citizen, WhiteGren, nitrocat21, Pablo, azzmanfilms, Caram1lo, AzukieGTA, MrBad, acedia, YozoraWolf, kordy, Stoned, mdmnmtasa55, Xocopinho, sorinalex36, Haxardous, djebzer, Abasalt_Yar, Nick026, Hydrogen506, Rataj, amirjfp, RidwanRF, q8X, mbeltowski, antimarte, guillaume.dorczynski, morpp, Derbo, Pawcio, Lachuks, Insigne, raikopajusalu52, phammybear, dronor589, Koizumi, R3L4X, Danial123, lenovoactin, i7amod., Shuubaru, Driver, datuna22, TRtam, Dezash, 0xCiBeR, Nebla, Stickey21, xxxx, PatrikX23 You could be on this list! We're always on the lookout for new contributors. Contribute on GitHub, translate on Crowdin, and chat with us on Discord. We have channels for scripting, general support (bugs), mod development, and many more! Thank you to all beta testers for the past couple of months of feedback and bug reports! And one more thank you to every member of the MTA staff who helps support this forum and Discord. Without your efforts, this project would not be nearly as successful as it is now. Also a big thank you to the new MTA helpers team who support our users on this forum and Discord! Finally, please give a to our newest staff members @Vinyard and @Zango; newest helpers @The_GTA, @Reyomin and @Vampire; as well as newest contributors @androksi @BCG2000 DarkDrifter Nacim @efex Fernando Rocha @Inder00 @JessePinkman lyncon @MerlinMagic @Mvrat @Nurupo @Santi TFP-dev Tracer @turret001 vahook vyn666 -- Have a good one! — MTA Team
  3. Hello everyone! We have prepared a special gift for you to celebrate Multi Theft Auto's 20th Anniversary! Here is an exclusive interview with IJs (also known as IJsVogel), the founder and first developer of the Multi Theft Auto project. Read on to see his thoughts on the project in retrospective. Note: more details about Multi Theft Auto's history and timeline can be found on our Wiki article. What had prompted you to create the very first multiplayer mod for GTA3 - a game that did not offer such a feature out of the box? Wow, it has already been 20 years.. I remember the reasoning behind it very vividly! As I grew up in the 90s I was lucky enough to be surrounded by PCs, early internet and PC games from the very beginning (of myself). I was a very fanatical player of Grand Theft Auto 1 and 2, especially so because these games had a multiplayer mode that I could play at home with my brothers. Then, finally in 2002 when GTA3 came out for PC, I was 13 at the time and completely astounded at the possibilities of this 3D open world version of my favourite game for the first couple of months. After a while, it sinked in that this game was missing any ability at all to play with others, which put a huge dent into my appreciation for the game... At the time, I never really played the storylines of games because it didn't quite fit my youthly attention span (my older brother always left the savegames for me to play) and was usually more into the multiplayer and modding aspects anyway. Two completely coincidental things then sparked the start of an attempt at multiplayer. First, a fake French screenshot was being sent around forums, showing a multiplayer mod for GTA3. This raised my hopes tremendously and I was looking forward to testing this so much. When it turned out to be another hoax, my hopes were in shambles and I began thinking about hacking something together to do it anyway. A screenshot of a fake multiplayer mod in GTA3. Surfaced in July, 2002. Secondly, some coders had just released a trainer/cheat tool for GTA3 including its source code in Visual Basic 5 or 6, which was the only language I knew at that time as I was only 14 by then. I started hacking around with the tool to make a synchronized trainer tool, and figured I might as well synchronize car positions, and a very crude attempt at multiplayer was born and it was dubbed GTA3: Alternative Multiplayer (GTA3AM). It was amazing to see it work, it seemed such a stupidly simple hack! This was the first effective prototype of Multi Theft Auto. A not-so-fake GTA3AM 0.1 Client window, win9x style! February, 2003. Were there other people who shared your idea and wanted to contribute? Was it easy to find them? The initial GTA3AM was posted on a well-known Dutch tech forum, and this raised some attention from people over there. It wasn't so much a conscious decision to find people, people really wanted to contribute and we gathered on IRC, with some people helping out with the website, server donations and coding. This grew organically as the users grew. The first months or so was mostly Dutch techies helping out, including a well-known provider sponsoring our hosting, and after the first year or so the team became very diverse, international and well skilled. I am still very grateful for each and every contributor to this project from the very start and later, also because I was still very young at the time, and the project would not have been able to thrive on my contributions alone. I have had the fortune to meet and work together with some of the most skilled people I've met in my entire life, as well as people who simply loved playing around with our creations. Work on ambitious projects like this typically involves solving tough and unusual problems. What was the most significant one that you and the team had to deal with during your time in MTA? And perhaps, maybe there was a really peculiar problem that you also would like to share? MTA has been an amazing learning curve for me, and I believe many other contributors in its 20 year lifetime, to acquire a very special mix of skills. We have had tremendous fun and also frustration engineering the hell out of all sorts of things, and trying to tie worlds together over a network. There are countless things that were tackled and pioneered (even if only personally) in this project, so it is hard to pinpoint out a single thing. I think one of the most groundbreaking efforts of this project however was to restructure the entire project and release it as open-source to the world. As part of that we spent much effort to restructure everything using git (this upset quite a few developers at the time) and published it in 2009 or so on GitHub when it was still in its infant stage (GitHub even mentioned us on their blog at the time). A bit messy in MTA:SA Racemod internal tests. Some time in the second half of 2005. If you had a chance to start this project again, would it be closed-source as it initially was, or would you prefer it to be open-source like it is now? It would certainly be open-sourced again, probably as early as possible. The facilities for open source projects are much, much better now than 20 years ago as well. The move to GTA:SA kind of left the multiplayer mods for GTA3 and GTA:VC in the dark. While there were some alternative mods developed for these games, they did not really leave a lasting impact in the long run. Have you or the rest of the team ever considered bringing back the support for GTA3 or VC after MTA:SA DM 1.0 was released? I do not think there was ever a strong will to revive the GTA3 or GTA:VC versions, because GTA:SA by all means had a better and more capable engine. Perhaps in today's open source world, where contributors are easy to find, it could have had a better chance. My personal opinion (or fantasy) at the time was to "just" build our own game behind it instead, but that obviously never took off. Development build of MTA:VC Blue. Some time in the second half of 2004. What in your opinion are the strongest points of Multi Theft Auto (be it the original 0.x series or MTA:SA)? What do you think the project especially succeeded in? The critical mass of players and contributors, that never seems to die out, and it keeps surprising me. The incredibly challenging technical issues we have had to solve (and still do), sometimes from the ground up. This makes for a very exciting sandbox to work in as a developer or hacker. And in contrast, do you feel there are any shortcomings in MTA? I think one of the missed opportunities in MTA is that we could have developed a bigger framework or other products on top of all the codebase we had written. A bit messy again, this time during MTA:SA DM internal tests. December, 2007. Thinking back, are there any things in the project that you think you would have done differently nowadays? I would have loved to have set up a much more professional collaboration with the entire team that were around at the time the project was open sourced around 2010, using all the knowledge we had all acquired in the process of making MTA:SA 1.0 when it was still very hot. With the knowledge on startups that I have now, I realize that had I been 5 or 10 years older, I might have had some better idea on how to take it to a level to possibly develop our own game(s) or framework on top of it. But alas, for MTA's sake it turned out good either way! The MTA Community is very large these days and scattered across all continents, but that was not always the case. What was the community like back in your time? As with most (modding) projects you usually start out with a very niche audience. For MTA, this was a direct result of me posting on a Dutch tech forum and as a result, the initial contributors in the first months were mostly (if not all) Dutch and Belgian. With the GTA series obviously being a hit in the Western world, more people wanted to contribute (and play). Nearly all of them came from the US, UK, Central and West Europe and the Nordic countries, with a few notable exceptions. I think this pretty much mirrored the demographics of the GTA series themselves. Let's race! Beta tests of MTA:SA DM. December, 2007. I have noticed that you have been involved with various tech projects after retiring from MTA. What are you up to currently? Was your experience from working on MTA useful in these projects? Among some other startup adventures in the past years, I currently lead an audio software company called KoalaDSP that develops virtual audio plugins, instruments, effects and algorithms for a bunch of very big companies out there. We started this company around two years ago in Amsterdam after some previous endeavours, and with around 10+ people working on some crazy software being used in music and home studios around the world. But Multi Theft Auto has given me a lifetime passion for video game development, and after many years or scribbles and notes, I have finally found the time and people around me to developing my second (..after MTA) game idea using 90s retro graphics and voxels. I feel quite strongly that my experience with Multi Theft Auto has been a unique and once-in-a-lifetime gift of skill, much adventure and lasting connections with others. I can't quite pinpoint it, but it feels special. I hope that also still holds to this day for any contributors out there. A long-running project like MTA also means a lot of memories. Do you have any fond or interesting memories from your time working on the project that you would wish to share? I have so many memories of my time during MTA, it is hard to pick out something! Apart from the early memories of all the excitement, healthy stress and testing with all these people during the very, very early days, there is something I remember from a bit later: There was a pretty far-fetched and secret clandestine plan from some of our developers to put a live editor into one of the first MTA:SA releases. Like often with our features, it was really a coding challenge, a show of skill. Are you skilled enough to build this crazy thing? They figured that, in order for the community to enjoy using our mod, they needed an engaging way to create content. So they started building a complete editor inside the game. It required a tremendous amount of work, but they kept to it, others started contributing, and it ended up as one of the key features of the entire release! Some say that editor served as an inspiration to other mods, possibly other games afterwards. Internal tests of the cancelled MTA: Orange. April, 2010. To wrap things up, is there anything that you would like to say to current MTA Team members and/or to MTA fans? Thanks for putting your enthusiasm (and many wasted hours of gaming!!) into this amazing project. Props to all the contributors, past, present and future. MTA, the way it's meant to be played! Interviewed by jhxp.
  4. Please someone help, I have a problem with my DirectX, when obviously I have the latest version, it says "You must have at least DirectX Version 9.0 to start GTA:SA" but I already have the latest, I think, which is the 12. HEEEEEELP!
  5. I made a hud but it has a bug. For those who register and login, setElementData is not set. How to fix it ? If the resource is restarted, the element data will be set and saved in the account data Server Side addEventHandler("onPlayerQuit", root, function(type) if type == "Quit" then local health = getElementHealth(source) local armor = getPedArmor(source) local water = getElementData(source, "water") local food = getElementData(source, "food") local account = getPlayerAccount(source) setAccountData(account, "health", health) setAccountData(account, "armor", armor) setAccountData(account, "water", water) setAccountData(account, "food", food) end end) addEventHandler("onPlayerLogin", root, function(pa, ca) local account = getPlayerAccount(source) if not isGuestAccount(account) then local health = getAccountData(account, "health") local armor = getAccountData(account, "armor") local water = getAccountData(account, "water") local food = getAccountData(account, "food") setElementHealth(source, health) setPlayerArmor(source, armor) setElementData(source, "water", water) setElementData(source, "food", food) end end) function drinkWater(player, price, size) if getPlayerMoney(player) < System.prices.food_price then outputChatBox("water cannot be given because you have no money", player, 255, 0, 0) else if getElementData(player, "water") >= 95 then outputChatBox("You can't get more food because your stomach is full!", player, 255, 0, 0) else setElementData(player, "water", getElementData(player, "water") + 20) takePlayerMoney(player, System.prices.water_price) triggerClientEvent(player, "drinking", player) end end end function eatFood(player, price, size) if getPlayerMoney(player) < System.prices.water_price then outputChatBox("Food cannot be given because you have no money", player, 255, 0, 0) else if getElementData(player, "food") >= 95 then outputChatBox("You can't get more food because your stomach is full!", player, 255, 0, 0) else setElementData(player, "food", getElementData(player, "food") + 20) takePlayerMoney(player, System.prices.food_price) triggerClientEvent(player, "eating", player) end end end addEventHandler("onPlayerWasted", root, function() setElementData(source, "water", 50) setElementData(source, "food", 50) end) addEvent("fireStop", true) addEventHandler("fireStop", root, function(player) toggleControl(player, "fire", false) end) addEvent("fireStart", true) addEventHandler("fireStart", root, function(player) toggleControl(player, "fire", true) end) addEvent("runStop", true) addEventHandler("runStop", root, function(player) toggleControl(player, "sprint", false) end) addEvent("runStart", true) addEventHandler("runStart", root, function(player) toggleControl(player, "sprint", true) end) Client Side local screenW, screenH = guiGetScreenSize() setElementData(localPlayer, "water", 100) setElementData(localPlayer, "food", 100) showPlayerHudComponent("health", false) showPlayerHudComponent("armour", false) showPlayerHudComponent("money", false) showPlayerHudComponent("ammo", false) showPlayerHudComponent("weapon", false) showPlayerHudComponent("clock", false) function render() health = getElementHealth(localPlayer) armor = getPedArmor(localPlayer) water = getElementData(localPlayer, "water") food = getElementData(localPlayer, "food") money = getPlayerMoney(localPlayer) time = getRealTime() hour = time.hour minute = time.minute second = time.second weaponID = getPlayerWeapon(localPlayer) weaponName = getWeaponNameFromID(weaponID) ammo = getPedAmmoInClip(localPlayer) allammo = getPedTotalAmmo(localPlayer) -- health dxDrawCircle((screenW - 225), (screenH / 5000 + 30), 25, -270,(health * 3.6 - 270), tocolor(0, 255, 0), 30) -- health line dxDrawCircle((screenW - 225), (screenH / 5000 + 30), 18, 0, 360, tocolor(26, 26, 26)) -- black circle dxDrawImage((screenW - 225) - (27 / 2), (screenH / 300 + 15), 27, 27, "assets/icons/heart.png") -- health icon -- armor dxDrawCircle((screenW - 160), (screenH / 5000 + 30), 25, -270,(armor * 3.6 - 270), tocolor(194, 194, 194), 30) -- armor line dxDrawCircle((screenW - 160), (screenH / 5000 + 30), 18, 0, 360, tocolor(26, 26, 26)) -- black circle dxDrawImage((screenW - 160) - (27 / 2), (screenH / 300 + 16), 27, 27, "assets/icons/armor.png") -- armor icon -- water dxDrawCircle((screenW - 95), (screenH / 5000 + 30), 25, -270,(water * 3.6 - 270), tocolor(10, 252, 236), 30) -- water line dxDrawCircle((screenW - 95), (screenH / 5000 + 30), 18, 0, 360, tocolor(26, 26, 26)) -- black circle dxDrawImage((screenW - 95) - (20 / 2), (screenH / 300 + 12), 20, 30, "assets/icons/water.png") -- water icon -- food dxDrawCircle((screenW - 30), (screenH / 5000 + 30), 25, -270,(food * 3.6 - 270), tocolor(209, 102, 8), 30) -- food line dxDrawCircle((screenW - 30), (screenH / 5000 + 30), 18, 0, 360, tocolor(26, 26, 26)) -- black circle dxDrawImage((screenW - 28) - (27 / 2), (screenH / 300 + 13), 27, 27, "assets/icons/food.png") -- food icon --background dxDrawRectangle((screenW - 235), (screenH / 5000 + 62), 260, 50, tocolor(23, 23, 23, 230)) dxDrawCircle((screenW - 235), (screenH / 5000 + 87), 25, -90, -270, tocolor(23, 23, 23, 230)) -- money dxDrawText("MONEY: $"..money, (screenW - 203), (screenH / 5000 + 70), 20, 20 , tocolor(0, 186, 43), 0.5, "bankgothic") -- real time dxDrawText(string.format("TIME: %02d:%02d:%02d", hour,minute,second), (screenW - 200), (screenH / 5000 + 90), 20, 20 , tocolor(166, 166, 166), 0.5, "bankgothic") -- weapons if weaponID ~= 0 then dxDrawRectangle((screenW - 235), (screenH / 5000 + 120), 260, 25, tocolor(23, 23, 23, 230)) dxDrawCircle((screenW - 235), (screenH / 5000 + 132.5), 12, -90, -270, tocolor(23, 23, 23, 230)) dxDrawText(weaponName.." | "..ammo.." | "..allammo, (screenW - 203), (screenH / 5000 + 125), 20, 20 , tocolor(237, 186, 0), 0.5, "bankgothic") end if (food <= 2) then triggerServerEvent("fireStop", resourceRoot, localPlayer) else triggerServerEvent("fireStart", resourceRoot, localPlayer) end if (water <= 2) then triggerServerEvent("runStop", resourceRoot, localPlayer) else triggerServerEvent("runStart", resourceRoot, localPlayer) end end addEventHandler("onClientRender", root, render) setTimer(function(player) if (getElementData(localPlayer, "water") <= 2) then return else setElementData(localPlayer, "water", getElementData(localPlayer, "water") - 1) end end, System.decrease.water, 0) setTimer(function(player) if (getElementData(localPlayer, "food") <= 2) then return else setElementData(localPlayer, "food", getElementData(localPlayer, "food") - 1) end end, System.decrease.food, 0)
  6. what is problem this code ? gate = createObject(980, 364.82147, 186.89452, 1019.98438) setElementInterior(gate, 3) bombMarker = createMarker(364.70267, 186.29311, 1019.98438 -0.5, "cylinder", 1, 255, 0, 0) setElementInterior(bombMarker, 3) addEventHandler("onMarkerHit", bombMarker, function(player) outputChatBox("ugh!") end)
  7. Why is outPutChatBox saying false instead of 1 ? What I need is to get the outPutChatBox as 1 marker = createMarker(2093.75464, -1948.29468, 13.54688, "cylinder", 1) addEventHandler("onClientMarkerHit", marker, function(player) setElementData(player, "item", 1) outputChatBox("hitted") end) addEventHandler("onClientRender", root, function(player) count = tostring(getElementData(player, "item")) outputChatBox(count) end)
  8. Why doesn't the vehicle destroy when the player disconnects ? marker = createMarker(2169.62500, -1983.23706, 13.55469, "cylinder", 1) vehicles = {} addEventHandler("onMarkerHit", marker, function(player) vehicles[player] = createVehicle(408, 2169.62500 + 3, -1983.23706, 13.55469) end) addEventHandler("onPlayerQuit", root, function(type) if (type == "Quit") then destroyElement(vehicles[player]) end end)
  9. This is a dirt job script I'm currently working on... There's a bug here, why isn't the marker destroyed when the player exits the vehicle? client side -- client side local screenW, screenH = guiGetScreenSize() local w, h = 400, 330 local jobMarker = createMarker(-1895.57104, -1660.41797, 22.11562, "cylinder", 1.0, 0, 255, 0) local window setMoonSize(1000) function getJob(player, matchingDeminsion) if player == localPlayer and matchingDeminsion then if not isPedInVehicle(player) then if isPedOnGround(player) then if not (window) then window = guiCreateWindow((screenW / 2) - (w / 2), (screenH / 2) - (h / 2), w, h, "garbage job", false) memo = guiCreateMemo(0, 30, w, 200, "this is garbage job!", false, window) guiMemoIsReadOnly(memo) accept = guiCreateButton(0, 290, 100, 40, "Accept", false, window) leave = guiCreateButton(130, 290, 100, 40, "Leave Job", false, window) close = guiCreateButton(250, 290, 100, 40, "Close", false, window) showCursor(true) else guiSetVisible(window, false) window = nil showCursor(false) end end end end end addEventHandler("onClientMarkerHit", jobMarker, getJob) function clicks() if (source == accept) then guiSetVisible(window, false) window = nil showCursor(false) triggerServerEvent("acceptJob", resourceRoot, localPlayer) elseif (source == leave) then guiSetVisible(window, false) window = nil showCursor(false) triggerServerEvent("leaveJob", resourceRoot, localPlayer) elseif (source == close) then guiSetVisible(window, false) window = nil showCursor(false) end end addEventHandler("onClientGUIClick", root, clicks) Server side -- server side addEventHandler("onResourceStart", root, function() team = createTeam("garbage", 0, 255, 0) end) addEvent("acceptJob", true) addEvent("leaveJob", true) function checkAccept(player) -- [accept job function] if (getElementData(player, "Jobs") == "garbage") then outputChatBox("you have alrady garbage job sorry!", player, 255, 0, 0) else setElementData(player, "Jobs", "garbage") setElementData(player, "trashlocation", 0) outputChatBox("job accept successfully!", player, 0, 255, 0) startJob(player) if (team) then setPlayerTeam(player, team) end end end addEventHandler("acceptJob", root, checkAccept) vehicles = { [408] = true } garbages = { [1] = {-1881.14380, -1707.47888, 21.75000}, [2] = {-1885.83081, -1723.84656, 21.75641}, [3] = {-1896.03723, -1731.46301, 21.75000}, [4] = {-1908.80933, -1733.61536, 21.75000}, [5] = {-1930.82690, -1767.77832, 26.18353}, [6] = {-1938.78809, -1781.46545, 29.32999}, [7] = {-1936.23059, -1760.15820, 24.36698}, [8] = {-1935.32361, -1742.58679, 22.91065}, [9] = {-1935.62610, -1719.10291, 21.75000}, [10] = {-1921.58350, -1706.34143, 21.90317}, [11] = {-1902.96033, -1704.98352, 21.75000} } function pickUpLocation(player, id) local x, y, z = garbages[id][1],garbages[id][2],garbages[id][3] local marker = createMarker(x, y, z, "cylinder", 3.0) -- <<<<<< Marker is here addEventHandler("onMarkerHit", marker, function(player) if getElementModel(getPedOccupiedVehicle(player)) == 408 then destroyElement(marker) marker = nil outputChatBox("hitted") setElementData(player, "trashlocation", getElementData(player, "trashlocation")+1) newLocation = getElementData(player, "trashlocation") pickUpLocation(player, newLocation) end end) end addEventHandler("onPlayerVehicleEnter", root, function(vehicle, seat, jacked) --[on player vehicle enter] if (vehicles[getElementModel(vehicle)]) and (getElementData(source, "Jobs") ~= "garbage") then removePedFromVehicle(source) x, y, z = getElementPosition(source) setElementPosition(source, x+1, y, z) outputChatBox("You don't have a garbage job", player, 255, 0, 0) end end) addEventHandler("onPlayerVehicleExit", root, function(vehicle, seat, jeacked) --[on player vehicle exit] if (getElementData(source, "Jobs") == "garbage") then if (getElementModel(vehicle) == 408) then outputChatBox("exited") setElementData(source, "Jobs", nil) destroyElement(marker) -- <<<<<<< problem is ehere end end end) trashVehicles = {} trashVehiclesBlips = {} function startJob(player) trashVehicle = createVehicle(408, -1879.74951, -1672.44751, 21.75000, 0, 0, 180) trashVehicleBlip = createBlipAttachedTo(trashVehicle, 51) trashVehicles[player] = trashVehicle trashVehiclesBlips[player] = trashVehicleBlip function checkVehicle(player) local vehicle = getPedOccupiedVehicle(source) local vehicleId = getElementModel(vehicle) outputChatBox(vehicleId) if (vehicleId == 408) then pickUpLocation(player, 1) setElementData(player, "trashlocation", 1) end end addEventHandler("onPlayerVehicleEnter", root, checkVehicle) end function leave(player)-- [leave job function] setElementData(player, "Jobs", nil) setPlayerTeam(player, nil) outputChatBox("leave successfully garbage job!", player, 255, 255, 0) end addEventHandler("leaveJob", root, leave)
  10. I made a trashman job. But there is a small problem, how can only those who have the trashman job try to enter the trash vehicle? -- client side local screenW, screenH = guiGetScreenSize() local w, h = 400, 330 local jobMarker = createMarker(-1895.57104, -1660.41797, 22.11562, "cylinder", 1.0, 0, 255, 0) local window function getJob(player, matchingDeminsion) if player == localPlayer and matchingDeminsion then if not isPedInVehicle(player) then if isPedOnGround(player) then if not (window) then window = guiCreateWindow((screenW / 2) - (w / 2), (screenH / 2) - (h / 2), w, h, "garbage job", false) memo = guiCreateMemo(0, 30, w, 200, "this is garbage job!", false, window) guiMemoIsReadOnly(memo) accept = guiCreateButton(0, 290, 100, 40, "Accept", false, window) leave = guiCreateButton(130, 290, 100, 40, "Leave Job", false, window) close = guiCreateButton(250, 290, 100, 40, "Close", false, window) showCursor(true) else guiSetVisible(window, false) window = nil showCursor(false) end end end end end addEventHandler("onClientMarkerHit", jobMarker, getJob) function clicks() if (source == accept) then guiSetVisible(window, false) window = nil showCursor(false) triggerServerEvent("acceptJob", resourceRoot, localPlayer) elseif (source == leave) then guiSetVisible(window, false) window = nil showCursor(false) triggerServerEvent("leaveJob", resourceRoot, localPlayer) elseif (source == close) then guiSetVisible(window, false) window = nil showCursor(false) end end addEventHandler("onClientGUIClick", root, clicks) --server side addEvent("acceptJob", true) addEvent("leaveJob", true) function checkAccept(player) -- [accept job function] if (getElementData(player, "Jobs") == "garbage") then outputChatBox("you have alrady garbage job sorry!", player, 255, 0, 0) else setElementData(player, "Jobs", "garbage") outputChatBox("job accept successfully!", player, 0, 255, 0) startJob(player) end end function startJob(player) trashVehicle = createVehicle(408, -1879.74951, -1672.44751, 21.75000, 0, 0, 180) end addEventHandler("acceptJob", root, checkAccept) function leave(player)-- [leave job function] setElementData(player, "Jobs", nil) destroyElement(trashVehicle) outputChatBox("leave successfully garbage job!", player, 255, 255, 0) end addEventHandler("leaveJob", root, leave)
  11. When one of these markers is hit, another marker is destroyed. After that, even if other markers are hit, none of the markers will be destroyed. What is the reason for it ? garbages = { {-1881.14380, -1707.47888, 21.75000}, {-1885.83081, -1723.84656, 21.75641}, {-1896.03723, -1731.46301, 21.75000}, {-1908.80933, -1733.61536, 21.75000} } function pickup(player) for i,garbage in pairs(garbages) do marker = createMarker(garbage[1], garbage[2], garbage[3], "cylinder", 3.0) function picked(player) destroyElement(marker) end addEventHandler("onMarkerHit", marker, picked) end end
  12. The problem is that there is a ped that runs straight, and there are also drawn lines that show how the ped is looking. And I would like to make this ped when it notices an obstacle with a given line "processOfLineSight" to paint it red from the green line. But unfortunately when the ped runs and sees an obstacle on the right side, the middle line lights up instead of the one on the right side. It's the same with the rest, the middle line, when it notices something, the left line lights up and so on. Can someone help me with this? local direction = 0 local testPed = createPed(0,2480.52344, -1649.07202, 103.77657, direction) local lineLength = -10 local distanceOfStart = 0 local color = {{255, 0, 0},{0, 255, 0}} local colorSet = 2 function drawLineFromHead(ped, angle) if isElement(ped) and getElementType(ped) == "ped" then local pedX, pedY, pedZ = getElementPosition(ped) local pedRotation = getPedRotation(ped) + angle local pedRotationRad = math.rad(pedRotation) local lineEndX = pedX + lineLength * math.sin(pedRotationRad) local lineEndY = pedY - lineLength * math.cos(pedRotationRad) dxDrawLine3D(pedX, pedY, pedZ + distanceOfStart, lineEndX, lineEndY, pedZ+ distanceOfStart, tocolor(color[colorSet][1], color[colorSet][2], color[colorSet][3]), 2) local hit = processLineOfSight(pedX, pedY, pedZ + distanceOfStart, lineEndX, lineEndY, pedZ+ distanceOfStart, true, false, false) if hit then colorSet = 1 else colorSet = 2 end end end function drawLinesForPerspective(ped) drawLineFromHead(ped, -45) drawLineFromHead(ped, 0) drawLineFromHead(ped, 45) end setPedControlState(testPed, "forwards", true) -- Main Loop addEventHandler("onClientRender", root, function() drawLinesForPerspective(testPed) local x, y, z = getElementPosition(getLocalPlayer()) end)
  13. How to increase the shooting speed of a weapon ?
  14. This is a script I made. This has been working fine so far and then suddenly stopped working. What is the reason for it? addEvent("startMinerJob", true) function startJob(thePlayer) if not (getElementData(thePlayer, "Jobs") == "miner") then setElementData(thePlayer, "Jobs", "miner") setElementData(thePlayer, "copper", getElementData(thePlayer, "copper")) end mineMarker = createMarker(596.22632, 926.04364, -37.97111, "cylinder", 10.0) addEventHandler("onMarkerHit", mineMarker, function() playerWeapon = getPlayerWeapon(thePlayer) if playerWeapon == 23 then outputChatBox("test", thePlayer) setPedFrozen(thePlayer, true) setTimer(function() setPedAnimation(thePlayer, "SWORD", "sword_4", -1, false, false, false, false) end, 1000, 5) setTimer( function() outputChatBox("relesed", thePlayer) setPedFrozen(thePlayer, false) setElementData(thePlayer, "copper", getElementData(thePlayer, "copper")+3) end , 5000, 1) end end) end addEventHandler("startMinerJob", root, startJob) --[[ Leave Miner Job Section ]] addEvent("leaveMinerJob", true) function leaveJob(thePlayer) if (getElementData(thePlayer, "Jobs") == "miner") then setElementData(thePlayer, "Jobs", nil) outputChatBox("you leaved miner job!", thePlayer, 0, 255, 0) end end addEventHandler("leaveMinerJob", root, leaveJob) --[[ Job Testing Section ]] function test(thePlayer) de = getElementData(thePlayer, "copper") outputChatBox("you have "..de.." coppers") end addCommandHandler("gg", test)
  15. scolen

    [HELP]DATABSE

    No purchased vehicles will be left. In the console, here is an error: "CarShop-System/Server.lua:120: dbExec failed; (1) SQL argument error ".. but the localhost is working fine without any errors, when I put it on the server it happens like this. What is the reason for that ? createBlip ( 2131.88086, -1149.92566, 24.21433, 55, 2, 0, 0, 0, 255, 0, 99999.0, getRootElement( ) ) local vehDB = dbConnect( 'sqlite', 'Loja de veiculos - Database.db' ) dbExec( vehDB, ' CREATE TABLE IF NOT EXISTS `VehiclesSystem_Players` (pSerial, vehID, vehName, vehPrice, Subscription) ' ) --dbExec( vehDB, ' DROP TABLE `VehiclesSystem_Players` ' ) vehPers = { }; vehview = { }; function refreshMyList( ) local check = dbQuery( vehDB, ' SELECT * FROM `VehiclesSystem_Players` ' ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results == 0 or not results ) then triggerClientEvent( root, 'VehiclesSystem;emptyMyList', root ) return end triggerClientEvent( root, 'VehiclesSystem;putMyVehicles', root, results ) end addEvent( 'refreshMyListS', true ) addEventHandler( 'refreshMyListS', root, refreshMyList ) function viewVehiclex( ID, x, y, z, state ) if ( state == 'close' ) then if ( isElement( vehview[source] ) ) then destroyElement( vehview[source] ) end elseif ( state == 'view' ) then if ( isElement( vehview[source] ) ) then if ( getElementModel( vehview[source] ) ) == ID then return end destroyElement( vehview[source] ) end vehview[source] = createVehicle( ID, x, y, z + 0.2, 0, 0, 10 ) setElementDimension( vehview[source], getElementData( root, 'vehiclesSystem;dimension' ) or 1 ) setElementDimension( source, getElementData( root, 'vehiclesSystem;dimension' ) or 1 ) setElementData( root, 'vehiclesSystem;dimension', getElementData( root, 'vehiclesSystem;dimension' ) + 1 or 1 ) end end addEvent( 'VehiclesSystem;createViewVehicle', true ) addEventHandler( 'VehiclesSystem;createViewVehicle', root, viewVehiclex ) addEvent( 'VehiclesSystem;destroyPersonalVehicle', true ) addEventHandler( 'VehiclesSystem;destroyPersonalVehicle', root, function( ) if ( isElement( vehPers[source] ) ) then destroyElement( vehPers[source] ) end end ) addEvent( 'VehiclesSystem;createRentVehicle', true ) addEventHandler( 'VehiclesSystem;createRentVehicle', root, function( ID, vehName ) if ( isElement( vehPers[source] ) ) then destroyElement( vehPers[source] ) end vehPers[source] = createVehicle( ID, 2126.08862, -1136.05115, 25.47241 + 1, -0, 0, 224.5189666748 ) fadeCamera( source, false ) setTimer( fadeCamera, 1500, 1, source, true ) takePlayerMoney( source, 1000 ) setElementDimension( vehPers[source], 0 ) setElementDimension( source, 0 ) setTimer( warpPedIntoVehicle, 1500, 1, source, vehPers[source] ) setTimer( destroyElement, 300000, 1, vehPers[source] ) setTimer( function( ) outputChatBox( '#1E90FF[Car Shop] #FFFFFFWarning: Your rental time is up and your vehicle has been removed #FF0000!', source, 255, 255, 255, true ) end, 300000, 1 ) triggerClientEvent( source, 'VehiclesSystem;gridListAddRent', source, ID, vehName ) end ) addEvent( 'VehiclesSystem;lock/unlockPersonalVehicle', true ) addEventHandler( 'VehiclesSystem;lock/unlockPersonalVehicle', root, function( ) if ( not isElement( vehPers[source] ) ) then outputChatBox( '#1E90FF[Car Shop] #FFFFFFError: you dont have this vehicle #FF0000!', source, 255, 255, 255, true ) return end if ( isVehicleLocked( vehPers[source] ) == true ) then setVehicleLocked( vehPers[source], false ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFSuccess, Your vehicle has been unlocked #2BFF00!', source, 255, 255, 255, true ) else setVehicleLocked( vehPers[source], true ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFSuccess, Your vehicle has been locked #2BFF00!', source, 255, 255, 255, true ) end end ) addEvent( 'VehiclesSystem;off/onPersonalVehicle', true ) addEventHandler( 'VehiclesSystem;off/onPersonalVehicle', root, function( ) if ( not isElement( vehPers[source] ) ) then outputChatBox( '#1E90FF[Car Shop] #FFFFFFError: you dont have this vehicle #FF0000!', source, 255, 255, 255, true ) return end if ( getVehicleEngineState( vehPers[source] ) == true ) then setVehicleEngineState( vehPers[source], false ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFEngine off #2BFF00!', source, 255, 255, 255, true ) else setVehicleEngineState( vehPers[source], true ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFEngine on #2BFF00!', source, 255, 255, 255, true ) end end ) addEvent( 'VehiclesSystem;off/onLightsPersonalVehicle', true ) addEventHandler( 'VehiclesSystem;off/onLightsPersonalVehicle', root, function( ) if ( not isElement( vehPers[source] ) ) then outputChatBox( '#1E90FF[Car Shop] #FFFFFFError: you dont have this vehicle #FF0000!', source, 255, 255, 255, true ) return end if ( getVehicleLightState( vehPers[source], 0 ) == 0 and getVehicleLightState( vehPers[source], 1 ) == 0 ) then setVehicleLightState( vehPers[source], 0, 1 ) setVehicleLightState( vehPers[source], 1, 1 ) setVehicleLightState( vehPers[source], 2, 1 ) setVehicleLightState( vehPers[source], 3, 1 ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFlights off #2BFF00!', source, 255, 255, 255, true ) else setVehicleLightState( vehPers[source], 0, 0 ) setVehicleLightState( vehPers[source], 1, 0 ) setVehicleLightState( vehPers[source], 2, 0 ) setVehicleLightState( vehPers[source], 3, 0 ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFLights on #2BFF00!', source, 255, 255, 255, true ) end end ) addEvent( 'VehiclesSystem;sellMyPersonalVehicle', true ) addEventHandler( 'VehiclesSystem;sellMyPersonalVehicle', root, function( ID, price ) local check = dbQuery( vehDB, ' SELECT * FROM `VehiclesSystem_Players` WHERE pSerial = ? AND vehID = ? ', getPlayerSerial( source ), ID ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results == 0 or not results ) then outputChatBox( '#1E90FF[Car Shop] #FFFFFFError: This vehicle is not permanent, you cannot sell it #FF0000!', source, 255, 255, 255, true ) return end if ( isElement( vehPers[source] ) ) then destroyElement( vehPers[source] ) end dbExec( vehDB, ' DELETE FROM `VehiclesSystem_Players` WHERE pSerial = ? AND vehID = ? ', getPlayerSerial( source ), ID ) refreshMyList( ) givePlayerMoney( source, price ) outputChatBox( '#2BFF00*#1E90FF[Car Shop] #FFFFFFSold! You have successfully sold your vehicle #2BFF00!', source, 255, 255, 255, true ) end ) addEvent( 'VehiclesSystem;createPersonalVehicle', true ) addEventHandler( 'VehiclesSystem;createPersonalVehicle', root, function( ID ) local x, y, z = getElementPosition( source ) if ( isElement( vehPers[source] ) ) then destroyElement( vehPers[source] ) end vehPers[source] = createVehicle( ID, x + 2, y + 2, z + 1 ) if ( getElementData( source, 'VehiclesSystem;WarpToVehicle' ) == 'Enabled' ) then warpPedIntoVehicle( source, vehPers[source] ) setElementData( vehPers[source], 'myPersVehicle', getPlayerName( source ) ) end end ) addEvent( 'VehiclesSystem;buyCurrentCar', true ) addEventHandler( 'VehiclesSystem;buyCurrentCar', root, function( ID, Name, Price ) local check = dbQuery( vehDB, ' SELECT * FROM `VehiclesSystem_Players` WHERE pSerial = ? AND vehddID = ? ', getPlayerSerial( source ), ID ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results == 0 or not results ) then dbExec( vehDB, ' INSERT INTO `VehiclesSystem_Players` VALUES(?,?,?,?,?) ', getPlayerSerial( source ), tonumber(ID), Name, Price, 'Permanente' ) vehPers[source] = createVehicle( ID, 2126.08862, -1136.05115, 25.47241 + 1, -0, 0, 224.5189666748 ) warpPedIntoVehicle( source, vehPers[source] ) takePlayerMoney( source, Price ) setTimer(setCameraTarget, 1500, 1, source ) setElementDimension( vehPers[source], 0 ) setElementDimension( source, 0 ) fadeCamera( source, false ) setTimer( fadeCamera, 1500, 1, source, true ) triggerClientEvent( source, 'VehiclesSystem;hideBuyWindow', source ) viewVehiclex( nil, nil, nil, nil, 'close' ) refreshMyList( ) else outputChatBox( '#1E90FF[Car Shop] #FFFFFFError: This vehicle already exists in your list #FF0000!', source, 255, 255, 255, true ) return end end )
  16. Is there a resource that spawns from the nearest hospital after a player dies ?... or how to make it. I have put many respawn resources but there is some error and it doesn't spawn from the nearest hospital.
  17. I created a Miner Job but there is a problem. When I hit the plant command several times, I could mine only the 5 stones in this script, but the other stones are not destroyed. What is the reason for this? Please help? addEvent("startMinerJob", true) function startJob(thePlayer) if not (getElementData(thePlayer, "Jobs") == "miner") then setElementData(thePlayer, "Jobs", "miner") end function plant(thePlayer) if (getElementData(thePlayer, "Jobs") == "miner") then x, y, z = getElementPosition(thePlayer) disx = 611.54028 disy = 878.61017 disz = -42.9609 if (getDistanceBetweenPoints3D(x, y, z, disx, disy, disz) < 90) then outputChatBox("Bomb Planted!", thePlayer, 255, 0, 0) setTimer(function() createExplosion(x, y, z, 10) stone1 = createObject(3930, x+0, y+1, z-0.5) stone2 = createObject(3930, x+1*2, y+3, z-0.5) stone3 = createObject(3930, x+2*2, y+2, z-0.5) stone4 = createObject(3930, x+3*2, y+5, z-0.5) stone5 = createObject(3930, x+4*2, y+4, z-0.5) x1, y1, z1 = getElementPosition(stone1) x2, y2, z2 = getElementPosition(stone2) x3, y3, z3 = getElementPosition(stone3) x4, y4, z4 = getElementPosition(stone4) x5, y5, z5 = getElementPosition(stone5) marker1 = createMarker(x1, y1, z1, "cylinder", 1.0, 0, 0, 0, 0) marker2 = createMarker(x2, y2, z2, "cylinder", 1.0, 0, 0, 0, 0) marker3 = createMarker(x3, y3, z3, "cylinder", 1.0, 0, 0, 0, 0) marker4 = createMarker(x4, y4, z4, "cylinder", 1.0, 0, 0, 0, 0) marker5 = createMarker(x5, y5, z5, "cylinder", 1.0, 0, 0, 0, 0) addEventHandler("onMarkerHit", marker1, function(thePlayer) setPedFrozen(thePlayer, true) setPedAnimation(thePlayer, "FIGHT_B", "FightB_G", -1, false, false, false, false) destroyElement(marker1) setTimer(function() destroyElement(stone1) setPedFrozen(thePlayer, false) givePlayerMoney(thePlayer, 300) end, 3000, 1) end) addEventHandler("onMarkerHit", marker2, function(thePlayer) setPedFrozen(thePlayer, true) setPedAnimation(thePlayer, "FIGHT_B", "FightB_G", -1, false, false, false, false) destroyElement(marker2) setTimer(function() destroyElement(stone2) setPedFrozen(thePlayer, false) givePlayerMoney(thePlayer, 300) end, 3000, 1) end) addEventHandler("onMarkerHit", marker3, function(thePlayer) setPedFrozen(thePlayer, true) setPedAnimation(thePlayer, "FIGHT_B", "FightB_G", -1, false, false, false, false) destroyElement(marker3) setTimer(function() destroyElement(stone3) setPedFrozen(thePlayer, false) givePlayerMoney(thePlayer, 300) end, 3000, 1) end) addEventHandler("onMarkerHit", marker4, function(thePlayer) setPedFrozen(thePlayer, true) setPedAnimation(thePlayer, "FIGHT_B", "FightB_G", -1, false, false, false, false) destroyElement(marker4) setTimer(function() destroyElement(stone4) setPedFrozen(thePlayer, false) givePlayerMoney(thePlayer, 300) end, 3000, 1) end) addEventHandler("onMarkerHit", marker5, function(thePlayer) setPedFrozen(thePlayer, true) setPedAnimation(thePlayer, "FIGHT_B", "FightB_G", -1, false, false, false, false) destroyElement(marker5) setTimer(function() destroyElement(stone5) setPedFrozen(thePlayer, false) givePlayerMoney(thePlayer, 300) end, 3000, 1) end) end, 5000, 1) end end end addCommandHandler("plant", plant) end addEventHandler("startMinerJob", root, startJob) --[[ Leave Miner Job Section ]] addEvent("leaveMinerJob", true) function leaveJob(thePlayer) if (getElementData(thePlayer, "Jobs") == "miner") then setElementData(thePlayer, "Jobs", nil) outputChatBox("you leaved miner job!", thePlayer, 0, 255, 0) end end addEventHandler("leaveMinerJob", root, leaveJob)
  18. Hi! Following the community discussion in our forums, we have created an official Discord server quite a while ago, as an alternative (and maybe a full replacement in the future) to our current IRC channels. We kept it in under the radar while we were fine tuning things, but we believe we can now present it to you guys. All MTA players and fans are welcome to join our Discord server (though please behave while you are in there ). You can join it by using this link: https://discord.gg/mtasa What is Discord? Discord is a hybrid of IRC, an Instant Messenger and a Voice Chat software. It incorporates the most important features of these elements into a handy and multiplatform app which you can run on your desktops, smartphones or tablets. Why is it cool? Compared to IRC, it offers a built-in chat history buffer, so even if you are offline, you can still catch up with what happened in the channels then. IRC also offers that, but only through an IRC Bouncer that you either need to pay for, or have someone host it for you. It also has a modern look and features such as URL embedding (regular websites, but also pictures and videos), handy syntax colouring for pasted code snippets, emojis (also custom ones), chat messages reactions, Steam integration and more. What can I find while I am there? We currently have some channels created, including: #general - for general MTA and offtopic chats #scripting - for Lua scripting-related queries #support - for any problems related to MTA:SA client or server #announcements - for all important messages from us as well as some others. We are still thinking of how to put our Discord server into its full potential, so we may add more channels soon. Can I have Discord app installed and/or running on several of my devices concurrently? Can I use more than one server? Sure, absolutely. It will sync the messages automatically. And yes, you can add more servers than just our one. How do I join it? Hey, we have mentioned that already. Just click the link below and follow the instructions: https://discord.gg/mtasa I have a suggestion about the Discord... Okay, let us know. As usual, we are open for suggestions. Just post in this topic or hit us up directly on Discord. Hope to see you there! -- MTA Team
  19. Salutări tuturor! Recent a fost lansată versiunea 1.6 (beta) pentru platforma Multi Theft Auto! Aceasta aduce schimbări substanțiale, unele incompatibile cu versiunile anterioare, motiv pentru care a fost luată decizia de a lansa noua versiune într-un stadiu beta. Vă invităm să luați parte la demersurile de testare a noii versiuni pentru a accelera această perioadă beta (estimată să dureze până în jurul lunii mai-iunie dacă toate condițiile necesare sunt întrunite). Cum puteți ajuta? Cel mai simplu și eficient mod este conectarea pe unul dintre serverele publice deschise provizoriu de către echipa MTA cu scopul de a facilita testarea noilor funcționalități. Puteți descărca și instala cea mai recentă versiune de MTA aici: https://nightly.multitheftauto.com/?mtasa-1.6-latest Puteți găsi detaliile de conectare pentru fiecare server în parte aici: MTA 1.6 Official Beta Server #1 Europe - IP: 57.129.0.210:22003 MTA 1.6 Official Beta Server #2 America - IP: 51.222.139.212:22003 Puteți avea două versiuni de MTA instalate simultan (versiunea anterioară 1.5.9 și versiunea nouă 1.6-beta), fiecare versiune instalată într-un folder diferit! În acest fel, puteți comuta cu ușurință în orice moment între versiuni fără să fie necesară o reinstalare sau modificare a fișierelor. Puteți citi mai multe în acest anunț: Distracție plăcută!
  20. How do you try not to hit the marker when a player is in a vehicle ?
  21. EVENT I'm inviting you to participate in a event on uDka Racing Server (mtasa://37.25.106.213:22043) - we're going to play maps from the previous editions of Captains Cup tournament, that was held in 2016! This mode before, involved PRO teams picking / banning maps. We're not going to use Captains Mode for that matter, because we're re-building the map pool for a pro game that will be held on that particular mode, however we just are going to play maps with normal CW script. For future events you can add the server to your favourites on the server browser, we usually make them on Saturday / Sunday, starting from 16-18CET hour, however if you added to favourites and still dont see it - just search uDka and you should see the server with gamemode: RACE LITE. DATE: 3rd June 2023 18:00 CET EU 11 maps Normal points system Max.: players to start the event: 4 (if less, will be canceled) Time after finish: 60sec (increased from 40 sec) I hope you'll join, and enjoy the event! There are no country restrictions for joining the server so if you're a casual player you can join too, and have fun
  22. I made a bank rob script and there is a big problem. When a person plants the bomb, if another player hits the markers to get money, nothing will happen to him. The person who planted the bomb will get those things. How to fix it? ped1 = createPed(76, 2306.65967, -3.14179, 26.74219, -90) ped2 = createPed(76, 2312.06738, -11.00959, 26.74219, 90*2) ped3 = createPed(76, 2318.17793, -7.16190, 26.74219, 90) entranceGate = createObject(3036, 2304.04873, -17.82764, 26.74219, 0, 0, 90) exitgate = createObject(2930, 2314.72744, 0.79857, 27.94219, 0, 0, 90) marker = createMarker(2303.18848, -16.23989, 25.58438, "cylinder", 1.5, 255,0,0) createBlipAttachedTo(marker, 36) addEventHandler("onMarkerHit", marker, function(thePlayer) destroyElement(marker) setPedFrozen(thePlayer, true) setTimer(function()-- repeat animation set bomb setPedAnimation(thePlayer, "BOMBER", "BOM_Plant", -1, false, false, false, false) end, 1000, 15) setTimer(function()-- bomb planting time Dynamite = createObject(1654, 2303.78211, -16.25232, 25.78438, 0, 90, -90) setObjectScale(Dynamite, 2) setPedFrozen(thePlayer, false) outputChatBox("Run! Run! Run! The bomb was planted", thePlayer, 255,0,0) end, 15000, 1) setTimer(function()-- settimer to expolsion x = 1 while (x < 20) do expolsion = createExplosion(2304.04873, -17.82764, 26.74219, 10) x = x+1 end if expolsion then outputChatBox("The entrance of the bank was destroyed", thePlayer, 255,255,0) destroyElement(entranceGate) destroyElement(Dynamite) setPedAnimation(ped1, "ped", "handsup", -1, false) setPedAnimation(ped2, "ped", "handsup", -1, false) setPedAnimation(ped3, "ped", "handsup", -1, false) end moneyOb1 = createObject(1212, 2312.23828, -17.32469, 27.38801) moneyOb2 = createObject(1212, 2314.83828, -17.32469, 27.38801) setObjectScale(moneyOb1, 2) setObjectScale(moneyOb2, 2) moneyOne = createMarker(2312.33984, -16.28635, 25.84957, "cylinder", 1, 0,255,255) moneyTwo = createMarker(2314.93530, -16.28635, 25.84957, "cylinder", 1, 0,255,255) addEventHandler("onMarkerHit", moneyOne, function() setPedFrozen(thePlayer, true) destroyElement(moneyOne) setTimer(function() setPedAnimation(thePlayer, "BOMBER", "BOM_Plant", -1, false, false, false, false) end, 500, 20) setTimer(function() setPedFrozen(thePlayer, false) mathRandomMoney = math.random(40000, 60000) givePlayerMoney(thePlayer, mathRandomMoney) outputChatBox("You have received $"..mathRandomMoney, thePlayer, 0,255,0) destroyElement(moneyOb1) moneyBag = createObject(1550,0,0,0) exports.bone_attach:attachElementToBone(moneyBag,thePlayer,3, 0, -0.17, 0.07, 0, 0, 0) setTimer(function() ---- Money bag destroy Time 5min (1000*60*5) destroyElement(moneyBag) end, 1000*60*5, 1) end, 1000*35, 1) end) addEventHandler("onMarkerHit", moneyTwo, function() setPedFrozen(thePlayer, true) destroyElement(moneyTwo) setTimer(function() setPedAnimation(thePlayer, "BOMBER", "BOM_Plant", -1, false, false, false, false) end, 500, 20) setTimer(function() setPedFrozen(thePlayer, false) mathRandomMoney = math.random(40000, 60000) givePlayerMoney(thePlayer, mathRandomMoney) outputChatBox("You have received $"..mathRandomMoney, thePlayer, 0,255,0) destroyElement(moneyOb2) moneyBag = createObject(1550,0,0,0) exports.bone_attach:attachElementToBone(moneyBag,thePlayer,3, 0, -0.17, 0.07, 0, 0, 0) setTimer(function()---- Money bag destroy Time 5min (1000*60*5) destroyElement(moneyBag) end, 1000*60*5, 1) end, 1000*35, 1) end) end, 25000, 1) end)
  23. 1.6 has now been released! Original post: Multi Theft Auto: San Andreas 1.6 is ready for testing! Our next major build is coming along nicely, so we are keen to let you guys into the action ASAP. Main highlights Two of the main exclusive highlights of this release is the script support for custom IMG containers, and ability to set model flags. Big thanks to @TheNormalnij for his efforts on making these happen! There are also numerous other changes such as updated translations and main menu texts, new GTA skins, improved sync, improved GTA camera screenshot quality and many other bug fixes and improvements which you can find on our Wiki page. By having you join us to test 1.6 we can make sure we catch any new bugs and fix them before the full release. Backwards compatibility 1.6 is not compatible with the older MTA:SA versions (including the most recent release - MTA:SA 1.5.9). This means that you need to connect to a 1.6 server if you wish to test the 1.6 client. There were a bunch of technical reasons for this incompatibility and they were all necessary for us to continue improving the mod. Currently 1.6 includes 12 backwards incompatible changes which you should be aware of. There may be more incompatible changes to be added during this testing phase. Please check out our preliminary release notes on our Wiki page. Public test servers We are hosting a number of official 1.6 public test servers during the 1.6 testing phase for you to try out. Welcome! After the testing phase is over, our public test servers will be shut down. Full release schedule We are planning a full release of 1.6 around May–June if testing phase goes well. To guarantee a smooth transition for your server, we recommend that you try out and upgrade your scripts on this new testing version before the full release. There will be a new announcement once 1.6 is fully released. Keeping your 1.6 up-to-date Once you've installed 1.6, MTA will automatically prompt you to update to a newer version whenever there is an update available, including once we release 1.6 in full - so no need to download and reinstall 1.6 again. What happens to 1.5? 1.5 installations will be kept intact even after the 1.6 release, to let players and server owners switch over to the new version whenever they feel they are ready. However, new features and changes will only be available on 1.6. Note, that you can have both 1.5 and 1.6 installed at the same time on your computer to allow you to switch between if you want. MTA will prompt you to switch to the correct version if the server doesn't support your current version. CLICK HERE TO DOWNLOAD MTA:SA 1.6 BETA If you spot a bug in MTA, please report it here, or if you spot a bug in of our default resources, please report it here instead. See you in game! --MTA Team
  24. getJobMarker = createMarker(872.03754, -29.07278, 62.3000, "cylinder", 1.0, 0, 255, 255, 255, getRootElement()) ped = createPed(159, 872.92389, -27.08743, 63.94565, 160) setPedFrozen(ped, true) blip = createBlipAttachedTo(getJobMarker, 56) function hitMarkerWindow() window = guiCreateWindow(0.35, 0.35, 0.35, 0.30, "wood job", true) memo = guiCreateMemo(0.10, 0.20, 0.80, 0.4, "this is wood cutting job", true, window) accept = guiCreateButton(0.10, 0.75, 0.22, 0.14, "Accept Job", true, window) leave = guiCreateButton(0.35, 0.75, 0.22, 0.14, "Leave Job", true, window) close = guiCreateButton(0.60, 0.75, 0.22, 0.14, "Close", true, window) showCursor(true) guiMemoSetReadOnly(memo, true) end addEventHandler("onClientMarkerHit", getJobMarker, hitMarkerWindow) function clientClick() if source == close then guiSetVisible(window, false) showCursor(false) triggerServerEvent("cancelButton", resourceRoot, localPlayer) elseif source == accept then guiSetVisible(window, false) showCursor(false) triggerServerEvent("acceptWoodJob", resourceRoot, localPlayer) elseif source == leave then guiSetVisible(window, false) showCursor(false) triggerServerEvent("leaveJob", resourceRoot, localPlayer) end end addEventHandler("onClientGUIClick", root, clientClick)
  25. I am new to Mtasa scripting. May I know what is Root and Source and in what situations they are used?
×
×
  • Create New...