Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,953
  • Joined

  • Last visited

  • Days Won

    177

Everything posted by Lord Henry

  1. Não é permitido compartilhar nem pedir links piratas aqui. Procure na internet por sua própria conta e risco.
  2. A coisa q mais importa é oq falta na sua divulgação: IP do servidor.
  3. Normalmente o pessoal associa o veículo a uma tabela. Ou colocam o "owner" como elementData no veículo.
  4. Tente reinstalar o resource do map editor. É o que está na pasta [editor] Link dos resources nativos.
  5. local markCoords = { {x, y, z}, -- Troque o x, y, z pela posição x, y, z do marker {x, y, z}, -- Faça o mesmo no segundo marker. {x, y, z}, -- E assim por diante. } local markers = {} -- Tabela vazia, onde os markers ficarão ao serem criados. for i, item in ipairs (markCoords) do -- Para cada item da tabela markCoords, faça: local x, y, z = unpack(item) -- x, y, z recebem a posição do item da tabela markCoords. markers[i] = createMarker(x, y, z, "cylinder", 1.1, 255, 255, 255, 50) -- Cria o marker nessa posição e coloca ele na tabela markers. end addEventHandler("onMarkerHit", resourceRoot, function(hitElement) -- Faz com que essa função só ative para markers criados neste resource. if getElementType(hitElement) == "player" then outputChatBox(" ", hitElement) -- Textos vazios não precisam de parâmetros de cor. outputChatBox("Para começar a trabalhar, digite #ffff00/trabalhar ", hitElement, 255, 255, 255, true) outputChatBox(" ", hitElement) end end) function salariopm(thePlayer) -- Policial. for i, marker in ipairs (markers) do -- Para cada marker da tabela markers, faça: if isElementWithinMarker(thePlayer, marker) then -- Se o jogador está dentro desse marker, então: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup(Grupo1)) then -- Grupo1 dará erro se você não declarar essa variável antes em algum lugar. if getElementData(thePlayer, "TrabalhoPolicial") then setElementData(thePlayer, "TrabalhoPolicial", false) outputChatBox("Você #ff0000saiu #009affde serviço!", thePlayer, 0, 154, 255, true) setElementModel(thePlayer, 0) else setElementData(thePlayer, "TrabalhoPolicial", true) outputChatBox("Você #006effentrou #009affem serviço, bom trabalho!", thePlayer, 0, 154, 255, true) setElementModel(thePlayer, 283) end else outputChatBox("Você não tem permissão para isso.", thePlayer, 255, 0, 0, true) end break -- Sai do loop pois já encontrou o marker em que o jogador está. end end end addCommandHandler("trabalhar", salariopm)
  6. Já tentou usar onElementDestroy para guardar os veículos antes deles serem destruídos?
  7. Sim, some depois de um tempo pra evitar que os usuários deletem códigos prontos. Só faltou dar mais espaço ali nos dbExec, no exports e nos destroyElement.
  8. É uma função que ajuda no desenvolvimento, faz com que você habilite o modo desenvolvedor. Você consegue ativá-la usando setDevelopmentMode (true) só funciona client-side. Também dá pra você ativá-la no painel Admin, na aba Resources. Digite ali no campo de comando e clique em Client. Eu fiz meu painel de login ativar essa função automaticamente quando eu faço login. Para evitar o empenho de ir ali no painel Admin ativar o modo desenvolvedor toda vez q preciso dos comandos especiais. Depois que ela está ativada, você passa a ter acesso a esses 2 comandos especiais. /showcol - Mostra/oculta os colshapes só para você. (aqueles criados com createColCuboid, createColSphere, etc) /showsound - Mostra/para de mostrar os IDs dos sons do cenário no seu Debug Console. Precisa estar com /debugscript ativo para ver o Debug Console.
  9. Essa integração com Discord dai já não sei lhe responder. Teste o código com outputChatBox em vez de enviarMsg, se funcionar normalmente então é erro nessa sua integração do Discord.
  10. Troque o v por nome. Editei novamente o código.
  11. Código ilegível. Corrija a indentação.
  12. Toda função de dxDraw tem um parâmetro postGUI. Defina-o como true nas funções dxDraw da infobox para fazer com que ela apareça acima dos outros elementos. Isso vai funcionar se o painel de login for feito em CEGUI. Se não funcionar (o painel de login também for feito com DX), então será necessário você mexer na prioridade do onClientRender da infobox para "low" fazendo com que ela sempre seja desenhada DEPOIS dos outros onClientRenders. No caso da segunda opção, faça assim no resource da infobox: addEventHandler ("onClientRender", root, nomeDaFunction, true, "low") -- Troque nomeDaFunction pelo nome da função onde estão os dxDraw da infobox.
  13. Basicamente você cria uma condição com isCursorInPosition da mesma forma que você fez na condição de clicar no botão. Porém dessa vez você coloca diretamente na função onde está os dxDraw do painel. function render_DX() -- Função que é chamada por um onClientRender. -- Aqui em cima ficam os dxDrawRectangle da janela do painel. if isCursorInPosition(x, y, w, h) then -- Condição igual ao do clique do botão, com os mesmos parâmetros. dxDrawRectangle() -- botão com a cor do mouse em cima. else dxDrawRectangle() -- botão normal. end -- Faz o mesmo com os outros botões, com os parâmetros deles. -- Aqui ficam os dxDrawText que ficam em cima dos botões. end
  14. Talvez você esteja procurando por isso: GetAccountByID A função retornará a conta que tiver o ID que você especificar ou retornará false se não tiver nenhuma conta com este ID. Exemplo maroto: local id = 2 -- ID a ser verificado. if getAccountByID(id) then -- Se existe uma conta com o ID 2, então: local acc = getAccountByID(id) local accName = getAccountName(acc) print("Conta encontrada: "..accName) else print("Não existe nenhuma conta com o ID "..id) end
  15. Sim, onde você apontou só pode ser um elseif. O else só funciona se for a última condição de seu escopo, ele é usado como uma condição de escape sem condições. (se nenhum if nem elseif anterior for verdadeiro, ele entra no else) E tome cuidado coma indentação para não se confundir. function ex(thePlayer) if getElementData(thePlayer, "ex") == true then outputChatBox("sim") elseif getElementData(thePlayer, "ex2") == true then outputChatBox("sim2") else --??? Aqui só pode ser elseif else outputChatBox("nao") end end
  16. local Dinheiroganho = 5000 local PlayersM = 1 local skinIDs = {2, 122} function salario (thePlayer) local players = getElementsByType("player") -- Players recebe todos os jogadores conectados no server. for i,player in ipairs(players) do -- Para cada player conectado no server, faça: if isElement(player) then -- Se player ainda é um elemento, então: if getElementData(player, "TrabalhoPolicia") then -- Se player tem essa elementData, então: for i,id in ipairs(skinIDs) do -- Para cada id da tabela skinIDs, faça: if getElementModel(player) == id then -- Se o ID da skin do player é um ID da tabela, então: if #players >= PlayersM then -- Se tem mais jogadores do que o necessário para receber salário, então: givePlayerMoney(player, Dinheiroganho) -- Dá dinheiro pro policial. outputChatBox("Você recebeu seu salário", player, 255, 0, 0, true) -- output teste else -- Se não tem jogadores online suficiente, então: outputChatBox("Você não recebeu seu salário pois não tem mais do que "..PlayersM.." players online", player, 255, 0, 0, true) -- output teste end break -- Para de verificar os outros IDs da tabela de skins e sai deste loop, pois já encontrou o ID correto. end end end end end end setTimer(salario, 3000, 0) -- milissegundos
  17. Minha primeira sugestão seria deixar compatível com tema escuro do Windows. Até o server console do MTA é em tema escuro, não faz sentido ser claro assim. Outra coisa que seria legal é poder configurar todos os parâmetros do mtaserver.conf diretamente no programa, para não precisar abrir o arquivo.
  18. Pasta de instalação do GTA não pode ser no OneDrive. Instale seu GTA SA no caminho padrão que o instalador dele sugere. Só depois tente instalar o MTA novamente. E aqui ele está reclamando que tem mods no seu GTA. Remova-os e deixe o GTA limpo. Remova os arquivos.asi do seu GTA.
  19. Fiz um painel fixo para você. Vai funcionar em todas as resoluções sem distorcer. A posição dele é responsiva no centro da tela, mas o tamanho é fixo. 640x480 1920x1080
  20. Você está usando isso em um onClientRender, getResources precisa de tempo para ser executada e não pode ser usada em um onClientRender.
  21. Considere que GivePlayerMoney só funciona server-side. Pois se você fizer client-side, ele muda só na HUD mas não dá dinheiro de verdade. Faça assim: (server-side) Dinheiroganho = 5000 PlayersM = 1 function salario (thePlayer) local players = getElementsByType("player") for i,player in ipairs(players) do if isElement(player) then if getElementData(player, "TrabalhoPolicia") and getElementModel(player) == 0 then -- No lugar de 0, coloque o ID da skin que você quer verificar. if #players >= PlayersM then givePlayerMoney(player, Dinheiroganho) outputChatBox("Você recebeu seu salário", player, 255, 0, 0, true) -- output teste else outputChatBox("Você não recebeu seu salário por não ter mais de "..PlayersM.." players online", player, 255, 0, 0, true) -- output teste end end end end end setTimer(salario, 3000, 0) -- milissegundos
  22. Não, pois você ainda terá problemas com as áreas clicáveis dos botões que precisarão ser adaptadas também.
  23. Outro problema é que em resoluções baixas demais, seu texto se tornará ilegível se usar escala menor. 640x480 1920x1080 Os botões de sim e não também bugarão pois são menores do que o raio dos cantos.
  24. A resolução segura mais baixa do MTA é 640x480. Então eu prefiro fazer os painéis com no máximo esse tamanho e deixar fixo. Ou vc faz tamanho fixo ou você cria condições que verificam o tamanho da tela do jogador e seta uma escala diferente nas fontes. Você também pode criar uma tabela com todas as resoluções padrão do MTA e setar uma escala de fonte diferente em cada uma delas. Obviamente isso dará trabalho pois você precisará testar todas as opções de resolução no seu script.
×
×
  • Create New...