Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 29/05/22 in all areas

  1. Hello MTA developers, today I have added the Linux version of the FileSystem 2.0 release. I am sorry for the delay - caused by unnecessaringly technical and motivational factors - but this release is the most stable Linux version yet. It is made possible by directly linking to the deathmatch.so Linux module so that fileSystem.so does use the actual Lua implementations exported by MTA. I was unable to get a LuaRocks version ready because I do not understand how to integrate my custom Code::Blocks build system into it. If there is sufficient interest and straight-forward help I might deliver that too. Wouldn't want to disrespect the hard-effort by qaisjp and co. Only AMD 64bit is supported. Hit me up if you need any other platform. Download it here: https://green-candy.osdn.jp/external/releases/fileSystem_2_0_linux.zip Have fun!
    5 points
  2. 3 points
  3. Hi, we do have some server protection tools available - I can take a closer look if you PM me your server IP address, its full name, and the date it was created
    3 points
  4. Você pode postar o algoritmo do script para que possamos ajudar?
    2 points
  5. Hello dear Multi Theft Auto Community! Today I'm presenting you my latest DD/FDD map that I have made with my friend Junky. It has a low but effective Cyberpunk atmosphere to feel you like you playing in the future. I didn't add too many objects don't force your pc. I hope you like our new map "Cyberpunk 2078!" ! You can download the map below. Map download https://community.multitheftauto.com/?p=resources&s=details&id=18724 best regards, Nebla
    2 points
  6. Bun venit în cadrul secțiunii oficiale a comunității românești din cadrul platformei Multi Theft Auto! Acest topic își propune să centralizeze cele mai importante informații și adrese de care ai nevoie pentru a naviga și interacționa cu românii aflați deja în comunitate. Cuprins: Puncte de contact în comunitatea românească; Unde pot interacționa cu comunitatea?; Adrese utile și recomandări. Puncte de contact în comunitatea românească @Vinyard - Scripting Moderator & Romanian Section Moderator; @Tekken - Helper. Ce este un Helper? Un helper este un membru al comunității MTA care își dedică parte din timp pentru a ajuta alte persoane. Aceștia sunt recunoscuți de către echipa MTA pentru comportamentul prietenos și sprijinul acordat jucătorilor pe teme ce vizează partea de scripting, probleme tehnice sau alte asemenea. Află mai multe despre acest rol și cum poți deveni și tu Helper accesând acest subiect. Atunci când întâmpini o problemă, asigură-te că folosești funcțiile specifice prevăzute în regulamentele platformei MTA! Unde pot interacționa cu comunitatea? În prezent, folosim această secțiune de pe forum, însă avem și o secțiune românească pe server-ul oficial de Discord*: https://discord.com/invite/mtasa Acestea sunt singurele canale oficiale ale comunității românești de MTA! Orice alte surse, secțiuni sau alte asemenea reprezintă servicii/comunități neoficiale, iar conținutul acestora nu reprezintă poziția oficială a platformei MTA. * Accesul în cadrul secțiunii românești de pe Discord presupune acceptarea regulamentului din canalul #rules-ro. Adrese utile și recomandări Pentru probleme și întrebări privind partea de scripting, poți găsi asistență în secțiunea de Scripting pe forum, respectiv în canalul #ro-suport de pe Discord; În această secțiune de forum poți găsi un șir de funcții utile adunate în timp de către membrii comunității! Pentru cereri și lansări de resurse, hărți, modificări și alte asemenea, poți accesa secțiunea de Resurse, moduri și mape pe forum; Pentru promovarea comunităților românești de MTA, accesează secțiunea Servere pe forum, respectiv canalul #ro-reclame de pe Discord; Pentru probleme legate de MTA client/server (inclusiv Linux), poți găsi asistență în secțiunea de Probleme legate de MTA Client/Server, respectiv în canalul #ro-suport de pe Discord; Pentru orice alte discuții privind platforma Multi Theft Auto, poți accesa secțiunea General, respectiv canalul #ro-general de pe Discord. Asigură-te că respecți în permanență regulamentele și prevederile de pe forum (inclusiv cele specifice anumitor secțiuni), cât și cele de pe Discord.
    2 points
  7. This MTA module is about total filesystem access to your MTA server. You can find it's documentation here. It supports the Windows and Linux operating systems, each with different and specialized details (path handling, OS calls, etc). Contains many neat features such as memory-mapped files, stream copy helpers, direct binary-encoded writing and reading API, etc. The module has got a very long history (used in Scene2Res, Magic.TXD). It is very strongly unit tested. If you like this module then you can use it's C++ API for even greater freedom. Current version: 2.0 Source code location (Module-specific): Source Tree: blueMods/fileSystem/ (head) - green-candy (svn) - green-candy - OSDN Source code location (C++ Library): Source Tree: FileSystem/ (head) - eirfs (svn) - Eir FileSystem - OSDN Download (Win32): https://green-candy.osdn.jp/external/releases/fileSystem_2_0_win32.zip Download (Linux): https://green-candy.osdn.jp/external/releases/fileSystem_2_0_linux.zip
    2 points
  8. Locking this pending further investigation.
    2 points
  9. Hey We are investigating a AC #4 GHQL kick message that some players are experiencing as of June 14. If you are unable to play because of this, thank you for your patience while our teams work to find more information Fixed: restart MTA 3-4 times
    2 points
  10. you're welcome,I am happy that you have re-entered the game after your problem has been resolved,I'm ready for any kind of help, just give me a call..
    2 points
  11. You coud do something like this in a client script: local DAMAGE_AREA = createColPolygon(-1, 4, 5, 8, 9, 4, 5, -2, -1, 4) -- colshape coordinates here local DAMAGE_DELAY = 3000 -- miliseconds between damage hits local DAMAGE_AMOUNT = 5 -- health points to lose local damageTimer local function takeDamage() -- cancel damage timer if dead if isPedDead(localPlayer) then if isTimer(damageTimer) then killTimer(damageTimer) damageTimer = nil end return end -- take damage (this may kill the player) setElementHealth(localPlayer, math.max(0, getElementHealth(localPlayer) - DAMAGE_AMOUNT)) outputChatBox("Ouch", 255, 56, 56) -- you can trigger some visual effects here (if you want) end addEventHandler( "onClientColShapeHit", DAMAGE_AREA, function (theElement, matchingDimension) if (theElement ~= localPlayer) then return end if not (matchingDimension) then return end -- take damage instantly (if you want) takeDamage() -- set damage timer damageTimer = setTimer(takeDamage, DAMAGE_DELAY, 0) end) addEventHandler( "onClientColShapeLeave", DAMAGE_AREA, function (theElement, matchingDimension) if (theElement ~= localPlayer) then return end if not (matchingDimension) then return end -- cancel damage timer if isTimer(damageTimer) then killTimer(damageTimer) damageTimer = nil end end)
    2 points
  12. Acest subiect conține părți traduse și adaptate ale postării originale ce poate fi vizualizată aici. Toate drepturile de autor asupra conținutului sus-numit revin autorului postării originale. Ce este un Helper? Un helper este un membru al comunității MTA care își dedică parte din timp pentru a ajuta alte persoane. Aceștia sunt recunoscuți de către echipa MTA pentru comportamentul prietenos și sprijinul acordat jucătorilor pe teme ce vizează partea de scripting, probleme tehnice sau alte asemenea. Aceștia servesc drept modele de urmat pentru restul comunității MTA și sunt ușor de abordat pentru sfaturi generale, rezolvare de probleme sau îndrumări. Un helper poate muta subiecte în secțiunile corecte, însă nu poate oferi sprijin cu moderarea decât atunci când ocupă și funcția de Moderator. Aceștia pot fi identificați prin rangul unic și numele colorat. Cum pot deveni Helper? Fiecare Helper este recrutat doar prin invitație. Nu există nici o modalitate de a aplica pentru acest rol, însă echipa MTA este în căutare permanentă și îi alege pe acei membri care oferă sfaturi utile și serioase pe parcursul unei perioade îndelungate de timp. Pentru a facilita comunicarea între echipa MTA și Helpers, aceștia din urmă beneficiază de propriul canal privat pentru a comunica și discuta probleme generale despre forum și Discord. Pentru a deveni Helper, este obligatoriu să aveți un cont pe acest forum. Nu există cerințe privind activitatea. Având în vedere că acest rol implică contribuții la nivelul întregii comunități MTA, competențele lingvistice în limba engleză (cel puțin scriere, citit și înțelegere) sunt o necesitate. Sfaturi utile Atunci când se pune problema ocupării unui rol de Helper, accentul se pune, printre altele, asupra activității generale și contribuțiilor în ansamblu (atât pe forum, cât și pe Discord), dar și asupra prezenței și reputației generale la nivelul comunității MTA. Contribuții precum următoarele (dar fără a se limita doar la acestea) sunt mereu un loc bun de început pentru a demonstra interesul și valoarea privind sprijinirea jucătorilor și, ulterior, pentru a deveni un membru recunoscut de către echipa MTA și a ocupa rolul de Helper: folosirea funcțiilor de raportare pentru a semnala postări și subiecte care încalcă regulamentele la nivelul întregului forum; participarea în diverse discuții și oferirea sfaturilor utile și serioase celor care solicită ajutor (aveți grijă, totuși, să nu moderați din umbră); dovedirea unui interes și inițiative pentru a face MTA mult mai accesibil în propria limbă (traduceri prin Crowdin, publicarea de ghiduri și tutoriale proprii etc.)
    2 points
  13. حتى الجيل الجديد اذا قعدت مع واحد منهم ربع ساعة تبغى تقسم راسه بفاس
    2 points
  14. awesome, thanks guys. that was really helpful
    2 points
  15. The global environment (the table holding the global variables) can be accessed using variable _G. local playerName = getPlayerName( player ) local variableName = "Timer"+playerName _G[ variableName ] = setTimer ( function() end, 1000, 0 ) However, building variable names is usually not recommended for generic manipulation of data. Instead of putting the timers into global variable space, you can create your own table specifically for timers: -- at the top of the script playerTimers = {} -- then, somewhere in the code local playerName = getPlayerName( player ) playerTimers[ playerName ] = setTimer ( function() end, 1000, 0 ) But I suspect that's still not exactly what you want to do. Should the timer be linked to player's name, or to the player? If it's linked to the player's name, then if the player changes their name during the game, playerTimes[playerName] will no longer refer to the timer created before the change. If that's not what you want, you can bypass the retrieval of the name and just use the player element directly as table key: -- at the top of the script playerTimers = {} -- then, somewhere in the code playerTimers[ player ] = setTimer ( function() end, 1000, 0 )
    2 points
  16. السلام عليكم ورحمة الله تعالى وبركاته أخباركم جميعاً عساكم بخير ------------------------------------------- اليوم جيت أتكلم عن الأشخاص بعض الكلمات المنتشرة كـ "مزح " وهي محرمه ومنتشره للأسف -------------------------------------------- أولاً: التحريف بأسماء الله عز وجل مثل " واللهي " , " سبهان الله " , "اللههه" للأسف هذا الشي منتشر عند الناس و يجب كتابة لفظ الجلالة بالشكل الصحيح ---------------------------------------------- ثانيا: سب الدهر (والعياذ بالله) مثل يلعن الوقت الي إحنا فيه(استغفر الله) حرام ولا يجوز لأن الله هو الدهر عن أبي هريرة رضي الله عنه قال: قال رسول الله صلى الله عليه وسلم: قال الله تعالى: يؤذيني ابن آدم يسبّ الدّهر وأنا الدّهر أقلّب الليل والنهار -------------------------------------------- والسلام عليكم ورحمة الله وبركاته
    2 points
  17. Moving this to the Arabic section.
    1 point
  18. As indicated on your previous appeal we are not looking to remove this ban.
    1 point
  19. It was good working with you, I hope you do well in your project.
    1 point
  20. We have an announcement to make regarding certain services and technologies, like "Cloud Gaming" platforms and various cloud / cloud VM and hypervisor based services and software. Unfortunately, the majority of such services can no longer be used with MTA starting today. After observing a growing trend of abuse, such as server ban evading (serials related) we have enabled the same type of security, known as MTA serial verification - which usually applies to the most common consumer VM software - to all VM types and cloud services that we know of. This means that the procedure from https://updatesa.multitheftauto.com/sa/trouble/?tr=serial-validation must be followed on all relevant services, not just the aforementioned. Because most cloud & VM hosting services won't provide users access to the host machine (that hosts the VM), we expect that most "cloud gaming" users will no longer be able to play MTA using said service. Not that MTA is an attractive game to play in cloud gaming though, we advise you to use MTA like a normal user (on your own PC) and understand that we care about servers being able to reliably ban players. Cloud gaming, for instance.. would constantly offer you a new so-called environment, allowing infinite serial swaps, making you hard to ban. It's possible for some people still being able to use relevant services, as these measures will only apply to newly generated MTA serials (not retroactively). This is intended. This topic is also relevant to the "There was a problem validating your serial" error and "Banned by MTA" with reason PROHIBITED VM TYPE / SECURITY VIOLATION
    1 point
  21. That looks cool, keep it up Nebla
    1 point
  22. very good idea my friend, making a map like Cyberpunk would be a very enjoyable work,Good luck
    1 point
  23. The ban expires in 10 hours - you should be able to verify this in default MTA client by connecting to any server. Keep cheats and other malicious software off your device while playing MTA and you should be good to go
    1 point
  24. you could achieve this with timestamp if i'm not wrong
    1 point
  25. Restart MTA 3-4 times and you should be good to go, sorry for any inconvenience caused by this
    1 point
  26. Hello ,Disable antivirus during installation,missing file kicks you out of game due to installation
    1 point
  27. @RaxzenThe wiki says: Custom weapons are weapons you create with https://wiki.multitheftauto.com/wiki/CreateWeapon that can't be held by a player/ped, and are in the world. What you would be looking for is a clientside version of this to set weapon ID properties for the client only, and not the whole server: ... but sadly it doesn't exist. There are some suggestions related to weapon properties, skill levels, etc in the Bug tracker here, which you can explore. I remember seeing a suggestion saying that setWeaponProperty should be able to take a player argument so it only applies to a certain player. I wish this was implemented already
    1 point
  28. your work is very nice, thank you, but I want to give some advice,For example, instead of placing random objects, you can reflect the real places in the world to the inner world of MTA. eg (USA,UK,DE,TR,FR) like the places of these countries, I have not seen a cartographer who made these, if you can do it, this could be a very interesting work. I wish you continued success
    1 point
  29. Thanks for the information, but please provide us with a MTADiag report so we can investigate further. You can find instructions on this in my earlier post.
    1 point
  30. Greetings. 1) No, you cannot create vehicles using only variables. I am sure that information from this table is taken in some other file and vehicles are created. (function: createVehicle) 2) I'm not very good at these things, but I'm good at my personal server
    1 point
  31. Hi, welcome to the forums. Please create a new topic properly. There is no need for a poll and you should state your problem rather than linking a google search.
    1 point
  32. Welcome to the forums. Your thread's been moved into the support section
    1 point
  33. predefined variable localPlayer doesn't exist serverside. You can direclty set the name as first argument, It'll send to root element by default, and so every players children. bool triggerClientEvent ( [ table/element sendTo = getRootElement(), ] string name, element sourceElement [, arguments... ] ) Set the sourceElement (3rd parameter), I suggest resourceRoot (the present resource). triggerClientEvent("eventName", resourceRoot) You can aim specific players by passing a table as first parameter (or loop). By the way be careful with your addEventHandler("onResourceStart", ...). Set getRootElement() (same as root predefined variable) will have for result to trigger the function everytime a resource is starting. You should rather use resourceRoot (for the actual resource). addEventHandler("onResourceStart", resourceRoot, createMinigunWeapon)
    1 point
  34. Hallo @Otto vn sakoa , ich habe ein Abstimmungssystem für dich, ich kann es mit dir teilen, wenn es dir gefällt, kannst du es zeigen, indem du meine Nachricht magst. setElementData(resourceRoot,"VotesYes",0) setElementData(resourceRoot,"VotesNo",0) setElementData(resourceRoot,"VoteStarted",false) setElementData(resourceRoot,"Question","") setElementData(resourceRoot,"voteYesLabelText","") setElementData(resourceRoot,"voteNoLabelText","") function createVote(playerSource) if getElementData(resourceRoot,"VoteStarted") == true then return end setElementData(resourceRoot,"VoteStarted",true) local accountName = (getAccountName(getPlayerAccount(playerSource))) if isObjectInACLGroup("user."..accountName,aclGetGroup("Console")) or isObjectInACLGroup("user."..accountName,aclGetGroup("Admin")) then triggerClientEvent("showCreateVoteGuiEvent",playerSource) end end addCommandHandler("createvote",createVote) function closeVote(playerSource) if getElementData(resourceRoot,"VoteStarted") == false then return end setElementData(resourceRoot,"VoteStarted",false) local accountName = (getAccountName(getPlayerAccount(playerSource))) if isObjectInACLGroup("user."..accountName,aclGetGroup("Console")) or isObjectInACLGroup("user."..accountName,aclGetGroup("Admin")) then accountNameTable = {} setElementData(resourceRoot,"VotesYes",0) setElementData(resourceRoot,"VotesNo",0) triggerClientEvent("closeVoteScoreGuiEvent",root) end end addCommandHandler("closevote",closeVote) accountNameTable = {} function voteYes(playerSource) if getElementData(resourceRoot,"VoteStarted") == false then return end local accountName = (getAccountName(getPlayerAccount(playerSource))) for key,value in pairs(accountNameTable) do if accountName == value then outputChatBox("You already voted.",playerSource) return end end accountNameTable[#accountNameTable + 1] = accountName setElementData(resourceRoot,"VotesYes",getElementData(resourceRoot,"VotesYes") + 1) triggerClientEvent("updateVoteYesEvent",root) end addCommandHandler("voteyes",voteYes) function voteNO(playerSource) if getElementData(resourceRoot,"VoteStarted") == false then return end local accountName = (getAccountName(getPlayerAccount(playerSource))) for key,value in pairs(accountNameTable) do if accountName == value then outputChatBox("You already voted.",playerSource) return end end accountNameTable[#accountNameTable + 1] = accountName setElementData(resourceRoot,"VotesNo",getElementData(resourceRoot,"VotesNo") + 1) triggerClientEvent("updateVoteNoEvent",root) end addCommandHandler("voteno",voteNO) function showVoteScore() Question = getElementData(resourceRoot,"Question") YES = getElementData(resourceRoot,"voteYesLabelText") NO = getElementData(resourceRoot,"voteNoLabelText") for i = 1,#getElementsByType("player") do triggerClientEvent("showVoteScoreGuiEvent",getElementsByType("player")[i],Question,YES,NO) end end addEvent("showVoteScoreEvent",true) addEventHandler("showVoteScoreEvent",resourceRoot,showVoteScore) function bindVoteKeys() bindKey(source,"F3","down","voteyes") bindKey(source,"F4","down","voteno") if getElementData(resourceRoot,"VoteStarted") == true then triggerClientEvent("showVoteScoreGuiEvent",source,getElementData(resourceRoot,"Question"),getElementData(resourceRoot,"voteYesLabelText"),getElementData(resourceRoot,"voteNoLabelText")) end end addEventHandler("onPlayerLogin",root,bindVoteKeys) function bindVoteStartup() for i = 1,#getElementsByType("player") do bindKey(getElementsByType("player")[i],"F3","down","voteyes") bindKey(getElementsByType("player")[i],"F4","down","voteno") end end addEventHandler("onResourceStart",resourceRoot,bindVoteStartup) Dieser Code befindet sich auf der server.lua-Seite function showVoteScoreGui(Question,Yes,No) guiSetText(voteQuestionLabel,Question) if string.len(guiGetText(voteQuestionLabel)) > 35 then guiSetPosition(voteQuestionLabel,0.35,0.17,true) elseif string.len(guiGetText(voteQuestionLabel)) < 14 then guiSetPosition(voteQuestionLabel,0.43,0.17,true) else guiSetPosition(voteQuestionLabel,0.4,0.17,true) end guiSetText(voteYesLabel,Yes..": "..getElementData(resourceRoot,"VotesYes")) guiSetText(voteNOLabel,No..": "..getElementData(resourceRoot,"VotesNo")) guiSetVisible(voteYesLabel,true) guiSetVisible(voteNOLabel,true) guiSetVisible(voteQuestionLabel,true) guiSetVisible(voteF3Label,true) guiSetVisible(voteF4Label,true) end addEvent("showVoteScoreGuiEvent",true) addEventHandler("showVoteScoreGuiEvent",localPlayer,showVoteScoreGui) function closeVoteScoreGui() guiSetVisible(voteYesLabel,false) guiSetVisible(voteNOLabel,false) guiSetVisible(voteQuestionLabel,false) guiSetVisible(voteF3Label,false) guiSetVisible(voteF4Label,false) end addEvent("closeVoteScoreGuiEvent",true) addEventHandler("closeVoteScoreGuiEvent",root,closeVoteScoreGui) function updateVoteYes() guiSetText(voteYesLabel,getElementData(resourceRoot,"voteYesLabelText")..": "..getElementData(resourceRoot,"VotesYes")) end addEvent("updateVoteYesEvent",true) addEventHandler("updateVoteYesEvent",root,updateVoteYes) function updateVoteNo() guiSetText(voteNOLabel,getElementData(resourceRoot,"voteNoLabelText")..": "..getElementData(resourceRoot,"VotesNo")) end addEvent("updateVoteNoEvent",true) addEventHandler("updateVoteNoEvent",root,updateVoteNo) function voteButtonAction() if source == voteButton1 then showCursor(false) guiSetInputEnabled(false) guiSetVisible(voteEdit1,false) guiSetVisible(voteEdit2,false) guiSetVisible(voteEdit3,false) guiSetVisible(voteButton1,false) guiSetVisible(voteButton2,false) setElementData(resourceRoot,"Question",guiGetText(voteEdit1)) setElementData(resourceRoot,"voteYesLabelText",guiGetText(voteEdit2)) setElementData(resourceRoot,"voteNoLabelText",guiGetText(voteEdit3)) triggerServerEvent("showVoteScoreEvent",resourceRoot) end if source == voteButton2 then showCursor(false) guiSetInputEnabled(false) guiSetVisible(voteEdit1,false) guiSetVisible(voteEdit2,false) guiSetVisible(voteEdit3,false) guiSetVisible(voteButton1,false) guiSetVisible(voteButton2,false) setElementData(resourceRoot,"VoteStarted",false) end end function createVoteGui() voteYesLabel = guiCreateLabel(0.4,0.2,0.3,0.05,"",true) voteNOLabel = guiCreateLabel(0.5,0.2,0.3,0.05,"",true) voteQuestionLabel = guiCreateLabel(0.4,0.17,1,0.05,"",true) voteF3Label = guiCreateLabel(0.445,0.95,1,0.05,"Press F3 to vote option 1.",true) voteF4Label = guiCreateLabel(0.445,0.97,1,0.05,"Press F4 to vote option 2.",true) guiSetVisible(voteYesLabel,false) guiSetVisible(voteNOLabel,false) guiSetVisible(voteQuestionLabel,false) guiSetVisible(voteF3Label,false) guiSetVisible(voteF4Label,false) voteEdit1 = guiCreateEdit(0.3,0.3,0.3,0.05,"Vote Question",true) voteEdit2 = guiCreateEdit(0.415,0.355,0.073,0.05,"YES",true) voteEdit3 = guiCreateEdit(0.49,0.355,0.073,0.05,"NO",true) guiEditSetMaxLength(voteEdit1,50) guiEditSetMaxLength(voteEdit2,10) guiEditSetMaxLength(voteEdit3,10) voteButton1 = guiCreateButton(0.305,0.355,0.05,0.05,"Accept",true) voteButton2 = guiCreateButton(0.36,0.355,0.05,0.05,"Cancel",true) guiSetVisible(voteEdit1,false) guiSetVisible(voteEdit2,false) guiSetVisible(voteEdit3,false) guiSetVisible(voteButton1,false) guiSetVisible(voteButton2,false) addEventHandler("onClientGUIClick",voteButton1,voteButtonAction,false) addEventHandler("onClientGUIClick",voteButton2,voteButtonAction,false) end createVoteGui() function showCreateVoteGui() showCursor(true) guiSetInputEnabled(true) guiSetVisible(voteEdit1,true) guiSetVisible(voteEdit2,true) guiSetVisible(voteEdit3,true) guiSetVisible(voteButton1,true) guiSetVisible(voteButton2,true) end addEvent("showCreateVoteGuiEvent",true) addEventHandler("showCreateVoteGuiEvent",localPlayer,showCreateVoteGui) fileDelete("gui_client.lua") Dieser Code befindet sich auf der Seite gui_client.lua. Ich hoffe, es wird für Sie funktionieren. <meta> <info type="script"/> <script src="gui_client.lua" type="client"/> <script src="server.lua" type="server"/> </meta> meta.xml
    1 point
  35. Change will only happen if people ask for it or someone decides to do it out of own will. I don't know if there's need to upgrade Lua version entirely. I know new functions & features can be added directly when needed. You can stay up to date with MTA Development:
    1 point
  36. ( السلام عليكم ورحمة الله , رمضان مبارك على الجميع ) حبيت اشارك معاكم مهمة بسيطة [ شوتر على شكل مهمة لسيرفرات الهجولة ] -: معلومات عن المهمة عند بدء المهمة يمكنك المشاركة فيها بالكتابة في الشات [ شوتر ] اطلاق صاروخ من المركبة بالضغط على زر الماوس اليسار [ Shift ] القفز بالمركبة بالضغط على يتم توزيع عنصر بساحة المهمة بشكل عشوائي عن ملامسته يرفع صحة المركبة صاحب اخر مركبة يحصل على مبلغ عشوائي صورة لساحة المهمة ( لتحميل المهمة من موقع اللعبة ) المود غير مشفر رمضان كريم
    1 point
  37. I managed to fix the error by installing ncurses5-compat-libs 6.2-1 from the AUR repository
    1 point
  38. That's overloading, mate. No such thing here on Lua, mate. But you could simulate that behavior as @Patrickputs it, and then proceed to redirect the arguments to a specific range of functions. local function OutputText(text) -- code end local function OutputTextToPlayer(text, player) -- code end local function OutputTextToPlayerWithColor(text, player, r, g, b) -- code end -- Patrick's suggestion. function Output(...) -- "magic parameter" for all local args = {...} -- put them into a table local length = #args if length == 1 then -- 1 parameter passed to function local text = args[1] OutputText(text) elseif length == 2 then -- 2 parameter passed to function local text, player = args[1], args[2] OutputTextToPlayer(text, player) elseif length == 5 then -- 5 parameter passed to function local text, player, colorR, colorG, colorB = unpack(args) -- or you can use unpack instead of indexing table one by one OutputTextToPlayerWithColor(text, player, colorR, colorG, colorB) end end
    1 point
  39. Dear MTA community, it is very likely that some of you have been following the recent fight between Take2/Rockstar Games against IP rights violators in the GTA community. I know that this is a very sensitive issue so I want to give you some legal advice about using scene2res safely from now on: If you are using scene2res to convert your GTA:SA map (original, TC, etc) into a MTA server format, then you must make sure to have the permission of all content creators before offering the game files on a public server. In our case this is most likely Rockstar Games/Take2 themselves. I cannot help you with content ID (very very complicated) so you have to act responsibly/in good faith. If you are creating scene2res converted maps for personal use (you are the only one playing on the server) then you have nothing to worry about. Generally I cannot recommend the use of scene2res on any servers anymore because it is too easy for the common user to get it wrong. Instead a new tool is required that would directly convert the game files from a rightful game installation itself. Every connecting MTA player would have to perform that conversion himself. This new and different process would be considered fair-use. I have been very clear on Twitter about this grave situation but here is a quick breakdown: the re3 / revc project are promoting the easy access to GTA compatible/reverse-engineered executables, so Rockstar Games/Take2 are very vigilant about removing their rightfully owned game files from the internet using DMCA. Respect other people's work, even if it comes from a big corporation. While it was questionable to upload game files in the past, Rockstar Games/Take2 could have acted under the assumption that only they could legally provide a GTA executable so they chose to allow many so-called "mods". Good luck and stay righteous! ?
    1 point
  40. What is a Helper? Helpers are regular members of the Community who dedicate some of their time to help others. They are recognized by MTA for standing out as friendly and helpful support for scripting, technical and other topics. Helpers serve as role models for the Community and are easily approachable for general advice, problem solving or pointing to the right direction. Helpers can move threads into the correct sections, but cannot assist with moderation, unless they are also a Moderator. They can be identified by their unique rank and colored name. How can I become a Helper? Helpers are recruited through invitation only. There is no way to apply for this role, however we are on constant lookout for, and pick members who provide solid, helpful advice over a longer period of time. To make communication easier between MTA Staff and Helpers, they have their own private channels to liaise and discuss general Forum and Discord issues. It is required to have a Forum account in order to become a Helper, but there are no activity requirements. List of Helpers Tekken Haxardous iDannz Cuervo_fi Paweł The_GTA Reyomin Vampire
    1 point
  41. Recently @Tut and I were experimenting about lightmapping with a light map and a shader (Very different from vertex lighting) and i want to share our experience with that. Initially we only wanted to make the 2nd UV channel work with objects but then i remembered about @Ren_712 lightmapped "Dust" map from counter strike and i wanted to re-create that effect. I thought his instructions were a bit unclear, so i write it down here again. If an Admin reads this, please move this topic to User Guides, i think thats better than this scripting tutorial section. This is the original resource of Ren: https://community.mtasa.com/index.php?p=resources&s=details&id=12151 In 3ds max, first you need an object that you want to assign the 2nd UV map to. Doesnt matter what object. -Create the "unwrap uvw" modifier -Select "2" as Map Channel in the modifier -In the following Dialog, "Move" or "Abandon" the UV coordinates of Channel 1 to the new Channel 2, you will most likely need to use "Flatten mapping" anyway -Do whatever you need with the new UVs (Flatten mapping makes everything fit on 1 texture = no more "tiling") -Create the lightmap with whatever tool (Radiosity?) that can render the light onto a grayscale lightmap image. This image will later produce light with our 2nd flattened UV map. -Right click on the object and "Convert to -> Editable mesh", this collapses everything nicely and saves your changes. -Finish your object and then export it with rwio or Kams max scripts. This is the lightmap shader created by Ren, its nothing special and i simplified the code a little bit and i added some comments: https://www.dropbox.com/s/zrfk7nahdduq938/light.fx?dl=0 Now all you need to do is assign the lightmap shader to your object with the following simple code: local lshader = dxCreateShader("light.fx") if lshader then local lightTexture = dxCreateTexture("your_lightmap.png", "argb") if lightTexture then dxSetShaderValue(lshader, "lightTexture", lightTexture) engineApplyShaderToWorldTexture(lshader, "*", THE_TARGET_OBJECT_THAT_NEEDS_LIGHT) end end
    1 point
  42. Ok, from that ldd command i figured out i was still missing 32 bit libraries of libncurses. Since its ubuntu 19 so it is not possible to install them using apt-get install command directly. Although i installed it manually but yet i was missing them somehow. When i did apt-get install lib32ncurses, i couldn't get the package. So i fixed it with following commands from a guide i found just now: sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 Thanks for your support. You may close the thread now thanks.
    1 point
  43. Download: https://community.mtasa.com/?p=resources&s=details&id=15260 The best vehicle reflection shader around, unique: takes no FPS toll. It looks close to real ENB and it has rewritten effects which uses techniques to avoid performance toll like all circulating shaders suffer from; f.e, it creates reflection based purely on GTA default surface materials. @Ren_712, the most recognized FX/shader developer around MTA, assisted with rewriting the effect not long ago, but has never released it. Until now, it was a resource private to me based on a custom order I gave to Ren_712. It took weeks of development to get it to it's current appearance and a few months to perfect it, as it's tricky to try recreate ENB with MTA FX and make the reflection appear more qualitative than existing ones, while also scrapping any performance toll. I may be claiming it's ''the best'' around, but it's for you to judge: https://imgur.com/a/U8MLN. I am convinced that it is due to several factors: it looks deeper/has a qualitative reflection (almost) simulating ENB, eliminating GPU performance toll while doing that (the appearance) even better than preceding released shaders (which did take a toll), making it the ultimate combination. Open spoiler for sample images of reflection effect: Some will like the ENB resemblance, and others will find the reflection too shiny or deep. You can modify that easily and adapt it to your wishes using the variables in client_carshader.lua. The intensity, brightness, deepness and visibility of the reflection can be tweaked in there, so you can make a ''custom'' version just like ENB's get edited and released as custom ENB. You can make it look differently (more than just less prominent effect) while retaining the optimized techniques it uses against lag. It's possible to simulate the lightest possible shader that doesn't look ''extremely reflective''.
    1 point
  44. This package cointains dds cubebox files. I have converted some skyboxes form HL2 mods. Just download the resource: http://community.multitheftauto.com/ind ... ls&id=4413 Then replace the skybox.dds file with those files. download link: http://www.solidfiles.com/d/f58eba1777/ screens: http://img685.imageshack.us/img685/5118/66222720.jpg http://img444.imageshack.us/img444/9933/51675873.jpg http://img405.imageshack.us/img405/1070/33345739.jpg http://img14.imageshack.us/img14/1855/29711055.jpg
    1 point
  45. Add line @ 706 in scoreboard: elseif column.name == "ping" then local ping = tonumber ( content ) local r, g if ping < 150 then r = 255 g = ( ping / 150 ) * 255 else r = ( ( 300 - ping ) / 150 ) * 255 g = 255 end dxDrawText( content, topX+theX+s(1), y+s(1), topX+x+s(1+column.width), y+s(11)+dxGetFontHeight( fontscale(contentFont, scoreboardScale), contentFont ), tocolor( 0, 0, 0, a or 255 ), fontscale(contentFont, s(1)), contentFont, "left", "top", true, false, drawOverGUI ) dxDrawText( content, topX+theX, y, topX+x+s(column.width), y+dxGetFontHeight( fontscale(contentFont, scoreboardScale), contentFont ), tocolor( g, r, 0, a or 255 ), fontscale(contentFont, s(1)), contentFont, "left", "top", true, false, drawOverGUI ) So I made it by myself toady.
    1 point
×
×
  • Create New...