Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Pessoal, boa tarde!

 

Estou com a ideia de fazer uma quest parecida com a annihilator, porém, pra 10 pessoas e espalhadas no mapa, e com um requisito, ter 100 gold ingots na backpack.

 

Tenho esse script editado da annihilator normal, mais acho que as posições dos players não vão dar certo, porque na annihi normal só tem 2 posiçoes, de x até y e eu estou tentando espalhar pelo mapa todo as posições!

 

Poderiam avaliar o script?

 

local players_area =  {

{x = 32794, y = 31246, z = 5},
{x = 33299, y = 32287, z = 12},
{x = 33180, y = 32874, z = 8},
{x = 32317, y = 32168, z = 4},
{x = 32316, y = 31755, z = 1},
{x = 33176, y = 31630, z = 9},
{x = 32683, y = 31683, z = 9},
{x = 32533, y = 31844, z = 5},
{x = 32963, y = 32073, z = 8},
{x = 32590, y = 32747, z = 6}
}
local new_player_pos = {
{x = 33221, y = 31659, z = 13},
{x = 33222, y = 31659, z = 13},
{x = 33220, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13}
}
local demonPos = {
{x = 33219, y = 31657, z = 13},
{x = 33221, y = 31657, z = 13},
{x = 33223, y = 31659, z = 13},
{x = 33224, y = 31659, z = 13},
{x = 33220, y = 31661, z = 13},
{x = 33222, y = 31661, z = 13}
}
 
function getPlayerCountInArea(toPos, fromPos)
 
local count = 0
local cid = {}
 
for x = fromPos.x, toPos.x do
for y = fromPos.y, toPos.y do
for z = toPos.z, toPos.z do
local creature = getTopCreature({x = x, y = y, z = z, stackpos = 255}).uid
if(creature > 0) then
if(isPlayer(creature)) then
table.insert(cid, creature)
count = count + 1
if(getPlayerLevel(creature) < 200) then
return "All players must be above level 200."
end
elseif(isMonster(creature)) then
return "Players are allowed only."
end
end
end
end
end
 
if(count < 10) then
return "You need 10 players."
else
for i = 1,4 do
Player(cid[5-i]):teleportTo(new_player_pos)
Player(cid[5-i]):getPosition():sendMagicEffect(CONST_ME_TELEPORT)
end
end
return true
end
 
function SummonDemon(Pos)
local count = 0
local cid = {}
for x = Pos[1].x, Pos[4].x do
for y = Pos[1].y, Pos[6].y do
for z = Pos[1].z, Pos[6].z do
local creature = getTopCreature({x = x, y = y, z = z, stackpos = 255}).uid
if(creature > 0) then
if(isPlayer(creature)) then
return "A team is already inside the quest room."
elseif(isMonster(creature)) then
table.insert(cid, creature)
count = count + 1
end
end
end
end
end
 
for i = 1, #cid do
doRemoveCreature(cid)
end
 
for i = 1, #Pos do
doSummonCreature("Demon", Pos)
end
 
return getPlayerCountInArea(players_area[1], players_area[2])
end
 
function onUse(cid, item)
if(item.itemid == 1946) then
local condition = SummonDemon(demonPos)
if(condition ~= true) then
doPlayerSendCancel(cid, condition)
end
else
Item(item.uid):transform(1946)
end
return true
end

 
Agradeço!
Editado por Droox (veja o histórico de edições)

60cb89cab929e5d4179b538c4176ab11a2e58de6.gif

Link para o post
Compartilhar em outros sites

Substitui o arquivo da anih por esse.

 

       local room = { -- Sala dos Demons [x y    ]
--[       ]
--[    x y]
        fromX = 893,
        fromY = 1005,
        fromZ = 9,
        --------------
        toX = 900,
        toY = 1011,
        toZ = 9
        }
 
        local monster_pos = { -- Monstros que irao nascer
[1] = {pos = {894, 1006, 9}, monster = "Demon"},
[2] = {pos = {896, 1006, 9}, monster = "Demon"},
[3] = {pos = {898, 1008, 9}, monster = "Demon"},
[4] = {pos = {899, 1008, 9}, monster = "Demon"},
[5] = {pos = {897, 1010, 9}, monster = "Demon"},
[6] = {pos = {895, 1010, 9}, monster = "Demon"}
        }
 
        local players_pos = { -- Posição dos player
{x = 870, y = 1004, z = 9, stackpos = 253},
{x = 869, y = 1004, z = 9, stackpos = 253},
{x = 869, y = 1002, z = 9, stackpos = 253},
{x = 870, y = 1002, z = 9, stackpos = 253},
{x = 867, y = 1003, z = 9, stackpos = 253},
{x = 868, y = 1003, z = 9, stackpos = 253},
{x = 869, y = 1003, z = 9, stackpos = 253},
{x = 870, y = 1003, z = 9, stackpos = 253},
{x = 870, y = 1004, z = 9, stackpos = 253},
{x = 869, y = 1004, z = 9, stackpos = 253}
}
 
        local new_player_pos = { -- Nova Posição dos players
{x = 896, y = 1008, z = 9},
{x = 902, y = 1008, z = 9},
{x = 903, y = 1008, z = 9},
{x = 904, y = 1008, z = 9},
{x = 905, y = 1008, z = 9},
{x = 906, y = 1008, z = 9},
{x = 907, y = 1008, z = 9},
{x = 908, y = 1008, z = 9},
{x = 909, y = 1008, z = 9},
{x = 910, y = 1008, z = 9}
        }
 
 
        local playersOnly = "yes" -- Apenas Players?
        local questLevel = 100 -- Level
 
------------------------------------------------------------------
--  NAO MECHA APARTIR DAQUI  --
------------------------------------------------------------------
 
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
if doPlayerRemoveItem(player[i].uid, 9971, 100) == true then
                                                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)
else
doPlayerSendTextMessage(cid,19,"Todos os players precisam de 100 gold ingot para entrar.")
doSendMagicEffect(players_pos[i], CONST_ME_POFF)
end
                                        end
                                else
                                        doPlayerSendTextMessage(cid,19,"Apenas players podem entrar.")
                                end
                        else
                                doPlayerSendTextMessage(cid,19,"Todos os jogadores devem ter level "..questLevel.." para entrar.")
                        end
                else
                        doPlayerSendTextMessage(cid,19,"Você precisa de  "..table.getn(players_pos).." players players para entrar.")
                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,"Já existe uma team dentro da quest. Aguarde sua vez.")          
                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
Link para o post
Compartilhar em outros sites

p e o p l e - Só não entendi uma coisa! Essa linha!

 

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

 

Não entendi essa posição! Pode me explicar?

60cb89cab929e5d4179b538c4176ab11a2e58de6.gif

Link para o post
Compartilhar em outros sites

Sim é tipo um lixo, se tiver monstros vivo por conta do time antigo que morreu, vai tudo para essa localização, coloca uma posição que nenhum player tem acesso !

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