Ir para conteúdo

Featured Replies

Postado

Opa galera beleza? estou criando um script de que vc entra em um piso, abre um modal aonde vc escolhe 1 posiçao... porem eu n estou conseguindo fazer com que o jogador seja teleportado ! Aonde estou errando, lembrando que estou fazendo isso para poupar meu tempo em construir locais de quest's/hunts, o pessoal ja logo escolhe aonde deseja ir ! entao vai haver pos1, pos2, pos3...
o script ja foi feito por mim, o problema esta na hr de funcionar os botoes... (lembrando que o sistema sera postado no forum aqui do TK) criado por mim e creditos de quem ajudar ! 

SISTEMA IMAGENS (imagens) --

 

Spoiler

image.thumb.png.317b6835deb9b34c2d2a0c129152aeff.png
image.thumb.png.dbb0a624ad7b5d13e45aa2dc04575859.png 
(isso poupara tempo para os criadores de mapa) para n precisar criar área com teleport's.


preciso que alguem me ajude... estou com problemas na hora de adicionar a funçao de teleport !
o que sera esse erro?

Lua Script Error: [CreatureScript Interface]
data/creaturescripts/scripts/modalwindowhelper.lua:onModalWindow
data/lib/teste.lua:8: attempt to call global 'setDestination' (a nil value)
stack traceback:
           [C]: in function 'setDestination'
           data/lib/teste.lua:8: in function 'callback'
           data/creaturescripts/scripts/modalwindowhelper.lua:26: in function <data/creaturescripts/scripts/modalwindowhelper.lua:1:>

(lembrando... o script sera postado aqui no forum com os creditos de quem ajudou.)

Local do erro :

Spoiler

for t = 1, #config.system do
  setDestination(config.system[t].pos)
  player:say('voce foi teleportado para a hunt !', TALKTYPE_MONSTER_SAY)
end

 

Edit1:

(movements)

Spoiler

