Ir para conteúdo
  • Cadastre-se

(Resolvido)Quest


Ir para solução Resolvido por zipter98,

Posts Recomendados

1-PROCEDIMENTO DA QUEST
°O circulo de preto é as posição incial do player
° O circulo roxo é a posição do player quando ele entrar na quest
° Azul é a alavanca que quando o player puxar vai sumonar 6 bichos onde esta circulado de vermelho e vai gerar um tempo ai quando o tempo acabar vai ,os player que tiver dentro vai ser teleportado pra fora,caso eles estejam na sala de recompensa não precisara ser teleportado e quando o tempo acabar os monstros vão sumir tbm. E colocar um tempo para poder usar a alavanca de novo.
° Podem fazer mais de uma vez
° O circulo de Branco são os tile de teleporte que já estão configurado
° O monstro não precisa de teleporte pq são 6 monstros
 
 
 
Link para o post
Compartilhar em outros sites

você que não sabe configurar scripter king teve 3 scripter 

parecido com oque você quer

1 passa x.y.z das posição dos 5 players

2 passa x.y.z das posição para onde os 5 players vai ir

3 passa x.y.z de onde vai parecer 6 demon

4 quantos tempo quest vai ter

e por fim

5 passa actionid que vai usar na alavanca com map editor

Link para o post
Compartilhar em outros sites

Tem como colocar pro tempo fica aparecendo em 5 local diferentes? e só ta removendo 1 monstro e o cara mata todos ai quando acaba o tempo ele é teleportado umas 6 vezes

 

 

local config = {
[1] = {pos_player = {x=1126,y=1152,z=7, stackpos=253},topos_player = {x=1127,y=1153,z=8},effect_player = 10},
[2] = {pos_player = {x=1125,y=1152,z=7, stackpos=253},topos_player = {x=1126,y=1153,z=8},effect_player = 10},
}
local monster = {name_monster = "Annihilon", pos_monster = {x=1121,y=1151,z=8},time_monster = 10, effect_monster = 10} -- tempo em segundos
local monster1 = {name_monster1 = "Annihilon", pos_monster1 = {x=1121,y=1153,z=8},time_monster1 = 10, effect_monster = 10} -- tempo em segundos
local monster2 = {name_monster2 = "Annihilon", pos_monster2 = {x=1121,y=1155,z=8},time_monster2 = 10, effect_monster = 10} -- tempo em segundos
local monster3 = {name_monster3 = "Annihilon", pos_monster3 = {x=1129,y=1151,z=8},time_monster3 = 10, effect_monster = 10} -- tempo em segundos
local monster4 = {name_monster4 = "Annihilon", pos_monster4 = {x=1129,y=1153,z=8},time_monster4 = 10, effect_monster = 10} -- tempo em segundos
local monster5 = {name_monster5 = "Annihilon", pos_monster5 = {x=1129,y=1155,z=8},time_monster5 = 10, effect_monster = 10} -- tempo em segundos
local retorno_players = {pos = {x=1095,y=1062,z=8},time_players = 1} -- tempo em segundos
local evaluation_of_id_players = {}
local reward = {0,0} -- achei sem graça resovir colocar uma recopensa
local check = 1
-- area de configuração

