Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/07/20 in all areas

  1. Using source variable isn't safe. function EventName() if client then outputChatBox("Hi player!", client) end end addEvent("EventName", true) addEventHandler("EventName", root, EventName) https://wiki.multitheftauto.com/wiki/Script_security
    2 points
  2. السلام عليكم ورحمة الله تعالى وبركته لوحة تسجيل لدخول للرولي بلاي تصميم جديد و ميجيب لاق رابط التحميل في الفيديو BY MR POP
    2 points
  3. Our explanation today is about how to play the MTV game The first Windows 7 version is .IOS version how to download Windows_7.ios : The second thing you download VMware Workstation 15 Player how to download VMware Workstation 15 Player Fourth way to install in the windows_7_ios program : how to download Grand Theft Auto San Andreas : How to transform game from your pc to VM Host : Multi theft auto san download : How to use problems and solutions : I hope you will support the channel because a relative is going to download a clip explaining in detail how to carry it and install it. MRPOP:) Peace is a good conclusion
    1 point
  4. Salutări tuturor, Având în vedere contextul actual din cadrul comunității românești la nivelul platformei, am decis să desfășor un sondaj de opinie pentru a observa și înțelege mai bine unde se situează diferite aspecte ale comunității din punctul vostru de vedere. Prezentare generală a demersului Sondajul de opinie se desfășoară prin intermediul unui chestionar compus din cinci secțiuni scurte, majoritatea cuprinzând întrebări închise cu unul sau mai multe răspunsuri prestabilite (cu posibilitatea de a adăuga un răspuns propriu). În urma și pe baza răspunsurilor primite vom putea avea cu toții o imagine concretă cu privire la o parte dintre subiectele care în prezent sunt, după caz, de mare interes la nivelul comunității românești. Prezentul sondaj de opinie nu reprezintă un demers oficial aferent echipei administrative MTA. Tocmai din acest motiv, aveți în vedere faptul că desfășurarea acestui sondaj de opinie nu înseamnă neapărat și o schimbare în viitorul apropiat asupra aspectelor aduse în discuție prin intermediul întrebărilor din chestionar, însă poate deveni un punct important de referință pe viitor. Perioada și modalitatea de completare & publicarea rezultatelor Intenționez să mențin deschisă participarea în cadrul sondajului de opinie până în data de 5 iulie 2020, ora 09:00. Ulterior voi reveni cu o actualizare care să cuprindă rezultatele propriu-zise, cât și analiza acestora și eventuale concluzii pe care le putem trage de pe urma lor. Răspunsurile acordate în lipsă de seriozitate nu vor fi luate în considerare. Analiza și interpretarea rezultatelor se va face în mod colectiv, toate răspunsurile acordate vor fi tratate în mod anonim tocmai pentru a încuraja completarea chestionarului în mod sincer și fără bariere. Chestionarul poate fi completat accesând următorul link: https://forms.gle/w8nawZqn4jQFoDGN7 Distribuirea chestionarului Vă invit pe toți cei interesați să distribuiți mai departe chestionarul către persoanele despre care știți că activează în mod constant pe comunitățile românești de MTA și care pot trata acest demers cu seriozitate. Deși este important să obținem cât mai multe puncte de vedere, este important să punem accent și pe calitatea răspunsurilor tocmai pentru a nu periclita acuratețea rezultatelor. Vă mulțumesc pentru interesul acordat!
    1 point
  5. That's why you don't get the player since you're using timer. Your code has some mistakes too such as you are trying to trigger client side from server by triggerServerEvent and the right is triggerClientEvent. infinity timer can cause some problems as well especially you made it every 3 sec. You can use this better "onElementDataChange" and about the element in marker, you can do this function elementinmarker(element) setTimer(function() if element then if isElementWithinMarker(element,cylinder) then -- Your code end end end,3000, 1) end addEventHandler("onMarkerHit",cylinder,elementinmarker) and it would be better if you make the whole code server side
    1 point
  6. local marker = createMarker(--[[...]]) local blip = createBlipAttachedTo(marker --[[...]]) addEventHandler("onClientMarkerHit", marker, function(he, md) destroyElement(source) destroyElement(blip) end)
    1 point
  7. You need to use vehicle nodes. Take a look at this posts:
    1 point
  8. Você é brabo!!! Muito obg
    1 point
  9. Para evitar problemas, crie uma tecla para fechar (Coloquei como padrão o x) local screenW, screenH = guiGetScreenSize() local x, y = (screenW/1366), (screenH/768) local LetraFechar = "X" local dxfont0_icons = dxCreateFont("font/icons.ttf", x*12) local dxfont1_icons = dxCreateFont("font/icons.ttf", x*13) painel4 = false setTimer(function() local PED_Agencia = createPed(SkinPED2, pedX2, pedY2, pedZ2) local myBlip = createBlip( pedX2, pedY2, pedZ2, blipID2) setBlipVisibleDistance(myBlip, 300) setPedRotation(PED_Agencia,0) setElementData(PED_Agencia, "TS:Agencia", true) setElementData(PED_Agencia, "TS:AnuncioAgencia", TextoPED2) setElementFrozen(PED_Agencia,true) setPedAnimation(PED_Agencia, "COP_AMBIENT", "Coplook_loop") function Cancel_Damage () cancelEvent() end addEventHandler("onClientPedDamage", PED_Agencia, Cancel_Damage) function Ped_Click (_, state) if getElementData(PED_Agencia, "TS:Agencia") then if state == "down" then local x, y, z = getElementPosition(getLocalPlayer()) local wx, wy, wz = getElementPosition(PED_Agencia) if getDistanceBetweenPoints3D(x, y, z, wx, wy, wz) <= 5 then triggerServerEvent("VerificarACL", getLocalPlayer()) end end end end addEventHandler("onClientClick", getRootElement(), Ped_Click) end, 1000, 1) EmpregosTabel = { {"Fabricante de armas", 5}, ---- Emprego, Level {"Assassino de aluguel", 10}, ---- Emprego, Level {"Traficante De Orgaos", 15}, ---- Emprego, Level {"Transportador De Cocaina", 5}, ---- Emprego, Level {"Produtor de maconha", 20}, ---- Emprego, Level } --[[ ><><><><><><><><><><><><><><><><><><><>< >< Painel Inicial >< ><><><><><><><><><><><><><><><><><><><>< --]] function PainelAgencia () exports["Blur"]:dxDrawBluredRectangle(screenW * 0.3353, screenH * 0.2578, screenW * 0.3302, screenH * 0.4844, tocolor(255, 255, 255, 230)) dxDrawRectangle(screenW * 0.3353, screenH * 0.2578, screenW * 0.3302, screenH * 0.4844, tocolor(0, 0, 0, 131), false) dxDrawRectangle(screenW * 0.3353, screenH * 0.2578, screenW * 0.3302, screenH * 0.0625, tocolor(0, 0, 0, 150), false) dxDrawLine(screenW * 0.3353, screenH * 0.3203, screenW * 0.6654, screenH * 0.3203, tocolor(0, 45, 215, 255), 3, false) dxDrawText("Agência Ilegal", screenW * 0.4627, screenH * 0.2708, screenW * 0.5388, screenH * 0.2982, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) if isCursorOnElement(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then dxDrawImage(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 255), false) else dxDrawImage(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 154), false) end if isCursorOnElement(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then dxDrawImage(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 255), false) else dxDrawImage(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 154), false) end dxDrawText("Pegar Emprego", screenW * 0.3902, screenH * 0.6380, screenW * 0.4663, screenH * 0.6654, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) dxDrawText("Fechar Painel", screenW * 0.5300, screenH * 0.6380, screenW * 0.6061, screenH * 0.6654, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) end addEventHandler("onClientResourceStart", resourceRoot, function () ListaAgencia = dxGridW:Create(468, 256, 427, 204) ListaAgencia:AddColumn("Empregos", 200) ListaAgencia:AddColumn("Level", 130) ListaAgencia:SetVisible(false) for i,EmpregosAgencia in ipairs (EmpregosTabel) do ListaAgencia:AddItem(1, tostring(EmpregosAgencia[1])) ListaAgencia:AddItem(2, tostring(EmpregosAgencia[2])) end end) --[[ ><><><><><><><><><><><><><><><><><><><>< >< Configurações N Altere >< ><><><><><><><><><><><><><><><><><><><>< --]] function convertTime(ms) local min = math.floor ( ms/60000 ) local sec = math.floor( (ms/1000)%60 ) return min, sec end function AbrirAgenciaIlegal () if painel4 == false then addEventHandler ( "onClientRender", root, PainelAgencia ) painel4 = true showCursor ( true ) playSoundFrontEnd ( 43 ) ListaAgencia:SetVisible(true) end end addEvent("AbrirPainelAgencia", true) addEventHandler("AbrirPainelAgencia", getRootElement(), AbrirAgenciaIlegal) function FecharAgencia () if painel4 == true then ListaAgencia:SetVisible(false) painel4 = false removeEventHandler ( "onClientRender", root, PainelAgencia ) showCursor (false) playSoundFrontEnd ( 43 ) end end bindKey(LetraFechar, "down", FecharAgencia) function PegarEmprego ( _,state ) if painel4 == true then if state == "down" then if isCursorOnElement(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then if ListaAgencia:GetSelectedItem() then local Emprego = ListaAgencia:GetItemDetails(1, ListaAgencia:GetSelectedItem()) local Level = ListaAgencia:GetItemDetails(2, ListaAgencia:GetSelectedItem()) playSoundFrontEnd(12) triggerServerEvent("TS:AgenciaEmpregos", getLocalPlayer(), localPlayer, Emprego, Level) else triggerEvent("addNotification", root, "#ffffff#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff #ffffffSelecione o Emprego que Você Deseja", "info") end end end end end addEventHandler ( "onClientClick", root, PegarEmprego ) function renderIng( ) local x, y, z = getCameraMatrix( ) local dimension = getElementDimension( localPlayer ) for key, ped in ipairs ( getElementsByType( "ped" ) ) do if getElementDimension( ped ) == dimension then local px, py, pz = getElementPosition( ped ) local distance = getDistanceBetweenPoints3D( px, py, pz, x, y, z ) if distance <= 7 then local text = getElementData( ped, "TS:AnuncioAgencia" ) if text and ( distance < 2 or isLineOfSightClear( x, y, z, px, py, pz + 1.1, true, true, true, true, false, false, true, localPlayer ) ) then local sx, sy = getScreenFromWorldPosition( px, py, pz + 1.1 ) if sx and sy then local w = dxGetTextWidth( tostring( text ) ) local h = ( text and 2 or 1 ) * dxGetFontHeight( ) dxDrawText( tostring( text ), sx +30, sy +50, sx, sy, tocolor( 255, 255, 255, 255 ), 1.00, dxfont1_icons, "center", "center", false, false, false, true, false ) end end end end end end addEventHandler( "onClientRender", getRootElement( ),renderIng) function isCursorOnElement ( x, y, w, h ) local mx, my = getCursorPosition () local fullx, fully = guiGetScreenSize () cursorx, cursory = mx*fullx, my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end
    1 point
  10. لا تكرر الردود, والمرة الجاية اختار القسم الصحيح لموضوعك https://forum.multitheftauto.com/forum/134-البرمجة/
    1 point
  11. همم للأسف مستحيل يطاردك بالسيارة الا اذا كتبت خوارزمية ورح تستغرق 10 سنوات يقدر يطاردك هو يمشي بإستعمال Slothbot للمزيد من المعلومات هنا
    1 point
  12. Boa noite, tente: Server-side. local ACL = "ilegal" function AgenciaEmpregos (source, Emprego, Level) local Level = tonumber(Level) local Level2 = tonumber(getElementData(source,"Level")) or 0 if Level2 >= Level then setElementData(source, "Emprego", Emprego) triggerClientEvent(source, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffVocê agora é um "..Emprego..", cuidado com a policia!", "info") else triggerClientEvent(source, "addNotification", root, "#0037FF✘#ffffffINFO#0037FF✘➺ #ffffffVocê não tem level suficiente para este trabalho!", "info") end end addEvent ("TS:AgenciaEmpregos", true) addEventHandler ("TS:AgenciaEmpregos", root, AgenciaEmpregos) function VerificarACL () local Conta = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..Conta, aclGetGroup ( ""..ACL ) ) then triggerClientEvent(source, "AbrirPainelAgencia", root) end end addEvent ("VerificarACL", true) addEventHandler ("VerificarACL", root, VerificarACL) Client-Side: local screenW, screenH = guiGetScreenSize() local x, y = (screenW/1366), (screenH/768) local dxfont0_icons = dxCreateFont("font/icons.ttf", x*12) local dxfont1_icons = dxCreateFont("font/icons.ttf", x*13) painel4 = false setTimer(function() local PED_Agencia = createPed(SkinPED2, pedX2, pedY2, pedZ2) local myBlip = createBlip( pedX2, pedY2, pedZ2, blipID2) setBlipVisibleDistance(myBlip, 300) setPedRotation(PED_Agencia,0) setElementData(PED_Agencia, "TS:Agencia", true) setElementData(PED_Agencia, "TS:AnuncioAgencia", TextoPED2) setElementFrozen(PED_Agencia,true) setPedAnimation(PED_Agencia, "COP_AMBIENT", "Coplook_loop") function Cancel_Damage () cancelEvent() end addEventHandler("onClientPedDamage", PED_Agencia, Cancel_Damage) function Ped_Click (_, state) if getElementData(PED_Agencia, "TS:Agencia") then if state == "down" then local x, y, z = getElementPosition(getLocalPlayer()) local wx, wy, wz = getElementPosition(PED_Agencia) if getDistanceBetweenPoints3D(x, y, z, wx, wy, wz) <= 5 then triggerServerEvent("VerificarACL", getLocalPlayer()) end end end end addEventHandler("onClientClick", getRootElement(), Ped_Click) end, 1000, 1) EmpregosTabel = { {"Fabricante de armas", 5}, ---- Emprego, Level {"Assassino de aluguel", 10}, ---- Emprego, Level {"Traficante De Orgaos", 15}, ---- Emprego, Level {"Transportador De Cocaina", 5}, ---- Emprego, Level {"Produtor de maconha", 20}, ---- Emprego, Level } --[[ ><><><><><><><><><><><><><><><><><><><>< >< Painel Inicial >< ><><><><><><><><><><><><><><><><><><><>< --]] function PainelAgencia () exports["Blur"]:dxDrawBluredRectangle(screenW * 0.3353, screenH * 0.2578, screenW * 0.3302, screenH * 0.4844, tocolor(255, 255, 255, 230)) dxDrawRectangle(screenW * 0.3353, screenH * 0.2578, screenW * 0.3302, screenH * 0.4844, tocolor(0, 0, 0, 131), false) dxDrawRectangle(screenW * 0.3353, screenH * 0.2578, screenW * 0.3302, screenH * 0.0625, tocolor(0, 0, 0, 150), false) dxDrawLine(screenW * 0.3353, screenH * 0.3203, screenW * 0.6654, screenH * 0.3203, tocolor(0, 45, 215, 255), 3, false) dxDrawText("Agência Ilegal", screenW * 0.4627, screenH * 0.2708, screenW * 0.5388, screenH * 0.2982, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) if isCursorOnElement(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then dxDrawImage(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 255), false) else dxDrawImage(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 154), false) end if isCursorOnElement(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then dxDrawImage(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 255), false) else dxDrawImage(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586, "0.png", 0, 0, 0, tocolor(0, 45, 215, 154), false) end dxDrawText("Pegar Emprego", screenW * 0.3902, screenH * 0.6380, screenW * 0.4663, screenH * 0.6654, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) dxDrawText("Fechar Painel", screenW * 0.5300, screenH * 0.6380, screenW * 0.6061, screenH * 0.6654, tocolor(255, 255, 255, 255), 1.00, dxfont0_icons, "left", "top", false, false, false, false, false) end addEventHandler("onClientResourceStart", resourceRoot, function () ListaAgencia = dxGridW:Create(468, 256, 427, 204) ListaAgencia:AddColumn("Empregos", 200) ListaAgencia:AddColumn("Level", 130) ListaAgencia:SetVisible(false) for i,EmpregosAgencia in ipairs (EmpregosTabel) do ListaAgencia:AddItem(1, tostring(EmpregosAgencia[1])) ListaAgencia:AddItem(2, tostring(EmpregosAgencia[2])) end end) --[[ ><><><><><><><><><><><><><><><><><><><>< >< Configurações N Altere >< ><><><><><><><><><><><><><><><><><><><>< --]] function convertTime(ms) local min = math.floor ( ms/60000 ) local sec = math.floor( (ms/1000)%60 ) return min, sec end function AbrirAgenciaIlegal () if painel4 == false then addEventHandler ( "onClientRender", root, PainelAgencia ) painel4 = true showCursor ( true ) playSoundFrontEnd ( 43 ) ListaAgencia:SetVisible(true) end end addEvent("AbrirPainelAgencia", true) addEventHandler("AbrirPainelAgencia", getRootElement(), AbrirAgenciaIlegal) function FecharAgencia () if painel4 == true then if isCursorOnElement(screenW * 0.5146, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then ListaAgencia:SetVisible(false) painel4 = false removeEventHandler ( "onClientRender", root, PainelAgencia ) showCursor (false) playSoundFrontEnd ( 43 ) end end end addEventHandler ( "onClientClick", root, FecharAgencia ) function PegarEmprego ( _,state ) if painel4 == true then if state == "down" then if isCursorOnElement(screenW * 0.3763, screenH * 0.6250, screenW * 0.1076, screenH * 0.0586) then if ListaAgencia:GetSelectedItem() then local Emprego = ListaAgencia:GetItemDetails(1, ListaAgencia:GetSelectedItem()) local Level = ListaAgencia:GetItemDetails(2, ListaAgencia:GetSelectedItem()) playSoundFrontEnd(12) triggerServerEvent("TS:AgenciaEmpregos", getLocalPlayer(), localPlayer, Emprego, Level) else triggerEvent("addNotification", root, "#ffffff#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff #ffffffSelecione o Emprego que Você Deseja", "info") end end end end end addEventHandler ( "onClientClick", root, PegarEmprego ) function renderIng( ) local x, y, z = getCameraMatrix( ) local dimension = getElementDimension( localPlayer ) for key, ped in ipairs ( getElementsByType( "ped" ) ) do if getElementDimension( ped ) == dimension then local px, py, pz = getElementPosition( ped ) local distance = getDistanceBetweenPoints3D( px, py, pz, x, y, z ) if distance <= 7 then local text = getElementData( ped, "TS:AnuncioAgencia" ) if text and ( distance < 2 or isLineOfSightClear( x, y, z, px, py, pz + 1.1, true, true, true, true, false, false, true, localPlayer ) ) then local sx, sy = getScreenFromWorldPosition( px, py, pz + 1.1 ) if sx and sy then local w = dxGetTextWidth( tostring( text ) ) local h = ( text and 2 or 1 ) * dxGetFontHeight( ) dxDrawText( tostring( text ), sx +30, sy +50, sx, sy, tocolor( 255, 255, 255, 255 ), 1.00, dxfont1_icons, "center", "center", false, false, false, true, false ) end end end end end end addEventHandler( "onClientRender", getRootElement( ),renderIng) function isCursorOnElement ( x, y, w, h ) local mx, my = getCursorPosition () local fullx, fully = guiGetScreenSize () cursorx, cursory = mx*fullx, my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end
    1 point
  13. Have you already checked other dx libraries? It would be a waste of time to figure out everything from scratch don't you think? For example:
    1 point
  14. E addCommandHandler. Tem alguns tópicos similares pelo fórum que se você procurar vai encontrar um trecho com comando + verificação de ACL - assim como tem na página da função isObjectInACLGroup.
    1 point
  15. Você vai precisar de getPlayerAccount, getAccountName e isObjectInACLGroup
    1 point
  16. Din punctul meu de vedere, MTA-ul oferă mult mai multe posibilități în materie de scripting ca SAMP-ul și de aceea l-am și ales. Nu vreau să ofensez pe nimeni, dar mulți români aleg servere străine de MTA sau joacă SAMP deoarece aceste posibilitati sunt folosite prost. Multă lume își încarcă serverele cu mod-uri și alte cele, iar jucătorii nu au răbdarea și componentele necesare să aștepte să descarce și să se joace cu acele mod-uri. Pe lângă asta, aici mulți au auzit că "dacă deschizi server rp faci bani", și prin urmare, comunitatea e infestata de servere de genul cu gamemode-uri vechi sau pline de bug-uri pe care nu joacă nimeni. Toți scripterii români buni de care știu ori s-au lăsat, ori au plecat pe servere străine. Totuși, eu zic că mai este speranță în comunitate. Jocul ăsta încă este apreciat și jucat de mulți pasionați de San Andreas. Dar ca să îi atragi, trebuie să spargi gheața cu un server făcut ca la carte și aici mă refer din toate punctele de vedere: resurse, staff etc... Părerea mea e că fiecare server își poate "modela" jucătorii spre a fi educați și cu bun simț dacă are un staff matur și dedicat sarcinii. Nimic nu e mai enervant decât un server în care staff-ul e construit pe baza "cine a dat mai mulți bani" și în care jucătorii nu respectă bunul simț și îți distrug cheful. Pe scurt, merită să ai speranță în comunitate în momentul în care cineva chiar se pune serios să facă ceva frumos. Aici am vorbit la general și nu am vrut să ofensez pe nimeni.
    1 point
  17. Salutări. Motivul principal pentru care cealaltă platformă de multiplayer este atât de cunoscută este datorat faptului că, față de Multi Theft Auto, are o denumire mult mai sugestivă și mai 'naturală' referitor la ceea ce este. Orice persoană, inclusiv eu și cu tine, atunci când am vrut pentru prima dată să ne jucăm San Andreas pe o platformă multiplayer am scris în motorul de căutare 'San Andreas Multiplayer', care e tocmai denumirea celelaltei platforme. Nu sunt singurul care este de părere că această parte de SEO a tras și trage destul de mult MTA în jos pentru că cei care au căutat și caută o platformă multiplayer pentru San Andreas mereu vor apela la cuvinte care inevitabil se regăsesc în denumirea SA-MP. Dacă nu cauți în mod special 'Multi Theft Auto' sau 'MTA', atunci cu siguranță vei găsi platforma undeva pe locul 6+ în listă, primele locuri fiind ocupate de către diverse părți/articole/videoclipuri aparținând sau având în prim plan SA-MP. Deoarece SA-MP se regăsește printre primele rezultate în cele mai populare și comune căutări pentru partea de multiplayer a San Andreas, inevitabil majoritatea se opresc la primul rezultat și nu se mai obosesc să caute alternative pe care să le compare. La început poate că nu a fost atât de evident, dar acum, după ani buni de la lansarea ambelor platforme, e destul de clar că la capitolul popularitate, SA-MP se află pe primul loc și motivele sunt evidente. Însă cam doar atât, la altceva decât popularitate, comparat cu ceea ce este MTA și ce oferă, SA-MP nu excelează și nu se remarcă cu absolut nimic. Din păcate pentru majoritatea jucătorilor tot ceea ce contează este popularitatea, exact capitolul în care MTA se află într-un dezavantaj, motiv pentru care ne regăsim în situația de acum. Problema denumirii nu este în totalitate vina celor care întrețin MTA. Pentru că, față de SA-MP, MTA a început de pe GTA 3 și a continuat pe Vice City ca într-un final să ajungă pe San Andreas, în timp ce SA-MP e doar o platformă bazată pe San Andreas. Cei de pe MTA nu cred că aveau de unde să știe cât de departe va ajunge proiectul și chiar și așa, e destul de dificil să găsești o denumire care să cuprindă toate cele trei jocuri și să aducă și în evidență partea de San Andreas în așa fel încât să atragă jucători. În afară de problema denumirii și a popularității, din discuțiile pe care le-am purtat cu diverse persoane și discuțiile pe care le-am urmărit, am observat că există multe concepții greșite și generalizări față de MTA. Multă lume se plânge că nu se menține atmosfera originală a jocului, ceea ce nu este în totalitate adevărat fiindcă asta ține de fiecare server în parte. La fel și legat de mărimea fișierelor custom și a timpului de așteptare la descărcare - SA-MP are în linii mari aceeași treabă de când cu 0.3DL, dar acolo nu e problemă, în schimb aici, da. Exemplele pot continua la nesfârșit dacă e să stăm și să aruncăm o privire detaliată asupra mentalității care s-a conturat în jurul MTA la nivel general. Iar dacă vii cu argumente și exemple bune către baza de jucători de pe SA-MP, persoane care fac astfel de afirmații despre MTA, te lovești de indiferență din partea lor. Pentru ei SA-MP e cel mai bun și gata, ceea ce e o absurditate imensă având în vedere că singurul lucru pozitiv, cum spuneam mai devreme, e popularitatea de care se bucură platforma. Faptul că oamenii în general, dar în speță jucătorii de pe SA-MP, sunt și reticienți la schimbare, la lucruri noi, adaugă un plus de dificultate la toată situația. Dacă se dorește redresarea situației, e oarecum destul de dificil, dar nu neapărat imposibil. Spun asta deoarece MTA ar trebui să depună eforturi și fonduri în așa fel încât să acapareze pozițiile principale din motoarele de căutare (astfel în timp persoanele noi vor afla mult mai ușor de platformă), ar trebui să-și crească prezența online (datorită popularității de care se bucură, SA-MP primește reclamă gratuită din partea celor care joacă pe platformă, ceea ce rezultă în atragerea de noi jucători, iar mai apoi întreg procesul se tot repetă, e ca un bulgăre de zăpadă care se rostogolește la vale, crește încontinuu), ar trebui să facă mai multe, acestea sunt doar două exemple destul de simple. Pe partea românească, dacă per general lucrurile stau prost pe MTA în prezent, inevitabil ne afectează și aici. Dar în acest caz sunt și alți factori care, din punctul meu de vedere, au dus la situația curentă, cum ar fi, de exemplu, comunitățile (în general, există și excepții și nu neapărat proiectul pe care eu și cu echipa mea am încercat să-l implementăm) din ultimii ani care s-au intitulat roleplay și care nu au făcut nimic altceva decât să fie RPG-uri cu o groază de moduri, bani în prostie și un nivel calitativ foarte prost. Persoanele care totuși au fost convinse și au acordat o șansă platformei MTA și care au venit aici să vadă cum stau lucrurile, evident că au găsit un haos și o dezordine care pe comunitățile de roleplay de acolo e mult mai scăzută. Nu au stat mult pe gânduri și s-au întors pe SA-MP considerând că nu există vreo speranță pe MTA și, mai rău, și-au relatat mai departe experiența prietenilor și cunoștințelor, scăzând astfel drastic imaginea și încrederea/abordarea/seriozitatea față de platformă. Am intrat în contact cu această platformă în 2011, deci mă pot considera suficient de vechi încât să spun că, eu cel puțin, încă mai am speranță pentru MTA, însă cu cât se scurge mai mult timp în care nu facem nimic, cu atât șansele de reușită scad treptat. În general popularitatea față de partea de multiplayer pe San Andreas, fie MTA sau SA-MP, începe să scadă drastic pe anumite segmente, însă sunt de părere că partea românească încă mai poate duce foarte mult timp din diferite considerente tehnice și contextuale. Nu spun că nu e ușor, dar nici imposibil, iar mai rău decât e acuma, nu știu dacă se poate ajunge, așa că singura direcție e înspre îmbunătățire. Acum, acestea sunt punctele mele de vedere și cu siguranță ar fi foarte benefic dacă și alții și-ar expune părerea pentru că ai avea mai multe perspective după care să te iei. Sper totuși că am reușit să îți răspund la întrebări, subiectele propuse de tine sunt cu spectru foarte larg și sunt mult mai complexe decât am acoperit eu aici, sunt lucruri pe care le-am simplificat și cu siguranță, involuntar, chiar omis, dar dacă ai întrebări sau sugestii, simte-te liber să le adresezi și atât eu, cât cu siguranță și ceilalți care mai frecventăm această secțiune, vom încerca să ți le răspundem așa cum și cât știm mai bine.
    1 point
  18. Or listen for the resourceBlocked event and request each blocked domain to be unblocked. addEventHandler('onClientBrowserResourceBlocked', browser, function(url) requestBrowserDomains({url}, true, function(accepted) if accepted then reloadBrowserPage(browser) end end) end)
    1 point
×
×
  • Create New...