Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bom dia, tarde, Galera

 

Eu instalei um spell bar no meu ot client, porem não esta aparecendo as magias nos quadradinho alguém me da uma força?

magia.JPG
Modules -> game_folds

 

Spoiler

foldsToBuy = 42 

images = {
    "/images/folds/arqueiro/", 
    "/images/folds/barbaro/",
    "/images/folds/bardo/",
    "/images/folds/bruxo/",
    "/images/folds/cacador/",
    "/images/folds/curandeiro/",
    "/images/folds/escudeiro/",
    "/images/folds/feiticeiro/",
    "/images/folds/guerreiro/",
    "/images/folds/mago/"

spellInfos = {
    {
        {name = "Light", level = 1}, {name = "Light", level = 5},  
        {name = "Utevo Lux", level = 20}
    }, 

    {
       {name = "Light", level = 1}, {name = "Boletin", level = 5},  
        {name = "Saldanha Lux", level = 20}
    }, 

    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },

    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },
    
    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },

    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },

    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },

    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },

    {
       {name = "Light", level = 1}, {name = "Teste13", level = 5},  
        {name = "Teste1 Lux", level = 20}
    },    

    {
        {name = "Light", level = 1}, {name = "mtestum", level = 2}, {name = "mtestdois", level = 5}, {name = "mtesttres", level = 10}  
    }
}

Spoiler

dofile("/modules/gamelib/opcodes.lua") 