function onUse(cid, item, frompos, item2, topos)
if check ~= 1 then
doPlayerSendTextMessage(cid,"já tem gente matando boss")
return true
end
onCheckPlayers (cid)
if counter == #config then
for key,value in pairs(config) do
doTransformItem(item.uid,item.itemid == 1945 and 1946 or 1945)
all_players = getThingfromPos(value.pos_player)
doTeleportThing(all_players.uid,value.topos_player)
doSendMagicEffect(value.topos_player,value.effect_player)
doPlayerSendTextMessage(getCreatureByName(getCreatureName(all_players.uid)),22,"você tem "..monster.time_monster.." segundos para matar boss")
end
bicho = doCreateMonster(monster.name_monster,monster.pos_monster)
bicho = doCreateMonster(monster1.name_monster1,monster1.pos_monster1)
bicho = doCreateMonster(monster2.name_monster2,monster2.pos_monster2)
bicho = doCreateMonster(monster3.name_monster3,monster3.pos_monster3)
bicho = doCreateMonster(monster4.name_monster4,monster4.pos_monster4)
bicho = doCreateMonster(monster5.name_monster5,monster5.pos_monster5)
addEvent(removerMonster,monster.time_monster*1000,cid)
addEvent(removerMonster1,monster1.time_monster1*1000,cid)
addEvent(removerMonster2,monster2.time_monster2*1000,cid)
addEvent(removerMonster3,monster3.time_monster3*1000,cid)
addEvent(removerMonster4,monster4.time_monster4*1000,cid)
addEvent(removerMonster5,monster5.time_monster5*1000,cid)
check = 0
else
doPlayerSendCancel(cid,"Você não tem "..#config.." jogadores necessario.")
end
return true
end

function onCheckPlayers (cid)
counter = 0
for key,value in pairs(config) do
all_players = getThingfromPos(value.pos_player)
if all_players.itemid > 0 and isPlayer(all_players.uid) then
counter = counter+all_players.itemid
evaluation_of_id_players[counter] = getCreatureByName(getCreatureName(all_players.uid))
end
end
return true
end

function removerMonster(cid)
if isCreature(bicho) then
doSendMagicEffect(getThingPos(bicho),monster.effect_monster)
doRemoveCreature(bicho)
addEvent(telePlayers,(retorno_players.time_players/2)*1000,cid)
for i = 1,#evaluation_of_id_players do
if isPlayer (evaluation_of_id_players) then
doPlayerSendTextMessage(evaluation_of_id_players,22,"O seu tempo acabou "..(retorno_players.time_players/2).." segundos")
end
end
else
for i = 1,#evaluation_of_id_players do
if isPlayer (evaluation_of_id_players) then
doPlayerAddItem(evaluation_of_id_players,reward[1],reward[2])
addEvent(telePlayers,retorno_players.time_players*1000,cid)
return true
end
end
end
return true
end

function telePlayers(cid)
check = 1
for i = 1,#evaluation_of_id_players do
if isPlayer(evaluation_of_id_players) then
doTeleportThing(evaluation_of_id_players,retorno_players.pos)
doSendMagicEffect(retorno_players.pos,10)
end
end
return true
end

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

Esse tempo para usar a alavanca novamente é global ou individual? E como os jogadores entrarão na sala de recompensas?

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Esse tempo é global e os tile preto nas laterais são tile de teleporte,O problema e quando o tempo acaba mesmo que eles ja tenham terminado a quest eles teleporta mesmo assim.  Se você tiver hamachi entre nessa sala só pra vc ver como quero que funcione

 

Sala: tibiaking2

senha:12345

 

Link para o post
Compartilhar em outros sites

Esses tiles pretos que você menciona são os circulados em branco? Os jogadores só poderão passar por tais tiles se tiverem matado todos os monstros da sala?

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

eu não entendo você edita direto oque você quer 

você queria que tinha que ter tempo para matar 1 boss só

agora é os 6 boss

e se tempo acabar os players seria teletransportados

local tb_players = {
      {pos = {x=1126,y=1152,z=7, stackpos=253},topos = {x=1127,y=1153,z=8}, effect = 10,tempo = 15,retorno = {x=1095,y=1062,z=8}},
      {pos = {x=1125,y=1152,z=7, stackpos=253},topos = {x=1126,y=1153,z=8}, effect = 10,tempo = 15,retorno = {x=1095,y=1063,z=8}},
}
--[[{pos = {x=1126,y=1152,z=7, stackpos=253} -- posição do player
,topos = {x=1127,y=1153,z=8},  -- posição para onde player vai ir
effect = 10, -- effect no play
tempo = 15, -- tempo em segundos
retorno = {x=1095,y=1062,z=8}},]] -- para onde player vai ser envidado se acabar o tempo

local tb_boss = {
    {name = "Annihilon",pos = {x=1121,y=1151,z=8}, effect = 10,tempo = 20}, -- nome posição do boss e effect e tempo que ele vai ficar
    {name = "Annihilon",pos = {x=1121,y=1153,z=8}, effect = 10,tempo = 20}, -- nome posição do boss e effect e tempo que ele vai ficar
	{name = "Annihilon",pos = {x=1121,y=1155,z=8}, effect = 10,tempo = 20}, -- nome posição do boss e effect e tempo que ele vai ficar
    {name = "Annihilon",pos = {x=1129,y=1151,z=8}, effect = 10,tempo = 20}, -- nome posição do boss e effect e tempo que ele vai ficar
	{name = "Annihilon",pos = {x=1129,y=1153,z=8}, effect = 10,tempo = 20}, -- nome posição do boss e effect e tempo que ele vai ficar
    {name = "Annihilon",pos = {x=1129,y=1155,z=8}, effect = 10,tempo = 20}  -- nome posição do boss e effect e tempo que ele vai ficar
}

local check_quest,playes_ids,boss = 0,{},{}
function onUse(cid, item, fromPosition, itemEx, toPosition)
if check_quest ~= 0 then
doPlayerSendTextMessage(cid,22,"já tem gente nessa quest")
return true
end
local plataforma = 0
for k,valor in pairs(tb_players) do
all = getThingfromPos(valor.pos)
if all.itemid > 0 and isPlayer(all.uid) then
plataforma = plataforma+ all.itemid
end
end
if plataforma == #tb_players then
check_quest = 1
for i = 1,#tb_players do
all_pos_play = getThingfromPos(tb_players[i].pos)
playes_ids[i] = getCreatureByName(getCreatureName(all_pos_play.uid))
doTeleportThing(all_pos_play.uid,tb_players[i].topos)
end
doTransformItem(item.uid,item.itemid == 1945 and 1946 or 1945)
for i = 1,#tb_boss do
boss[i] = doCreateMonster(tb_boss[i].name,tb_boss[i].pos)
addEvent(removerBoss,tb_boss[i].tempo*1000,boss,i)
end
reRead(0)
else
doPlayerSendCancel(cid,"precisa de "..#tb_players.." players")
end
return true
end

function removerBoss (boss,i)
if isCreature(boss[i]) then
doSendMagicEffect(getThingPos(boss[i]),tb_boss[i].effect)
doRemoveCreature(boss[i])
if  i == #boss then
reRead(2)
end
else
table.remove (boss)
if #boss == 0 then
reRead(1)
end
end
end

function reRead(x)
for i = 1,#playes_ids do
if x == 0 and isPlayer (playes_ids[i]) then
doPlayerSendTextMessage(playes_ids[i],22,"você tem "..tb_boss[1].tempo.." segundos para matar boss")
doSendMagicEffect(tb_players[i].topos,tb_players[i].effect)
elseif x == 1 and isPlayer (playes_ids[i]) then
check_quest = 0
doPlayerSendTextMessage(playes_ids[i],22,"parabéns por ter matado boss")
elseif x == 2 and isPlayer (playes_ids[i]) then
check_quest = 0
doPlayerSendTextMessage(playes_ids[i],22,"o seu tempo acabou agora sera teletraspostado em "..tb_players[i].tempo.." segundos")
addEvent(reRead,tb_players[i].tempo*1000,3)
elseif x == 3 and isPlayer (playes_ids[i]) then
doTeleportThing(playes_ids[i],tb_players[i].retorno)
doSendMagicEffect(tb_players[i].retorno,tb_players[i].effect)
end
end
end 

esse script vai funcionar na seguinte forma você

tem tempo para matar os boss e se não matar no tempo certo

sera teletransportado dps de segundos do tempo configurado

agora se matar todos não vai ser teletransportados

e vai verificar se tem gente na quest

vai fazer alavanca se mover assim que entra na quest

vai verificar os player que ta na quest esta online se não morreu

e já ta nas suas coordenadas  

outros efeitos no player e no boss msg ect

 

se quer um boss só para segurar tempo e os outros só só para aumentar os bicho 

use esse script 

local tb_players = {
    {pos = {x=1126,y=1152,z=7, stackpos=253},topos = {x=1127,y=1153,z=8}, effect = 10,tempo = 15,retorno = {x=1095,y=1062,z=8}},
    {pos = {x=1125,y=1152,z=7, stackpos=253},topos = {x=1126,y=1153,z=8}, effect = 10,tempo = 15,retorno = {x=1095,y=1063,z=8}},
}
local tb_boss = {
    {name = "Annihilon",pos = {x=1121,y=1151,z=8}, effect = 10,tempo = 20},
    {name = "Annihilon",pos = {x=1121,y=1153,z=8}, effect = 10,tempo = 20},
    	{name = "Annihilon",pos = {x=1121,y=1155,z=8}, effect = 10,tempo = 20},
    {name = "Annihilon",pos = {x=1129,y=1151,z=8}, effect = 10,tempo = 20},
    	{name = "Annihilon",pos = {x=1129,y=1153,z=8}, effect = 10,tempo = 20},
    {name = "Annihilon",pos = {x=1129,y=1155,z=8}, effect = 10,tempo = 20}
}

local bossMaster = {name = "Dragon",pos = {x=x,y=y,z=z, stackpos=253}, effect = 10,tempo = 20}

local check_quest,playes_ids,boss = 0,{},{}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if check_quest ~= 0 then
        doPlayerSendTextMessage(cid,22,"já tem gente nessa quest")
        return true
    end
    local plataforma = 0
    for k,valor in pairs(tb_players) do
        all = getThingfromPos(valor.pos)
        if all.itemid > 0 and isPlayer(all.uid) then
            plataforma = plataforma+ all.itemid
        end
    end
    if plataforma == #tb_players then
        check_quest = 1
        for i = 1,#tb_players do
            all_pos_play = getThingfromPos(tb_players[i].pos)
            playes_ids[i] = getCreatureByName(getCreatureName(all_pos_play.uid))
            doTeleportThing(all_pos_play.uid,tb_players[i].topos)
        end
        doTransformItem(item.uid,item.itemid == 1945 and 1946 or 1945)
        for i = 1,#tb_boss do
            boss[i] = doCreateMonster(tb_boss[i].name,tb_boss[i].pos)
            addEvent(removerBoss,tb_boss[i].tempo*1000,boss,i)
        end
        reRead(0)
        bicho = doCreateMonster(bossMaster.name,bossMaster.pos)
        addEvent(boss_da_freente,bossMaster.tempo*1000,bicho)
    else
        doPlayerSendCancel(cid,"precisa de "..#tb_players.." players")
    end
    return true
end

function removerBoss (boss,i)
    if isCreature(boss[i]) then
        doSendMagicEffect(getThingPos(boss[i]),tb_boss[i].effect)
        doRemoveCreature(boss[i])
    end
end

function reRead(x)
    for i = 1,#playes_ids do
        if x == 0 and isPlayer (playes_ids[i]) then
            doPlayerSendTextMessage(playes_ids[i],22,"você tem "..tb_boss[1].tempo.." segundos para matar boss")
            doSendMagicEffect(tb_players[i].topos,tb_players[i].effect)
        elseif x == 1 and isPlayer (playes_ids[i]) then
            check_quest = 0
            doPlayerSendTextMessage(playes_ids[i],22,"parabéns por ter matado boss")
        elseif x == 2 and isPlayer (playes_ids[i]) then
            check_quest = 0
            doPlayerSendTextMessage(playes_ids[i],22,"o seu tempo acabou agora sera teletraspostado em "..tb_players[i].tempo.." segundos")
            addEvent(reRead,tb_players[i].tempo*1000,3)
        elseif x == 3 and isPlayer (playes_ids[i]) then
            check_quest = 0
            doTeleportThing(playes_ids[i],tb_players[i].retorno)
            doSendMagicEffect(tb_players[i].retorno,tb_players[i].effect)
        end
    end
end

function boss_da_freente (bicho)
    if isCreature(bicho) then
        doRemoveCreature(bicho)
        reRead(2)
    else
        reRead(1)
    end
end

 

mais nesse segundo script

você tem que editar

bossMaster

local bossMaster = {name = "Dragon",pos = {x=x,y=y,z=z, stackpos=253}, effect = 10,tempo = 20}

boss principal que controla tempo se matar ele ganha quest

Editado por elton123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução
local config = {
    storage = 9721,
    time = 5,                                --Tempo para fazer a quest, em minutos.
    interval = 15,                           --Tempo para poder usar a alavanca novamente, em minutos.
    timerPos = {x = x, y = y, z = z},        --Posição onde o tempo restante aparecerá.
    monster = {
        name = "monster_name",               --Nome do monstro.
        pos = {
            {x = x, y = y, z = z},           --Posições onde ele vai nascer.
            {x = x, y = y, z = z},
            {x = x, y = y, z = z},
            --etc
        },
    },
    player = {
        {{x = x, y = y, z = z}, {x = x, y = y, z = z}},      --{{posição onde o player deve ficar}, {para onde será teleportado}},
        {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
        {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
        --etc
    },
    area = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},   --{{posição superior esquerda da área}, {posição inferior direita da área}},
}
local cidPos = {}
function clearArea()
    for x = config.area[1].x, config.area[2].x do
        for y = config.area[1].y, config.area[2].y do
            local pos = {x = x, y = y, z = config.area[1].z}
            local pid = getTopCreature(pos).uid
            if pid > 0 then
                if isPlayer(pid) then
                    doTeleportThing(pid, config.player[cidPos[pid]][1] or getTownTemplePosition(getPlayerTown(pid)))
                    doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_RED, "You didn't get to the reward room in time.")
                else
                    doRemoveCreature(pid)
                end
            end
        end
    end
    setGlobalStorageValue(config.storage, os.time() + config.interval * 60)
end
function checkPlayer()
    for x = config.area[1].x, config.area[2].x do
        for y = config.area[1].y, config.area[2].y do
            local pos = {x = x, y = y, z = config.area[1].z}
            local pid = getTopCreature(pos).uid
            if isPlayer(pid) then
                return true
            end
        end
    end
    return false
end
function convert(time)
    return {minutes = math.floor(time / 60), seconds = time - math.floor(time / 60) * 60}
end
function timer(time)
    if time < 0 or not checkPlayer() then
        return true
    end
    doSendAnimatedText(config.timerPos, convert(time).minutes..":"..convert(time).seconds, 215)
    addEvent(timer, 1000, time - 1)
end
function onUse(cid)
    if getGlobalStorageValue(config.storage) > os.time() then
        return doPlayerSendCancel(cid, "Wait "..convert(getGlobalStorageValue(config.storage) - os.time()).minutes.."min and "..convert(getGlobalStorageValue(config.storage) - os.time()).seconds.."secs.")
    elseif checkPlayer() then
        return doPlayerSendCancel(cid, "There's player(s) doing the quest right now.")
    end
    local p = {}
    for _, pos in pairs(config.player) do
        local pid = getTopCreature(pos[1]).uid
        if isPlayer(pid) then
            p[#p + 1] = pid
            cidPos[pid] = _
        end
    end
    if #p < #config.player then
        return doPlayerSendCancel(cid, "There's some player(s) missing.")
    end
    for i = 1, #p do
        doTeleportThing(p[i], config.player[cidPos[p[i]]][2])
        doPlayerSendTextMessage(p[i], 27, "Good luck!")
    end
    for _, pos in pairs(config.monster.pos) do
        doCreateMonster(config.monster.name, pos)
    end
    timer(config.time)
    addEvent(function()
        clearArea()
    end, config.time * 60 * 1000)
    return true
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Quando aperto alavanca já aprece isso 

 

There's some player(s) missing = Há algum jogador (s) desaparecida

 

 

Esqueci de editar algo? e quando o tempo acabar pra onde o player vai?

 

local config = {
storage = 9721,
time = 2, --Tempo para fazer a quest, em minutos.
interval = 2, --Tempo para poder usar a alavanca novamente, em minutos.
timerPos = {x = 1127, y = 1152, z = 7}, --Posição onde o tempo restante aparecerá.
monster = {
name = "Annihilon", --Nome do monstro.
pos = {
{x = 1121, y = 1151, z = 8}, --Posições onde ele vai nascer.
{x = 1121, y = 1153, z = 8},
{x = 1121, y = 1155, z = 8},
{x = 1129, y = 1151, z = 8},
{x = 1129, y = 1153, z = 8},
{x = 1129, y = 1155, z = 8},
},
},
player = {
{{x = 1126, y = 1152, z = 7}, {x = 1127, y = 1153, z = 8}}, --{{posição onde o player deve ficar}, {para onde será teleportado}},
{{x = 1125, y = 1152, z = 7}, {x = 1126, y = 1153, z = 8}},
--etc
},
area = {{x = 1121, y = 1150, z = 8}, {x = 1129, y = 1156, z = 8}}, --{{posição superior esquerda da área}, {posição inferior direita da área}},
}
local cidPos = {}
function clearArea()
for x = config.area[1].x, config.area[2].x do
for y = config.area[1].y, config.area[2].y do
local pos = {x = x, y = y, z = config.area[1].z}
local pid = getTopCreature(pos).uid
if pid > 0 then
if isPlayer(pid) then
doTeleportThing(pid, config.player[cidPos[pid]][1] or getTownTemplePosition(getPlayerTown(pid)))
doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_RED, "Você não conseguil completar a Anihi")
else
doRemoveCreature(pid)
end
end
end
end
setGlobalStorageValue(config.storage, os.time() + config.interval * 60)
end
function checkPlayer()
for x = config.area[1].x, config.area[2].x do
for y = config.area[1].y, config.area[2].y do
local pos = {x = x, y = y, z = config.area[1].z}
local pid = getTopCreature(pos).uid
if isPlayer(pid) then
return true
end
end
end
return false
end
function convert(time)
return {minutes = math.floor(time / 60), seconds = time - math.floor(time / 60) * 60}
end
function timer(time)
if time < 0 or not checkPlayer() then
return true
end
doSendAnimatedText(config.timerPos, convert(time).minutes..":"..convert(time).seconds, 215)
addEvent(timer, 1000, time - 1)
end
function onUse(cid)
if getGlobalStorageValue(config.storage) > os.time() then
return doPlayerSendCancel(cid, "Espere "..convert(getGlobalStorageValue(config.storage) - os.time()).minutes.."min and "..convert(getGlobalStorageValue(config.storage) - os.time()).seconds.."secs.")
elseif checkPlayer() then
return doPlayerSendCancel(cid, "Tem player Fazendo a Quest,Aguarde!.")
end
local p = {}
for _, pos in pairs(config.player) do
local pid = getTopCreature(pos).uid
if isPlayer(pid) then
p[#p + 1] = pid
cidPos[pid] = _
end
end
if #p < #config.player then
return doPlayerSendCancel(cid, "There's some player(s) missing.")
end
for i = 1, #p do
doTeleportThing(p, config.player[cidPos[pid]][2])
doPlayerSendTextMessage(p, 27, "Good luck!")
end
for _, pos in pairs(config.monster.pos) do
doCreateMonster(config.monster.name, pos)
end
addEvent(function()
clearArea()
end, config.time * 60 * 1000)
return true
end

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

Ops, falta de atenção minha. Corrigido.

Quando o tempo acabar, caso o jogador não tenha chegado até a sala de recompensas, ele será teleportado para a posição onde estava quando a alavanca foi usada.

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Erro

 

[31/05/2015 22:29:32] [Error - Action Interface] 

[31/05/2015 22:29:32] data/actions/scripts/one/anihilation/anihi.lua:onUse
[31/05/2015 22:29:32] Description: 
[31/05/2015 22:29:32] data/actions/scripts/one/anihilation/anihi.lua:81: attempt to index field '?' (a nil value)
[31/05/2015 22:29:32] stack traceback:
[31/05/2015 22:29:32] data/actions/scripts/one/anihilation/anihi.lua:81: in function <data/actions/scripts/one/anihilation/anihi.lua:63>
 
[31/05/2015 22:29:33] [Error - Action Interface] 
[31/05/2015 22:29:33] data/actions/scripts/one/anihilation/anihi.lua:onUse
[31/05/2015 22:29:33] Description: 
[31/05/2015 22:29:33] data/actions/scripts/one/anihilation/anihi.lua:81: attempt to index field '?' (a nil value)
[31/05/2015 22:29:33] stack traceback:
[31/05/2015 22:29:33] data/actions/scripts/one/anihilation/anihi.lua:81: in function <data/actions/scripts/one/anihilation/anihi.lua:63>
Link para o post
Compartilhar em outros sites

Prestou muito obrigado mano Rep+,Mais tem como coloca pra quando acabar o tempo ir pra outra position pq o canto da alavanca é fechado e não tá aparecendo o tempo :/

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

Sobre o tempo, havia esquecido de executar a função (lol). Arrumei já.

Esta outra posição seria o templo? Ou outro lugar específico?

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites
local config = {
    storage = 9721,
    time = 5,                                --Tempo para fazer a quest, em minutos.
    interval = 15,                           --Tempo para poder usar a alavanca novamente, em minutos.
    timerPos = {x = x, y = y, z = z},        --Posição onde o tempo restante aparecerá.
    monster = {
        name = "monster_name",               --Nome do monstro.
        pos = {
            {x = x, y = y, z = z},           --Posições onde ele vai nascer.
            {x = x, y = y, z = z},
            {x = x, y = y, z = z},
            --etc
        },
    },
    player = {
        {{x = x, y = y, z = z}, {x = x, y = y, z = z}},      --{{posição onde o player deve ficar}, {para onde será teleportado}},
        {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
        {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
        --etc
    },
    area = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},   --{{posição superior esquerda da área}, {posição inferior direita da área}},
}
local cidPos = {}
function clearArea()
    for x = config.area[1].x, config.area[2].x do
        for y = config.area[1].y, config.area[2].y do
            local pos = {x = x, y = y, z = config.area[1].z}
            local pid = getTopCreature(pos).uid
            if pid > 0 then
                if isPlayer(pid) then
                    doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                    doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_RED, "You didn't get to the reward room in time.")
                else
                    doRemoveCreature(pid)
                end
            end
        end
    end
    setGlobalStorageValue(config.storage, os.time() + config.interval * 60)
end
function checkPlayer()
    for x = config.area[1].x, config.area[2].x do
        for y = config.area[1].y, config.area[2].y do
            local pos = {x = x, y = y, z = config.area[1].z}
            local pid = getTopCreature(pos).uid
            if isPlayer(pid) then
                return true
            end
        end
    end
    return false
end
function convert(time)
    return {minutes = math.floor(time / 60), seconds = time - math.floor(time / 60) * 60}
end
function timer(time)
    if time < 0 or not checkPlayer() then
        return true
    end
    doSendAnimatedText(config.timerPos, convert(time).minutes..":"..convert(time).seconds, 215)
    addEvent(timer, 1000, time - 1)
end
function onUse(cid)
    if getGlobalStorageValue(config.storage) > os.time() then
        return doPlayerSendCancel(cid, "Wait "..convert(getGlobalStorageValue(config.storage) - os.time()).minutes.."min and "..convert(getGlobalStorageValue(config.storage) - os.time()).seconds.."secs.")
    elseif checkPlayer() then
        return doPlayerSendCancel(cid, "There's player(s) doing the quest right now.")
    end
    local p = {}
    for _, pos in pairs(config.player) do
        local pid = getTopCreature(pos[1]).uid
        if isPlayer(pid) then
            p[#p + 1] = pid
            cidPos[pid] = _
        end
    end
    if #p < #config.player then
        return doPlayerSendCancel(cid, "There's some player(s) missing.")
    end
    for i = 1, #p do
        doTeleportThing(p[i], config.player[cidPos[p[i]]][2])
        doPlayerSendTextMessage(p[i], 27, "Good luck!")
    end
    for _, pos in pairs(config.monster.pos) do
        doCreateMonster(config.monster.name, pos)
    end
    timer(config.time * 60)
    addEvent(function()
        clearArea()
    end, config.time * 60 * 1000)
    return true
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Agora deu certo ,só tem um problema como o tempo ta em minuto ele conta de 1 a 0 ai no estante desaparece ,e o tempo que conta na alavanca é o interval tem como coloca pra ser o time?e pra colocar pra mostra mais de um local só adicionar 

 

timerPos = {x = 1127, y = 1152, z = 7}, 

                     {x = 1127, y = 1152, z = 7}, 

                     {x = 1127, y = 1152, z = 7}, 

E pra adicionar pra mostra o tempo em outro script acrecento oque?tem como falar

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

Ah sim, confundi com o interval e mencionei que o time também era em minutos...

time -> segundos

interval -> minutos

A alteração para o tempo restante aparecer em mais de um lugar é a seguinte:

Tabela:

   timerPos = {
        {x = x, y = y, z = z},        --Posições onde o tempo restante aparecerá.
        {x = x, y = y, z = z},
        {x = x, y = y, z = z},
        --etc
    },

Troque:

doSendAnimatedText(config.timerPos, convert(time).minutes..":"..convert(time).seconds, 215)
por:
    for i = 1, #config.timerPos do
        doSendAnimatedText(config.timerPos[i], convert(time).minutes..":"..convert(time).seconds, 215)
    end
Para mostrar o tempo em outros códigos, basta usar as funções:
function convert(time)
    return {minutes = math.floor(time / 60), seconds = time - math.floor(time / 60) * 60}
end
function timer(time, pos)
    if time < 0 then
        return true
    end
    doSendAnimatedText(pos, convert(time).minutes..":"..convert(time).seconds, 215)
    addEvent(timer, 1000, time - 1)
end
Uso:
timer(TEMPO, POSIÇÃO)
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Tentei editar mais deu erro :/ 

 

local config = {
storage = 9721,
time = 2, --Tempo para fazer a quest, em minutos.
interval = 0, --Tempo para poder usar a alavanca novamente, em minutos.
timerPos = {x = 1127, y = 1152, z = 7}, --Posição onde o tempo restante aparecerá.
monster = {
name = "Annihilon", --Nome do monstro.
pos = {
{x = 1121, y = 1151, z = 8}, --Posições onde ele vai nascer.
{x = 1121, y = 1153, z = 8},
{x = 1121, y = 1155, z = 8},
{x = 1129, y = 1151, z = 8},
{x = 1129, y = 1153, z = 8},
{x = 1129, y = 1155, z = 8},
},
},
player = {
{{x = 1126, y = 1152, z = 7}, {x = 1127, y = 1153, z = 8}}, --{{posição onde o player deve ficar}, {para onde será teleportado}},
{{x = 1125, y = 1152, z = 7}, {x = 1126, y = 1153, z = 8}},
{{x = 1124, y = 1152, z = 7}, {x = 1125, y = 1153, z = 8}},
{{x = 1123, y = 1152, z = 7}, {x = 1124, y = 1153, z = 8}},
{{x = 1122, y = 1152, z = 7}, {x = 1123, y = 1153, z = 8}},
},
area = {{x = 1121, y = 1150, z = 8}, {x = 1129, y = 1156, z = 8}}, --{{posição superior esquerda da área}, {posição inferior direita da área}},
}
local cidPos = {}
function clearArea()
for x = config.area[1].x, config.area[2].x do
for y = config.area[1].y, config.area[2].y do
local pos = {x = x, y = y, z = config.area[1].z}
local pid = getTopCreature(pos).uid
if pid > 0 then
if isPlayer(pid) then
doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_RED, "Você não conseguiu completar a Quest.")
else
doRemoveCreature(pid)
end
end
end
end
setGlobalStorageValue(config.storage, os.time() + config.interval * 60)
end
function checkPlayer()
for x = config.area[1].x, config.area[2].x do
for y = config.area[1].y, config.area[2].y do
local pos = {x = x, y = y, z = config.area[1].z}
local pid = getTopCreature(pos).uid
if isPlayer(pid) then
return true
end
end
end
return false
end
function convert(time)
return {minutes = math.floor(time / 60), seconds = time - math.floor(time / 60) * 60}
end
function timer(time)
if time < 0 or not checkPlayer() then
return true
end
doSendAnimatedText(config.timerPos, convert(time).minutes..":"..convert(time).seconds, 215)
addEvent(timer, 1000, time - 1)
end
function onUse(cid)
if getGlobalStorageValue(config.storage) > os.time() then
return doPlayerSendCancel(cid, "Wait "..convert(getGlobalStorageValue(config.storage) - os.time()).minutes.."min and "..convert(getGlobalStorageValue(config.storage) - os.time()).seconds.."secs.")
elseif checkPlayer() then
return doPlayerSendCancel(cid, "Tem Player fazendo a Quest,Aguarde!.")
end
local p = {}
for _, pos in pairs(config.player) do
local pid = getTopCreature(pos[1]).uid
if isPlayer(pid) then
p[#p + 1] = pid
cidPos[pid] = _
end
end
if #p < #config.player then
return doPlayerSendCancel(cid, "Não tem 5 Player necessarios.")
end
for i = 1, #p do
doTeleportThing(p, config.player[cidPos[p]][2])
doPlayerSendTextMessage(p, 27, "Boa sorte!")
end
for _, pos in pairs(config.monster.pos) do
doCreateMonster(config.monster.name, pos)
end
timer(config.time)
addEvent(function()
clearArea()
end, config.time * 60 * 1000)
return true
end

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