JU
dúvida

Erro no script da anihilator

Por juliok80, 26 de dez. de 2012 em Scripts

erro
anihi
anihilator
script anihilator
otserv
tibia
script
7
1.5k
juliok80J
26 de dezembro de 2012 às 10:06

Oi galera do Xtibia, hoje alguns players foram fazer a quest anihilator, e quando acionaram a alavanca apareceu esse erro no console:

 

errosr.png

 

Alguém saberia me dizer o que está acontecendo e poderia me ajudar a resolver isso!?

 

Segue o script da anihilator:

 

function onUse(cid, item, frompos, item2, topos)
if item.uid == 7000 then
if item.itemid == 1946 then
player1pos = {x=194, y=118, z=9, stackpos=253}
player1 = getThingfromPos(player1pos)
player2pos = {x=193, y=118, z=9, stackpos=253}
player2 = getThingfromPos(player2pos)
player3pos = {x=192, y=118, z=9, stackpos=253}
player3 = getThingfromPos(player3pos)
player4pos = {x=191, y=118, 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=190, y=116, z=10}
demon2pos = {x=192, y=116, z=10}
demon3pos = {x=191, y=120, z=10}
demon4pos = {x=193, y=120, z=10}
demon5pos = {x=194, y=118, z=10}
demon6pos = {x=195, y=118, z=10}
doSummonCreature("Demon", demon1pos)
doSummonCreature("Demon", demon2pos)
doSummonCreature("Demon", demon3pos)
doSummonCreature("Demon", demon4pos)
doSummonCreature("Demon", demon5pos)
doSummonCreature("Demon", demon6pos)
nplayer1pos = {x=193, y=118, z=10}
nplayer2pos = {x=192, y=118, z=10}
nplayer3pos = {x=191, y=118, z=10}
nplayer4pos = {x=190, y=118, 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=188, y=111, z=10, stackpos=253}
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}
ending={x=210, y=122, 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,1946)
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

 

 

Agradeço desde que nasci!

 

Abraços!

CaronteC
26 de dezembro de 2012 às 10:09

Você alterou o local da anihi ?

juliok80J
26 de dezembro de 2012 às 12:47

Você alterou o local da anihi ?

 

Não, e a propósito, fui lá no local checar se as coordenadas batiam e aparentemente está ok.

 

anihij.png

Editado Dezembro 26 por juliok80

SlicerS
26 de dezembro de 2012 às 13:26

eu n testei mas.. tenta usar esse aki..

 

local players = {

{getThingfromPos({x=194, y=118, z=9, stackpos=253})},

{getThingfromPos({x=193, y=118, z=9, stackpos=253})},

{getThingfromPos({x=192, y=118, z=9, stackpos=253})},

{getThingfromPos({x=191, y=118, z=9, stackpos=253})},

}

local demonPos = {

{x=190, y=116, z=10},

{x=192, y=116, z=10},

{x=191, y=120, z=10},

{x=193, y=120, z=10},

{x=194, y=118, z=10},

{x=195, y=118, z=10},

}

local newPos = {

{x=193, y=118, z=10},

{x=192, y=118, z=10},

{x=191, y=118, z=10},

{x=190, y=118, z=10},

}

local premios = {

[5006] = {"Demon Armor", 2494},

[5007] = {"Magic Sword", 2400},

[5008] = {"Stonecutter Axe", 2431},

[5009] = {"Thunder Hammer", 2421},

}

local flag = 0

local questLvl = 100

 

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

if item.uid == 7000 then

if item.itemid == 1946 then

for _, player in ipairs(players) do

if isPlayer(player) and getPlayerLevel(player) >= questLvl then

flag = flag+1

end

end

if flag ~= 4 then

doPlayerSendCancel(cid, "You need 4 players at lvl 100+ to do that!")

return true

end

for _, pos in ipairs(demonPos) do

doSummonCreature("Demon", pos)

end

for _, player in ipairs(players) do

doSendMagicEffect(getPlayerPosition(player), 2)

doTeleportThing(player, newPos[_])

doSendMagicEffect(newPos[_], 10)

end

doTransformItem(item.uid, 1945)

end

if item.itemid == 1945 then

local starting = {x=188, y=111, z=10}

local ending = {x=210, y=122, z=10}

local monster = {}

local trash = {x=233, y=125, z=10}

for x = starting.x, ending.x do

for y = starting.y, ending.y do

local thing = {x = x, y = y, z = starting.z, stackpos = 253}

if isPlayer(thing.uid) then

return doTransformItem(item.uid, 1946) and true

elseif isMonster(thing.uid) then

table.insert(monster, thing.uid)

end

end

end

if #monster >= 1 then

for i = 1, #monster do

doTeleportThing(monster, trash)

end

end

end

end

if premios[item.uid] then

queststatus = getPlayerStorageValue(cid,100)

if queststatus ~= 1 then

doPlayerSendTextMessage(cid,22,"You have found a "..premios[item.uid][1]..".")

doPlayerAddItem(cid, premios[item.uid][2], 1)

setPlayerStorageValue(cid,100,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

end

return true

end

 

Editado Dezembro 26 por Slicer

juliok80J
27 de dezembro de 2012 às 15:42

Vou testar assim que reiniciar o ot... se funciona eu num sei, mas esse script está MUITO mais limpo oh.png

 

Obrigado Slicer, jaja eu volto pra dizer se funcionou!

 

Ah man... se der pra você dar um pulinho nesse meu outro tópico eu agradeceria muito!

 

http://www.xtibia.co...73#entry1419873

 

 

@Edit

 

Cara, não sei o que tem nesse script ai... mas depois que eu coloquei ele, o ot parou de funcionar, quando eu tento rodar o console aparece a mensagem dizendo que o Windows encontrou um erro no OT e precisa ser fechado, depois eu voltei para o script anterior e o OT voltou a funcionar.

Editado Dezembro 27 por juliok80

StackMinuteS
29 de dezembro de 2012 às 02:28

Que tal usar outro script? :)

 

AnihiAlavanca

 

function onUse(cid, item, frompos, item2, topos)
if item.uid == 7000 and item.itemid == 1945 then
player1pos = {x=1109, y=1204, z=11, stackpos=253}
player1 = getThingfromPos(player1pos)
player2pos = {x=1110, y=1204, z=11, stackpos=253}
player2 = getThingfromPos(player2pos)
player3pos = {x=1111, y=1204, z=11, stackpos=253}
player3 = getThingfromPos(player3pos)
player4pos = {x=1112, y=1204, z=11, stackpos=253}
player4 = getThingfromPos(player4pos)
if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
queststatus1 = getPlayerStorageValue(player1.uid,7000)
queststatus2 = getPlayerStorageValue(player2.uid,7000)
queststatus3 = getPlayerStorageValue(player3.uid,7000)
queststatus4 = getPlayerStorageValue(player4.uid,7000)
if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
nplayer1pos = {x=1128, y=1181, z=11}
nplayer2pos = {x=1129, y=1181, z=11}
nplayer3pos = {x=1130, y=1181, z=11}
nplayer4pos = {x=1131, y=1181, z=11}
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,item.itemid+1)
else
doPlayerSendCancel(cid,"Alguem do seu grupo ja fez essa quest .")
end
else
doPlayerSendCancel(cid,"É necessário quatro pessoas para fazer a quest.")
end
elseif item.uid == 7000 and item.itemid == 1946 then
if getPlayerAccess(cid) > 0 then
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Desculpe, impossivel")
end
else
return FALSE
end
return TRUE
end

 

Anihi Báu

function onUse(cid,  item,  frompos,  item2,  topos)
if item.uid == 5006 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou um Demon Armor.")
doPlayerAddItem(cid, 2494, 1)
setPlayerStorageValue(cid, 5010, 1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "O baú está vazio")
end
elseif item.uid == 5007 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou uma Magic Sword.")
doPlayerAddItem(cid, 2400, 1)
setPlayerStorageValue(cid, 5010, 1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR,  "O baú está vazio")
end
elseif item.uid == 5008 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou um Stonecutter Axe.")
doPlayerAddItem(cid, 2431, 1)
setPlayerStorageValue(cid, 5010, 1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "O baú está vazio.")
end
elseif item.uid == 5009 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou um thunder hammer")
doPlayerAddItem(cid, 2421, 1)
setPlayerStorageValue(cid,  5010,  1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "O baú está vazio.")
end
else
return FALSE
end
return TRUE
end

 

Obs: Só pode pegar 1 item em apenas 1 báu ou seja o báu dará storage :)

juliok80J
30 de dezembro de 2012 às 15:18

Que tal usar outro script? :)

 

AnihiAlavanca

 

function onUse(cid, item, frompos, item2, topos)
if item.uid == 7000 and item.itemid == 1945 then
player1pos = {x=1109, y=1204, z=11, stackpos=253}
player1 = getThingfromPos(player1pos)
player2pos = {x=1110, y=1204, z=11, stackpos=253}
player2 = getThingfromPos(player2pos)
player3pos = {x=1111, y=1204, z=11, stackpos=253}
player3 = getThingfromPos(player3pos)
player4pos = {x=1112, y=1204, z=11, stackpos=253}
player4 = getThingfromPos(player4pos)
if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
queststatus1 = getPlayerStorageValue(player1.uid,7000)
queststatus2 = getPlayerStorageValue(player2.uid,7000)
queststatus3 = getPlayerStorageValue(player3.uid,7000)
queststatus4 = getPlayerStorageValue(player4.uid,7000)
if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
nplayer1pos = {x=1128, y=1181, z=11}
nplayer2pos = {x=1129, y=1181, z=11}
nplayer3pos = {x=1130, y=1181, z=11}
nplayer4pos = {x=1131, y=1181, z=11}
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,item.itemid+1)
else
doPlayerSendCancel(cid,"Alguem do seu grupo ja fez essa quest .")
end
else
doPlayerSendCancel(cid,"É necessário quatro pessoas para fazer a quest.")
end
elseif item.uid == 7000 and item.itemid == 1946 then
if getPlayerAccess(cid) > 0 then
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Desculpe, impossivel")
end
else
return FALSE
end
return TRUE
end

 

Anihi Báu

function onUse(cid,  item,  frompos,  item2,  topos)
if item.uid == 5006 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou um Demon Armor.")
doPlayerAddItem(cid, 2494, 1)
setPlayerStorageValue(cid, 5010, 1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "O baú está vazio")
end
elseif item.uid == 5007 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou uma Magic Sword.")
doPlayerAddItem(cid, 2400, 1)
setPlayerStorageValue(cid, 5010, 1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR,  "O baú está vazio")
end
elseif item.uid == 5008 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou um Stonecutter Axe.")
doPlayerAddItem(cid, 2431, 1)
setPlayerStorageValue(cid, 5010, 1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "O baú está vazio.")
end
elseif item.uid == 5009 then
queststatus = getPlayerStorageValue(cid, 5010)
if queststatus == -1 then
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "Você encontrou um thunder hammer")
doPlayerAddItem(cid, 2421, 1)
setPlayerStorageValue(cid,  5010,  1)
else
doPlayerSendTextMessage(cid,  MESSAGE_INFO_DESCR, "O baú está vazio.")
end
else
return FALSE
end
return TRUE
end

 

Obs: Só pode pegar 1 item em apenas 1 báu ou seja o báu dará storage :)

 

Vou testar o script da alavanca, pq o erro ocorre quando a pessoa tenta puxar a alavanca, só não gostei de uma coisa nesse script ai... é que ele faz a verificação se a pessoa já fez a quest e não deixa o pessoal puxar a alavanca se existir alguém no grupo que já fez a quest, e acho que a pessoa que já fez poderia ajudar outros players a fazer. Dai vou tirar esse if da verificação, o else e o end abaixo dele pra ver se vai dar certo.

 

E essas posições que estão ai!? Como eu devo alterar?

 

Já o premio da quest eu vou colocar pelo map editor mesmo, eu acho mais fácil.

 

Daqui a pouco eu volto para avisar se deu certo.

 

Valeu!

Editado Dezembro 30 por juliok80