Ir para conteúdo

Featured Replies

Postado

Boa tarde amigos, pra quem manja essa deve ser fácil, gostaria que alguém retirasse do script a condição de checar se 4 jogadores irão fazer a quest, pra que eu possa fazer a anihi quest solo, com 2, 3 ou os 4 jogadores no meu server. Ta aí o meu script. Obrigado.

        -- Annihilator by Shawak v2.1

        -- CONFIG --

        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

        ------------------------------------------------------
        --- CONFIG END ---------------------------------------
        ------------------------------------------------------

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 = getThingfromPos(players_pos)
                        if player.itemid > 0 then
                                if string.lower(playersOnly) == "yes" then
                                        if isPlayer(player.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 = getThingfromPos(players_pos)
                                if isPlayer(player.uid) == TRUE then
                                        if getPlayerLevel(player.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, CONST_ME_POFF)
                                                doTeleportThing(player.uid, new_player_pos, FALSE)
                                                doSendMagicEffect(new_player_pos, 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

Resolvido por Vodkart

Ir para solução
  • Respostas 6
  • Visualizações 359
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • -- Annihilator by Shawak v2.1         -- CONFIG --         local room = {     -- room with demons         fromX = 33217,         fromY = 31655,         fromZ = 13,         --------------         toX =

Postado

     -- Annihilator by Shawak v2.1
        -- CONFIG --
        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
        ------------------------------------------------------
        --- CONFIG END ---------------------------------------
        ------------------------------------------------------
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
                        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
        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

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Postado
  • Autor

@Vodkart,

cara funcionou, porém fica dando esse erro nos sqm que não tem players

9:35:01.217] [Error - Action Interface]

[19:35:01.217] data/actions/scripts/AnnihilatorQuest/annihilator.lua:onUse

[19:35:01.227] Description:

[19:35:01.227] (luaDoTeleportThing) Thing not found

[19:35:01.227] [Error - Action Interface]

[19:35:01.227] data/actions/scripts/AnnihilatorQuest/annihilator.lua:onUse

[19:35:01.227] Description:

[19:35:01.227] (luaDoTeleportThing) Thing not found

[19:35:01.227] [Error - Action Interface]

[19:35:01.227] data/actions/scripts/AnnihilatorQuest/annihilator.lua:onUse

[19:35:01.227] Description:

[19:35:01.227] (luaDoTeleportThing) Thing not found

Editado por onix (veja o histórico de edições)

Postado
  • Solução

function HaveCreatureArena(area, remove, clean) -- função do Vodkart
for x = area[1].x - 1, area[2].x + 1 do
for y = area[1].y - 1, area[2].y + 1 do
local pos = {x=x, y=y, z=area[1].z}
local m = getTopCreature(pos).uid
if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end
if clean ~= false then doCleanTile(pos, false) end
end
   end
   end
local t = {
lvl = 100,
area_from = {x = 33217, y = 31655, z = 13},
area_to = {x = 33224, y = 31663, z = 13},
entrada = {
{x = 33225, y =31671, z = 13},-- pos players
{x = 33224, y =31671, z = 13},
{x = 33223, y =31671, z = 13},
{x = 33222, y =31671, z = 13}
},
saida = {
{x = 33222, y = 31659, z = 13},
{x = 33221, y = 31659, z = 13},
{x = 33220, y = 31659, z = 13},
{x = 33219, y = 31659, z = 13}
},
monstros = {
{{x = 33220, y = 31657, z = 13}, "Demon"}, -- defina pos dos montros e nomes
{{x = 33222, y = 31657, z = 13}, "Demon"},
{{x = 33219, y = 31661, z = 13}, "Demon"},
{{x = 33221, y = 31661, z = 13}, "Demon"},
{{x = 33223, y = 31659, z = 13}, "Demon"},
{{x = 33224, y = 31659, z = 13}, "Demon"}
} 
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local player_room, check = 0, {}
for _, pid in pairs(getPlayersOnline()) do
if isInRange(getCreaturePosition(pid), t.area_from, t.area_to) then
player_room = player_room + 1
end
end
if player_room > 0 then
doPlayerSendCancel(cid, 'There is already a team in the quest room.')
return true
end
for _, k in ipairs(t.entrada) do
local x = getTopCreature(k).uid
if(x ~= 0 and not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
doPlayerSendCancel(cid, 'alguém não possui level '..t.lvl..' ou mais.')
return true
end
table.insert(check, x)
end
HaveCreatureArena({t.area_from, t.area_to}, true, true) -- remove monstros, itens
for _, summon in pairs(t.monstros) do
doCreateMonster(summon[2], summon[1])
end
for i, tid in ipairs(check) do
doSendMagicEffect(t.entrada[i], CONST_ME_POFF)
doTeleportThing(tid, t.saida[i], false)
doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Postado
  • Autor

Vodkart, obrigado por estar me ajudando, só que agora a alavanca não funciona mais, e da esse erro:

o primeiro script que vc editou a quest ficou perfeita aos olhos do player, mas ficou aparecendo as mensagens de erro na distro para mim, pelo que entendi o script desamarrou os 4 tiles e teleportou quem estava la, mas o script não entendeu a possibilidade de alguns tiles ficarem sem players para teleportar, então o erro do primeiro script que vc editou era ao tentar teleportar os players para a quest e nao ter players la nos 3 tiles restantes e não ao tentar fazer a limpeza da sala da quest e não encontrar players nem monstros lá

 

[23:3:09.068] [Error - Action Interface]
[23:3:09.068] data/actions/scripts/AnnihilatorQuest/annihilator.lua:onUse
[23:3:09.068] Description:
[23:3:09.068] (internalGetPlayerInfo) Player not found when requesting player in
fo #3

[23:3:09.068] [Error - Action Interface]
[23:3:09.068] data/actions/scripts/AnnihilatorQuest/annihilator.lua:onUse
[23:3:09.068] Description:
[23:3:09.078] ...ata/actions/scripts/AnnihilatorQuest/annihilator.lua:49: attemp
t to compare boolean with number
[23:3:09.078] stack traceback:
[23:3:09.078]   ...ata/actions/scripts/AnnihilatorQuest/annihilator.lua:49: in f
unction <...ata/actions/scripts/AnnihilatorQuest/annihilator.lua:36>

Editado por onix (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo