[Pedido] Usar Fire Bug na Parede e Ser Teleportado

Farathor
em Scripts

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gênero: Masculino

Galera, meu pedido é o seguinte: Eu iria usar o FireBug (5468) em um certo local e o jogador que estiver usando vai se teleportar para tal local, e quando eu usar o item na parede, o item some

Meus Trabalhos

Scripts

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Como a explicação ficou meio vaga, fiz da maneira que entendi.

 

local itemid, toPos = xxx, {x = x, y = y, z = z}      --Respectivamente, ID da parede e para onde o jogador será teleportado.
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if itemEx.itemid == itemid then
        doPlayerSendTextMessage(cid, 27, "You used your "..getItemNameById(item.itemid).." in a "..getItemNameById(itemid).." and was teleported.")
        doTeleportThing(cid, toPos)
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendCancel(cid, "Use it in the correct wall.")
    end
    return true
end

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gênero: Masculino

Desculpe, então o script funciona assim:

Eu tenho um FireBug, eu pego dou use nele e uso ele em uma certa parede que fica numa certa posição, quando eu faço isso eu sou teleportado para outra posição e o firebug some, agora está melhor?

Meus Trabalhos

Scripts

Martelix

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/08/08Posts: 57Char no Tibia: Termabre Dore

Não testei, mas 1 coisa como essa posição será única (certo?) não precisa checar o id do item da posição (toPosition) onde você usará, correto?

Portanto:

local itemid, toPos = ID_ITEM, {x = POSIÇÃO_X, y = POSIÇÃO_Y, z = POSIÇÃO_Z} -- essa variável "toPos" é a posição de onde o player usará o item e não pra onde será teleportado!!!

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.itemid == itemid and toPosition == toPos then
        doPlayerSendTextMessage(cid, 27, "MENSAGEM QUE VAI APARECER PARA O PLAYER AO USAR O ITEM CORRETO NA POSIÇÃO ESCOLHIDA.")
        doTeleportThing(cid, {x = POSIÇÃO_X, y = POSIÇÃO_Y, z = POSIÇÃO_Z}) -- agora sim a posição para onde o player será teleportado!
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendCancel(cid, "MENSAGEM CASO O PLAYER NÃO USE O ITEM NA POSIÇÃO ESCOLHIDA.")
    end
    return true
end

Caso queira outras checagems especificas comentar aqui.

Acredito que irá funcionar, a lógica está correta.

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gênero: Masculino

na primeira posição, é a posição da parede e na segunda é para onde será teleportado?

Meus Trabalhos

Scripts

Martelix

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/08/08Posts: 57Char no Tibia: Termabre Dore

Exato.

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

@Martelix

O único problema no seu código é a comparação de tabelas através do sinal de igualdade não ser possível.

 

@topic

local positions = {
    wallPos = {x = x, y = y, z = z},     --Posição da parede.
    toPos = {x = x, y = y, z = z}        --Para onde o jogador será teleportado.
}
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if toPosition.x == positions.wallPos.x and toPosition.y == positions.wallPos.y and toPosition.z == positions.wallPos.z then
        doPlayerSendTextMessage(cid, 27, "You used your "..getItemNameById(item.itemid).." in a "..getItemNameById(itemEx.itemid).." and was teleported.")
        doTeleportThing(cid, positions.toPos)
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendCancel(cid, "Use it in the correct wall.")
    end
    return true
end
Tag:
<action itemid="5468" event="script" value="nome_do_arquivo.lua"/>

 

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

Martelix

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/08/08Posts: 57Char no Tibia: Termabre Dore

Hmm, verdade @zipter98.

Tem que realizar a comparação separando x/y/z. Eu só copiei e "melhorei" (sqn) o script da primeira resposta.

E nem sei porque chequei o ID do item sendo que já vai no .xml

Não tive tempo de testar :/