infos = {
    vocation = 1,
    hotkey = "Ctrl+F",
    spells = {},
    currentEvents = {},
    maxNumberSpells = 16,
    buy = {}

function string.explode(str, sep, limit)
    local i, pos, tmp, t = 0, 1, "", {}
    
    for s, e in function() return string.find(str, sep, pos) end do
        tmp = str:sub(pos, s - 1):trim()
        table.insert(t, tmp)
        pos = e + 1 

        i = i + 1
        if(limit ~= nil and i == limit) then
            break
        end
    end 

    tmp = str:sub(pos):trim()
    table.insert(t, tmp)
    
    return t
end 

function getPrimaryAndSecondary(msg)
    local strings = string.explode(msg, "#") 

    if doMessageCheck(strings[3], ",") then
        local number = string.explode(strings[3], ",") 

        return {tonumber(number[1]), tonumber(number[2])}
    else
        return {tonumber(strings[3])}
    end
end 

function checkIsFoldMsg(msg)
    local containsM = doMessageCheck(msg, "#m#")
    local containsV = doMessageCheck(msg, "#v#")
    local containsJ = doMessageCheck(msg, "#j#")
    local Ms = {} 

    if containsM or containsV or containsJ then
        local strings = string.explode(msg, ";") 

        for x = 1, #strings do
            if doMessageCheck(strings[x], "#m#") then
                local a = getPrimaryAndSecondary(strings[x])
                infos.spells[a[1]] = a[2]
                table.insert(Ms, a[1])
            
            elseif doMessageCheck(strings[x], "#v#") then
                local vocationId = getPrimaryAndSecondary(strings[x])[1] 

                if vocationId > 0 and vocationId < 10 then
                    infos.vocation = vocationId
                end 

            elseif doMessageCheck(strings[x], "#j#") then
                local a = getPrimaryAndSecondary(strings[x])
                infos.buy[a[1]] = true
            end
        end 

        if containsV then
            configureFolds(infos.vocation)
        end 

        if containsM then
            refreshCDs(Ms)
        end 

        if containsJ then
            checkBuys()
        end 

        return true
    end 

    return false
end 

function doRefleshClient()
    local protocolGame = g_game.getProtocolGame() 

    if protocolGame then
        protocolGame:sendExtendedOpcode(2) --manda pro server, mandar todas spells
        protocolGame:sendExtendedOpcode(40)
    end
end 


function refreshCDs(CDs)
    local level = g_game.getLocalPlayer():getLevel() 

    for x = 1, #CDs do
        local a, currentLevel = CDs[x], 0 

        if spellInfos[infos.vocation][a] then
            currentLevel = spellInfos[infos.vocation][a].level
        end 

        if level >= currentLevel then
            local delay = infos.spells[a]
            local progress = miniWindow:getChildById("p"..a) 

            if progress then
                cancelEventFold(a)
                progress:setColor("gray") 

                if delay == 0 then
                    progress:setPercent(100)
                    progress:setText()
                
                elseif delay > 0 then
                    progress:setPercent(0)
                    progress:setText(delay) 

                    for y = 1, delay do
                        local event = scheduleEvent(function()
                            if y < delay then
                                progress:setText(delay-y)
                                infos.spells[a] = delay-y
                            else
                                progress:setText()
                                progress:setPercent(100)
                                infos.spells[a] = 0    
                            end
                        end, 1000*y) 

                        table.insert(infos.currentEvents[a], event)
                    end 

                elseif delay < 0 then
                    progress:setPercent(0)
                end
            end
        end
    end
end 

function checkBuys()
    local playerLevel = g_game.getLocalPlayer():getLevel() 

    for x = 10, #spellInfos[infos.vocation] do
        local current = spellInfos[infos.vocation][x]
        local progress = miniWindow:getChildById("p"..x) 

        if not infos.buy[x] then
            progress:setText("BUY")
            progress:setColor("gray")
            progress:setPercent(0)
        else
            if progress:getText() == "BUY" and infos.spells[x] == 0 then
                if playerLevel >= current.level then
                    progress:setText()
                    progress:setPercent(100)
                else
                    progress:setText("L"..current.level)
                    progress:setColor("pink") 
                end
            end
        end
    end
end 

function refreshLevel()
    local level = g_game.getLocalPlayer():getLevel() 

    for x = 1, #spellInfos[infos.vocation] do
        local progress = miniWindow:getChildById("p"..x) 

        if level >= spellInfos[infos.vocation][x].level then
            if infos.spells[x] == 0 then
                progress:setText()
                progress:setPercent(100)
            end
        else
            progress:setText("L"..spellInfos[infos.vocation][x].level)
            progress:setColor("pink")
            progress:setPercent(0)
        end
    end 

    checkBuys()
end 

function cancelEventFold(id)
    if infos.currentEvents[id] then
        if #infos.currentEvents[id] > 0 then
            for x = 1, #infos.currentEvents[id] do
                infos.currentEvents[id][x]:cancel()
            end
        end
    end 

    infos.currentEvents[id] = {}
end 

function configureFolds(voc)
    infos.buy = {} 

    for x = 1, #spellInfos[voc] do
        cancelEventFold(x) 

        local current = miniWindow:getChildById("m"..x)
        local progress = miniWindow:getChildById("p"..x)
        local levelFold = spellInfos[voc][x].level 

        current:setImageSource(images[voc]..x)
        progress:setTooltip(spellInfos[voc][x].name..", lv. "..levelFold)
        progress.name = spellInfos[voc][x].name 

        progress.onClick = function(self)
            g_game.talk(self.name)
        end 

        if spellInfos[voc][x].var then
            progress.var = spellInfos[voc][x].var
            
            progress.onMouseRelease = function(self, mousePosition, mouseButton)
                if mouseButton == MouseRightButton then
                    if self.var then
                        g_game.talk(self.var)
                    end
                end
            end
        else
            progress.var = nil
        end
    end 

    refreshLevel()
end 

function toggle()
    if not foldsButton:isOn() then
        doOpen()
    else
        doClose()
    end
end 

function doOpen()
    foldsButton:setOn(true)
    miniWindow:show()
end 

function doClose()
    foldsButton:setOn(false)
    miniWindow:hide()    
end 

function init()
    miniWindow = g_ui.loadUI('folds', modules.game_interface.getRightPanel())
    miniWindow:disableResize() 

    connect(g_game, {onGameStart = doRefleshClient})
    connect(LocalPlayer, {onLevelChange = refreshLevel}) 

    g_keyboard.bindKeyDown(infos.hotkey, toggle)
    foldsButton = modules.client_topmenu.addRightGameToggleButton('foldsButton', tr('Folds (Ctrl+F)'), '/images/topbuttons/folds', toggle)
    miniWindow:setup()
end 

function terminate()
    miniWindow:destroy()
    foldsButton:destroy()
    g_keyboard.unbindKeyDown(infos.hotkey)
    disconnect(g_game, {onGameStart = doRefleshClient})
    disconnect(LocalPlayer, {onLevelChange = refreshLevel})
end

 

Editado por robi123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Esta é uma mensagem automática! Este tópico foi movido para a área correta.
Pedimos que você leia as regras do fórum.

Spoiler

This is an automated message! This topic has been moved to the correct area.
Please read the forum rules.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
  • 3 weeks later...
8 horas atrás, Adventure disse:

é porque vai um arquivo no servidor enviando informações para o ot cliente sobre a vocação e as spells 

tem alguma informação sobre isto que vai no servidor?

Link para o post
Compartilhar em outros sites
  • 10 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por OT Archive
      OTClient Redemption (mehah) para navegadores
      Em nome da OTServList Brasil e do OT Archive, adaptei o OTClient Redemption para rodar em navegadores web.
       
       
      Source: https://github.com/mehah/otclient/pull/894 Guia de compilação e uso: https://github.com/OTArchive/otclient/wiki/Guia-‐-OTClient-Redemption-Web Demo sem assets: https://demo.otarchive.com Versão modular: https://webclient.otarchive.com Vídeo demonstrando o client se conectando a um servidor:  


       
       
      Em caso de dúvidas sobre o client web ou sobre servidores com suporte a websockets, por favor poste aqui.
       
      Disponibilizou um client web para seu servidor? Me avise para que eu inclua seu OT na categoria Web na OTServList Brasil, com um botão "Jogar Agora".
    • Por maikon1993
      Fala galerinha de boas ?
       
      Preciso de ajuda, preciso de um macro para otcV8, que faça um item dar use no outro.
      Exemplo: Tem um item no servidor "spellswand" e ela é usada para vender item, dando "use" nela e no item que quer vender, queria deixar isso automático, se alguém poder me ajudar agradeço.
    • Por AddroJhonny
      Andei buscando de tudo que é forma para que o minimap fique com a imagem já liberada, assim como é no PxG. Porém, não encontrei em nenhum lugar alguma instrução. Comecei a mexer no arquivo minimap.lua e consegui avançar em algo.
       
      Meu script ficou assim:
      function updateCameraPosition() local player = g_game.getLocalPlayer() if not player then return end local pos = player:getPosition() if not pos then return end if not minimapWidget:recursiveGetChildById('posLabel') then local minimap = g_ui.createWidget('Minimap', minimapWidget) minimapWidget:setImageSource('/mapa/pisos/piso1') minimapWidget:setId('posLabel') minimapWidget:setOpacity(0.3) minimapWidget:centerInPosition(map, {x = 1015, y=1012, z=7}) end if not minimapWidget:isDragging() then if not fullmapView then minimapWidget:setCameraPosition(player:getPosition()) end minimapWidget:setCrossPosition(player:getPosition()) end minimapPos = minimapWindow:recursiveGetChildById('posLabel') minimapPos:setText('X:'..pos.x..' Y:'..pos.y..' Z:'..pos.z) if minimapWidget:getCameraPosition().z ~= 7 then local minimap = minimapWidget:recursiveGetChildById('posLabel') minimap:setVisible(false) minimapWidget:setColor('black') end end  
      Agora a imagem realmente está aparecendo no minimap com transparência... e quase perfeito. Mas ainda falta conseguir fazer ela acompanhar a posição do player no lugar de ficar aberto por inteiro.
       
      Segue como ficou:
       

       
      Alguém consegue ajudar a melhor maneira de fazer isso? Ou se fiz errado também...
       
      Ty.
    • Por brunei
      Olá galera bom dia , boa tarde e boa noite a todos !
      venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util 
      como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.

      o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !

      1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)

      em Talkactions.xml adicione a tag :  <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
       
      2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script : 
       
      em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
      Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
       

      3° - em somefunctions.lua adicione essas funçoes !

       
      tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .

      4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !

      pronto , com isso vai funcionar o modulo 
       

       
      1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
      2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
      3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..

      entao é isso galera , espero que seja util .

      CREDITOS :
      @zipter98 
      @usoparagames Eu
      game_memory.rar
    • Por Gryffindori
      Já procurei à fundo mas não achei nada resolvido sobre isso, sempre que vou compilar acaba dando o erro. Alguém tem alguma solução?
       
      Problema - > . C2139 'OTMLNode': an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_convertible_to' (compiling source file ..\src\client\localplayer.cpp) type_traits 325
       

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo