Ir para conteúdo
  • 0

[ Dúvida ] Annihilator - Bug


manin15

Pergunta

Bom gente é o seguinte , Tenhu um mapa próprio , E hoje 06/08/2010 fiz a famosa quest Annihilator Quest . Os baús funcionaram normalmente , e os Demons também , Mais fiz a quest com o GM 2x , e ná segunda vez , Me deparei com 7 Demons ao envez de 6 , Meu escript é o seguinte não tem respawn no Map Editor , e sim o demon nasce quando acionada a Alavanca , Alguem me ajuda PF ?

 

Alavanca.lua

-- annihilator lever

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

monster = "Demon" ------ nome do monstro
pos = {x=495, y=186, z=14} ---posicao em que o monstro ira aparecer
monster2 = "Demon" ------ nome do monstro
pos2 = {x=497, y=186, z=14} ---posicao em que o monstro ira aparecer
monster2 = "Demon" ------ nome do monstro
pos3 = {x=496, y=190, z=14} ---posicao em que o monstro ira aparecer
monster2 = "Demon" ------ nome do monstro
pos4 = {x=498, y=190, z=14} ---posicao em que o monstro ira aparecer
monster2 = "Demon" ------ nome do monstro
pos5 = {x=499, y=188, z=14} ---posicao em que o monstro ira aparecer
monster2 = "Demon" ------ nome do monstro
pos6 = {x=500, y=188, z=14} ---posicao em que o monstro ira aparecer


if item.uid == 8888 and item.itemid == 1945 then
player1pos = {x=498, y=188, z=13, stackpos=253}
player1 = getThingfromPos(player1pos)

player2pos = {x=497, y=188, z=13, stackpos=253}
player2 = getThingfromPos(player2pos)

player3pos = {x=496, y=188, z=13, stackpos=253}
player3 = getThingfromPos(player3pos)

player4pos = {x=495, y=188, z=13, stackpos=253}
player4 = getThingfromPos(player4pos)
dzwignia = os.clock()


if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
queststatus1 = getPlayerStorageValue(player1.uid,70000)
queststatus2 = getPlayerStorageValue(player2.uid,70000)
queststatus3 = getPlayerStorageValue(player3.uid,70000)
queststatus4 = getPlayerStorageValue(player4.uid,70000)

if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
nplayer1pos = {x=498, y=188, z=14}
nplayer2pos = {x=497, y=188, z=14}
nplayer3pos = {x=496, y=188, z=14}
nplayer4pos = {x=495, y=188, z=14}

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

doSummonCreature(monster,pos)
doSummonCreature(monster2,pos2)
doSummonCreature(monster,pos3)
doSummonCreature(monster2,pos4)
doSummonCreature(monster,pos5)
doSummonCreature(monster2,pos6)

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,"Sorry , Você ja fez.")
end
else
doPlayerSendCancel(cid,"You need four people to do the quest.")
end

elseif item.uid == 8888 and item.itemid == 1946 then
if (dzwignia - os.clock()) > 60 then
doTransformItem(item.uid,item.itemid-1)
end
if getPlayerAccess(cid) > 0 then
doTransformItem(item.uid,item.itemid-1)
end
end
return 1
end 

 

 

Annihilator.lua

local Annihilator = { --Aqui iniciamos uma Array, coloquei 'local' para que ela existir somente neste arquivo.
       ANNIHILATOR_LEVER_UNIQUEID = 8888, --Aqui você coloca o uniqueid da sua alavanca ( o uso da virgula no fim é obrigatório, pois estamos dentro de uma Array, a Annihilator_config).
       MIN_LEVEL = 100, --Aqui você coloca o level minimo para fazer a quest.
       STORAGE = 7000, --Aqui você coloca o numero do Storage que deseja usar para salvar as informações da quest (para marcar/verificar se o player ja fez a quest).
       CHECK_INVISIBLE_ACCESS = 1, --Aqui você poe o access minimo para ser ignorado, na verificação se a sala está vazia. (para não contar gms como players).
       CHESTS = { --Aqui estamos abrindo uma array chamada CHESTS dentro da Array Annihilator_config.
               {uniqueid = 5001, prize = 2494, count = 1}, --Aqui você configura o uniqueid de cada baú, o item que ira receber (prize) e a quantidade.
               {uniqueid = 5002, prize = 2400, count = 1}, --Note que como estamos dentro da Array CHESTS usamos virgula para separar os valores, o uso é obrigado, somente no ultimo valor que não se deve colocar virgula.
               {uniqueid = 5003, prize = 2431, count = 1},
               {uniqueid = 5004, prize = 2331, count = 1} --Aqui não existe virgula, é o ultimo valor da array CHESTS
       },-- Fechamos a Array CHESTS
       PLAYER_POS = {
               {x = 498, y = 188, z = 13, stackpos = 253}, --Aqui você irá por as posições dos players, você pode colocar quantas quiser para aumentar o numero de players ou diminuir, mas obedecendo a sintaxe correta, sempre o ultimo valor sem virgula
               {x = 497, y = 188, z = 13, stackpos = 253},
               {x = 496, y = 188, z = 13, stackpos = 253},
               {x = 495, y = 188, z = 13, stackpos = 253}
       },
       PLAYER_TOPOS = {
               {x = 498, y = 188, z = 14}, --Posições para aonde os players devem ser levados, deve ter a mesma quantidade de valores do que a Array PLAYER_POS.
               {x = 497, y = 188, z = 14},
               {x = 496, y = 188, z = 14},
               {x = 495, y = 188, z = 14}
       },
       MONSTERS = {
               {name = "Demon", pos = {x = 495, y = 186, z = 14}}, --Aqui configuramos os monstros, qual deve ser sumonado e qual sua posição, você pode colocar mais  ou menos que isto.
               {name = "Demon", pos = {x = 497, y = 186, z = 14}},
               {name = "Demon", pos = {x = 496, y = 190, z = 14}},
               {name = "Demon", pos = {x = 498, y = 190, z = 14}},
               {name = "Demon", pos = {x = 499, y = 188, z = 14}},
               {name = "Demon", pos = {x = 500, y = 188, z = 14}}
       },
       TOP_LEFT_POS = {x = 495, y = 187, z = 14}, --Irei explicar logo abaixo.
       BOTTOM_RIGHT_POS = {x = 498, y = 189, z = 14}, --Irei explicar logo abaixo.
       TRASH_POS = {x = 481, y = 137, z = 15}, --Posição de um lugar escondido no mapa para onde os demons antigos serão levados
       IS_FORGOTTEN_SERVER = FALSE --Se você usa o Forgotten Server ou servers mais recentes troque o FALSE por TRUE, pois a função de teleport de alguns servers é diferente, de qualquer maneira se os player não forem teleportados troque de FALSE para TRUE ou vice-versa, aqui não colocamos virgula, pois é o ultimo valor da Array Annihilator_config.
} --Fechamos a Array Annihilator_config

       --Agora vamos transformar essas informações para uma variavel que conterá o sistema para que essa annihilator funcione
       Annihilator_ID = 100:new(Annihilator)

Editado por Bound
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Usa esse script, ele está 100%:

	local room = {     -- room with demons
       fromX = 33229,
       fromY = 31697,
       fromZ = 14,

       toX = 33224,
       toY = 31697,
       toZ = 14
       }

       local monster_pos = {
       [1] = {pos = {33224, 31695, 14}, monster = "Demon"},
       [2] = {pos = {33226, 31695, 14}, monster = "Demon"},
       [3] = {pos = {33228, 31697, 14}, monster = "Demon"},
       [4] = {pos = {33229, 31697, 14}, monster = "Demon"},
       [5] = {pos = {33227, 31699, 14}, monster = "Demon"},
       [6] = {pos = {33225, 31699, 14}, monster = "Demon"}
       }

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

       local new_player_pos = {
       {x = 33227, y = 31697, z = 14},
       {x = 33226, y = 31697, z = 14},
       {x = 33225, y = 31697, z = 14},
       {x = 33224, y = 31697, z = 14}
       }

       local playersOnly = "no"
       local questLevel = 101

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
                                       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

Só muda as coordenadas... ;)

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...