Jump to content

Scripting [AJUDA] Urgente, sistema de reset dando reset a mais pros players!


Recommended Posts

Bem, recebi report de jogadores que o sistema de reset está bugando em apenas voc de RP, exemplo a pessoa tá com 18 resets e vai resetar, o reset alem de ir para 19 pula pra 22 e assim por diante, e isso  tá se tornando um problema enorme, já mexi no script mas nenhum resultado... alguém poderia ajudar com isso

 


reset.lua / lib
 

Spoiler
if not resys then
    resys = {
        ['boolean'] = {pz = true, teleport = true},
        btlevel = 250,
        exhaust = 0,
        
        stages = {
            {need = {resets = 01, level = 10000}},
            {need = {resets = 02, level = 15000}},
            {need = {resets = 03, level = 15000}},
            {need = {resets = 04, level = 15000}},
            {need = {resets = 05, level = 15000}},
            {need = {resets = 06, level = 50000}},
            {need = {resets = 07, level = 50000}},
            {need = {resets = 08, level = 50000}},
            {need = {resets = 09, level = 50000}},
            {need = {resets = 10, level = 50000}},
            {need = {resets = 11, level = 50000}},
            {need = {resets = 12, level = 50000}},
            {need = {resets = 13, level = 50000}},
            {need = {resets = 14, level = 50000}},
            {need = {resets = 15, level = 50000}},
            {need = {resets = 16, level = 50000}},
            {need = {resets = 17, level = 50000}},
            {need = {resets = 18, level = 50000}},
            {need = {resets = 19, level = 50000}},
            {need = {resets = 20, level = 50000}},
            {need = {resets = 21, level = 50000}},
            {need = {resets = 22, level = 50000}},
            {need = {resets = 23, level = 50000}},
            {need = {resets = 24, level = 50000}},
            {need = {resets = 25, level = 50000}},
            {need = {resets = 26, level = 60000}},
            {need = {resets = 27, level = 60000}},
            {need = {resets = 28, level = 60000}},
            {need = {resets = 29, level = 60000}},
            {need = {resets = 30, level = 60000}},
            {need = {resets = 31, level = 60000}},
            {need = {resets = 32, level = 60000}},
            {need = {resets = 33, level = 60000}},
            {need = {resets = 34, level = 60000}},
            {need = {resets = 35, level = 60000}},
            {need = {resets = 36, level = 60000}},
            {need = {resets = 37, level = 60000}},
            {need = {resets = 38, level = 60000}},
            {need = {resets = 39, level = 60000}},
            {need = {resets = 40, level = 60000}},
            {need = {resets = 41, level = 70000}},
            {need = {resets = 42, level = 70000}},
            {need = {resets = 43, level = 70000}},
            {need = {resets = 44, level = 70000}},
            {need = {resets = 45, level = 70000}},
            {need = {resets = 46, level = 70000}},
            {need = {resets = 47, level = 70000}},
            {need = {resets = 48, level = 70000}},
            {need = {resets = 49, level = 70000}},
            {need = {resets = 50, level = 70000}},
            {need = {resets = 51, level = 70000}},
            {need = {resets = 52, level = 70000}},
            {need = {resets = 53, level = 70000}},
            {need = {resets = 54, level = 70000}},
            {need = {resets = 55, level = 70000}},
            {need = {resets = 56, level = 70000}},
            {need = {resets = 57, level = 70000}},
            {need = {resets = 58, level = 70000}},
            {need = {resets = 59, level = 70000}},
            {need = {resets = 60, level = 70000}},
            {need = {resets = 61, level = 70000}},
            {need = {resets = 62, level = 70000}},
            {need = {resets = 63, level = 70000}},
            {need = {resets = 64, level = 70000}},
            {need = {resets = 65, level = 70000}},
            {need = {resets = 66, level = 70000}},
            {need = {resets = 67, level = 70000}},
            {need = {resets = 68, level = 70000}},
            {need = {resets = 69, level = 70000}},
            {need = {resets = 70, level = 70000}},
            {need = {resets = 71, level = 70000}},
            {need = {resets = 72, level = 70000}},
            {need = {resets = 73, level = 70000}},
            {need = {resets = 74, level = 70000}},
            {need = {resets = 75, level = 70000}},
            {need = {resets = 76, level = 70000}},
            {need = {resets = 77, level = 70000}},
            {need = {resets = 78, level = 70000}},
            {need = {resets = 79, level = 70000}},
            {need = {resets = 80, level = 70000}},
            {need = {resets = 81, level = 70000}},
            {need = {resets = 82, level = 70000}},
            {need = {resets = 83, level = 70000}},
            {need = {resets = 84, level = 70000}},
            {need = {resets = 85, level = 70000}},
            {need = {resets = 86, level = 70000}},
            {need = {resets = 87, level = 70000}},
            {need = {resets = 88, level = 70000}},
            {need = {resets = 88, level = 70000}},
            {need = {resets = 89, level = 70000}},
            {need = {resets = 90, level = 70000}},
            {need = {resets = 91, level = 70000}},
            {need = {resets = 92, level = 70000}},
            {need = {resets = 93, level = 70000}},
            {need = {resets = 94, level = 70000}},
            {need = {resets = 95, level = 70000}},
            {need = {resets = 96, level = 70000}},
            {need = {resets = 97, level = 70000}},
            {need = {resets = 98, level = 70000}},
            {need = {resets = 99, level = 70000}},
            {need = {resets = 100, level = 70000}},
 
        }
    }
    function resys:exhaustion(cidsec)
        if not sec then
            return getPlayerStorageValue(cid, 421221) - os.time()
        end
        setPlayerStorageValue(cid, 421221os.time() + sec)
    end
    
    function resys:getReset(name)
        local result = db.getResult(('SELECT reset FROM players WHERE id = %d'😞format(getPlayerGUIDByName(name)))
        local reset = 0
        if result:getID() ~= -1 then
            reset = result:getDataInt('reset')
            result:free()
        end
        return reset
    end
    
    function onLook(cidthingpositionlookDistance)
    if isPlayer(thing.uidthen
        resets = getPlayerStorageValue(thing.uid421221)+1
        doPlayerSetSpecialDescription(thing.uid"\nResets: [" .. resets .."]")
    end
    return true
end
    
    function resys:doReset(cid)
        if getPlayerLevel(cid) < self:need(cid).level then
            return doPlayerSendCancel(cid, ('Faltam %d niveis para voce resetar.'😞format(self:need(cid).level - getPlayerLevel(cid)))
        end
        if self['boolean'].pz and not getTilePzInfo(getCreaturePosition(cid)) then
            return doPlayerSendCancel(cid, 'Voce precisa estar em protection zone para resetar.')
        end
        local name = getCreatureName(cid)
        local id = getPlayerGUIDByName(name)
        self:exhaustion(cid, self.exhaust)
        if self['boolean'].teleport then
            doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
        end
        local inc = self:getReset(name) + 1
        if doRemoveCreature(cid) then
        db.query(('UPDATE players SET level = %d, experience = 0, description = " [Resets: %d]", reset = %d WHERE id = %d'😞format(self.btlevel, inc, inc, id))
        end
        return true
    end
    
    function resys:need(cid)
        local index = {}
        for _, v in ipairs(self.stagesdo
            if self:getReset(getPlayerName(cid)) >= v.need.resets then
                table.insert(index, v.need)
            end
        end
        return #index > 0 and index[#index] or self.stages[1].need
    end
    function getPlayerResets(cid)
        return resys:getReset(getPlayerName(cid))
    end
end

reset.lua / talkaction

function onSay(cid)
    if resys:exhaustion(cid) > 0 then
        return doPlayerSendCancel(cid, ('Aguarde %s para utilizar o comando novamente.'😞format(table.concat(string.diff(resys:exhaustion(cid), true))))
    end   
    return resys:doReset(cid)
end

                                                  Halloween Horror Nights 27 General Discussion | Inside Universal ...

Link to post
Share on other sites
  • Assistente

creio que apenas com essas informações vai ser um baita de um quebra-cabeça encontrar uma solução, tenta verificar se nenhum outro aspecto influencia nesse probleminha ai, principalmente algo relacionado a db (sample do rp, por exemplo)

Link to post
Share on other sites

Parece que conseguimos resolver esse problema, o único que aparenta agora eh que esse bug predomina, porém só visualmente agora, o player de 24 resets pulou pra 42, mas permaneceu a mana igual de outro player 24 resets, agora parece que só ficou visualmente

                                                  Halloween Horror Nights 27 General Discussion | Inside Universal ...

Link to post
Share on other sites
  • Assistente
9 horas atrás, Drakksz disse:

Parece que conseguimos resolver esse problema, o único que aparenta agora eh que esse bug predomina, porém só visualmente agora, o player de 24 resets pulou pra 42, mas permaneceu a mana igual de outro player 24 resets, agora parece que só ficou visualmente

creio eu que alterando esta parte do código pode se obter um resultado interessante (caso seja só um problema visual na descrição do player)

image.png.8e41ede3205966ebcc12c1ef41aa0976.png

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


  • Similar Content

    • By Gaaha
      OTX 2.0
      Estou com problema nesse script, não estou conseguindo resolver, o erro esta na imagem se alguem podem me auxiliar.
      function onExp(cid)
      if getPlayerStorageValue(cid, 327775) - os.time() => 1 then
      value = 4
      elseif getPlayerStorageValue(cid, 327575) - os.time() => 1 then
      value = 2
      elseif getPlayerStorageValue(cid, 327575) - os.time() <= 0 and getPlayerStorageValue(cid, 327675) - os.time() <= 0 and getPlayerStorageValue(cid, 327775) - os.time() <= 0 then
      value = 1
      else
      value = 1
      end
      return value
      end
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       

    • By FeeTads
      salve rapaziada, estou fazendo uma quest no meu OT que é necessário faze-la durante 10 dias consecutivos, porém caso o player perca um dia, a storage da quest reseta.
      Já tenho esses scripts prontos de 2 formas: global event que checa a storage de todos os player online no momento e caso ja tenha passado 24h ele tira a storage do player que está entre os 10 dias de quest.
      E também tenho um creatureScript de onLogin() que quando o player loga, ele entra num loop de verificação a cada 60s

      minha duvida: globalEvents vai checar todos os players online de uma só vez e fazer as alterações necessarias, isso pode lagar a distro, ou até mesmo crashar?
      o creatureScript vai entrar num loop até o player deslogar, isso numa média de 250 pessoa são diversas verificações em momentos diferentes, pode acabar lagando ou crashando?

      meu OT possui uma media de 300 pessoas online.

      Script globalEvents é esse:

      function onThink(interval, lastExecution)
          local players = {}
          local timer = os.time()
          for _, pid in pairs (getPlayersOnline()) do
              local storage = getPlayerStorageValue(pid, 1231234)
              if getPlayerStorageValue(pid,888251) > 0 and getPlayerStorageValue(pid,888251) <= 9 then
                  if storage - timer <= 1  then
                      table.insert(players, pid)
                  end
              end
          end
          
          if #players > 0 then
              for i = 1, #players do
                  doPlayerSendTextMessage(players[i],22,"seu dano voltou ao normal por vc nao ter feito a quest!")
                  setPlayerStorageValue(players[i],888251,0)
              end
          end
      return true
      end

      Script do Creature é esse:
      local storage = getPlayerStorageValue(cid,1231234)
              function checkStorage(cid) local timer = os.time()
                     if not isPlayer(cid) then return true end
                     if getPlayerStorageValue(cid,888251) > 0 and getPlayerStorageValue(cid, 888251) <= 9 then
                             if storage - timer <= 1 then
                                     setPlayerStorageValue(cid,888251,0)
                             end
                   end
                   addEvent(function()
                              checkStorage(cid)
                    end, 60000)
      end
      function onLogin(cid)
              checkStorage(cid)
      return true
      end
      function onLogout(cid)
             stopEvent(checkStorage[cid])
      return true
      end


      caso os códigos nao estejam legiveis me avisem como arrumar em .lua pf

      se quiserem usar os códigos podem usar a vontade kkkkkkk
    • By DigoleraZica
      Olá pessoal boa noite,
       
      Gostaria de pedir uma ajuda a vocês, meu script de cassino está com 2 problemas.
       
      1° Está dando erro na distro
      2° Gostaria que melhorava a velocidade dele na criação dos item, removendo, etc. Enfim deixa-lo mais rapido em geral!
       
      3° Adicionar um broadcast divulgado X jogador ganhou X item.
       
      Script do sistema
       
      Utilizo OTX 8.6 - 0.4
       
      Muito obrigado desde já!
    • By joaotmed
      Boa tarde a todos!
      Estou editando uma base DxP e percebi que os pokemons normais não estão dropando stone no loot, apesar de terem a stone no seu XML.
      Já verifiquei o ID, e já coloquei a chance = 99999999999 e mesmo assim não dropou! Aparentemente só as stones estão bloqueadas, o resto cai normalmente.
       
      OBS.: De pokémon shiny cai normalmente!
       
    • By hrubesch
      otx 0.4 tibia 8.60
      Na hora de comprar as potions com o NPC, ao tentar realizar varias compra ele fica dando "You do not have enough capacity" toda hora, mesmo  o player tendo cap sobrando 
×
×
  • Create New...

Important Information

Confirmação de Termo