Ir para conteúdo
  • Cadastre-se

(Resolvido)anihi quest error


Ir para solução Resolvido por Everson Miranda,

Posts Recomendados

Boa tarde galera do tibiaking
seguinte estou tento um problema com a annihilator!
toda hora que um player puxa a alavanca sem ter 4 pessoas da esse erro:

[11/11/2017 14:15:8] [Error - Action Interface] 
[11/11/2017 14:15:8] data/actions/scripts/quests/anihi.lua:onUse
[11/11/2017 14:15:8] Description: 
[11/11/2017 14:15:8] (luaDoTeleportThing) Thing not found

e se o player sumona um monstro e coloca emcima do piso. da esse erro! e a alavanca nao volta pra posição 1945 fica na 1946

[11/11/2017 14:22:5] [Error - Action Interface] 
[11/11/2017 14:22:5] data/actions/scripts/quests/anihi.lua:onUse
[11/11/2017 14:22:5] Description: 
[11/11/2017 14:22:5] data/actions/scripts/quests/anihi.lua:27: attempt to compare number with boolean
[11/11/2017 14:22:5] stack traceback:
[11/11/2017 14:22:5] 	data/actions/scripts/quests/anihi.lua:27: in function <data/actions/scripts/quests/anihi.lua:1>

o script ta assim:
 

Spoiler

function onUse(cid, item, frompos, item2, topos)
if item.uid == 7000 then
if item.itemid == 1945 then

player1pos = {x=7579, y=7612, z=9, stackpos=253}
player1 = getThingfromPos(player1pos)

player2pos = {x=7578, y=7612, z=9, stackpos=253}
player2 = getThingfromPos(player2pos)

player3pos = {x=7577, y=7612, z=9, stackpos=253}
player3 = getThingfromPos(player3pos)

player4pos = {x=7576, y=7612, z=9, stackpos=253}
player4 = getThingfromPos(player4pos)


if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

player1level = getPlayerLevel(player1.uid)
player2level = getPlayerLevel(player2.uid)
player3level = getPlayerLevel(player3.uid)
player4level = getPlayerLevel(player4.uid)

questlevel = 100

if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then

    demon1pos = {x=7579, y=7612, z=10}
    demon2pos = {x=7580, y=7612, z=10}
    demon3pos = {x=7577, y=7610, z=10}
    demon4pos = {x=7575, y=7610, z=10}
    demon5pos = {x=7576, y=7614, z=10}
    demon6pos = {x=7578, y=7614, z=10}

    doSummonCreature("Demon", demon1pos)
    doSummonCreature("Demon", demon2pos)
    doSummonCreature("Demon", demon3pos)
    doSummonCreature("Demon", demon4pos)
    doSummonCreature("Demon", demon5pos)
    doSummonCreature("Demon", demon6pos)

    nplayer1pos = {x=7578, y=7612, z=10}
    nplayer2pos = {x=7577, y=7612, z=10}
    nplayer3pos = {x=7576, y=7612, z=10}
    nplayer4pos = {x=7575, y=7612, z=10}

    doSendMagicEffect(player1pos,2)
    doSendMagicEffect(player2pos,2)
    doSendMagicEffect(player3pos,2)
    doSendMagicEffect(player4pos,2)

    doTeleportThing(player1.uid,nplayer1pos)
    doTeleportThing(player2.uid,nplayer2pos)
    doTeleportThing(player3.uid,nplayer3pos)
    doTeleportThing(player4.uid,nplayer4pos)

    doSendMagicEffect(nplayer1pos,10)
    doSendMagicEffect(nplayer2pos,10)
    doSendMagicEffect(nplayer3pos,10)
    doSendMagicEffect(nplayer4pos,10)

    doTransformItem(item.uid,1945)

    else
    doPlayerSendCancel(cid,"All players must have level 100 to enter.")
    end
    else
    doPlayerSendCancel(cid,"You need 4 players in your team.")
end
end
if item.itemid == 1945 then

starting={x=7574, y=7604, z=10, stackpos=253}
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}
ending={x=7594, y=7616, z=10, stackpos=253}
players=0
totalmonsters=0
monster = {}
repeat
creature= getThingfromPos(checking)
if creature.itemid > 0 then
if getPlayerAccess(creature.uid) == 0 then
players=players+1
end
if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then
totalmonsters=totalmonsters+1
monster[totalmonsters]=creature.uid
    end
end
checking.x=checking.x+1
if checking.x>ending.x then
checking.x=starting.x
checking.y=checking.y+1
end
until checking.y>ending.y
if players==0 then
trash= {x=233, y=125, z=10}
current=0
repeat
current=current+1
doTeleportThing(monster[current],trash)
until current>=totalmonsters
doTransformItem(item.uid,1945)
end


end
end
if item.uid == 5006 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"You have found a demon armor.")
doPlayerAddItem(cid,2494,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
if item.uid == 5007 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,22,"You have found a magic sword.")
doPlayerAddItem(cid,2400,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
if item.uid == 5008 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,22,"You have found a stonecutter axe.")
doPlayerAddItem(cid,2431,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
if item.uid == 5009 then
queststatus = getPlayerStorageValue(cid,100)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,22,"You have found a Thunder Hammer.")
doPlayerAddItem(cid,2421,1)
setPlayerStorageValue(cid,100,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
end
return 1
end

queria que funcionasse sem esse erro. tem como colocar pra falar que precisa de 4 player e nao pode montros?
se alguem puder me ajudar
agradeco desde ja.

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

@Leomonti Use este script

Spoiler

local room = { -- room with demons
        fromX = 7574,
        fromY = 7604,
        fromZ = 10,
      
toX = 7594,
        toY = 7616,
        toZ = 10
        }

        
local monster_pos = {
        
[1] = {pos = {7579, 7612, 10}, monster = "Demon"},
        
[2] = {pos = {7580, 7612, 10}, monster = "Demon"},
        
[3] = {pos = {7577, 7610, 10}, monster = "Demon"},
        
[4] = {pos = {7575, 7610, 10}, monster = "Demon"},
        
[5] = {pos = {7576, 7614, 10}, monster = "Demon"},
        
[6] = {pos = {7578, 7614, 10}, monster = "Demon"}
        }

        
local players_pos = {
        
{x = 7579, y =7612, z = 9, stackpos = 253},
        
{x = 7578, y =7612, z = 9, stackpos = 253},
        
{x = 7577, y =7612, z = 9, stackpos = 253},
        
{x = 7576, y =7612, z = 9, stackpos = 253}
        }

        

local new_player_pos = {
        
{x = 7578, y =7612, z = 10},
        
{x = 7577, y =7612, z = 10},
        
{x = 7576, y =7612, z = 10},
        
{x = 7575, y =7612, z = 10}
        }

        

local playersOnly = "yes"
        
local questLevel = 100

     
function onUse(cid, item, fromPosition, itemEx, toPosition)
        
local all_ready, monsters, player, level = 0, 0, {}, 0
        
if item.itemid == 1945 then
                
for i = 1, #players_pos do
                        
table.insert(player, 0)
                
end
                
for i = 1, #players_pos do
                        
player[i] = getThingfromPos(players_pos[i])
                        
if player[i].itemid > 0 then
                                
if string.lower(playersOnly) == "yes" then
                                        
if isPlayer(player[i].uid) == TRUE then
                                                
all_ready = all_ready+1
                                        
else
                                                
monsters = monsters+1
                                        
end
                                
else
                                        
all_ready = all_ready+1
                                
end
                        
end
                
end
                
if all_ready == #players_pos then
                        
for i = 1, #players_pos do
                                
player[i] = getThingfromPos(players_pos[i])
                                
if isPlayer(player[i].uid) == TRUE then
                                        
if getPlayerLevel(player[i].uid) >= questLevel then
                                                
level = level+1
                                        
end
                                
else
                                        
level = level+1
                                
end
                        
end
                        
if level == #players_pos then
                                
if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then
                                        
local door = getTileItemById({x=33225, y=31659, z=13}, 5109).uid
					
if door > 0 then
						
doTransformItem(door, 5108)
					
end

										
for _, area in pairs(monster_pos) do
                                                        
doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]})
                                        
end
                                        for i = 1, #players_pos do
                                                
doSendMagicEffect(players_pos[i], CONST_ME_POFF)
                                                
doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
                                                
doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA)
                                                
doTransformItem(item.uid,1946)
                                        
end
                                
else
                                        
doPlayerSendTextMessage(cid,19,"Only players can do this quest.")
                                
end
                        
else
                                
doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.")
                        
end
                
else
                        
doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.")
                
end
        
elseif item.itemid == 1946 then
                
local player_room = 0
                
for x = room.fromX, room.toX do
                        
for y = room.fromY, room.toY do
                                
for z = room.fromZ, room.toZ do
                                        
local pos = {x=x, y=y, z=z,stackpos = 253}
                                        
local thing = getThingfromPos(pos)
                                        
if thing.itemid > 0 then
                                                
if isPlayer(thing.uid) == TRUE then
                                                        
player_room = player_room+1
                                                
end
                                        
end
                                
end
                        
end
                
end
                
if player_room >= 1 then
                        
doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.")          
                
elseif player_room == 0 then
                        
for x = room.fromX, room.toX do
                                
for y = room.fromY, room.toY do
                                        
for z = room.fromZ, room.toZ do
                                                
local pos = {x=x, y=y, z=z,stackpos = 253}
                                                
local thing = getThingfromPos(pos)
                                                
if thing.itemid > 0 then
                                                       
doRemoveCreature(thing.uid)
                                                
end
                                        
end
                                
end
                        
end
                        
doTransformItem(item.uid,1945)
                
end
        
end
        
return TRUE

end

 

 

so altere em 

 

local door = getTileItemById({x=33225, y=31659, z=13}, 5109).uid

coloque a posição de sua porta

Editado por Everson Miranda (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
19 minutos atrás, Everson Miranda disse:

@Leomonti Use este script

  Ocultar conteúdo


local room = { -- room with demons
        fromX = 33217,
        fromY = 31655,
        fromZ = 13,
      
toX = 33224,
        toY = 31663,
        toZ = 13
        }

        
local monster_pos = {
        
[1] = {pos = {33220, 31657, 13}, monster = "Demon"},
        
[2] = {pos = {33222, 31657, 13}, monster = "Demon"},
        
[3] = {pos = {33219, 31661, 13}, monster = "Demon"},
        
[4] = {pos = {33221, 31661, 13}, monster = "Demon"},
        
[5] = {pos = {33223, 31659, 13}, monster = "Demon"},
        
[6] = {pos = {33224, 31659, 13}, monster = "Demon"}
        }

        
local players_pos = {
        
{x = 33225, y =31671, z = 13, stackpos = 253},
        
{x = 33224, y =31671, z = 13, stackpos = 253},
        
{x = 33223, y =31671, z = 13, stackpos = 253},
        
{x = 33222, y =31671, z = 13, stackpos = 253}
        }

        

local new_player_pos = {
        
{x = 33222, y = 31659, z = 13},
        
{x = 33221, y = 31659, z = 13},
        
{x = 33220, y = 31659, z = 13},
        
{x = 33219, y = 31659, z = 13}
        }

        

local playersOnly = "yes"
        
local questLevel = 100

     
function onUse(cid, item, fromPosition, itemEx, toPosition)
        
local all_ready, monsters, player, level = 0, 0, {}, 0
        
if item.itemid == 1945 then
                
for i = 1, #players_pos do
                        
table.insert(player, 0)
                
end
                
for i = 1, #players_pos do
                        
player[i] = getThingfromPos(players_pos[i])
                        
if player[i].itemid > 0 then
                                
if string.lower(playersOnly) == "yes" then
                                        
if isPlayer(player[i].uid) == TRUE then
                                                
all_ready = all_ready+1
                                        
else
                                                
monsters = monsters+1
                                        
end
                                
else
                                        
all_ready = all_ready+1
                                
end
                        
end
                
end
                
if all_ready == #players_pos then
                        
for i = 1, #players_pos do
                                
player[i] = getThingfromPos(players_pos[i])
                                
if isPlayer(player[i].uid) == TRUE then
                                        
if getPlayerLevel(player[i].uid) >= questLevel then
                                                
level = level+1
                                        
end
                                
else
                                        
level = level+1
                                
end
                        
end
                        
if level == #players_pos then
                                
if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then
                                        
local door = getTileItemById({x=33225, y=31659, z=13}, 5109).uid
					
if door > 0 then
						
doTransformItem(door, 5108)
					
end

										
for _, area in pairs(monster_pos) do
                                                        
doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]})
                                        
