Jump to content

Boechat

Members
  • Posts

    213
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Boechat

  1. Olha, alguns pontos que eu pude observar são: 1 - A função JogadorQuit nessa linha provavelmente está dando erro no console pois não existe o the player na função >> local acc = getAccountName (getPlayerAccount (thePlayer)) 2 - Uso de setElementData >> prefira usar tabelas que são mais leves. 3 - Uso de ACL >> ACL pesa um pouco o servidor, eu prefiro optar por outros meios de verificação como setAccountData ou banco de dados SQLite + tabelas. 4 - Nomes de variáveis >> Isso não diminui o desempenho mas é uma boa prática de programação criar variáveis com nomes que definam o que elas representam. Por exemplo, você criou uma variável com o nome de nomeConta que tem o valor do nome do player, não da conta. Melhor seria se o nome dessa variável fosse algo como "nomePlayer", "playerName" etc...
  2. Deu erro em um arquivo compilado, mais fácil você baixar outra concessionária descompilada da internet...
  3. Talvez você esteja chamando 2x o evento / função loginAccount
  4. Você já testou o sevidor limpo, sem mod nenhum, do jeito que o host te entrega?
  5. Não era pra ter esse v[7], v[8] e v[9] no setElementRotation, sua tabela só tem 6 posições... Eu adicionei mais 3 posições aleatórias e mudei algumas coisinhas, veja se assim funciona. Qualquer coisa posta aí no fórum, eu não cheguei a testar o código. settings = { table = { -- Marker X | Marker Y | Marker Z | Ped X | Ped Y | Ped Z | Rotação Ped X | Rotação Ped Y | Rotação Ped Z {-3, 3.5, 4.5, 10, 10, 10, 0, 0, 180}, --Aqui eu adicionei 3 posições aleatórias pro Ped X, Ped Y e Ped Z que estavam faltando... {-5, 3.5, 4.5, 10, 10, 10, 0, 0, 180} }, } local Table = {} addEventHandler('onResourceStart', root, function() for i, v in ipairs(settings.table) do Table[i] = createMarker(v[1], v[2], v[3], "cylinder", 1.2, 0, 0, 0, 0) addEventHandler("onMarkerHit", Table[i], teleportOnHit) end end) function teleportOnHit(hitElement) if not isElement(hitElement) or getElementType(hitElement) ~= "player" then return end local pos = getMarkerTeleport(source) if not pos then return end setElementPosition(localPlayer, pos[4], pos[5], pos[6]) setElementRotation(localPlayer, pos[7], pos[8], pos[9]) end function getMarkerTeleport(marker) for i, m in ipairs(Table) do if marker == m then return settings.table[i] end end return false end
  6. Existe sim essa possibilidade, segue esse tutorial aqui
  7. Acabei moscando nisso kkk Usa o botãozinho < > code para inserir código aqui no fórum, fica horrível a visualização assim
  8. Eu escrevi esse código direto no fórum e não testei, da uma olhada pra ver se funciona aí. Lembrando que você deve colocar esse código em um arquivo server-side! function setPlayerADM (player) --Função para verificar se o player é adm e atribuir o "conta:admin" a ele. if not isElement(player) or not getElementType(player) == 'player' then return end local staff = getAccountName (getPlayerAccount ( player )) if isObjectInACLGroup ("user."..staff, aclGetGroup ( "Staff" )) then setElementData(player, "conta:admin") end end addEventHandler('onResourceStart', root, function() --Função para setar adm em todos os players online assim que o mod ligar for i, player in ipairs(getElementsByType('player')) do setPlayerADM (player) end end) addEventHandler('onPlayerLogin', root, function() --Função para setar adm no player quando ele logar setPlayerADM(source) end)
  9. Talvez se você colocar uma verificação do lado do servidor para checar se o player tem as 20 moedas para transferir e, assim que transferir, retirar as moedas do player também no lado do servidor isso pare de acontecer. Talvez essa verificação ou exclusão de moedas esteja sendo feita do lado do client e como o client está offline, não "desconta" as 20 moedas para uma próxima verificação. Isso é só uma possibilidade que eu imaginei aqui...
  10. O comando npm install não está funcionando pra mim, alguém consegue me ajudar por favor? Aparece esse erro no terminal:
  11. fadeCameraDelayed não é uma função nativa do MTA e ela não existe no seu código, por isso está dizendo que esperava uma função no argumento 1 mas obteve nulo, você deve criá-la. Adicione isso no seu script e teste: function fadeCameraDelayed(player) if (isElement(player)) then fadeCamera(player, true, 0.5) end end
  12. Boa noite e brigadão pela ajuda!! Boa noite! Vou dar uma olhada nesse link pra entender melhor o que é garbage collection e testar esses parâmetros, valeu pela força!
  13. Alguém sabe uma maneira prática de medir o desempenho, consumo de memória, uso de CPU e banda de um mod? Teria como medir separadamente o desempenho de cada arquivo server-side e client-side? Queria fazer alguns testes para aperfeiçoar a otimização dos meus códigos...
  14. Recomendo que você use a resource pAttach pra isso.
  15. Testa isso: addEventHandler ( "onVehicleStartEnter", root, function (player, seat) --Evento disparado quando o player começa a entrar no carro if seat == 0 and getVehicleOccupant (source) then --Verifica se o player está tentando entrar na posição 0 (motorista) e se já há motorista cancelEvent() --Se a condiçãoa cima for verdadeira, cancela a entrada do player no veículo setControlState(player, 'enter_passenger', true) --Força o player a entrar como passageiro (não sei se essa parte vai funcionar corretamente) end end)
  16. Como ficou o código final, caso outra pessoa queira fazer algo parecido: local CMD_INTERVALO = 20000 --Intervalo entre um comando e outro em milisegundos. local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando. addEventHandler('onPlayerCommand', root, function (cmd) if cmd ~= 'minerador' then return end if not tick[source] then tick[source] = 0 end if CMD_INTERVALO + tick[source] > getTickCount () then cancelEvent () outputChatBox('Aguarde '..math.ceil(CMD_INTERVALO/1000)..' segundos para usar o comando novamente!', source) else tick[source] = getTickCount () end end)
  17. Dá o comando /debugscript 3 e posta aí o que tá aparecendo. E o comando outputChatBox deixe assim: outputChatBox('Aguarde '..math.ceil(CMD_INTERVALO/1000)..' segundos para usar o comando novamente!', source)
  18. Você não coloca isso na função coletarminerios. Coloque no arquivo server-side, porém fora de qualquer função! Teste assim:
  19. Veja se funciona, eu não testei local CMD_INTERVALO = 5000 --Intervalo entre um comando e outro em milisegundos. local tick = {} --Tabela para armazenar o momento do uso do comando para a verificação a proxima vez que usar o comando. addEventHandler('onPlayerCommand', root, function (cmd) if cmd == 'minerar' and CMD_INTERVALO + (tick[source] or 0) > getTickCount () then cancelEvent () else outputChatBox('Aguarde '..CMD_INTERVALO/1000..' segundos para usar o comando novamente!') tick[source] = getTickCount () end end)
  20. Use o onClientPedDamage do lado do client ou onPlayerDamage do lado do servidor, o 3° argumento é o ID da parte do corpo. Exemplo: function pedDamage ( attacker, weapon, bodypart, loss ) --Leia a página da wiki para entender melhor os argumentos. outputChatBox('O tiro acertou no '..getBodyPartName ( bodypart )..' e tirou '..loss..' de vida.') end addEventHandler ( "onClientPedDamage", getRootElement(), pedDamage )
  21. Não deu nenhum erro no debug?
  22. O problema é o source. Do lado do servidor vc está dando um trigger nessa função e está passando um elemento válido (player, objeto, veículo etc) como source?
  23. Você adicionou ou removeu alguma variável do banco de dados? Já abriu o banco de dados para conferir se essas tabelas existem?
  24. Observe que a posição que o player está sendo teleportado pra dentro da casa setElementInterior(hitPlayer, 11, 505.16238, -72.76829, 998.7578) E a posição do marker da casa local houseMarker = createMarker(2111.40283, -1630.32239, 13.49234, "cylinder", 2, 0, 0, 255) Estão um tanto quanto distantes um do outro, né? Acho que está criando o marker direitinho mas não onde deveria.
  25. Eu não olhei com muita atenção mas percebi que nessa função que eu destaquei acima talvez devesse ter um setElementData(thePlayer, "Carga", false). Do jeito que está (eu acho) que vai bugar a partir da segunda vez que fizer esse trajeto. Outra coisa também é que você está usando setElementData(getRootElement(), "Carga", false), isso está errado, não use setElementData no root (a não ser que você saiba exatamente o que está fazendo). Use no seElementData no elemento player, como eu exemplifiquei acima.
×
×
  • Create New...