-
Posts
3,875 -
Joined
-
Days Won
67
Everything posted by DNL291
-
Sim. @Laluis23 Lembre-se de usar o comando /debugscript 3 in-game da próxima vez.
-
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
Vou manter o tópico aberto e aguardar a ajuda que o ccw está dando pra você. Se tiver informações que achar conveniente poste aqui, pode ser que mais pessoas tenham o mesmo problema e também pra sabermos qual foi a solução. -
Hi, we are looking for someone who can edit skin textures, this includes: feet, legs, torso, head / hair etc. This will be used for a character clothing system. Payment via Paypal. Contact me via PM in this forum if you are interested.
- 1 reply
-
- 3
-
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
Você pode ser qual a versão do server com o comando sver no console do servidor. Se tiver desatualizado, recomendo atualizar pra uma versão mais atual. Você mudou de local alguma pasta do MTA? (pasta do servidor por exemplo). -
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
Bom, agora tenho certeza que só pode ser um problema diferente, talvez com o servidor/sistema do PC. Até por que o mesmo erro ocorreu com o resource do Malignos e pelo que me lembro em nenhum momento a função funcionou pra você. Se quiser, você pode deixar aqui o log do MTADiag, baixe-o, execute ele e cole aqui o link salvo no clipboard (Ctrl+c) : Baixar MTADiag Edit: Use a função fileRename no lado server que deve funcionar. -
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
Já tentou com um arquivo diferente ou fora de qualquer pasta ou deletando os arquivos do cache do cliente (MTA San Andreas 1.5\mods\deathmatch\resources)? A versão do MTA com certeza não tem relação com esse problema. -
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
funciona no lado cliente também. Se você quiser pode upar o resource que está testando em algum site e veremos se há algo errado; senão tiver, o problema só pode ser outro. -
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
Eu falei sobre o comentário do asrzk, só dá problema se tiver com a extensão / local incorretos, pode ser um arquivo sem extensão que funciona. Minha colocação deu a entender que foi o que aconteceu com o autor do tópico, fica aí a correção. -
[Ajuda] - O que está de errado nesse código?
DNL291 replied to Furious's topic in Programação em Lua
Testei com um arquivo sem extensão e funciona também. O problema é com o diretório e extensão errados. -
Testei meu código e ele funciona. Tente por aqui: https://pastebin.com/05ZwD3k9
-
Não sei se entendi certo, mas você pode armazenar na database o grupo da ACL que o jogador está.
-
Tente: function comandoloja (source) if isElementWithinMarker (source, roubarloja ) then for _,players in pairs(getElementsByType("player")) do for i, k in pairs(corps) do local ContaACL = getAccountName ( getPlayerAccount ( players ) ) if isObjectInACLGroup ("user."..ContaACL, aclGetGroup (k)) then outputChatBox("#ffffff*#FF0000Atenção - O Jogador:#ffffff " .. getPlayerName(source) .. " #FF0000Está Roubando a Loja1.", players,255,255,255,true) end end end setPlayerWantedLevel ( source, 6 ) setElementPosition ( lojasair1, 834.66760, 7.45359, 1050) setElementPosition ( roubarloja, 822.74316, -0.47490, 1050) outputChatBox ('#ffffffAguarde Enquanto Você Pega O Dinheiro!',source,255,255,255,true) setPedAnimation(source, "SHOP", "ROB_Loop_Threat", 40000, true, false, false, false) setPedRotation(source,90 ) setPedAnimation( ped, "SHOP", "SHP_Rob_HandsUp") triggerClientEvent ( root, "roubar", root) setElementVisibleTo ( blipalarme, root, true ) setTimer ( function(player) setElementPosition ( lojasair1, 834.664418,7.3,1005.18701) setElementInterior ( roubarloja, 3) setPedAnimation(ped,false) setElementPosition ( ped, 819.40869, -0.45965, 1004.17969) givePlayerMoney ( player, 1300 ) outputChatBox ('#ffffffVocê Roubou a Loja 1 e Pegou #00ff00R$1.000',player,255,255,255,true) end, 40000, 1, source ) setTimer ( function() setElementVisibleTo ( blipalarme, root, false ) setElementPosition( roubarloja, 822.74316, -0.47490, 1003.2) end, 80000, 1 ) end end addCommandHandler ( "assaltar", comandoloja )
-
Boa. Por isso é bom saber depurar o código, salva o seu tempo e agiliza pra fazer o projeto.
-
Os valores na função getElementData estão inválidos. Você vai precisar verificar se estão corretos para então prosseguir. Se tiver com problema para definir o valor, mostre aqui como você está setando o element-data.
-
Tente removendo a linha do loop na função initSpraying. Na linha 30 substitua a função por esta: function initSprayingForPlayer(player) if player then createTagForPlayer(player) return end -- addEventHandler("onElementDataChange",root,createAnotherTagForPlayer) for i,p in ipairs(getElementsByType("player")) do createTagForPlayer(p) end end Na função initSpraying chame essa função acima: initSprayingPlayer()
-
Depure o seu código: local c = getElementData(getLocalPlayer(), "mercadoCoisas") outputChatBox("c: "..tostring(c)) local d = split(c, ',') iprint(d) setElementData(getLocalPlayer(), "mercadoCoisas", ""..d[1]..","..d[2]..","..d[3]..",1,"..d[5]..","..d[6]..","..d[7]..","..d[8]..","..d[9]","..d[10])
-
Deveria estar retornando do outro jogador, não faz sentido retornar do jogador local sendo que não foi passado ele na função. Mostre como está o seu código, se preferir pode ser por privado.
-
Sim. Aquele "{}" deve ter sido dessa função.
-
Você diz as infos que saem desse script ou outras? Tem a função iprint que coloquei no código, ela mostra mensagem no debug. Eu usei essa função e a outputChatBox só pra depuração. Esta função também foi só pra teste, caso esteja no código pode remover: if c ~= true then outputChatBox("@PDA: "..tostring(PDA)) c = true end
-
Pode ser o element-data não retornando o valor certo. Você também setou nil na variável selectedPlayer, com um valor inválido a verificação não vai executar e nenhum texto vai ser mostrado. Faça um teste neste código e veja o que mostra no chat e debug: local weapons = {} function createPlayerList () playersList = guiCreateGridList (0.26, 0.25, 0.11, 0.57, true) local column = guiGridListAddColumn (playersList, "Jogadores", 0.9) if (column) then for _, v in ipairs (getElementsByType("player")) do local row = guiGridListAddRow (playerList) guiGridListSetItemText (playerList, row, 1, string.gsub(getPlayerName(v), "#%x%x%x%x%x%x", ""), false, false) end addEventHandler ("onClientGUIClick", playerList, click, false) end end addEventHandler ("onClientResourceStart", resourceRoot, createPlayerList) function click (button) if button ~= "left" then return end local sr = guiGridListGetSelectedItem (source) if sr and sr ~= -1 then local playerName = guiGridListGetItemText (source, sr, 1) local thePlayer = _getPlayerFromName (playerName) if isElement(thePlayer) then for i=1,12 do local w = getPedWeapon ( thePlayer, i ) if w and w ~= 0 then weapons[i] = w end end iprint( weapons ) selectedPlayer = thePlayer c = false end outputChatBox("thePlayer: "..tostring(thePlayer)) else selectedPlayer = nil weapons = {} outputChatBox("Nenhum jogador selecionado") end end addEventHandler( "onClientRender", root, function() dxDrawText( (weapons[2] and "V" or "X"), screenW * 0.3750, screenH * 0.3167, screenW * 0.4336, screenH * 0.3583, tocolor(255, 255, 255, 255), 1.00, "clear", "center", "center", false, false, false, true, false) --if selectedPlayer then local PDA = "" if selectedPlayer then PDA = getElementData (selectedPlayer, "AirNewSCR_Porte_de_Armas") end if c ~= true then outputChatBox("@PDA: "..tostring(PDA)) c = true end if PDA == "Sim" then dxDrawText("PDA (#00FF00✔#FFFFFF)", screenW * 0.7661, screenH * 0.4333, screenW * 0.5703, screenH * 0.4750, tocolor(255, 255, 255, 255), 1.00, "clear", "center", "center", false, false, false, true, false) else dxDrawText("PDA (#FF0000✘#FFFFFF)", screenW * 0.7661, screenH * 0.4333, screenW * 0.5703, screenH * 0.4750, tocolor(255, 255, 255, 255), 1.00, "clear", "center", "center", false, false, false, true, false) --selectedPlayer = nil -- você está anulando a variável que é necessária p/ o texto ser mostrado end --end end ) function _getPlayerFromName( name ) if not (name) then return false end -- for i,p in pairs(getElementsByType("player")) do if getPlayerName(p):gsub("#%x%x%x%x%x%x", "") == name then return p end end return false end
-
Cria a marker no lado cliente e verifica se o jogador que atingiu é o jogador local.
-
Ajuda - createPed deslogar e entrar no servidor
DNL291 replied to Furious's topic in Programação em Lua
Você já teve as respostas lá no outro tópico, então vou fechar este para evitar mensagens fora do assunto. -
Deve ser na verificação if selectedPlayer then. Mostre como está a função click.
-
Falei sobre isso no seu outro tópico, você pode separar esses valores com vírgula e obter cada um com a função split: setElementData(localPlayer, "BoneClothes", "1,1,0,1" ) local bclothes = getElementData(localPlayer, "BoneClothes" ) if bclothes then local v = split( playerPosData, ',' ) iprint( v ) end
-
Account-data é utilizado para salvar e carregar os dados. Se vai pesar no banco de dados setando várias vezes, aí eu não sei se vai mesmo afetar ou o quanto vai afeitar. Você pode otimizar o salvamento definindo múltiplos valores para um registro, exemplo: local x,y,z = getElementPosition(thePlayer) local _,_,rot = getElementRotation(thePlayer) local acc = getPlayerAccount(thePlayer) -- não recomendado setAccountData( acc, "player_x", tostring(x) ) setAccountData( acc, "player_y", tostring(y) ) setAccountData( acc, "player_y", tostring(z) ) setAccountData( acc, "player_rot", tostring(rot) ) Otimizando: local x,y,z = getElementPosition(thePlayer) local _,_,rot = getElementRotation(thePlayer) local acc = getPlayerAccount(thePlayer) -- Com JSON setAccountData( acc, "player_pos", toJSON( {x, y, z, rot} ) ) -- Ou: setAccountData( acc, "player_pos", tostring(x)..", "..tostring(y)..", "..tostring(z)..", "..tostring(rot) ) Você pode usar esta função para reduzir o tamanho decimal: https://wiki.multitheftauto.com/wiki/Math.round; Ou a função Lua string.format() Com string.format: local p_pos = string.format( "%.4f,%.4f,%.4f,%.4f", x,y,z,rot ) -- salvando na conta: setAccountData( acc, "player_pos", p_pos ) Obtendo os valores separados por vírgula e JSON: local playerPosData = getAccountData( acc, "player_pos" ) if playerPosData then local pos = split( playerPosData, ',' ) local x,y,z,rot = pos[1], pos[2], pos[3], pos[4] end -- Obtendo os valores salvos com JSON: local playerPosData = getAccountData( acc, "player_pos" ) if playerPosData then local pos = fromJSON( playerPosData ) local x,y,z,rot = pos[1], pos[2], pos[3], pos[4] end Saí um pouco do assunto. Mas voltando ao que você mencionou da Wiki sobre account-data: Na verdade isso se aplica ao element-data, é recomendado evitar o excesso de setElementData sincronizado entre client/server para ter o menor uso de tráfego de rede. E também substituir o seu uso por tabelas preferencialmente. Para ver o desemprenho/performance dos seus scripts tem o resource ipb já mencionado e o performancebrowser que você pode analisar também o lado cliente. Sobre usar 50 account-data, sinceramente eu nunca usei essa quantidade em cada conta, você pode reduzir a quantidade de registros por fazer uma compactação com os métodos mostrados acima. Você também pode optar pelo banco de dados SQL.