local config = {
-- Configuracao da Janela Modal
    mainTitleMsg = "Teleport To, by : tataboy67", -- TITUTLO DA JANELA QUE ABRE
    mainMsg = "script criado e desenvolvido por mim com intuito de poupar tempo de mapper's por ai.", -- MENSAGEM DA JANELA
-- Fim da config Janela Modal
 
-- Configuracoes de Crafting
    system = {
    [1] = {vocation = "Dragon", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1275, y = 1454, z = 6},
        },
    [2] = {vocation = "Dragon Lord", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [3] = {vocation = "Demon", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [4] = {vocation = "Behemoth", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [5] = {vocation = "Giant Spider", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [6] = {vocation = "Serpent Spawn", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [7] = {vocation = "Medusa", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [8] = {vocation = "Hydra", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [9] = {vocation = "Strong Rat", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    [10] = {vocation = "Vampire", -- Isto e apenas uma categoria, nao influencia em nada
        pos = {x = 1000, y = 1000, z = 7},
        },
    },
}

local creature = Creature(cid)
function onStepIn(creature, item, position, fromPosition)
        creature:sendMainTelWindow(config)
    return true
end


(lib)

Spoiler

function Player:sendMainTelWindow(config)
    local function buttonCallback(button, choice)
 
    -- funcionalidade do modal
        if button.text == "Teleportar" then
        -- uso do for no script :)
            for t = 1, #config.system do
                setDestination(config.system[t].pos)
                player:say('voce foi teleportado para a hunt !', TALKTYPE_MONSTER_SAY)
            end
        end
    end

    local window = ModalWindow {
        title = config.mainTitleMsg,
        message = config.mainMsg.."\n"
    }
 
    window:addButton("Teleportar", buttonCallback)
    window:addButton("Exit", buttonCallback)
   
    -- uso do for no script :)
    for i = 1, #config.system do
        window:addChoice(config.system.vocation)
    end
 
    window:setDefaultEnterButton("Teleportar")
    window:setDefaultEscapeButton("Exit")
   
    window:sendToPlayer(self)
end


 

Editado por tataboy67 (veja o histórico de edições)

Resolvido por Dwarfer

Ir para solução
Postado

Por gentileza, publique o script inteiro para que os membros do TibiaKing possam lhe ajudar, dessa forma seria um 'chute' adivinhar qual variável utilizar para teletransporte.

ichigo.gif
https://github.com/Cjaker/

  , _ ,
 ( o o )
/'` ' `'\                     ESTOU TE OBSERVANDO O_O
|'''''''|
|\\'''//|
   """

 

Postado
  • Autor
8 minutos atrás, Cjaker disse:

Por gentileza, publique o script inteiro para que os membros do TibiaKing possam lhe ajudar, dessa forma seria um 'chute' adivinhar qual variável utilizar para teletransporte.

topico atualizado !

Postado
  • Solução

Tá bem bagunçado isso aí carinha, na verdade não ia funcionar nada rsrsr. Testa assim:

 

lib

 

Spoiler

local config = {
    mainMsg = "Decida onde você quer ir:",
    title = "Teleportar",
     system = {
        [1] = {vocation = "Dragon", pos = {x = 1275, y = 1454, z = 6}},
        [2] = {vocation = "Dragon Lord", pos = {x = 1000, y = 1000, z = 7}},
        [3] = {vocation = "Demon", pos = {x = 1000, y = 1000, z = 7}},
        [4] = {vocation = "Behemoth", pos = {x = 1000, y = 1000, z = 7}},
        [5] = {vocation = "Giant Spider", pos = {x = 1000, y = 1000, z = 7}},
        [6] = {vocation = "Serpent Spawn", pos = {x = 1000, y = 1000, z = 7}},
        [7] = {vocation = "Medusa", pos = {x = 1000, y = 1000, z = 7}},
        [8] = {vocation = "Hydra", pos = {x = 1000, y = 1000, z = 7}},
        [9] = {vocation = "Strong Rat", pos = {x = 1000, y = 1000, z = 7}},
        [10] = {vocation = "Vampire", pos = {x = 1000, y = 1000, z = 7}}
    },
    modal_tile = 7654
}

function Player:doModalTileTpChoice(windowId, buttonId, choiceId)
    if (windowId == config.modal_tile) then
        if buttonId == 1 then
            local x = config.system[choiceId]
            if not x then
                return true
            end
            self:teleportTo(x.pos)
            Position(x.pos):sendMagicEffect(CONST_ME_TELEPORT)
            self:say("Você foi teleportado para a hunt!", TALKTYPE_MONSTER_SAY)
            return true
        end
        return false
    end
    return false
end       

function Player:sendMainTelWindow()
    local window = ModalWindow(config.modal_tile, config.title, config.mainMsg)
    window:addButton(1, "Teleportar")
    window:addButton(2, "Exit")
    for index, x in spairs(config.system) do
        window:addChoice(index, x.vocation)
    end
    window:setDefaultEnterButton(1)
    window:setDefaultEscapeButton(2)
    window:sendToPlayer(self)
    return true
end
 
function spairs(t, order)
    local keys = {}
    for k in pairs(t) do keys[#keys+1] = k end
    if order then
        table.sort(keys, function(a,b) return order(t, a, b) end)
    else
        table.sort(keys)
    end
    local i = 0
    return function()
        i = i + 1
        if keys[i] then
            return keys[i], t[keys[i]]
        end
    end
end

 

 

Em creaturescripts/scripts, crie um arquivo.lua:

 

Spoiler

function onModalWindow(player, modalWindowId, buttonId, choiceId)
    player:doModalTileTpChoice(modalWindowId, buttonId, choiceId)
    return true
end

 

 

No login.lua, registre o evento:

player:registerEvent("tptile_modal")

 

No creaturescripts.xml, adicione a tag:

<event type="modalwindow" name="tptile_modal" script="NOMEDOARQUIVO.lua"/>

Em movements/scripts, crie um arquivo.lua (ou substitua pelo que tem dentro do arquivo que você já possui):

Spoiler

function onStepIn(creature, item, position, fromPosition)
    if not creature:isPlayer() then
        return true
    end
    creature:sendMainTelWindow()
    return true
end

 

 

No movements.xml, adicione a tag:

<movevent event="StepIn" actionid="ACTION_ID_DO_PISO" script="NOMEDOARQUIVO.lua" />

 

Contato:

 

Postado
  • Autor

esquece... foi erro meu. vou tenta dnv

 

Editado por tataboy67 (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo