Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. A diferença de banco de dados local (o que talvez seja o que você tá usando) e banco de dados hospedado é que o hospedado vai ter o uso contínuo de largura de banda, essa eu acredito que seja a diferença mais relevante.
  2. Remova thePlayer do parâmetro (linha 1) e use source no lugar de thePlayer; O nome da função está diferente do nome chamado em addEventHandler e também inválido; O removeEventHandler não é necessário. Edit: também vai precisar fazer o mesmo com o valor veh[jogador].
  3. "number" ali é só a variável, o que ocorre é que tem um erro no getElementData que precisa ser corrigido. A propósito isPlayerInLoot() provavelmente retorna uma boolean, e getElementData deve receber um elemento no primeiro argumento.
  4. Função respawnDayZVehicle - linha 318. A função recebe os argumentos x,y,z. O que fazer? Procure no código aonde está chamando a função (linha 296 e 312) e veja de onde está vindo as coordenadas x,y e z. KK. Bom, o próprio autor do tópico já sabe que é a posição.
  5. Também tem aquele helicóptero que fica na água.
  6. @VazErn Posso até estar sendo chato em falar isso, mas te dando um bom conselho: sempre pesquise pelo fórum antes; Na seção Scripting tem muitos tópicos assim e até aqui no nosso sub-fórum. Aqui por exemplo, um bom tutorial: Se você não conseguir entender o tutorial, até porque está em inglês, então nesse caso sem problemas, só postar aqui. Mas de qualquer forma, espero que entenda isso como algo útil pra você, visto que para realmente avançar na programação é importante você ler tutoriais em inglês pois em PT tem pouquíssimos e você também mostra seu esforço em aprender por garimpar o fórum - eu digo isso por mim, só aprendi mesmo depois que busquei tudo por conta própria, eu nunca fui de pedir algo a alguém - estou falando de mim mesmo, não é nenhuma indireta pra você. Quanto ao nosso membro brunob22, realmente não vejo nenhum problema em fazer o código pro pessoal, na verdade, quem vai te impedir? Se eu quiser começo dar scripts pronto pra todo mundo aqui, e aí? Minha opinião é que criar códigos de forma didática aos outros pode até ser um pouco bom pra você mesmo evoluir, mas isso vai até certo ponto, desgasta mais a pessoa e sempre tem aqueles que se aproveitam da boa vontade e começam a te encher o saco via privado, ficam mal acostumados e ficam spamando tópicos com "dúvidas" sempre dependendo de scripters. Concordo em certa parte do que ele disse, cada um tem que correr atrás e fazer seu código. Enfim, se ele não usasse essa forma ofensiva pra se expressar e atacar outros de forma indireta todos aqui entenderia o ponto dele.
  7. A consulta individual acredito que não afeta nada no servidor; Se tratando do salvamento automático em um intervalo de tempo (que os servidores com banco de dados costumam utilizar) - este irá causar um freeze temporário no servidor, que no caso já é esperado. Nunca cheguei a ter um servidor com um fluxo grande de jogadores, então não sei te dizer o impacto gerado, acho que quem tem ou já teve um servidor com muitos jogadores e lida com esse grande fluxo de jogadores sabe responder melhor isso. Tudo vai depender da qualidade do servidor é claro, mas também cabe ao desenvolvedor saber otimizar seus sistemas. Complementando o que o @MaligNos disse, o jogador loga, você carrega as informações, passam elas pra uma tabela para manipulá-las diretamente do código, e atualiza o seu banco de dados e limpa a tabela quando o jogador sai da conta/servidor. A propósito, tabelas é o forte da linguagem Lua e nesse caso é uma ótima opção.
  8. Sobre o DX "quadradão" você se referiu ao dx-rectangle. Realmente janelas em GUI têm temas bonitos, mas isso só funciona para o jogador local. Quando eu citei o visual do DX eu não enquadrei apenas dx-rectangle, há várias formas de se desenvolver em DX, essa seria a mais básica, você pode encontrar pela comunidade global do MTA vários tipos de painéis muito bem desenvolvidos que obviamente vai exigir um conhecimento bem avançado do programador. Pode-se usar render target, shader, interfaces 3D, etc. - nesse ponto que as funções DX quando usadas ao máximo que oferece supera de longe as interfaces padrão do MTA (GUI). Quanto à primeira pergunta sua, você mesmo a respondeu. O DX por não ser uma interface gráfica já definida como GUI, requer que o programador dê todas as funções por meio de códigos que você mesmo vai desenvolver. E isso não seria nenhuma "obrigação" se o programador escolheu por conta própria fazer. Manutenção caso seja necessário, tenho certeza que não seria trabalhoso pra um programador experiente que tem uma boa organização no seu código. Na verdade tem servidores que utilizam uma biblioteca em DX própria, e isso não exige que ele esteja sempre fazendo as coisas do zero. Isso já tem em bibliotecas DX e eu mesmo já desenvolvi alguns que você citou aí; isso não vejo como gambiarra, se for levar por esse lado, todos scripts complexos são gambiarras. Entendo que você prefere GUI, mas não mencione DX superficialmente; para um jogador novo que procura por interfaces para o seu servidor, sim, ele deve usar GUI. E interfaces em DX é pra quem quer um diferencial no seu servidor e que gosta desenvolver com essas funções.
  9. Tirando a falta de 'end' nas linhas 5 e 11 o código está bom, eu não mexeria a menos que achasse necessário uma organização em todo código. Você se referiu ao manuseio da variável NumeroInicial, certo? Acho que o código do @crdn deve funcionar. Me parece que só tem um erro com "NumeroInicial - 1" no botão "arrow_u" sendo que deve ser ao contrário. Outra alternativa seria assim: if (btn == "arrow_u") then NumeroInicial = (NumeroInicial == 1) and 1 or (NumeroInicial + 1) elseif (btn == "arrow_d") then NumeroInicial = (NumeroInicial == 11) and 11 or NumeroInicial - 1 end Vou discordar de você sobre o DX. Eu gosto de usar DX em todas ocasiões e acho que dá um visual muito melhor que o estilo GUI; e acho bom pra quem tá afim de se aprofundar em Lua pois te dá muitas formas de interagir com a programação. Não acho que seja ruim pra performance a ponto de você abrir mão de utilizar, sinceramente nunca tive tal problema, é questão de saber otimizar seu código da melhor forma, visto que utiliza o evento "onClientRender", e quase sempre os problemas estão nesse evento. Quem é inexperiente em programação comete muitos erros usando DX/"onClientRender". DX Abrange tudo o que GUI oferece e com certeza muito mais que isso. No fim, o gosto na verdade é pessoal. Quem prefere as coisas mais agilizadas e simples prefere GUI, já o DX é pra quem quer explorar visuais de interface, mexer mais com programação e cálculos, ou seja, pra quem quer interfaces mais agradáveis pro seu servidor.
  10. Se for só um aviso você pode corrigir colocando esse código dentro do script: local SetElementSyncer = setElementSyncer function setElementSyncer( e, player ) if e and getElementType(player) == "player" then return SetElementSyncer( e, player ) end return false end
  11. Estou fechando o tópico já que a discussão está saindo do assunto; e o autor pelo visto não está interessado em postar mais aqui (vi no perfil dele que ele esteve ativo ontem). No mais, for favor, reportar o tópico. Um usuário sem nenhum cargo no fórum não tem o direito de encerrar o assunto por conta própria.
  12. Que isso, o que importa é não interferir na interpretação de quem lê, erro de português não é algo anormal, na verdade a grande maioria sempre comete erros.
  13. Ou usar a função isPedDoingGangDriveby quando for atirar e verificar se está na zona verde, não testei isso mas fica como uma alternativa.
  14. Deveria ter mostrado a mensagem... Sempre que houver erros assim, depure tudo o que for possível em vez de mostrar uma mensagem qualquer, use todos elementos dentro de tostring, veja o que o valor v mostra, pode ser que tenha conflito com uma variável com o mesmo nome, também edite a mensagem do outputChatBox.
  15. @Mewjas Não leve a mal, mas o que não falta é motivos pra fazer uma crítica construtiva do post. Tá certo, sempre é bom ver pessoas postando tutoriais, isso até ajuda a si próprio melhorar. Só que vem com isso outras coisas - tutoriais com a lógica toda bagunçada. Nem eu que entendo, não consegui pegar a lógica do texto, fora os erros de Português que dificultam a interpretação. É bom pra você progredir, ótimo, mas e se tratando de quem lê o post? Será que vai entender um assunto explicado bem por cima e com poucas informações explicado por alguém que tem um domínio fraco do assunto? Então se você vai fazer um tutorial, tenha em mente isso, e também, saiba lidar com críticas, elas servem pra você melhorar; e o tutorial não serve pra aumentar seu ego. Lembre-se também, que já existem posts relacionados na seção Programação em Lua.
  16. Depure o código, lembre-se de ativar sempre o debugmode com o comando debugscript 3. Veja o meta.xml, o client-side (com funções destacadas em vermelho) deve ser do lado client e o outro código server. Use mensagens e veja o que mostra no chat: function duvida() outputChatBox("@onClientResourceStart : função 'duvida'") botao = guiCreateButton(514, 334, 158, 75, "duvida", false) if botao then outputChatBox("botão criado!") end addEventHandler("onClientGUIClick", botao, execucao, false) end addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), duvida) function execucao() outputChatBox("o botão foi clicado!") if triggerServerEvent("duvida", getLocalPlayer()) then outputChatBox("Evento chamado!") end end Server function duvida() outputChatBox("Função server-side chamada!") end addEvent("duvida", true) addEventHandler("duvida", getRootElement(), duvida)
  17. Qual dificuldade exatamente? O código aí tá certo, pra passar uma informação é só usar os argumentos no triggerServerEvent. Exemplo: function execucao() triggerServerEvent("duvida", getLocalPlayer(), math.random(100) ) end Server: function duvida( valor_aleatorio ) outputChatBox("Número gerado pelo client: ".. tostring(valor_aleatorio)) end addEvent("duvida", true) addEventHandler("duvida", getRootElement(), duvida)
  18. Você disse ficarem, mas outra coisa também é o download, 500mb+ muitos nem perdem o tempo baixando (eu também não faria, nem com uma internet rápida).
  19. Teria que entender profundamente sobre cálculo e o código do resource acima pra adicionar Radar-areas ao minimap. Te recomendo baixar outro Radar mais completo.
  20. Acho que já foi respondido no post do @asrzk
  21. Ou use a condição no inicio do comando e pára a execução se estiver na ACL: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("BOPE")) then return end --- código ---
  22. Grave na conta do jogador quando ele comprar 1 propriedade (setAccountData).
  23. A sintaxe de getElementModel só usa um argumento, então não. A função vai retornar a skin que o jogador tá usando apenas isso. A checagem você faz usando if Exemplo if getElementModel(source) ~= 54 and getElementModel(source) ~= 124 then -- ~= : valor diferente que -- outra forma if not getElementModel(source) == 54 and not getElementModel(source) == 124 then -- se certifica que não esteja usando as skins 54 e 124 Sobre o evento "onMarkerHit", nem sempre o elemento que atinge a marca será um jogador, você pode verificar com getElementType: if getElementType(source) ~= "player" then return end
  24. Não vou fazer o código já que eu deveria ver algum código aqui. Além disso, vai me parecer que você está esperando pelo código, pois desde que criou o tópico não mostrou nada. Já lhe foi dito aqui qual a lógica a seguir pra fazer o código. Se tiver alguma dificuldade em fazê-lo, mostre aqui (ou espere até que alguém faça pra você).
×
×
  • Create New...