Postado Dezembro 21, 2019 5 anos 7 horas atrás, Standard disse: Blz, enquanto isso vou fazendo outras coisas TFS 0.4 não tem o callback onThrow, eu tentei adaptar para o onMoveItem mas não deu certo, outras funções também não funcionam direito como isContainer. Você vai ter que usar OTX ou adicionar o callback na sua source. --<event type="throw" name="tibiaking" event="script" value="tibiaking.lua"/> --<event type="login" name="registerTK" event="script" value="tibiaking.lua"/> local containerID = 2596 local containerPosition = {x = 586, y = 738, z = 8} local neededItems = {2164, 2168, 2169} local newItem = {2160, 1} -- ID, count function onThrow(cid, item, fromPosition, toPosition) if toPosition.x == 65535 then if getTileItemById(containerPosition, containerID).uid > 0 then if isContainer(getTileItemById(containerPosition, containerID).uid) and item.id == neededItems[1] then addEvent(function() local x = 0 for i = 0, 2 do if (getContainerItem(getTileItemById(containerPosition, containerID).uid, i).id == neededItems[i+1]) then x = x + 1 end end if x > 2 then --doTransformItem(getTileItemById(containerPosition, containerID).uid, newItem[1], newItem[2]) doRemoveItem(getTileItemById(containerPosition, containerID).uid) doCreateItem(newItem[1], newItem[2], containerPosition) end end, 1000) end end end return true end function onLogin(cid) registerCreatureEvent(cid, "tibiaking") return true end Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito. Aristóteles
Postado Dezembro 22, 2019 5 anos Autor Blz, tive uma idéia de uma gambiarra, vou testar e depois dou um retorno do resultado ! Edit: @WooX consegui trabalhar com a função onMoveitem e deu certo para a função isContainer, porém não deu certo para a função getContainerItem... Sendo que, poderia ser pelo globalevents também ao invés de ser pela função onMoveitem ou onThrow igual você fez, afinal o que eu quero é que quando tenha os items certos nesse container esse item no chão se transforme em outro... Fiz aqui e deu tudo certo, menos a parte para analisar os items certos que tem que ter no container, que seria a função getContainerItem, poderia fazer essa função apenas para um item ou explicar ela para que eu possa entender melhor como ela funciona ? Editado Dezembro 22, 2019 5 anos por Standard (veja o histórico de edições)
Postado Dezembro 23, 2019 5 anos Em 21/12/2019 em 21:51, Standard disse: Blz, tive uma idéia de uma gambiarra, vou testar e depois dou um retorno do resultado ! Edit: @WooX consegui trabalhar com a função onMoveitem e deu certo para a função isContainer, porém não deu certo para a função getContainerItem... Sendo que, poderia ser pelo globalevents também ao invés de ser pela função onMoveitem ou onThrow igual você fez, afinal o que eu quero é que quando tenha os items certos nesse container esse item no chão se transforme em outro... Fiz aqui e deu tudo certo, menos a parte para analisar os items certos que tem que ter no container, que seria a função getContainerItem, poderia fazer essa função apenas para um item ou explicar ela para que eu possa entender melhor como ela funciona ? O ideal é você adicionar o callback na sua source ou migrar logo pra OTX, o script que te mandei ai está pronto e funcionando, além de não funcionar algumas coisas com onMoveItem, ele não verifica quando é movido para container (o onThrow verifica), note que o onThrow ta verificando a posição 65535. Fazer em globalevents eu não recomendo, teria que deixar um intervalo baixo de execução e isso nunca é uma boa ideia. Sobre a função getContainerItem, não tem segredo, ela verifica um slot especifico do container, o código está certo no onThrow, se não funcionou com onMoveItem provavelmente também não vai funcionar com globalevents. Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito. Aristóteles
Postado Dezembro 23, 2019 5 anos Autor 4 horas atrás, WooX disse: O ideal é você adicionar o callback na sua source ou migrar logo pra OTX, o script que te mandei ai está pronto e funcionando, além de não funcionar algumas coisas com onMoveItem, ele não verifica quando é movido para container (o onThrow verifica), note que o onThrow ta verificando a posição 65535. Fazer em globalevents eu não recomendo, teria que deixar um intervalo baixo de execução e isso nunca é uma boa ideia. Sobre a função getContainerItem, não tem segredo, ela verifica um slot especifico do container, o código está certo no onThrow, se não funcionou com onMoveItem provavelmente também não vai funcionar com globalevents. @WooX Entendi, porém não achei um tutorial da função onThrow para adicionar nas sources, você saberia de algum tópico ? Procurei bastante e não achei
Postado Dezembro 23, 2019 5 anos 34 minutos atrás, Standard disse: @WooX Entendi, porém não achei um tutorial da função onThrow para adicionar nas sources, você saberia de algum tópico ? Procurei bastante e não achei Vai ter que mexer em creatureevent.cpp, creatureevent.h e game.cpp. É mais fácil você migrar logo pra OTX2, talvez tenha que adaptar algumas coisas no seu datapack mas é bem menos trabalho. Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito. Aristóteles
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.