Ir para conteúdo
  • 0
Entre para seguir isso  
BlueeYakuzy

Scripting Dúvidas (Config de Portas, Baús e atualização de Script LUA)

Pergunta

BlueeYakuzy    2
BlueeYakuzy

Olá galera!

Voltei a mexer com servidores de Tibia à alguns dias atrás e estou montando um novo projeto de um OTServ 8.60.

 

Estou usando o mesmo mapa e alguns arquivos do meu projeto antigo (no qual havia alguns bugs), porém estou com 2 erros que preciso solucionar logo.

 

1° - Existe uma certa porta que da acesso a sala que entrega um item por um baú, porém essa porta "abre" e não fecha. (Todas as portas que eram pra se fechar sozinha, não se fecham.);

2° - Players conseguem passar por cima de baús (Sim, o baú possui uma Unique ID) conseguindo assim obter o item da quest que está 1 sqm depois do baú.

 

Existe uma outra dúvida na qual não tenho pressa, porém vou postar pra ver se alguém me ajuda.

Tenho um script que compra potions por alavanca. Cada potion tem seu script, ou seja é um script para comprar uma bp cheia de Ultimate Health Potion. Minha dúvida é, na versão 8.60 no qual meu servidor é, esse script fica bugado pois ele é da versão 8.40.

 

O que acontece ?

Ao clicar na alavanca (com dinheiro) diz que eu não tenho dinheiro, remove o dinheiro cobrado e recebo uma backpack.

Ao clicar na alavanca (sem dinheiro) não vem nenhuma potion porém vem a backpack.

 

Vou postar um script no qual é o de great mana potion.

 

function onUse(cid, item, frompos, item2, topos)

container = doPlayerAddItem(cid, 2004, 1)

if item.itemid == 1945 and doPlayerRemoveMoney(cid,50000) == 1 then
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doTransformItem(item.uid,item.itemid+1)

elseif item.itemid == 1946 and doPlayerRemoveMoney(cid,50000) == 1 then
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doAddContainerItem(container, 7440, 7)
doTransformItem(item.uid,item.itemid-1)

else
doPlayerSendCancel(cid,"Sorry, you don't have enough money!")
end
return 1
end

 

Desde já agradeço e aguardo respostas!

 

-- Edit

 

Consegui solucionar parte dos bugs:

- Portas que é pra serem abertas e logo em seguidas fechadas arrumadas (troquei o movements.xml por um limpo e funcional e adicionei os movevents novos do mapa)

- Alavanca usei outro script no qual facilitou muito pois não preciso repetir o script usando somente um.

- Players não conseguem mais passar por cima de baús de quest ( Criei um script TEMPORÁRIO no movements para retornar o player para from position ao subir em cima do baú porém o certo é configurar no movements.xml) Se alguém souber como configurar essa parte por favor me ajude!

 

Em fim, só preciso configurar alguma parte do movement para tornar os baús com actionsid ou uniqueid impossíveis de se passar por cima.

Editado por BlueeYakuzy

Compartilhar este post


Link para o post
Compartilhar em outros sites

3 respostass a esta questão

Recommended Posts

  • 0
BlueeYakuzy    2
BlueeYakuzy

Sim amigo, eu corro atrás do que quero e me esforço hehe :)

Sobre os baús é alguma modificação no movements.xml que ainda não consegui encontrar, eu testei com outro xml e deu certo. Porém preciso usar o meu que ja está configurado e é muito chato ficar adicionando essas linhas.. O método temporário foi fazer um script.

Sobre colocar um obstáculo para não pegar o item da quest não acho viável, pois o certo é o server entender que os baús com actions não podem ser ultrapassados por cima nem movidos( meu problema é só passar por cima), por enquanto irei usar script mesmo. Caso você consiga algo ficarei muito grato! E caso eu consiga eu posto aqui como arrumei.

Abraços!

 

- Edit

Consegui resolver :D :D :D

Pra quem tiver com este problema, basta mudar o script walkback.lua encontrado na pasta movements/scripts por OUTRO script e verificar se no movements.xml possui as tags:

 

    <movevent type="StepIn" itemid="1738" event="script" value="walkback.lua"/>
    <movevent type="StepIn" itemid="1740" event="script" value="walkback.lua"/>
    <movevent type="StepIn" fromid="1746" toid="1749" event="script" value="walkback.lua"/>

 

O ruim é que no script anterior era usado "or" para não repetir 2 IF, tentei ajeitar aqui para deixar o script menor mais o máximo que consegui foi:

 

local SPECIAL_QUESTS = {2001}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    if(not isPlayer(cid)) or (isContainer(item.uid)) and (not isInArray(SPECIAL_QUESTS, item.actionid) and item.uid > 65535) then
        return true
    end
    elseif(getTileInfo(position).creatures <= 1) then
        return true
    end
    
    if(fromPosition.x == 0) then -- player just logged in
        fromPosition = getTownTemplePosition(getPlayerTown(cid))
        doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
    end

    teletransporte(cid, fromPosition, true)
    return true
end

 

Acho meio difícil alguém ter este problema pois eu estou atualizando um servidor 8.40 para 8.60 e por isso ocasionou este erro, mas caso alguém tenha o mesmo problema a solução é esta. Abraços

Editado por BlueeYakuzy

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Majesty    1755
Majesty

Ótimo ver que você mesmo conseguiu corrigir os bugs do seu servidor, quanto ao bug do baú vou ver se descubro a configuração correta para que os jogadores não passem por cima ou a outra solução é colocar um obstáculo para que não possa passar e pegar os itens da quest.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Majesty    1755
Majesty

Certo, parabéns por ter conseguido corrigir e obrigado por postar a solução do problema.  :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×