Leaderboard
Popular Content
Showing content with the highest reputation on 21/10/16 in all areas
-
A while ago we had published a release candidate build for the upcoming release for you folks to test. This phase went fine, so we feel that we are now ready to present you with the new stable version of the mod - Multi Theft Auto: San Andreas 1.5.3! Just like before, this is an update for our current stable version series - MTA:SA 1.5. Contrary to this definition, it is rather a huge update which contains mostly smaller changes, but makes up for it with the amount of them. A lot of effort was put by @Jusonex and @sbx320 into cleaning the code and reorganizing the build system, both of which should make it easier for us to maintain MTA:SA's code base and simplify the compilation procedure. However, during the above mentioned RC testing phase we decided to revert some of the code clean-up changes and leave them for a future release due to problems they were causing. We feel it will be better that way as some of these changes simply need more work as they affect a lot of the code base, making it harder to pinpoint other issues that might be discovered. In the meantime, @ccw and @darkdreamingdan had worked on fixing bugs reported by the community. We also had updated several dependencies (third-party components which are used in our mod), including a bunch of utility libraries (such as sqlite, zlib, libpng or libjpeg) and the CEF (Chromium Embedded Framework) components. The latter especially is an important change which we had explained further in a separate post and also summarized briefly below. This update will be slightly troublesome for some of our players who are still using Windows XP and Windows Vista (which is, to be honest, a rather small amount). Regular 1.5.3 build will not work for such users, so we had prepared a legacy build just for them. Furthermore, such users need to be prepared that at some point we might drop support for Windows XP and Windows Vista for our future releases. Please read this post to learn more about this change and its consequences. Since the build system was reorganized, a lot of smaller changes which were originally made for 1.6 were also introduced in this version (as long as they were not breaking the compatibility), making it actually one of the biggest releases we have ever made (and also sort of a bridge between 1.5 series and the then-upcoming 1.6 release). You can check the list below for some of the most interesting changes, but we really recommend checking full lists of changes to check whether the feature or function you have always wanted is already available in this release: Added support for German Steam version of GTA:SA (thanks to Lakota, Mario and @Sh4dowReturns for feedback) Improved streaming of low LOD objects and increased limits Multiple popular crashes were fixed Code cleanups and improved internal error logging MTA:SA will now try to use the native screen resolution when first launched Fixed desktop resolution when minimizing with fullscreen borderless window mode Added client resource files path info to Advanced tab in Options window Added icon for Windows server executable and digitally signed the CEFLauncher executable New scripting functions: canBrowserNavigateBack(), canBrowserNavigateForward(), navigateBrowserBack(), navigateBrowserForward() and reloadBrowserPage() (developed by mabako); createTrayNotification() and isTrayNotificationEnabled() (developed by Necktrox); also resizeBrowser(), fileGetPath(), setVehicleWindowOpen() and more... Tweaks to dbQuery()/dbExec(), fileRead(), addDebugHook() and more... Fixed setBrowserAudio() not muting the sound correctly on some websites e.g. YouTube Fixed setCameraTarget() calculation (thanks to lex128) setVehiclePlateText() now works with any kind of vehicle, including motorbikes (thanks to lopezloo) Added blend parameter for setPedAnimation() (thanks to lex128) Added support for objects and weapons in ped damage events (thanks to lopezloo) Water elements are now limited to a specific dimension Fixed sniper scope disappearing after killing a ped (thanks to lopezloo) Fixed MTA sometimes not loading custom textures Fixed MTA slowly updating position of attached elements Security and performance tweaks for CEF Fixed CEF popups (e.g. <select> boxes) not being rendered correctly Added option to block server admins who login with an unrecognized serial Added duplicate log line filter for script debugging Fixed a connecting player being able to block resources from starting Tweaked logic of client resource file validation Added server logging for redirectPlayer Tweaks for admin, missiontimer, race, runcode and webbrowser resources (thanks to Dutchman101, Einheit-101 and PhrozenByte) Added map backups for Map Editor and changed its default fps limiter setting value from 36 to 50 (thanks to AleksCore for the latter) Removed the no longer needed VS2008 redist package from the installer ...and much more! A complete list of changes can be found here (recommended read) and here (incomplete, from r7816 upwards). List of changes to the resource pack can be found here (starting from and including Feb 18, 2016 upwards). Please be advised that UltraThing and older versions of ENB series mods are blocked in MTA:SA 1.5.3 due to their incompatibility with the MTA:SA web browser components. If you want to use ENB mod in 1.5.3, please update it to a newer version if your current one does not work. If, on the other hand, you want to use UltraThing mod in 1.5.3, you will not be able to do it anymore - sorry for that just like above - please update it to a newer version (v0.29 or above). Want to download MTA:SA 1.5.3? Click here to download the build for Win 7+. Looking for a legacy build for XP/Vista? You can download it here. Or you can click here to go to our home page. Once there, click the Download button at the top center of the page, then choose your build and you are set. Linux server packages are also available. This version is backwards compatible with our older 1.5 releases, but we still encourage everyone to update their clients and servers ASAP to ensure, that they benefit from bugfixes, security updates for CEF, performance tweaks or other improvements. We would like to thank the following community members for their contributions to the MTA:SA source code, resources or feedback for this release: Aboshanab, AleksCore, braydondavis, Dutchman101, Einheit-101, Lakota, lex128, lopezloo, mabako, Mario, Necktrox, PhrozenByte, qaisjp, rafalh, @Sh4dowReturns, zneext (Have you contributed to MTA:SA 1.5.3's or 1.6's source code/resources pack but were not mentioned in the above list? PM @jhxp with a link to your contribution and you will be added) We hope that you will enjoy this release. Also, please keep in mind that if you encounter a bug or a problem which was not present in previous versions, you can report it to our bugtracker. --MTA Team5 points
-
3 points
-
You can do it like this. local myX, myY = 1280, 1024 -- The resolution you've used for making the guis local sX, sY = guiGetScreenSize() -- The resolution of the player local gX, gY, gW, gH = 500, 500, 250, 50 -- The size of the image obtained from the guieditor with my resolution 1280 1024 local rX = gX / myX -- (0.3906) We obtain the relative position, for making it equal in all screen resolutions local rY = gY / myY -- (0.4883) local rW = gW / myX -- (0.1953) local rH = gH / myY -- (0.0488) local aX = sX * rX -- Now we multiply the relative position obtained previously by the client resolution for having an absolute position from the client screen local aY = sY * rY local aW = sX * rW local aH = sY * rH dxDrawImage( aX, aY, aW, aH, "image.png" ) -- Now you know what you have to do, so you can make it smaller by making the calculations directly.2 points
-
2 points
-
@koragg the mod worked fine for me right after updating 1.5.2 to 1.5.3. Didn't get any prompts about missing DLL file when I've tried to start it. So likely it's a machine specific problem rather than a global one.2 points
-
Вы вообще понимаете, что в вызове connection вы каждый раз создаёте НОВОЕ подключение к БД? А что происходит со старым - не ясно. Во-вторых, оператор двоеточия служит только для вызова функций (для скрытой передачи первого аргумента), использование : без () это синтаксическая ошибка в Lua. В третьих, что делает у вас local db:exports["mysql"]? Чего вы от неё ожидаете? Проблема не в MySQL и не в экспортах. Проблема в банальном незнании даже основ Lua. Чем не устраивает просто использование exports.mysql:connection()?2 points
-
Awesome update guys! Especially thanks to @ccw @darkdreamingdan @Jusonex @qaisjp @Necktrox @lopezloo @Dutchman101 and everyone else involved with helping with/reporting MTA bugs2 points
-
بالفعل اخر يوم بالتوب وحبيت اهدي عناد حاجة فسويت تحويل لكل الاعبين وتحويل للي يدخل يوم شفت انة صار فية 50 حولتهم واللي يدخل يتحول الروم مافية مودات روم عادي بس اضافات بسيطة وبينتهي الاشتراك2 points
-
C++ obviously. However, there were some changes in the resources pack which were just Lua and whose authors were also credited for them in the news post. It should work fine.2 points
-
2 points
-
addEvent("onFlip", true) addEventHandler("onFlip", root, function() local veh = getPedOccupiedVehicle(client) if veh then if getPlayerMoney(client) >= 1500 then if not getElementData(client, "isBuyFlip") then takePlayerMoney(client, 1500) local rx, ry, rz = getElementRotation(veh) setElementRotation(veh, 0, 0, rx > 90 and rx < 279 and rz + 180 or rz) setElementData(client, "isBuyFlip", true) setTimer(function(player) setElementData(player, "isBuyFlip", false) end, 5000, 1, client) outputChatBox("#555555 [ ShopSystem ]#999999 You Have Been Bought Flip", client, 255, 255, 255, true) else outputChatBox("#555555 [ ShopSystem ]#999999 Wait 5 Seconds To Buy Flip !", client, 255, 0,0, true) end else outputChatBox("#555555 [ ShopSystem ]#999999 You don't have enough money !", client, 255, 0,0, true) end else outputChatBox("#555555 [ ShopSystem ]#999999 You Are Not In Vehicle", client, 255, 0, 0, true) end end)2 points
-
Данный урок предполагает, что вы уже знаете, что такое MySQL, как это работает и зачем это нужно, если же нет - ознакомитесь с данным уроком и вернитесь сюда! Цель данного урока - донести до вас некоторые вещи, которые вы, возможно, не понимаете или даже не задумывались о них. Немного теории MySQL - свободная реляционная система управления базами данных. Для работы с базой используется язык структурированных запросов(он же SQL). Более подробную и интересующую Вас информацию об SQL, Вы сможете найти на просторах интернета. Мы же поговорим о ключевых моментах работы с MySQL. SQL имеет 4 основных оператора для манипуляции с данными. SELECT - выбор данных, удовлетворяющих заданные условия. INSERT - добавление новых данных. UPDATE - изменение существующих данных. DELETE - удаление указанных данных Я не буду рассказывать вам о существующих типах данных MySQL, как создавать или удалять таблицы, я лишь хочу поделиться с вами ключевыми вещами, которые помогут вам оптимизировать работу вашего сервера и уменьшить нагрузку на него. Рассмотрим на основе примера В качестве примера для данного урока будет использоваться таблица с названием players, имеющая следующие столбцы: `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `surname` varchar(255) NOT NULL, `age` tinyint(3) NOT NULL, `adminLevel` tinyint(3) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) Тут я думаю все понятно, никаких проблем быть не должно. Для примера рассмотрим несколько запросов. Получаем всех игроков: SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` Получаем игрока с конкретным id: SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` WHERE id=117 Получаем всех игроков, имя которых равно какому-то конкретному значению: SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` WHERE name="Bobby" Получаем первых 10 игроков, возраст которых равен 19 лет: SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` WHERE age=19 LIMIT 10 Получаем всех игроков, возраст которых больше или равен 18 годам: SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` WHERE age >= 18 Ну тут все просто, пришло время рассмотреть все на основе конкретных примеров и указать ключевые особенности. Неправильный выбор функции для формирования запроса Это первая и наиболее часто встречающаяся ошибка, которую я вижу в коде различных разработчиков. Для формирования запроса к MySQL в МТА существует 2 функции, а именно: dbExec и dbQuery. Обе функции выполняют запрос, но их главная особенность заключается в том, что dbQuery возвращает какой-либо результат и тем самым занимает оперативную память сервера, а dbExec нет. Очень часто разработчики забывают использовать dbFree после запроса, для создания, редактирования или удаления какой-то записи. Рассмотрим на основе простого примера создания нового пользователя: local Name = "Bobby" local Surname = "Raily" local Age = 23 dbExec(dbConnection, "INSERT INTO `players` (name, surname, age) VALUES(?, ?, ?)", Name, Surname, Age) Опять же, все просто, сформировали простой запрос, создали новую запись в таблице players с заданными значениями. Можно, конечно, реализовать это с помощью dbQuery, но обязательно не стоит забывать про dbFree! Казалось бы, а что такого? Но все дело в том, что если у вас на сервере зарегистрируется большое количество игроков, то это порядком забьет память ненужной ерундой, проще говоря мусором, который хранить на сервере нет никакой необходимости. local Name = "Bobby" local Surname = "Raily" local Age = 23 local Query = dbQuery(dbConnection, "INSERT INTO `players` (name, surname, age) VALUES(?, ?, ?)", Name, Surname, Age) dbFree(Query) Я надеюсь, что вы четко и ясно уяснили для себя этот пункт, на это стоит обратить особое внимание. Некорректное использование dbQuery для получения результата запроса Очень часто вам необходимо получить какие-то данные из базы данных. В этом нам помогают dbQuery и dbPoll. Если внимательно посмотреть на синтаксис функции dbQuery, то вы увидите, что в качестве первого необязательного аргумента она принимает callback функцию. Что же это такое и зачем это нужно? Я настоятельно рекомендую вам как можно внимательнее и ответственнее подойти к этому вопросу, т.к. многие разработчики до сих пор не до конца уловили суть данного аргумента и не понимают из-за чего происходят "фризы" во время работы того или иного скрипта. Предположим, что у нас зарегистрировано 100 000 уникальных игроков(для крупного проекта - вполне себе реально, но мы рассматриваем все в теории). Нам необходимо получить список всех имеющихся игроков. Вы должны понимать, что это не произойдет моментально, в любом случае на данную операцию будет затрачено какое-то количество времени. Рассмотрим два примера, использование запроса без callback функции и с ней соответственно: local Players = dbPoll(dbQuery(dbConnection, "SELECT * FROM `players`"), -1) for Index, PlayerData in ipairs(Players) do print(PlayerData.name) end function CallbackFunction(qh, tag, score) local Players = dbPoll(qh, 0) for Index, PlayerData in ipairs(Players) do print(PlayerData.name) end end dbQuery(CallbackFunction, dbConnection, "SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players`") Время, занявшее на выполнение данного запроса, составило 489 мс. Так в чем же характерная особенность между первым и вторым способом? Особенность заключается в том, что пока выполняется получение данных из базы первым способом, то работа нашего сервера приостановиться на время, которое необходимо для выполнения данного запроса, что может негативно повлиять на всех игроков, в результате могут возникнуть такие вещи как фризы, рассинхронизация и т.д. Поэтому вы четко должны понимать для себя нужно вам это или нет. Если же вам необходимо, чтобы работа сервера была приостановлена на время выполнения запроса - используйте первый вариант, если же нет - второй. Если же вы до этого имели опыт с другими ЯП, то вероятнее всего понимаете, что такое синхронное и асинхронное выполнение. Первый вариант - это синхронное выполнение, второй - асинхронное. Выполнение лишней работы посредством Lua Так же очень часто наблюдаю картину, когда многие разработчики выполняют лишнюю работу, а именно предпринимают лишние действия, которые можно было сформировать в результате SQL запроса. SQL существует довольно большое количество времени и за это время овладел всеми необходимыми функциями, операторами и прочими вещами для формирование корректного запроса. К примеру мы хотим получить id всех игроков, adminLevel которых выше или равен 2. Как видно из запроса - мы сразу же получаем список игроков, уровень которых равен или больше 2 function CallbackFunction(qh, tag, score) local Players = dbPoll(qh, 0) for Index, PlayerData in ipairs(Players) do print(PlayerData.id) end end dbQuery(CallbackFunction, dbConnection, "SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` WHERE adminLevel >= 2") Но иногда мне приходится видеть, как некоторые разработчики получают список всех игроков и начинают проверь их adminLevel посредством Lua, что само по себе не имеет никакого смысла, т.к это выполнение лишней работы. function CallbackFunction(qh, tag, score) local Players = dbPoll(qh, 0) for Index, PlayerData in ipairs(Players) do if PlayerData.adminLevel >= 2 then print(PlayerData.id) end end end dbQuery(CallbackFunction, dbConnection, "SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players`") Заключение Надеюсь, что вы не зря потратили свое время и подчеркнули для себя какие-то полезные вещи, которые в последствии помогут вам при разработке собственного игрового режима или мода. Если же у вас остались какие то вопросы или вам что-то непонятно - вы можете оставлять свои вопросы в данной теме.1 point
-
Hice un script para automatizar el proceso de instalación de un servidor MTA en linux, con sistema operativo Debian de 64 bits. Primero deben loguear en su consola SSH y introducir el siguiente comando: sudo wget -O mta-install.sh http://mta.ggcommunity.net/scripts/mta-install.sh && sudo chmod +x mta-install.sh Luego introducimos este: sudo ./mta-install.sh Una vez hecho esto deberíamos tener el servidor encendido. Para visualizar la consola ingresamos esto: screen -r mtaserver Para salir de la consola sin apagar el servidor usamos esta combinación de teclas: CTRL + A + D Recuerden editar el ACL.XML y el MTASERVER.CONF en base a sus necesidades, siempre con el servidor apagado.1 point
-
السلام عليكم .. مين يذكر عضو اسمه فيسبوك .. وينه فجا اختفا من موقع يعرف شي عنه يكتب لنا اذا انت يا فيس بوك تشوف موضوع يا ريت ترد علينا .: )1 point
-
Let's say I create a DX window with a text label using my DXGUI. I then decide to add a button, then I'd like to use your guieditor since it's easy to use and gives me a visual representation on the fly. So if I draw for example a rectangle somewhere, I can right-click it and move it around or resize it. However, as soon as I move it on top of one of my custom DX elements - if I try and right-click the rectangle, I won't get the option to manipulate the rectangle. But rather a window to load code from the element underneath the cursor. Edit: Recorded a short video to showcase what's going on.1 point
-
استخدم دوال الوقت مثل getTickCount, getRealTime تخزنها بطريقة ما وترجع تقارنها اكثر من مرة عشان تتأكد من الوقت الآن مر على الوقت المخزن 30 يوم1 point
-
1 point
-
الف مبروك لنصور استحقها بجدارها يومياً متواجد وعقبال المتميزين في القسم العربي1 point
-
Well, I didn't work on my resource for a long time, but I can also link to newer resources.1 point
-
هذي تحطك باول 7 سيرفرات في المتصفح حق الام تي اي اليوم الاول بتكون رقم 7 والثاني 6 وعلى هذا الموال الى اليوم الاخير توصل للمركز الاول واعتقد انك عارف اذا كنت من اول السيرفرات انة يدخلون لك لعيبة كثير بسبب مركز السيرفر وهذي تحجز ويعطيك اقرب موعد عجبك تدفع 4 يورو بالبايبال وماتقدر تغير السيرفر الاسم حقة قبل يومين من يكون بالتوب واشوفها فكرة ناجحة للي يبي زوار بالنسبة لشبكة الانترنت يارجل مادري عنهم لي فترة هاليومين شغال خفيف1 point
-
ايش هذا + خذوا نظرة هنا http://24.ae/article/289147/59/هجمات-تطيح-بنصف-شبكة-الإنترنت-العالمية1 point
-
@midas it was disabled due to abuse. You can PM a forum administrator if you want to request an username change.1 point
-
1 point
-
شكرا على رد بالاضافة غير انه لا يستطيع تعديل على الاوبجكت الخاص بيك لا يمكن استخدامه الى على سيرفرك فقط تحياتي لك1 point
-
1 point
-
1 point
-
ض1 هذا من كثر السكربتات الخاصة بالمخدرات لا للمخدرات !!! < ركز انت - هو كاتب .... النبي .... < صلى الله عليه وسلم على حسب علمي بالنحو .النبي مفعول به. يعني الله صلى عليه يعني الله < لفظ الجلالة >فاعل1 point
-
It is in plain English. Anyone who can read would know that the resource is dependent on CIThelp but it's not running.1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
First. MTA developers rock for keeping this mod alive for more than 10 years. Kudos @ccw @Jusonex @sbx320 @darkdreamingdan @all other (former) devs.1 point
-
1. Оптимизация. Лишняя трата ресурсов (сначала БД будет составлять список полей для запроса). 2. Улучшает читабельность кода - сразу прослеживается структура таблицы. 3. Избавит вас от ошибок типа "удалили поле в бд, а в коде оно где-то используется и не заметили". 4. Таблица может расширяться, это приведёт к передаче не нужных данных.1 point
-
Никогда не используйте SELECT * в своих проектах, всегда указывайте реально нужные поля для выборки.1 point
-
السلام عليكم اخواني اليوم ابي اعلن عن بداية الرسمية لــ مشروع BusinessLifeRP وهو مشروع كبير جدا و فيه ميزات عدة مثل الشركات و المصانع و سوق الاسهم .... و اكثر بأذن الله و راح نصدر السيرفر Beta بعد اشهر من الان عشان نشوف ردة فعل الاعبين و راح نغلق و نفتح السيرفر الرسمي اللي راح يكون اكبر و أحسن منه ان شاء الله و مشروعنا راح يكون من الاول للأخر مبرمج من طرف مبرمجينا و ماراح نستعمل بأذن الله اي سكريبت موجود في اللعبة نتمنى منكم دعم الفكرة ولوا بـ كلمة الموقع الرسمي BusinessLifeRP.com لدينا مبرمجين لاكن نحتاج لاكثر اذا كنتم مهتمين ارسلوا رسالة او ضعوها في الموقع و شكرا1 point
-
iKSApro يالزبدة انت صاحب سيرفر MTA-AR ? اللي فيه نضام الدولة .. انا الصراحة سرقة منه بس مو السكريبتات بس شوي أفكار و بعد ماغلقتوا انتضرت اشهر اشوفكم ماضهرتوا بدأت مشروع و قلت يلا نخليه للكل انا الصراحة معجب بسيرفرك بس الصراحة فيه كثير لاق و غير للعرب بس سيرفرنا ان شاء الله لكل الاشخاص بس والله مستعد اتعاون معاك نخليه للعاللم سكايبي jonboukraa54 + انا لما دخلت سيرفركم بدأت اجرب البيغات المحتملة و جمعت 2 مليار في دقيقتين1 point
-
Hi @Dutchman101, We already have a colshape for the cinema itself, we could easily implement such a feature if we wanted to. I'm currently working on a new version (rewritten from scratch) with custom gridlist and new features. I'll see about implementing such a thing but again, I could write that within a couple minutes. Thank you, though!1 point
-
يعني انت الحين لما تعدل ع اوبجكت وتخلص منه , طبعا لما اقول تعديل اقصد ببرامج خارج اللعبه مثل " التكسد وورك شوب " وهكذا . طبعا بعد التعديل بيظرلك الملف الابيض حق التكسد , ولما يجي شخص يمديه ياخذ هالملف ويعدله زي ماعدلته انت , ولكن مع الطريقة ذي ماحد بيقدر يعدل ع الملف حق التكسد , زي فكرة السكربتات بالضبط . good luck1 point
-
1 point