end
                                        for i = 1, #players_pos do
                                                
doSendMagicEffect(players_pos[i], CONST_ME_POFF)
                                                
doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
                                                
doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA)
                                                
doTransformItem(item.uid,1946)
                                        
end
                                
else
                                        
doPlayerSendTextMessage(cid,19,"Only players can do this quest.")
                                
end
                        
else
                                
doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.")
                        
end
                
else
                        
doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.")
                
end
        
elseif item.itemid == 1946 then
                
local player_room = 0
                
for x = room.fromX, room.toX do
                        
for y = room.fromY, room.toY do
                                
for z = room.fromZ, room.toZ do
                                        
local pos = {x=x, y=y, z=z,stackpos = 253}
                                        
local thing = getThingfromPos(pos)
                                        
if thing.itemid > 0 then
                                                
if isPlayer(thing.uid) == TRUE then
                                                        
player_room = player_room+1
                                                
end
                                        
end
                                
end
                        
end
                
end
                
if player_room >= 1 then
                        
doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.")          
                
elseif player_room == 0 then
                        
for x = room.fromX, room.toX do
                                
for y = room.fromY, room.toY do
                                        
for z = room.fromZ, room.toZ do
                                                
local pos = {x=x, y=y, z=z,stackpos = 253}
                                                
local thing = getThingfromPos(pos)
                                                
if thing.itemid > 0 then
                                                       
doRemoveCreature(thing.uid)
                                                
end
                                        
end
                                
end
                        
end
                        
doTransformItem(item.uid,1945)
                
end
        
end
        
return TRUE

end

 

 

vou tentar aqui agora

 

Link para o post
Compartilhar em outros sites

@Leomonti esse script ai nao vai funfar pq esta com as coordenadas erradas eu atualizei o script 

Link para o post
Compartilhar em outros sites
33 minutos atrás, Everson Miranda disse:

@Leomonti Use este script

  Ocultar conteúdo


local room = { -- room with demons
        fromX = 7574,
        fromY = 7604,
        fromZ = 10,
      
toX = 7594,
        toY = 7616,
        toZ = 10
        }

        
local monster_pos = {
        
[1] = {pos = {7579, 7612, 10}, monster = "Demon"},
        
[2] = {pos = {7580, 7612, 10}, monster = "Demon"},
        
[3] = {pos = {7577, 7610, 10}, monster = "Demon"},
        
[4] = {pos = {7575, 7610, 10}, monster = "Demon"},
        
[5] = {pos = {7576, 7614, 10}, monster = "Demon"},
        
[6] = {pos = {7578, 7614, 10}, monster = "Demon"}
        }

        
local players_pos = {
        
{x = 7579, y =7612, z = 9, stackpos = 253},
        
{x = 7578, y =7612, z = 9, stackpos = 253},
        
{x = 7577, y =7612, z = 9, stackpos = 253},
        
{x = 7576, y =7612, z = 9, stackpos = 253}
        }

        

local new_player_pos = {
        
{x = 7578, y =7612, z = 10},
        
{x = 7577, y =7612, z = 10},
        
{x = 7576, y =7612, z = 10},
        
{x = 7575, y =7612, z = 10}
        }

        

local playersOnly = "yes"
        
local questLevel = 100

     
function onUse(cid, item, fromPosition, itemEx, toPosition)
        
