-
Posts
4,006 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
DxDrawGifImage é uma função útil que não funciona com arquivo GIF. Ela apenas vai pegar uma série de imagens e renderizar uma depois a outra em cada frame. Você não vai usar um GIF e sim um monte de imagens (PNG, JPG, etc) com nome sequencial (imagem01.png, imagem02.png, imagem03.png). A questão de lagar vai depender do tamanho e resolução das suas imagens e a quantidade delas. O processamento vai ser igual (a princípio 1 imagem diferente por frame).
-
resource controller Qual destes métodos é mais otimizado?
Lord Henry posted a topic in Programação em Lua
Olá senhoras e senhores. Tenho uma micro-dúvida com relação ao desempenho quando um resource controla os outros. A situação é a seguinte: Tenho 1 resource de painel de gerenciamento de mods de veículos (chamaremos de vehMods). Nesse painel tem uma lista com todos os veículos com as colunas ID, Veículo (nome), Status (ativado/desativado). Quando o jogador clica 2x em um veículo da lista, o painel ativa/desativa a modificação daquele veículo. Mas a modificação está em outro mod de veículo, cada veículo tem seu próprio resource de modificação (exemplo de resource: 420TaxiBMW). Dai o resource do painel vai gerenciar este outro resource do Taxi. Atualmente estou controlando os demais resources apenas forçando o jogador a executar o comando deles depois de clicar no painel. Ex: O jogador clica 2x no item da lista "Taxi". Dai o painel força o jogador que clicou a usar o comando /enableVeh 420 (o 420 ele pega de acordo com o ID que aparece na lista e o comando enableVeh ele usa dependendo do status que aparece na lista. Se estiver como "desativado", ele usa /enableVeh. Se estiver "ativado", ele usa /disableVeh. Dai com esse comando, o mod do Taxi vai aplicar/remover a modificação no Taxi e mandar uma mensagem de confirmação. Como poderia ser: Eu estava pensando em trocar por funções exportadas (call/exports). No entanto na Wiki tem um aviso que essa função é pesada quando executada para chamar funções de outros resources. Cada mod de veículo exportaria sua função que ativa/desativa seu veículo. Logicamente essas funções vão seguir o mesmo padrão, assim como os comandos seguem atualmente. Dai o painel passaria a não precisar mais da permissão especial function.executeCommandHandler (ou acesso Admin). Do jeito que está, além do painel precisar da permissão especial pra funcionar, ele usa triggers para passar o clique do painel (client-side) para o server-side para só então fazer o executeCommandHandler. Já tentei colocar TODOS os veículos no mesmo resource, mas ele estourou o limite de tamanho de segurança do MTA, que passa a não carregar os arquivos excedentes para evitar a queda do servidor. Imagina se eu carregasse isso num server hosteado! Geral ia tomar disconnect! O que vcs acham? Manter por comando forçado ou trocar por função exportada? (ou uma terceira sugestão)- 13 replies
-
- executecommandhandler
- export
-
(and 2 more)
Tagged with:
-
Melhore no português aí mano. Não tem como levar a sério um anúncio assim. #ficaadica
-
É pq se o cara der quote antes de eu editar, dai dá problema pra mim. Pois minha resposta estava equivocada. E como eu sei que o pessoal dá quote em tudo sem motivo, prefiro editar direto.
-
(mensagem apagada)
-
Edit: Nos veículos nativos do GTA não dá, é como eu disse acima. Mas nos veículos especialmente adaptados para Improved Vehicle Features, eles tem os componentes de setas separados. Dai a função funciona neles. (só precisa saber o nome do componente)
-
Das luzes não tem como pois elas fazem parte do chassi. É mais fácil vc criar uma table com os offsets predefinidos das luzes de cada modelo de veículo. Logicamente toda vez que vc for mudar o modelo de um veículo, deverá alterar essa table com as novas posições. Se fosse um componente do veículo (porta, capô, escapamento, nitro, pneu, chassi, parabrisa) dai você poderia obter a posição deles com GetVehicleComponentPosition.
-
No seu triggerClientEvent está faltando o primeiro parâmetro, que é pra qual cliente esse evento será ativado. Quando vc não especifica nenhum, ele vai mandar pra todos. Troque seu triggerClientEvent por isso: triggerClientEvent (hitElement, "dxPlauerenter", hitElement) E preste atenção na indentação do seu código, está toda errada e confusa.
-
Vc deve mudar no export pro nome do seu resource. ServerIP é o nome do meu resource de segurança. Eu já esperava que vc fosse dar Ctrl+C e Ctrl+V sem nem ler direito.
-
Resource de Segurança: Resource protegido: Obviamente o meu sistema de segurança é mais avançado do que este. Mas já resolve seus problemas.
-
Seu script de segurança está todo errado.
-
Da próxima vez poste na sessão adequada de Programação em Lua. Mostre o script que vc está tentando fazer para que possamos identificar o problema.
-
Vc já sabe lógica de programação?
-
Deixe o Thanks nas respostas que lhe ajudaram como forma de agradecimento. Não precisa de inventário. Só precisa de um setElementData no veículo com a quantidade de munição. Da pra fazer por comando. Normal. Vc está sempre tentando fazer aquilo que está além do seu conhecimento. Tente estudar mais antes de fazer coisas complexas. Baixe resources parecidos da internet e tente entender como eles funcionam. Sem o conhecimento vc vai sempre encontrar barreiras na hora de criar as coisas e vai perder tempo tentando descobrir como faz.
-
Ta ae:
-
Use toggleControl para desabilitar o controle de atirar com veículo. Sobre o caso de munição, faça com elementData no veículo. Se ele tiver data de munição, então habilita o controle de atirar do veículo, caso contrário desabilita. Exemplo: addEventHandler ("onVehicleEnter", root, function (thePlayer, seat, jacked) -- Executa essa função quando alguém entrar em um veículo. if (getElementData (source, "veh.ammo")) then -- Se o veículo que o jogador entrou tiver a data veh.ammo, então: if (getElementData (source, "veh.ammo") > 0) then -- Se essa data for maior que 0, então: toggleControl (thePlayer, "vehicle_fire", true) -- Permite que o jogador atire com o veículo. toggleControl (thePlayer, "vehicle_secondary_fire", true) else -- Se a data não for maior que 0, então: toggleControl (thePlayer, "vehicle_fire", false) -- Proibe o jogador de atirar com o veículo. toggleControl (thePlayer, "vehicle_secondary_fire", false) end else -- Se o veículo não possui essa data, então: toggleControl (thePlayer, "vehicle_fire", false) -- Proibe o jogador de atirar com o veículo. toggleControl (thePlayer, "vehicle_secondary_fire", false) end end) A parte de colocar a munição no veículo dai é com vc.
-
local x, y = guiGetScreenSize () -- Obtém a resolução do jogador, no meu caso x = 1366 e y = 768 function HUD () dxDrawLine (x/2 - 240, y - 25, x/2 - 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha da esquerda dxDrawLine (x/2 - 240, y - 25, x/2 + 240, y - 25, tocolor(0, 0, 0, 255)) -- Linha superior dxDrawLine (x/2 - 240, y - 5, x/2 + 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha inferior dxDrawLine (x/2 + 240, y - 25, x/2 + 240, y - 5, tocolor(0, 0, 0, 255)) -- Linha da direita dxDrawRectangle (x/2 - 240, y - 25, 480, 20, tocolor(46, 46, 46, 155)) -- Retângulo centralizado horizontalmente na tela. dxDrawText ("TESTANDO MENSAGEM COM LETRAS MAIÚSCULAS e também com letras minúsculas.", x/2 - 240, y - 25, x/2 + 240, y - 5, tocolor(255, 255, 255, 255), 1, "default", "center", "center", true) -- Texto centralizado no retângulo. end addEventHandler ("onClientRender", root, HUD)
-
Pra começar vc deveria usar guiGetScreenSize para obter a resolução do jogador. Depois sabendo disso, vc posiciona usando o tamanho da tela como base no cálculo. E também não faz sentido esse tamanho que vc está usando no retângulo. Por quê o tamanho x = 402, y = 21?
-
Acabei de testar seu código na resolução 1366x768 e sem alterar nada. Ele já não está centralizado em X. Seu texto também não está dentro do dxDrawRectangle.
-
Cadê a hudTable? Está ficando torto comparado ao quê? Posição do HUD original? Além disso você não está trabalhando com a resolução do jogador. Isso significa que a posição dos dxDraw sempre vai ser diferente nas outras resoluções.
-
Realmente o código está bem incompleto. Não tem nem a parte do evento ativador. Mostre o resto do código, não tem como adivinhar o problema.
-
Sugestões para ajudar vc a desenvolver melhor seu tópico. Explicar com mais detalhes o que é o mapa. Imagens em vez de links. Download disponível na comunidade em vez de sites de terceiros. (não tive coragem de abrir seu link, não parece confiável)
-
Faz interpolateBetween na imagem com easing do tipo "OutBack"
-
Teste com arquivos client-side maiores. Algumas imagens de alta resolução, áudios, texturas. As vezes o download até ocorreu, mas foi rápido demais e nem deu pra perceber. E sim, desligue a máquina antes de testar de novo.
-
Eu compilo e faço proteção por IP. Se ocorrer vazamentos da host (ou se um cliente que comprou meu script tentar vazar ele na internet), ainda sim o resource estará protegido.