-
Posts
4,008 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
Ta ae: dxDrawRectangle (screenW * 0.4319, screenH * 0.0898, screenW * 0.1464, screenH * 0.0195, tocolor(0, 0, 0, 39), false) dxDrawRectangle (screenW * 0.4319, screenH * 0.0898, screenW * 0.1464 * (conta1/100), screenH * 0.0195, tocolor(251, 165, 0, 254), false) -- retângulo que varia de acordo com o valor de conta1 dxDrawText (conta1, screenW * 0.4319, screenH * 0.0898, screenW * 0.5783, screenH * 0.1093, tocolor(0, 255, 0, 255), 1, 1, "default", "center", "center") Botei esse drawText só pra testar o valor de conta1.
-
Não é possível. Você não pode ter 2 armas diferentes no mesmo slot. Cada slot só suporta 1 arma. Mais detalhes no Weapons Edit: talvez seja possível através de gambiarras, o que não é recomendável
-
O erro na verdade está na sua linha 23, onde player = false
-
Substituir a tela de download do MTA
Lord Henry replied to Gabriel63495's topic in Programação em Lua
Já vi esse código em algum lugar. -
@#DeltaSCR Vc quis dizer server-side
-
@Gabriel63495 Use este botão em vez de colar código direto no texto.
-
Editei o comentário acima.
-
Isso não faz sentido! Aquele terceiro print faz exatamente a mesma coisa que no seu script, ele pega a vida da carga e mostra no debug. Não tem como dar erro na sua comparação por valor booleano. Edit: NOOSSAAA! Descobri! No seu script vc fez assim: if not getElementHealth( Carga_Disel ) <= 350 then -- Se (não número) é menor ou igual a 350, então: -- QUE É O MESMO QUE: Se (false) é menor ou igual a 350, então: ERRO -- Mas vc quis dizer: if not (getElementHealth (Carga_Disel) <= 350) then -- Se (vida da carga NÃO É menor ou igual a 350), então: -- Que seguindo uma lógica mais otimizada de acordo com as boas práticas de programação, pode ser escrita como: if (getElementHealth (Carga_Disel) > 350) then -- Se (vida da carga é maior que 350), então: Faça assim: if getElementHealth (Carga_Disel) > 350 then
-
Prefiro o Discord Oficial do MTA e ir na sala Português. https://discord.com/invite/mtasa
-
Hum... Parece ser um elemento mesmo. Não era pra gerar erro. Troque a linha do print por esses: print ("É elemento: "..tostring(isElement (Carga_Disel))) print ("Tipo de elemento: "..tostring(getElementType (Carga_Disel))) print ("Vida do elemento: "..tostring(getElementHealth (Carga_Disel)))
-
O T é um chat global, não local. A não ser que vc tenha um script que altere isso. Nesse caso, delete o script de chat modificado. Se estiver usando o chat global nativo do MTA, faça como já foi mencionado pelo nosso colega @Jonas^
-
@#Delta vai dar erro na linha 4.
-
Antes da linha if not getElementHealth( Carga_Disel ) <= 350 then Coloque isso e nos diga o que aparece. print ("Carga_Disel: "..tostring(Carga_Disel))
-
---------------------------- SALVAR function onPlayerQuitOrResStop (prevAcc, _) if eventName == "onResourceStop" then for i, player in ipairs(getElementsByType("player")) do savePlayerData (player) end elseif eventName == "onPlayerQuit" then savePlayerData (source) elseif eventName == "onPlayerLogout" then -- Neste caso, só é possível salvar na conta que o jogador estava logado por meio do parâmetro de função. Se usar getPlayerAccount agora, vai retornar conta Guest. savePlayerData (source, prevAcc) end end addEventHandler ("onResourceStop", resourceRoot, onPlayerQuitOrResStop) addEventHandler ("onPlayerQuit", getRootElement(), onPlayerQuitOrResStop) addEventHandler ("onPlayerLogout", getRootElement(), onPlayerQuitOrResStop) function loadMyData (_, currAcc) if eventName == "onResourceStart" then -- Foi esperto usar isso para aproveitar a mesma função para eventos diferentes. for i, player in ipairs(getElementsByType("player")) do loadPlayerData (player) end elseif eventName == "onPlayerLogin" then loadPlayerData (source, currAcc) end end addEventHandler ("onResourceStart", resourceRoot, loadMyData) -- Não se usa nome de função igual nome de evento, por isso troquei. addEventHandler ("onPlayerLogin", getRootElement(), loadMyData) -- Recomenda-se colocar os eventos logo após as funções que eles vão ativar, para facilitar a leitura. function savePlayerData (p, acc) local playeraccount = false -- Cria a variável local. if acc then playeraccount = acc -- playerAccount = conta que o jogador ESTAVA logado. Esta variável ainda é local, aqui apenas foi atribuido valor a ela. else playeraccount = getPlayerAccount (p) end if (playeraccount) and not isGuestAccount (playeraccount) then --local trabalhotr = playerTraficante[p] or "n/a" local ax = playerAx[p] local coca = playerCoca[p] local bagulho = playerBagulho[p] local IngAx1 = playerIngAx1[p] local IngAx2 = playerIngAx2 [p] local IngCoca1 = playerIngCoca1 [p] local IngCoca2 = playerIngCoca2 [p] local IngCoca3 = playerIngCoca3 [p] local sementes = playerSementes [p] setAccountData (playeraccount, "droga.ax", ax) setAccountData (playeraccount, "droga.coca", coca) setAccountData (playeraccount, "droga.maconha", bagulho) setAccountData (playeraccount, "droga.ingax1", IngAx1) setAccountData (playeraccount, "droga.ingax2", IngAx2) setAccountData (playeraccount, "droga.ingcoca1", IngCoca1) setAccountData (playeraccount, "droga.ingcoca2", IngCoca2) setAccountData (playeraccount, "droga.ingcoca3", IngCoca3) setAccountData (playeraccount, "droga.sementes", sementes) end end function loadPlayerData (p, acc) local playeraccount = false if acc then playeraccount = acc else playeraccount = getPlayerAccount (p) end if (playeraccount) and not isGuestAccount (playeraccount) then local ax = getAccountData (playeraccount, "droga.ax") -- Não precisa do 'or false' pois a função getAccountData já retornará false caso a data não exista. local coca = getAccountData (playeraccount, "droga.coca") local bagulho = getAccountData (playeraccount, "droga.maconha") local IngAx1 = getAccountData (playeraccount, "droga.ingax1") local IngAx2 = getAccountData (playeraccount, "droga.ingax2") local IngCoca1 = getAccountData (playeraccount, "droga.ingcoca1") local IngCoca2 = getAccountData (playeraccount, "droga.ingcoca2") local IngCoca3 = getAccountData (playeraccount, "droga.ingcoca3") local sementes = getAccountData (playeraccount, "droga.sementes") if (ax) then setElementData (p, "droga.ax", ax) end -- Passa todas as accountDatas para elementData (isso pesa bastante no servidor, tenha certeza do que está fazendo.) if (coca) then setElementData (p, "droga.coca", coca) end -- Está correto em manter datas parecidas com um índice separado pelo ponto. if (bagulho) then setElementData (p, "droga.maconha", bagulho) end if (IngAx1) then setElementData (p, "droga.ingax1", IngAx1) end if (IngAx2) then setElementData (p, "droga.ingax2", IngAx2) end if (IngCoca1) then setElementData (p, "droga.ingcoca1", IngCoca1) end if (IngCoca2) then setElementData (p, "droga.ingcoca2", IngCoca2) end if (IngCoca3) then setElementData (p, "droga.ingcoca3", IngCoca3) end if (sementes) then setElementData (p, "droga.sementes", sementes) end end end Não testado. Se tiver erros, mostre o /debugscript 3
-
Depende muito da forma com que vc está tratando os dados. Vc apaga essa lista ao sair do baú? Ou é uma lista permanente? Eu usaria tables. Cada table iria salvar os itens de cada baú. Fica bem difícil opinar quando não se faz ideia alguma de como o sistema funciona.
-
Tá muito bonito vc resolvendo os problemas pra ele, mas seria interessante vc também explicar o motivo do erro. Senão ele só vai copiar e n vai entender o que estava errado.
-
A variável Carga_Diesel está com erro. Mas sim, é possível checar a vida de uma carga anexada ao caminhão. Mande a parte do código onde vc declara a variável Carga_Diesel.
-
Carga_Diesel não é um elemento válido para ter vida. Sendo assim, getElementHealth retornou false. E não tem como comparar booleano com número.
-
Estou com Problema com Marker
Lord Henry replied to TavinhoMTA's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
@Gabriel63495 ele fez downgrade pra versão anterior (1.5.5), entrou no editor de mapas e dai o editor pediu pra ele fazer upgrade pra versão atual (1.5.6) e depois disso voltou ao normal. -
Isso é linguagem LUA cara. Vai precisar de um arquivo client.lua, um arquivo server.lua, um meta.xml e se for salvar as perguntas em arquivo separado, um util.lua ou util.xml. Imagens é opcional, não sei se suas perguntas vão exigir imagem em anexo, mas se tiver é só colocar elas dentro da pasta do resource e declará-las no meta.xml. Mais detalhes na Wiki do MTA: https://wiki.multitheftauto.com/wiki/PT-BR/Introdução_ao_Scripting
-
Tá... O painel do questionário não deve ultrapassar o tamanho de 640x480 pixels. (resolução mínima do MTA) Deverá ter um botão para passar para a próxima pergunta (ficará a seu critério se o botão deve aparecer somente após ter uma resposta na pergunta atual) (Opcional) Botão para voltar para a pergunta anterior. (Se o questionário não for obrigatório) Botão X para cancelar e fechar o questionário. Prefira cores escuras para as janelas e backgrounds e textos na cor branca. Deve aparecer somente 1 pergunta por vez, não faça no estilo Google Forms que mostra a seção inteira pois não é uma boa ideia exigir o uso do scroll no MTA (ou barra de rolagem). Se preferir, você pode substituir os botões DX por teclas bindadas, por exemplo ENTER para passar para a pergunta seguinte e BACKSPACE para voltar para a pergunta anterior. As respostas serão salvas em variáveis, numa table. Depois de terminar o teste, basta enviar essa table para o server registrar as respostas. As perguntas podem ser salvadas em um arquivo XML ou então em outro arquivo LUA numa table, para serem acessadas pelo painel.
-
E pretende fazer a interface do questionário em CEGUI ou DXGUI?
-
Suponho que vc já saiba lógica de programação, certo?
