Jump to content

Gw8

Members
  • Posts

    91
  • Joined

  • Last visited

4 Followers

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Gw8's Achievements

Punk-@ss B*tch

[email protected] B*tch (12/54)

32

Reputation

  1. Eu trabalhei com muitos sistemas desse modelo, para Multi GameMode especificamente o melhor resultado é você criar o gerenciador de arquivos(mapas) fora mta, em um webservice php por exemplo, já para as arenas a melhor opção é utilizar eventos com base em resourceRoot, vai precisar tbm fazer tudo que o mta já faz nativamente porém fazendo alguns override em funções para conseguir carregar mapas e scripts com êxito, resumindo baixar mapas e script utilizando fetchremote e controlar o sistema utilizando eventos com resourceRoot, caso deseja comprar um sistema pode entrar em contato comigo, tenho um pronto, tmj.
  2. https://discord.com/developers/docs/resources/webhook
  3. use the information you need, then save the complete table in the created object. car = createVehicle(v.model, v.x, v.y, v.z) car:setData("dbData",result[ i ])
  4. use este evento https://wiki.multitheftauto.com/wiki/OnClientClick
  5. Gw8

    Peds

    seta loop na animação e depois testa de novo
  6. altera o 'thePlayer' para 'source' e testa de novo
  7. ItensNaoRemoviveis = { ["identidade"] = true, ["porte"] = true, ["cnh"] = true, ["ak47natal"] = true, } inventario = { {"hamburguer", 2}, {"suco", 3}, {"glock", 5}, {"kit_reparo", 2} } function teste() for i=#inventario,1,-1 do local item = inventario[i][1] if not ItensNaoRemoviveis[item] then table.remove(inventario,i) end end end addCommandHandler("test", teste) testa ae!
  8. depois dessa ultima atualizacao do mta tem ocorrido muito isso, tenta fazer o seguinte, seta a configuracao de atulizacao do mta para nightly e testa dnv.
  9. Na verdade vocês estão interpretando o sistema errado. Para voce criar um sistema onde pode aparecer uma lista de mensagens, primeiramente voce deve salvar estas mensagens em uma lista. Depois disso para voce deve montar um o dx das mensagens dentro de um FOR para que consiga atualizar as posicoes do dx confome à lista. Com isso voces conseguem fazer a lista de um tamanho infinito e garantir que o usuario veja todas as mensagens, da forma que voces pensaram pode ocorrer de sobre a mensagem ou até nao formar uma lista. local sx,sy = guiGetScreenSize() notify = { cache = {}, tick = getTickCount(), create = function(type,img,title,msg) if type and img and title and msg then notify.tick = getTickCount(), table.insert(notify.cache,1,{type=type,img=img,title=title,msg=msg,posX=sx,posY=-resY(60),alpha=1,tick=getTickCount()}) end end, render = function() for i,info in ipairs(notify.cache) do local progress = math.min((getTickCount()-notify.tick)/1500,1) local pg2 = 0 if progress >= 1 then pg2 = math.min((getTickCount()-(notify.tick+1500))/1500,1) end local check = getTickCount()-info.tick local posY = resY(61)*i-resY(61)+resY(5) local w = dxGetTextWidth(info.msg:gsub("#%x%x%x%x%x%x",""),1,createFont("default",12),false)+resX(25) local _w = resX(180) local h = resY(52) if w < _w then w = _w end info.posX,info.posY = interpolateBetween(info.posX,info.posY,0,sx-w-resY(5),posY,0,progress,"Linear") if progress == 1 and check >= 7000 then local progress = math.min((check-7000)/1500,1) info.alpha = interpolateBetween(info.alpha,0,0,0,0,0,progress,"Linear") if info.alpha <= 0.1 then table.remove(notify.cache,i) end end if info.type == "error" then r,g,b = 255,0,0 --playSound("files/error_notification.mp3") elseif info.type == "info" then r,g,b = 255,255,255 --playSound("files/notification.mp3") elseif info.type == "success" then r,g,b = 0,255,0 --playSound("files/success_notification.mp3") elseif info.type == "warning" then r,g,b = 255,190,0 --playSound("files/warning_notification.mp3") else r,g,b = 255,255,255 --playSound("files/error_notification.mp3") end -- background dxDrawImageSection(info.posX,info.posY,w,h,10,10,1,1,"img/border.png",0,0,0,tocolor(0,0,0,220*info.alpha),true) -- backgroud -- img bell dxDrawImage(info.posX+resY(5)-resX(7)*pg2,info.posY+resY(5)-resY(7)*pg2,resX(13)+resX(13)*pg2,resY(13)+resX(13)*pg2,"img/bell.png",0,0,0,tocolor(255,255,255,(220-220*pg2)*info.alpha),true) dxDrawImage(info.posX+resY(5),info.posY+resY(5),resX(13),resY(13),"img/bell.png",0,0,0,tocolor(255,255,255,220*info.alpha),true) -- title dxDrawText(info.title:upper(),info.posX+resX(25)+1,info.posY+resY(5)+1,info.posX+resX(1)+w-resX(3)+1,info.posY+resY(61)+1,tocolor(0,0,0,220*info.alpha),1,createFont("default",14),"left","top",true,false,true,true) dxDrawText(info.title:upper(),info.posX+resX(25),info.posY+resY(5),info.posX+resX(1)+w-resX(3),info.posY+resY(61),tocolor(240,240,240,220*info.alpha),1,createFont("default",14),"left","top",true,false,true,true) -- msg dxDrawText(info.msg:gsub("#%x%x%x%x%x%x","#000000"),info.posX+resX(25)+1,info.posY+resY(30)+1,info.posX+resX(1)+w-resX(3)+1,info.posY+resY(61)+1,tocolor(0,0,0,220*info.alpha),1,createFont("default",12),"left","top",true,false,true,true) dxDrawText(info.msg,info.posX+resX(25),info.posY+resY(30),info.posX+resX(1)+w-resX(3),info.posY+resY(61),tocolor(255,255,255,220*info.alpha),1,createFont("default",12),"left","top",true,false,true,true) --border dxRectangleLine(info.posX,info.posY,w,h,tocolor(r,g,b,20*info.alpha),true) end end } addEventHandler("onClientRender",root,notify.render) function createNotification(type,img,title,msg) notify.create(type,img,title,msg) end addEvent("createNotification",true) addEventHandler("createNotification",root,createNotification) Não teste este código, pois ele não vai funcionar no seu sistema, mas a lógica de criação da mensagem que você deve implementar é a mesma. Duvidas só manda é nois.
  10. _triggerEvent = triggerEvent function triggerEvent(...) print(toJSON({...})) _triggerEvent(...) end _triggerClientEvent = triggerClientEvent function triggerClientEvent(...) print(toJSON({...})) _triggerClientEvent(...) end cria um arquivo, coloca isso dentro dele. depois esse arquivo que voce crio coloca ele no inicio do meta, poe ele como o primeiro pra carregar. os dados do trigger vai aparecer no debugscript.
  11. https://wiki.multitheftauto.com/wiki/Installing_and_Configuring_Nginx_as_an_External_Web_Server É simples.
  12. Cria um arquivo, liga no meta no lado da onde ele é chamado server ou client, lembrando que esse arquivo deve ser o primeiro a ser carregado. depois disso cria uma a função triggerEvent, e pronto. Dentro dela coloque para printar os argumentos. Lembre-se não se compra script compilado.
  13. Cria uma variável de controle, quando voce clicar o no menu lateral setar ela. if tela == "home" then elementos da tela elseif tela == "usuario" then elementos da end Para mostrar a tela que você deseja, tem que implementar isso no render também, caso tenha botões nessas tela também vai ser necessário implementar isso na função de click. É nois
  14. item = {} item.__index = item function newItem(x,y) local self = setmetatable({},item) self.x = x self.y = y return self end function newItem:getX() return self.x end function newItem:setX(x) self.x = x end function newItem:getY() return self.y end function newItem:setY(y) self.y = y end local myItem = newItem(50,50) myItem:getX() myItem:setX(500) Em questão de exportação, é complicado, no meu caso só consegui de duas maneiras: 1. criar um controlador dentro do arquivo da 'classe Item' ou .. 2. exporta a classe inteira para o outro resource que é basicamente copiar o arquivo da 'classe' e colocar no outro resource. *Não tem como instanciar o obj em um resource e exportar ele pra outro resource, esse eo ponto.
×
×
  • Create New...