DNL291

Other Languages Moderators
  • Content Count

    2,225
  • Joined

  • Last visited

  • Days Won

    5

DNL291 last won the day on December 5

DNL291 had the most liked content!

Community Reputation

209 Celebrity

About DNL291

  • Rank
    Portuguese Section Moderator
  • Birthday 06/05/1994

Details

  • Gang
    the right side
  • Location
    Brazil
  • Interests
    Programming/Scripting

Recent Profile Visitors

3,353 profile views
  1. DNL291

    Ajuda com Tempo no Script

    @danblemes1 Sempre que postar algo que não seja da linguagem inglesa, poste do subfórum Other Languages, no caso deve ser no sub-fórum Portuguese / Português > Programação em Lua Sobre a sua pergunta, é só usar setTimer chamando a função (no caso "trab2") dentro da primeira função, exemplo: mk1 = createMarker (x, y, z, "cylinder", 1.5, 255, 255, 255, 255) mk2 = createMarker (x, y, z, "cylinder", 1.5, 255, 255, 255, 255) function trab () --função que vou desenvolver setTimer(trab2, 5000, 1) end addEventHandler ("onMarkerHit", mk1, trab) function trab2 () --Quero que essa função seja executada 5 minutos dps da primeira função end
  2. DNL291

    Como faço isso galera?

    function fim3 (hitElement) if (hitElement == getElementData (source, "owner")) then -- Se o elemento que colidiu for o dono do marker, então: if veh[hitElement] and isElement(veh[hitElement]) then -- Se existe o veículo do trampo do jogador, então: if (getElementData (source, "trip") < #destinos) then -- Se a data do marker é menor que a quantidade de destinos, então: (indicando que não é a última viagem) dxMsg(hitElement, "Entregando as Pizzas, Aguarde...", "info") setTimer(function( hitElement, marker ) local x, y, z = unpack (destinos[getElementData (marker, "trip") + 1]) -- x, y, z recebem a próxima coordenada da table destinos. setElementPosition (marker, x, y, z) -- Coloca o marker de objetivo nessa nova coordenada. setElementData (marker, "trip", getElementData (marker, "trip") + 1) -- Seta a nova viagem nesse marker. outputChatBox ("Você entregou as Pizzas no destino. Siga para o próximo. ("..getElementData (marker, "trip").."/"..#destinos..")", hitElement) -- Avisa o jogador quantas viagens ele fez e quantas são no total, pra ele não pensar que está trabalhando de graça. end, 5000, 1, hitElement, source) else -- Se o marker de objetivo colidido não tem data menor que a quantidade de viagens, então: (indicando que esse é o último objetivo) dxMsg(hitElement, "Recebendo Pagamento Agurde...", "info") setTimer(function(hitElement) removeEventHandler ("onMarkerHit", Mfim3[hitElement], fim3) -- Remove o evento que ativa este marker, pois ele não será mais usado. destroyElement (veh[hitElement]) -- Destroi o veículo do trampo do jogador. givePlayerMoney (hitElement, 2000) -- Dá o dinheiro do trampo. if isElement(Bfim3[hitElement]) then destroyElement (Bfim3[hitElement]) end -- Destroi o blip anexado ao marker de objetivo. Bfim3[hitElement] = nil if isElement(Mfim3[hitElement]) then destroyElement (Mfim3[hitElement]) end -- Destroi o marker de objetivo. Mfim3[hitElement] = nil dxMsg(hitElement, "Pagamento recebido campeão (R$ 2000)!", "sucess") -- Avisa o jogador que ele completou o trampo. end, 5000, 1,hitElement) end end end end Tente isso.
  3. DNL291

    [HELP] CJ Running

    If I am not wrong, use this function: toggleControl with "sprint" in the control argument.
  4. DNL291

    [AJUDA] Sistema de Nível

    Primeiro, a tabela, crie uma tabela com o nível no índice e a exp para upar o nível no valor. Exemplo: local levelsTable = { [1] = 500, --nível 1 -> exp necessária 500 [2] = 900, --1 [3] = 1100, --2 [4] = 1300 --3 } Isso será útil para a função que faz a checagem de quando o nível sobe. Ambos, o nível do jogador e a exp você vai deixar armazenados com setElementData e na função que vai dar exp você seta o valor no element-data e chama a função que verifica se o jogador subiu de nível - essa função vou falar dela mais pra frente A função que dá exp: local level_maximo = 50 -- aqui fica definido o último level function givePlayerExp( exp ) if exp and tonumber(exp) and (getElementData( localPlayer, "level" ) or 0) ~= level_maximo then -- "(getElementData( localPlayer, "level" ) or 0) ~= level_maximo" basicamente isso será para a função, -- ser executada só se o level for diferente do último level local playerExp = getElementData( localPlayer, "playerExp" ) or 0 -- pega a exp atual; se falhar o valor será 0 setElementData( localPlayer, "playerExp", playerExp + tonumber(exp) ) -- define a exp somando a atual + a exp ganha checkLevel( localPlayer ) -- aqui é a função que verifica se o jogador já atingiu a exp necessária return true end return false end Em seguida vem a parte mais difícil, ou mais complexa - a função que vai checar quando upar o nível. Leia os comentários no código para entender como funciona: function checkLevel( player ) local player = player or localPlayer local playerExp = getElementData( player, "playerExp" ) or 0 local lv = getElementData( player, "level" ) or 0 -- pega o level do jogador local expCheck = levelsTable[lv] - playerExp --[[ aqui em "levelsTable[lv]" recebe a exp pra subir nível sendo que "lv" representa o level, poderia ser por exemplo, 900, que é o valor pra subir pro level 3. "playerExp" é a exp atual do jogador, suponhamos que seu level é 2, e com a exp ganha sua exp passa a ser 1000, então será a variável "expCheck" retornará o valor -100 (900 - 1000) ]]-- if expCheck <= 0 then -- se "expCheck" for negativo ou igual a zero, então o lv subiu local exp = (lv + 1) == level_maximo and 0 or playerExp - levelsTable[lv] --[[ seguindo a suposição feita acima, aqui vai setar a nova exp com aqueles -100 restantes sendo aproveitados. Então será definido a exp como 100 Em "(lv + 1) == level_maximo and 0" está verificando se o novo level é o último, caso seja, a exp para upar será sempre 0 ]] setElementData( player, "level", lv + 1 ) -- aqui seta o novo level; level atual + 1 setElementData( player, "playerExp", exp ) -- seta a nova exp do jogador end end Outra coisa necessária será o evento "onClientElementDataChange", esse será para detectar uma alteração direta no element-data: addEventHandler( "onClientElementDataChange", root, function (dataName) if (dataName == "playerExp") then checkLevel( source ) -- chama a função para verificar se o level subiu end end ) Feito isso, o resto fica bem fácil, como o que você citou que é dar exp ao jogador a cada x tempo. Aqui um exemplo simples: setTimer( function() givePlayerExp( 10 ) -- dá 10 pontos de exp end, 60000 * 10, 0 -- 60000 * 10 -> 10 minutos ) Pra salvar na conta, use a função mencionada pelo LordHenry e os eventos onPlayerQuit e onPlayerLogout; E para carregar os dados use onPlayerLogin + getAccountData + setAccountData. Finalizando, o código ficará assim: local level_maximo = 50 -- aqui fica definido o último level local levelsTable = { [1] = 500, --nível 1 -> exp necessária 500 [2] = 900, --1 [3] = 1100, --2 [4] = 1300 --3 } function checkLevel( player ) local player = player or localPlayer local playerExp = getElementData( player, "playerExp" ) or 0 local lv = getElementData( player, "level" ) or 1 -- pega o level do jogador local expCheck = levelsTable[lv] - playerExp --[[ aqui em "levelsTable[lv]" recebe a exp pra subir nível sendo que "lv" representa o level, poderia ser por exemplo, 900, que é o valor pra subir pro level 3. "playerExp" é a exp atual do jogador, suponhamos que seu level é 2, e com a exp ganha sua exp passa a ser 1000, então será a variável "expCheck" retornará o valor -100 (900 - 1000) ]]-- if expCheck <= 0 then -- se "expCheck" for negativo ou igual a zero, então o lv subiu local exp = (lv + 1) == level_maximo and 0 or playerExp - levelsTable[lv] --[[ seguindo a suposição feita acima, aqui vai setar a nova exp com aqueles -100 restantes sendo aproveitados. Então será definido a exp como 100 Em "(lv + 1) == level_maximo and 0" está verificando se o novo level é o último, caso seja, a exp para upar será sempre 0 ]] setElementData( player, "level", lv + 1 ) -- aqui seta o novo level; level atual + 1 setElementData( player, "playerExp", exp ) -- seta a nova exp do jogador end end function givePlayerExp( exp ) if exp and tonumber(exp) and (getElementData( localPlayer, "level" ) or 0) ~= level_maximo then local playerExp = getElementData( localPlayer, "playerExp" ) or 0 -- pega a exp atual; se falhar o valor será 0 setElementData( localPlayer, "playerExp", playerExp + tonumber(exp) ) -- define a exp somando a atual + a exp ganha checkLevel( localPlayer ) -- aqui é a função que verifica se o jogador já atingiu a exp necessária return true end return false end addEventHandler( "onClientElementDataChange", root, function (dataName) if (dataName == "playerExp") then checkLevel( source ) -- chama a função para verificar se o level subiu end end ) setTimer( function() givePlayerExp( 10 ) -- dá 10 pontos de exp end, 60000 * 10, 0 -- 60000 * 10 -> 10 minutos )
  5. DNL291

    Como faço isso galera?

    Verdade. Por algum motivo eu pensei que o jogador poderia continuar na tabela sem estar no emprego e sair do jogo, mas o script já remove ele quando sai do emprego.
  6. DNL291

    Spawn de Veiculo

    Foi o que eu quis dizer, ela vai setar o max_slots no veículo que explodir. Você disse que alguns veículos spawnam com os slots, então pode ser que os outros tenham respawnado por estarem na água - vi que tem um timer que verifica isso, e respawna se tiver na água sem setar o max_slots. Se não for isso, como eu disse, deve ser algum bug no seu código. Use o comando /debugscript 3 e veja se mostra alguma mensagem de erro.
  7. DNL291

    Como faço isso galera?

    Esse código vai executar pra qualquer player não vai? Precisa de uma verificação pra saber se a pessoa está no emprego.
  8. DNL291

    Spawn de Veiculo

    Isso. é uma tabela global do DayZ, assim como a tabela "vehicleSpawns". Falando em alterar as coisas Lukkas2201, acho melhor você nunca fazer isso a menos que saiba o que tá fazendo, o GM é complexo e quem não programa Lua só vai bugar ele. Sobre os slots, eu vi aqui que no código do onVehicleExplode tem essa linha: setTimer(respawnDayZVehicle,1800000,1,id,x,y,z,source,col,getElementData(col,"MAX_Slots")) Então pelo certo ali vai setar os slots do veículo explodido. Só não sei te dizer se é mesmo esse valor, pelo visto é. Pode ser que algum erro no script tenha gerado esse problema, ou isso já veio no GM. Não sei pois nunca tive um server DayZ.
  9. DNL291

    Ajuda

    Eu sinceramente não entendi o porquê deixar o blip invisível, ocultar os elementos de outros jogadores não vai ser necessário, como eu já disse. É por isso mesmo que nesses tipos de scripts você deve criar o(s) elemento(s) que devem mostrar ao jogador local no lado client. O script tá feito de uma forma meio bagunçada, mas vamos lá: Você quer que remova o blip vinculado ao marker, basta usar destroyElement( marker ) usando a variável da marker correspondente. Exemplo: cardrivepoints = cardrivepoints+1 destroyElement (markerElement1) destroyElement(markerFim1) if cardrivepoints >= 1 then triggerServerEvent ("completedMissionCollect", localPlayer) end
  10. DNL291

    Ajuda

    Alguns erros no lado client: Você tá usando uma função que é server-side ("setElementVisibleTo") e além disso não é necessário fazer isso no client, visto que tudo executa só para o jogador local. outputChatBox está recebendo um argumento "source" sendo que no client não é necessário; todas outputs no client funciona só para o jogador local. O valor "client" é usado no lado server, isso serve para a validação do jogador local. Use localPlayer. Edit: no caso ali deve ser o parâmetro hitPlayer, que foi definido como "source" Sobre a detecção do veículo, só fazer o que já foi dito - enviar o elemento no evento "mission5"
  11. DNL291

    Spawn de Veiculo

    Foi bem genérica na verdade. Então, o problema estava lá no sistema de backup que altera a posição de spawn quando salva os veículos (na verdade isso não é um erro do script, já foi feito pra respawnar na posição que estava mas o @Lukkas2201 pelo jeito não quer isso). Veja que tem um comando chamado svp que spawna todos veículos na posição de origem (que está na tabela vehicleSpawns), enfim, não sei se o OP tinha conhecimento dele.
  12. DNL291

    Autocomplete for IDE

    I understood your question wrong, sorry. For PhpStorm I don't know any MTA plugins, although they exist for Lua.
  13. DNL291

    [AJUDA] Criação de loop

    Eu nem ligo em ajudar por privado, mas as coisas tem um limite. Desculpem a mensagem fora do assunto aqui, mas a propósito queria falar uma coisa, no caso pra você Lord. Percebi que você tem vários posts bem elaborados (como o do loop/ipairs/pairs), você poderia postar mais na seção Tutoriais, seria bem útil pra mais pessoas encontrarem e além do mais é mais "tutorial" do que alguns posts de lá...
  14. DNL291

    Como faço isso galera?

    Sim, a tabela 'veh' também estava armazenando o elemento player. Meu último código tem um 'end' extra na linha 8, remova ele.
  15. DNL291

    Como faço isso galera?

    Enfim, teve várias coisas ali no meu post que você não deve ter entendido; Tente isto: function sair4 () if isElement(Bfim4[source]) then destroyElement (Bfim4[source]) end if isElement(Mfim4[source]) then destroyElement (Mfim4[source]) end if isElement(veh[source]) then destroyElement(veh[source]) end Bfim4[source] = nil Mfim4[source] = nil veh[source] = nil end end addEventHandler("onPlayerQuit", getRootElement(), sair4)