local all_ready, monsters, player, level = 0, 0, {}, 0
        
if item.itemid == 1945 then
                
for i = 1, #players_pos do
                        
table.insert(player, 0)
                
end
                
for i = 1, #players_pos do
                        
player[i] = getThingfromPos(players_pos[i])
                        
if player[i].itemid > 0 then
                                
if string.lower(playersOnly) == "yes" then
                                        
if isPlayer(player[i].uid) == TRUE then
                                                
all_ready = all_ready+1
                                        
else
                                                
monsters = monsters+1
                                        
end
                                
else
                                        
all_ready = all_ready+1
                                
end
                        
end
                
end
                
if all_ready == #players_pos then
                        
for i = 1, #players_pos do
                                
player[i] = getThingfromPos(players_pos[i])
                                
if isPlayer(player[i].uid) == TRUE then
                                        
if getPlayerLevel(player[i].uid) >= questLevel then
                                                
level = level+1
                                        
end
                                
else
                                        
level = level+1
                                
end
                        
end
                        
if level == #players_pos then
                                
if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then
                                        
local door = getTileItemById({x=33225, y=31659, z=13}, 5109).uid
					
if door > 0 then
						
doTransformItem(door, 5108)
					
end

										
for _, area in pairs(monster_pos) do
                                                        
doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]})
                                        
end
                                        for i = 1, #players_pos do
                                                
doSendMagicEffect(players_pos[i], CONST_ME_POFF)
                                                
doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
                                                
doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA)
                                                
doTransformItem(item.uid,1946)
                                        
end
                                
else
                                        
doPlayerSendTextMessage(cid,19,"Only players can do this quest.")
                                
end
                        
else
                                
doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.")
                        
end
                
else
                        
doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.")
                
end
        
elseif item.itemid == 1946 then
                
local player_room = 0
                
for x = room.fromX, room.toX do
                        
for y = room.fromY, room.toY do
                                
for z = room.fromZ, room.toZ do
                                        
local pos = {x=x, y=y, z=z,stackpos = 253}
                                        
local thing = getThingfromPos(pos)
                                        
if thing.itemid > 0 then
                                                
if isPlayer(thing.uid) == TRUE then
                                                        
player_room = player_room+1
                                                
end
                                        
end
                                
end
                        
end
                
end
                
if player_room >= 1 then
                        
doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.")          
                
elseif player_room == 0 then
                        
for x = room.fromX, room.toX do
                                
for y = room.fromY, room.toY do
                                        
for z = room.fromZ, room.toZ do
                                                
local pos = {x=x, y=y, z=z,stackpos = 253}
                                                
local thing = getThingfromPos(pos)
                                                
if thing.itemid > 0 then
                                                       
doRemoveCreature(thing.uid)
                                                
end
                                        
end
                                
end
                        
end
                        
doTransformItem(item.uid,1945)
                
end
        
end
        
return TRUE

end

 

 

so altere em 

 


local door = getTileItemById({x=33225, y=31659, z=13}, 5109).uid

coloque a posição de sua porta

 

qual porta? a que entra pra quest ou a que sai da area dos demon?

Link para o post
Compartilhar em outros sites

@Leomonti A porta dos demons

Link para o post
Compartilhar em outros sites
10 minutos atrás, Everson Miranda disse:

@Leomonti A porta dos demons

oque isso faz?..

eu tenho que colocar action na porta?

so mais uma pergunta...eu devo colocar o respaw dos demons no map editor?ou nao

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

@Leomonti nao precisa colocar action na porta e nao precisa add demon no map editor. quando 4 players puxarem a alavanca vai nascer os demons 

a actionID tem que estar na alavanca que eu acredito que ja está

Link para o post
Compartilhar em outros sites
Agora, Everson Miranda disse:

@Leomonti nao precisa colocar action na porta e nao precisa add demon no map editor. quando 4 players puxarem a alavanca vai nascer os demons 

muito obrigado man.. sem erro no console! vlw mesmo

Link para o post
Compartilhar em outros sites

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo