Jump to content

ber

Members
  • Posts

    167
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by ber

  1. Aaah aí é complicado, achei que dava pra fazer essa alteração meio que "dentro" do elementData, mas se tiver que buscar, alterar e salvar novamente não vai adiantar muita coisa. Dá pra utilizar a tabela sozinha então? Mas como é um sistema de inventário eu preciso dela nos 2 sides, e vi em alguns tópicos gringos que triggerClientEvent é igual ou até mais "pesado" que um elementData...
  2. Fiz um sistema de inventário e os itens estão no formato de tabela armazenados através de um elementData no jogador, a tabela tem apenas duas colunas, item e quantidade. Queria saber como faço para alterar a quantidade de um determinado item desta tabela.
  3. Usei desse jeito e funcionou, porém do lado servidor eu to usando source como o ativador e a mensagem tá sendo enviada pra todos do servidor, pra resolver isso eu teria que passar o localPlayer através de um argumento no triggerClientEvent ou tem outra solução mais simples?
  4. Depois das coordenadas de posição, irá vir as coordenadas de rotação, x, y, z, a que você precisa alterar é a última, a Z. Vai ficar algo mais ou menos assim: createVehicle(560, 1016.727355957, -1991.0718994141, 13.929684638977, 0, 0, 90)
  5. Essa da faca eu não conhecia Mas visando desempenho, não seria melhor alterar o elementData para quem está setado como "matável", pois em grande parte dos servidores a maioria dos peds são imortais, aí seriam menos elementsData.
  6. Fiz um sistema de barra de progresso universal para que todo script possa ativá-la através do comando triggerClientEvent(source, "progress", source), pois o addEventHandler foi configurado como root e não resourceRoot. Mas nunca vi algum script utilizando esse tipo de mecânica, sempre é usado a função export, será que é porque isso ocasiona algum tipo de problema no servidor ou é apenas coincidência?
  7. Uma outra alternativa também é usando o destroyElement. E quando o player fechar o painel você cria o marker novamente.
  8. function cancelDamage() if not getElementData(source, "Killable") then cancelEvent() end end addEventHandler("onClientPedDamage", getRootElement(), cancelDamage) Essa função faz com que todos os PEDs do servidor sejam imortais. Caso tenha aqueles sistemas de assalto a banco que precisa matar PEDs, basta adicionar um setElementData(ped, "Killable", true) neles que eles serão ignorados por essa função.
  9. Cria o blip do lado server e usa: setElementVisibleTo(blip, root, false) for i, players in pairs(getElementsByType("player") do if getElementData(players, "BLABLABLA") == true then setElementVisibleTo(blip, players, true) end end
  10. Usei desta maneira e deu erro, é como se o evento não fosse executado: --client function Refresh() suco = getElementData(localPlayer, "Inventario:Suco") or 0 end addEvent("refresh", true) addEventHandler("refresh", resourceRoot, Refresh) --server triggerClientEvent(playerSource, "refresh", playerSource)
  11. Eu uso nesse formato: function blabla() abc end addEvent("sound", true) addEventHandler("sound", root, blabla) Teria que alterar o root para 'getResourceRoot(getThisResource())' ?
  12. Essa função foi feita pela comunidade e não é nativa do MTA. Você precisa copiar o código que tem na Wiki para que a função funcione. Basta colocar esse código: function isEventHandlerAdded( sEventName, pElementAttachedTo, func ) if type( sEventName ) == 'string' and isElement( pElementAttachedTo ) and type( func ) == 'function' then local aAttachedFunctions = getEventHandlers( sEventName, pElementAttachedTo ) if type( aAttachedFunctions ) == 'table' and #aAttachedFunctions > 0 then for i, v in ipairs( aAttachedFunctions ) do if v == func then return true end end end end return false end
  13. Tenho 2 scripts com o mesmo evento chamado "sound", porém quando uso o trigger de um script, ele ativa o evento sound do outro script, e vice-versa. Isso está correto? Não era para ser apenas ativado o evento do mesmo script do ativador?
  14. https://community.multitheftauto.com/index.php?p=resources&s=details&id=3940
  15. Já reli o código diversas vezes, o problema é que eu não tenho conhecimento mesmo sobre tabelas... O que eu estou fazendo de errado ali?
  16. Tentei fazer assim mas não deu certo: function onPlayerLogin(_, playeraccount) if (playeraccount) then if getAccountData(playeraccount, "Inventario") == nil then Itens[source] = { suco = 0, refrigerante = 0, whisky = 0, burrito = 0, pizza = 0, hamburguer = 0, celular = 0, capacete = 0, kit_reparo = 0, analgesico = 0, c4 = 0, maconha = 0, cocaina = 0, semente = 0, folha = 0, presente = 0, cigarro = 0, gasolina = 0, } else Itens[source] = fromJSON(getAccountData(playeraccount, "Inventario")) end triggerClientEvent(source, "RefreshClient", source, Itens[source]) end end addEventHandler("onPlayerLogin", getRootElement(), onPlayerLogin) function receiveFromServer(table) burrito = Itens[source].burrito pizza = Itens[source].pizza hamburguer = Itens[source].hamburguer suco = Itens[source].suco refrigerante = Itens[source].refrigerante whisky = Itens[source].whisky celular = Itens[source].celular capacete = Itens[source].capacete analgesico = Itens[source].analgesico kit_reparo = Itens[source].kit_reparo gasolina = Itens[source].gasolina cigarro = Itens[source].cigarro c4 = Itens[source].c4 maconha = Itens[source].maconha cocaina = Itens[source].cocaina semente = Itens[source].semente folha = Itens[source].folha presente = Itens[source].presente end addEvent("RefreshClient", true) addEventHandler("RefreshClient", root, receiveFromServer) tentei usando os próprios dados da tabela e não foi, aí tentei declarar assim e também não foi...
  17. Se eu for utilizar tabelas então, eu começaria basicamente assim: Itens = { suco = {}, refrigerante = {}, hamburguer = {}, } ou eu precisaria declarar o player/source depois da tabela de Itens?
  18. function destruir() if isPedInVehicle(source) then local veiculo = getPedOccupiedVehicle(source) destroyElement(veiculo) outputChatBox("Você destruiu seu veículo", source) else outputChatBox("Você precisa estar dentro de um veículo", source) end end addCommandHandler("dv", destruir)
  19. Tira o : de todos eles. Deixa apenas: "Icons/Armas/"..weapon..".png"
  20. Uma opção também seria apagar de vez o arquivo internal.db
  21. Então se eu fizer um refresh que puxa todos os elementData do inventário apenas quando o player logar e puxar o elementData de apenas um item apenas quando este item for usado, já vai fazer uma diferença ou é quase a mesma coisa?
  22. Estou fazendo um inventário no estilo desses Húngaros, porém como não tenho conhecimento nenhum sobre sql e pouco sobre tabelas, resolvi usar o bom e velho elementData. Porém ficou a dúvida se iria ter problemas em relação ao desempenho/processamento desses dados, pois teria slots para 20 itens diferentes nesse inventário e todos com os dados armazenados através de elementData. Eu teria problemas com isso? Se sim, a única saída seria usando tabelas?
  23. Fiz um sistema de inventário porém não tenho muito conhecimento sobre tabelas e muito menos sql então fiz usando o bom e velho setElementData, porém se 3 ou mais players abrirem o inventário ao mesmo tempo o mod acaba parando de funcionar, creio que por ser muita informação que o servidor busca ao mesmo tempo. Como conseguiria resolver esse problema? function inventario() exports.ng_blur:createBlur() agua = getElementData(localPlayer, "Inventario:Agua") or 0 refrigerante = getElementData(localPlayer, "Inventario:Refrigerante") or 0 cerveja = getElementData(localPlayer, "Inventario:Cerveja") or 0 hamburguer = getElementData(localPlayer, "Inventario:Hamburguer") or 0 pizza = getElementData(localPlayer, "Inventario:Pizza") or 0 celular = getElementData(localPlayer, "Inventario:Celular") or 0 capacete = getElementData(localPlayer, "Inventario:Capacete") or 0 kit_reparo = getElementData(localPlayer, "Inventario:Kit_Reparo") or 0 dinamite = getElementData(localPlayer, "Inventario:Dinamite") or 0 maconha = getElementData(localPlayer, "Inventario:Maconha") or 0 cocaina = getElementData(localPlayer, "Inventario:Cocaina") or 0 analgesico = getElementData(localPlayer, "Inventario:Analgesico") or 0 dxDrawImage(screenW * 0.2079, screenH * 0.1589, screenW * 0.5849, screenH * 0.6823, "files/gfx/background.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) if agua >= 1 then dxDrawImage(screenW * 0.2994, screenH * 0.3529, screenW * 0.0483, screenH * 0.0664, "files/gfx/agua.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if refrigerante >= 1 then dxDrawImage(screenW * 0.3616, screenH * 0.3529, screenW * 0.0483, screenH * 0.0664, "files/gfx/refri.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if cerveja >= 1 then dxDrawImage(screenW * 0.4239, screenH * 0.3529, screenW * 0.0483, screenH * 0.0664, "files/gfx/cerveja.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if hamburguer >= 1 then dxDrawImage(screenW * 0.4861, screenH * 0.3529, screenW * 0.0483, screenH * 0.0664, "files/gfx/hamburguer.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if pizza >= 1 then dxDrawImage(screenW * 0.2994, screenH * 0.4414, screenW * 0.0483, screenH * 0.0664, "files/gfx/pizza.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if celular >= 1 then dxDrawImage(screenW * 0.3616, screenH * 0.4414, screenW * 0.0483, screenH * 0.0664, "files/gfx/celular.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if capacete >= 1 then dxDrawImage(screenW * 0.4239, screenH * 0.4414, screenW * 0.0483, screenH * 0.0664, "files/gfx/capacete.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if kit_reparo >= 1 then dxDrawImage(screenW * 0.4861, screenH * 0.4427, screenW * 0.0483, screenH * 0.0664, "files/gfx/kit-reparo.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if dinamite >= 1 then dxDrawImage(screenW * 0.4861, screenH * 0.5326, screenW * 0.0483, screenH * 0.0664, "files/gfx/dinamite.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if maconha >= 1 then dxDrawImage(screenW * 0.4239, screenH * 0.5326, screenW * 0.0483, screenH * 0.0664, "files/gfx/maconha.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if cocaina >= 1 then dxDrawImage(screenW * 0.3616, screenH * 0.5326, screenW * 0.0483, screenH * 0.0664, "files/gfx/cocaina.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end if analgesico >= 1 then dxDrawImage(screenW * 0.2994, screenH * 0.5326, screenW * 0.0483, screenH * 0.0664, "files/gfx/analgesico.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end end Esse é o onClientRender do painel, as variáveis dos elementData ficam dentro dele, ou seja, cada vez que um player abre o painel esses dados são atualizados. Aparentemente eu deveria remover essas informações daí e buscar através de outro meio, porém não sei como...
  24. Fiz um inventário básico inspirado nesses húngaros e até que gostei do resultado final, porém gostaria de saber como faço para agrupar os itens nos slots em uma sequência a partir do primeiro e não fazer cada item ter seu slot fixo como está atualmente. obs: o inventário foi feito em dx e não dgs.
×
×
  • Create New...