Jump to content

Normal Script Inteligente de Invasão para Evento


Go to solution Solved by Dwarfer,

Recommended Posts

O que script precisa fazer?

 

Avisar com antecedência, 5 minutos antes da invasão que ocorrera o mesmo.

 

[BOSS EVENT XP] - O evento de invasão começa em 5 minutos, se direcione para sala de Eventos.

 

Nesse tempo, aparece um teleport no local X (Sala de Eventos), com uma destinação X, e exibe uma mensagem.

 

[BOSS EVENT XP] - O Teleport permanecera aberto até o Boss aparecer, depois, ele ira desaparecer.

 

Depois desses 5 minutos da primeira mensagem, o boss nasce, fecha o teleport.

 

Depois do Boss morrer, aparece um teleport  com time de 30 segs que redireciona para outro local, onde vai ter a sala de recompensa (vou usar outro script).

 

Aqueles que não entrarem no teleport, automaticamente tomam kick pro templo, e o evento acaba.

 

 

O Script precisa ser configuravel, digo, assim:

 

days = {

["Monday"] = {

["18:31"] = {nome = "Uchiha Madara", pos = {fromPosition = {x=1022, y=1039, z=7}

 

 

Link to post
Share on other sites

  • Moderator
  • Solution

Segue o mod:

 

Spoiler

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}},
tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}},
msg_time = true,
tp_goreward = {x = 1, y = 1, z = 1}, 
removetp_time = {5, "min"},

days = {
[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Wednesday", "15:00"}] = {name = "Dwarf Soldier", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Friday", "12:32"}] = {name = "Dwarf Guard", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Monday", "20:55"}] = {name = "Dwarf Geomancer", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)

if isHour( os.date("%A"), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
    if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".", MESSAGE_EVENT_ADVANCE)
    end
    doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, t.tp_goboss.goTo, t.tp_goboss.create_pos)
end

if isHour(os.date("%A"), os.date("%X"):sub(1,5)) then
    local m = getTable(os.date("%A"),os.date("%X"):sub(1,5))
    doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end]]></event>
</mod>

 

 

 

A configuração é autoexplicativa, mesmo assim, para que não restem dúvidas:

 

Spoiler

t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}}, -- canto superior esquerdo, canto inferior direito da área de boss

tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}}, 

-- time_before: quanto tempo antes do horário o teleporte da área de eventos será criado 
-- create_pos: a posição na qual o teleporte será criado
-- goTo: posição para qual o teleporte levará

msg_time = true, -- true vai mandar a mensagem quando o teleporte for criado, false não

tp_goreward = {x = 1, y = 1, z = 1},  -- posição para qual o teleporte do boss levará

removetp_time = {5, "min"}, -- tempo para remover o teleporte do boss

[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},

--- create_pos: posição na qual o boss será criado
--- remove_time: true caso queira remover o boss, false se não, {tempo para remover o boss}

 

 

 

Adicione no arquivo do boss que será criado na boss area, antes de </monster>:

 

 <script>
 <event name = "InvasionBossDeath"/>
 </script>

 

Lembrando que o evento só será executado caso o boss esteja dentro da boss area. 

Contato:

  • Email: dwarfer@sapo.pt
  • Discord: Dwarfer#2715

 

Link to post
Share on other sites

10 horas atrás, Dwarfer disse:

Segue o mod:

 

  Ocultar conteúdo


<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}},
tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}},
msg_time = true,
tp_goreward = {x = 1, y = 1, z = 1}, 
removetp_time = {5, "min"},

days = {
[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Wednesday", "15:00"}] = {name = "Dwarf Soldier", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Friday", "12:32"}] = {name = "Dwarf Guard", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Monday", "20:55"}] = {name = "Dwarf Geomancer", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)

if isHour( os.date("%A"), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
    if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".", MESSAGE_EVENT_ADVANCE)
    end
    doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, t.tp_goboss.goTo, t.tp_goboss.create_pos)
end

if isHour(os.date("%A"), os.date("%X"):sub(1,5)) then
    local m = getTable(os.date("%A"),os.date("%X"):sub(1,5))
    doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end]]></event>
</mod>

 

 

 

A configuração é autoexplicativa, mesmo assim, para que não restem dúvidas:

 

  Ocultar conteúdo


t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}}, -- canto superior esquerdo, canto inferior direito da área de boss

tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}}, 

-- time_before: quanto tempo antes do horário o teleporte da área de eventos será criado 
-- create_pos: a posição na qual o teleporte será criado
-- goTo: posição para qual o teleporte levará

msg_time = true, -- true vai mandar a mensagem quando o teleporte for criado, false não

tp_goreward = {x = 1, y = 1, z = 1},  -- posição para qual o teleporte do boss levará

removetp_time = {5, "min"}, -- tempo para remover o teleporte do boss

[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},

--- create_pos: posição na qual o boss será criado
--- remove_time: true caso queira remover o boss, false se não, {tempo para remover o boss}

 

 

 

Adicione no arquivo do boss que será criado na boss area, antes de </monster>:

 


 <script>
 <event name = "InvasionBossDeath"/>
 </script>

 

Lembrando que o evento só será executado caso o boss esteja dentro da boss area. 

 

Caralho, perfeito! OBRIGADO <3 <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3

Link to post
Share on other sites

  • 2 weeks later...
Em 02/09/2017 em 22:01, Dwarfer disse:

Segue o mod:

 

  Ocultar conteúdo


<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}},
tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}},
msg_time = true,
tp_goreward = {x = 1, y = 1, z = 1}, 
removetp_time = {5, "min"},

days = {
[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Wednesday", "15:00"}] = {name = "Dwarf Soldier", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Friday", "12:32"}] = {name = "Dwarf Guard", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Monday", "20:55"}] = {name = "Dwarf Geomancer", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)

if isHour( os.date("%A"), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
    if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".", MESSAGE_EVENT_ADVANCE)
    end
    doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, t.tp_goboss.goTo, t.tp_goboss.create_pos)
end

if isHour(os.date("%A"), os.date("%X"):sub(1,5)) then
    local m = getTable(os.date("%A"),os.date("%X"):sub(1,5))
    doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end]]></event>
</mod>

 

 

 

A configuração é autoexplicativa, mesmo assim, para que não restem dúvidas:

 

  Mostrar conteúdo oculto


t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}}, -- canto superior esquerdo, canto inferior direito da área de boss

tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}}, 

-- time_before: quanto tempo antes do horário o teleporte da área de eventos será criado 
-- create_pos: a posição na qual o teleporte será criado
-- goTo: posição para qual o teleporte levará

msg_time = true, -- true vai mandar a mensagem quando o teleporte for criado, false não

tp_goreward = {x = 1, y = 1, z = 1},  -- posição para qual o teleporte do boss levará

removetp_time = {5, "min"}, -- tempo para remover o teleporte do boss

[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},

--- create_pos: posição na qual o boss será criado
--- remove_time: true caso queira remover o boss, false se não, {tempo para remover o boss}

 

 

 

Adicione no arquivo do boss que será criado na boss area, antes de </monster>:

 


 <script>
 <event name = "InvasionBossDeath"/>
 </script>

 

Lembrando que o evento só será executado caso o boss esteja dentro da boss area. 

 

 

Aqui com vários horários o script não ativa, mas quando coloco 1, ele ativa, e da erro.

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,

boss_area = {{x=2740,y=1831,z=7}, {x=2802,y=1872,z=7}},
tp_goboss = {time_before = {5, "min"}, create_pos = {x = 2113, y = 1678, z = 7}, goTo = {x = 2778, y = 1893, z = 6}},
msg_time = true,
tp_goreward = {x = 2846, y = 1858, z = 6}, 
removetp_time = {5, "min"},

days = {
[{"Monday", "06:15","12:15","18:15","22:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Tuesday", "06:15","12:15","18:15","22:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Wednesday", "06:15","12:15","18:15","22:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Thursday", "06:15","12:15","18:15","22:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Friday", "06:15","12:15","18:15","22:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Saturday", "06:15","12:15","18:15","22:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Sunday", "13:57"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)

if isHour( os.date("%A"), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
    if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this roshamuul land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".", MESSAGE_EVENT_ADVANCE)
    end
    doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, t.tp_goboss.goTo, t.tp_goboss.create_pos)
end

if isHour(os.date("%A"), os.date("%X"):sub(1,5)) then
    local m = getTable(os.date("%A"),os.date("%X"):sub(1,5))
    doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end]]></event>
</mod>

 

 

 

Sem título.png

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link to post
Share on other sites

  • Moderator

Você edita o mod a seu gosto sem saber o que tava fazendo e quer que funcione? Aí fica difícil einh cara.

Pra adicionar outros horários é só colocar na outra linha:

 

Spoiler

[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Tuesday", "15:30"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Tuesday", "20:50"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},

 

 

Contato:

  • Email: dwarfer@sapo.pt
  • Discord: Dwarfer#2715

 

Link to post
Share on other sites

27 minutos atrás, Dwarfer disse:

Você edita o mod a seu gosto sem saber o que tava fazendo e quer que funcione? Aí fica difícil einh cara.

Pra adicionar outros horários é só colocar na outra linha:

 

  Mostrar conteúdo oculto


[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Tuesday", "15:30"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Tuesday", "20:50"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},

 

 

 

Mesmo erro:

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,

boss_area = {{x=2740,y=1831,z=7}, {x=2802,y=1872,z=7}},
tp_goboss = {time_before = {5, "min"}, create_pos = {x = 2113, y = 1678, z = 7}, goTo = {x = 2778, y = 1893, z = 6}},
msg_time = true,
tp_goreward = {x = 2846, y = 1858, z = 6}, 
removetp_time = {5, "min"},

days = {
[{"Monday", "06:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Monday", "12:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Monday", "20:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},

[{"Tuesday", "06:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Tuesday", "12:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Tuesday", "20:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},

[{"Wednesday", "06:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Wednesday", "12:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Wednesday", "20:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},

[{"Thursday", "06:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Thursday", "12:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Thursday", "20:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},

[{"Friday", "06:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Friday", "12:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Friday", "20:15"}] = {name = "Ferumbras", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},

[{"Saturday", "06:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Saturday", "12:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Saturday", "20:15"}] = {name = "Phrodomo", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},

[{"Sunday", "14:42"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Sunday", "12:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}},
[{"Sunday", "20:15"}] = {name = "Devovorga Imune", create_pos = {x = 2777, y = 1854, z = 7}, remove_time = {true, {45, "min"}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)

if isHour( os.date("%A"), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
    if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this roshamuul land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".", MESSAGE_EVENT_ADVANCE)
    end
    doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, t.tp_goboss.goTo, t.tp_goboss.create_pos)
end

if isHour(os.date("%A"), os.date("%X"):sub(1,5)) then
    local m = getTable(os.date("%A"),os.date("%X"):sub(1,5))
    doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end]]></event>
</mod>

 

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link to post
Share on other sites

  • Moderator

O que não funciona? Vi ali que apareceu a mensagem pro servidor corretamente, se você deu uma olhada no tópico, funciona com um monstro que cria um teleporte e depois de um tempo o teleporte é removido. Esse mod já foi testado por mim e acredito que pelo cara que fez o pedido também, como ele não acusou nenhum erro, funcionou para ele também. Dê uma olhada cuidadosa se você editou as posições corretamente e se adicionou o que eu coloquei ali no arquivo do monstro. 

Contato:

  • Email: dwarfer@sapo.pt
  • Discord: Dwarfer#2715

 

Link to post
Share on other sites

10 minutos atrás, Dwarfer disse:

O que não funciona? Vi ali que apareceu a mensagem pro servidor corretamente, se você deu uma olhada no tópico, funciona com um monstro que cria um teleporte e depois de um tempo o teleporte é removido. Esse mod já foi testado por mim e acredito que pelo cara que fez o pedido também, como ele não acusou nenhum erro, funcionou para ele também. Dê uma olhada cuidadosa se você editou as posições corretamente e se adicionou o que eu coloquei ali no arquivo do monstro. 

 

O teleport  que leva ate a sala do boss não aparece, eu editei o mesmo que você postou la no inicio, porém só isso, e da esse erro.

Um server é diferente do outro, libs, database, etc.. pode ser que seja isso, enfim, vou analisar de novo se eu que fiz algo errado

59 minutos atrás, Dwarfer disse:

O que não funciona? Vi ali que apareceu a mensagem pro servidor corretamente, se você deu uma olhada no tópico, funciona com um monstro que cria um teleporte e depois de um tempo o teleporte é removido. Esse mod já foi testado por mim e acredito que pelo cara que fez o pedido também, como ele não acusou nenhum erro, funcionou para ele também. Dê uma olhada cuidadosa se você editou as posições corretamente e se adicionou o que eu coloquei ali no arquivo do monstro. 

 

Desconsidere tudo que falei, erro meu aqui, consertei já.

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link to post
Share on other sites

  • 1 month later...
Em 17/09/2017 em 19:08, jNo disse:

 

O teleport  que leva ate a sala do boss não aparece, eu editei o mesmo que você postou la no inicio, porém só isso, e da esse erro.

Um server é diferente do outro, libs, database, etc.. pode ser que seja isso, enfim, vou analisar de novo se eu que fiz algo errado

 

Desconsidere tudo que falei, erro meu aqui, consertei já.

ai jNo se lembra como se arrumo o error que tava dando?

Link to post
Share on other sites

  • 3 weeks later...
  • 3 years later...
Em 02/09/2017 em 22:01, Dwarfer disse:

Segue o mod:

 

  Mostrar conteúdo oculto


<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}},
tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}},
msg_time = true,
tp_goreward = {x = 1, y = 1, z = 1}, 
removetp_time = {5, "min"},

days = {
[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},
[{"Wednesday", "15:00"}] = {name = "Dwarf Soldier", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Friday", "12:32"}] = {name = "Dwarf Guard", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}},
[{"Monday", "20:55"}] = {name = "Dwarf Geomancer", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {1, "hour"}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)

if isHour( os.date("%A"), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
    if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".", MESSAGE_EVENT_ADVANCE)
    end
    doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, t.tp_goboss.goTo, t.tp_goboss.create_pos)
end

if isHour(os.date("%A"), os.date("%X"):sub(1,5)) then
    local m = getTable(os.date("%A"),os.date("%X"):sub(1,5))
    doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end]]></event>
</mod>

 

 

 

A configuração é autoexplicativa, mesmo assim, para que não restem dúvidas:

 

  Ocultar conteúdo


t = {
tp_id = 1387,

boss_area = {{x=1,y=1,z=1}, {x=1,y=1,z=1}}, -- canto superior esquerdo, canto inferior direito da área de boss

tp_goboss = {time_before = {5, "min"}, create_pos = {x = 1, y = 1, z = 1}, goTo = {x = 1, y = 1, z = 1}}, 

-- time_before: quanto tempo antes do horário o teleporte da área de eventos será criado 
-- create_pos: a posição na qual o teleporte será criado
-- goTo: posição para qual o teleporte levará

msg_time = true, -- true vai mandar a mensagem quando o teleporte for criado, false não

tp_goreward = {x = 1, y = 1, z = 1},  -- posição para qual o teleporte do boss levará

removetp_time = {5, "min"}, -- tempo para remover o teleporte do boss

[{"Tuesday", "10:34"}] = {name = "Dwarf", create_pos = {x = 1, y = 1, z = 1}, remove_time = {true, {3, "min"}}},

--- create_pos: posição na qual o boss será criado
--- remove_time: true caso queira remover o boss, false se não, {tempo para remover o boss}

 

 

 

Adicione no arquivo do boss que será criado na boss area, antes de </monster>:

 


 <script>
 <event name = "InvasionBossDeath"/>
 </script>

 

Lembrando que o evento só será executado caso o boss esteja dentro da boss area. 

Como faço para o Boss aparecer no 1º  e 15º dia de cada mês?

Assinatura retirada pela direção!

Link to post
Share on other sites

@Shiuns blz. Já fiz algumas mudanças e conseguir avançar, porém eu não to conseguindo fazer com que a função OnDeath veja a boss_area na tabela t.days, por que a ação irá acontecer depois que o Boss morrer. Alguém ai me dá uma dica..

 

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Invasion Event" version="1.0" author="Dwarfer" contact="tibiaking.com" enabled="yes">
<config name="Inv_func"><![CDATA[
t = {
tp_id = 1387,
tp_goboss = {time_before = {60, "sec"}, create_pos = {x = 997, y = 1176, z = 7}},
msg_time = true,
tp_goreward = {x = 668, y = 1595, z = 6}, 
removetp_time = {120, "sec"},

days = {
[{13, "18:06"}] = {name = "Gaz'haragoth", create_pos = {x = 358, y = 996, z = 11}, to_arena = {x = 717, y = 985, z = 7}, remove_time = {true, {60, "sec"}}, boss_area = {{x = 709, y = 961, z = 4}, {x = 725, y = 975, z = 4}}},
[{13, "22:05"}] = {name = "Ferumbras Boss", create_pos = {x = 717, y = 963, z = 4}, to_arena = {x = 717, y = 985, z = 7}, remove_time = {true, {60, "sec"}}, boss_area = {{x = 709, y = 961, z = 4}, {x = 725, y = 975, z = 4}}},
[{16, "18:06"}] = {name = "Gaz'haragoth", create_pos = {x = 358, y = 996, z = 11}, to_arena = {x = 717, y = 985, z = 7}, remove_time = {true, {60, "sec"}}, boss_area = {{x = 709, y = 961, z = 4}, {x = 725, y = 975, z = 4}}}
}}

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return "Error: Bad declaration in mathtime function."
end

function isHour(a, b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return true
end
end
return false
end

function getTable(a,b)
for i, k in pairs(t.days) do
if i[1] == a and i[2] == b then
return k
end
end
end

function doRemoveMonster(uid)
if isMonster(uid) then
doBroadcastMessage(getCreatureName(uid) .. " returned to its covil stronger than before!", MESSAGE_EVENT_ADVANCE)
doRemoveCreature(uid)
end
end

function getPlayersInArea(fromPos, toPos)
local players = {}
for _, pid in ipairs(getPlayersOnline()) do
if isInRange(getPlayerPosition(pid), fromPos, toPos) then
table.insert(players, pid)
end
end
return players
end

function removeAll(tp_pos, area)
doRemoveItem(getTileItemById(tp_pos,t.tp_id).uid)
local p = getPlayersInArea(area[1], area[2]) 
if #p > 0 then
for i = 1, #p do
doTeleportThing(p[i], getTownTemplePosition(getPlayerTown(p[i])))
end
end
end]]></config>
<globalevent name="InvasionEvent" interval="60000" event="script"><![CDATA[
domodlib('Inv_func')
function onThink(interval, lastExecution)
if isHour(tonumber(os.date("%d")), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5)) then
local m1 = getTable(tonumber(os.date("%d")), os.date("%X", os.time() + mathtime(t.tp_goboss.time_before)):sub(1,5))
if t.msg_time then
        doBroadcastMessage("An evil soul seems to be coming to this land. Teleport appeared at Event Room! It will be there for " .. t.tp_goboss.time_before[1] .. " " .. t.tp_goboss.time_before[2] .. ".")
    end
	 doCleanTile(t.tp_goboss.create_pos)
    doCreateTeleport(t.tp_id, m1.to_arena, t.tp_goboss.create_pos)
end

if isHour(tonumber(os.date("%d")), os.date("%X"):sub(1,5)) then
local m = getTable(tonumber(os.date("%d")),os.date("%X"):sub(1,5))
   doRemoveItem(getTileItemById(t.tp_goboss.create_pos, t.tp_id).uid)
    local text = "It will be there for " .. m.remove_time[2][1] .. " " .. m.remove_time[2][2] .."!"
    doBroadcastMessage(m.name .. " appeared in the Boss Area. Kill it if you are able to! " .. (m.remove_time[1] == true and text or ""), MESSAGE_EVENT_ADVANCE)
    local monster = doSummonCreature(m.name, m.create_pos)
    if m.remove_time[1] then
        addEvent(doRemoveMonster, mathtime(m.remove_time[2])*1000, monster)
    end
end
return true
end]]></globalevent>
<event type="death" name="InvasionBossDeath" event="script"><![CDATA[
domodlib('Inv_func')
function onDeath(cid)
local p = getCreaturePosition(cid)
if isInRange(p, t.boss_area[1], t.boss_area[2]) then
    doCreatureSay(cid, "LOST NOW, BUT I WILL BACK HAHAHAHA! Teleport ends in " .. t.removetp_time[1] .." " .. t.removetp_time[2] .. ".", TALKTYPE_ORANGE_1)
    addEvent(function()
    doCleanTile(p)
    doSendMagicEffect(p, CONST_ME_TELEPORT)
    doCreateTeleport(t.tp_id, t.tp_goreward,p)
    end, 1)
    addEvent(removeAll,  mathtime(t.removetp_time)*1000, p, t.boss_area)
end
return true
end
]]></event>
</mod>

 

Assinatura retirada pela direção!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
       https://drive.google.com/file/d/0B2-sMQkWYzhGQXJuNHNRalJLMzA/view?usp=sharing

      Scan: Virus Total Scan
       
    • By Leohige
      Esse script é até bem simples, você adquire uma storage e ganha a permissão de entrar em uma sala especial através de um tile/portal para matar um Boss.
       
      Apenas uma pessoa por vez poderá entrar na sala.
      O jogador tem X minutos para matar o boss.
      A sala é aberta novamente em X minutos.
       
      Demonstrações
       
       
       
       
       
      Bom se você se você gostaria de implementar este script, você vai precisar criar uma área do seu gosto, posicionar um tile/teleport que desejar para o jogador poder entrar no local e outro para ele poder sair. O de tile/teleport de entrada precisará ter a actionid igual a 65535, e o de saida 65534. Após ter feito isso crie e modifique os arquivos abaixo.
       
      data/movements/scripts/boss.lua (configure as primeiras linhas a seu gosto)
       
       
      data/movements/movements.xml (se for usar 1 tile/teleport diferente para entrada e saída coloque duas linhas com os 2 ids)
       
       
      **Não se esqueça de configurar a areascan e areacenter, coloque a altura e largura minima e máxima da área onde o Boss estará, caso você não faça isso o Boss não será removido quando o local for fechado, e nem o player será expulso. 
       
      **Recomendo que coloque no logout por toda a sala do Boss, evitando assim que engraçadinhos tentem atrapalhar os outros jogadores.
    • By axebruno
      BOM DIA , BOA TARDE, BOA NOITE, 
      PRECISO DE AJUDA URGENTE, TENHO UM SERVIDOR 8.54 NÃO ESTÁ ONLINE NO MOMENTO POIS ESTÁ 8.54.
      PRECISO DE AJUDA PARA MUDAR ELE PARA 8.60, COMO CONSIGO FAZER ISSO?
      ALGUEM PODE ME AJUDAR? OBRIGADO!
    • By Cat
      Extensions Customizadas II - Walls
      Extensions Customizadas I - Grounds
      Extensions Customizadas III - Doodads (objetos montados)
       


       
      Sumário
      A. Escolha do item e arquivos que serão alterados.
      B. Edição do arquivo grounds.xml e adição da base para um novo brush.
      C. Explicação sobre o que modificar nas linhas adicionadas.
      D. Edição do arquivo borders.xml e adição da base para as bordas do brush anterior.
      E. Configuração dos Ids das bordas e do brush.
      F. Cadastramento do brush na paleta terrain, editando o arquivo tilesets.xml
       
       
       
      COMEÇAR
      (Dica: Utilize Notepad++)
       
       

       

       

       

       
      A.
      Tudo que está em azul nas imagens acima é onde você vai clicar e/ou editar. Recomendo backup. Cuidado para não modificar qualquer linha por acidente ou sem saber o que está fazendo, uma letra errada já é o suficiente pra dar erro na hora de abrir o mapa. Escolha o piso que você quer adicionar. Vou escolher o dark spikes para usar como exemplo, ok? (na imagem, ele já está pronto e adicionado na paleta)  
        
       
      B.
      Abra grounds.xml. Repare que o documento começa com <materials> e termina com </materials> Desça até o final do código. Antes do </materials> há algum item cadastrado, um </brush> Alguma coisa ... </brush>. Após o último brush, e antes do </materials>, cole o seguinte código:  
      <brush name="ITEMNOME" type="ground" server_lookid="ITEMID - ID PRA APARECER NA PALETA" z-order="NUMERO"> <item id="ID" chance="100"/> <item id="ID" chance="100"/> <item id="ID" chance="100"/> <item id="ID" chance="100"/> <border align="outer" id="NUMEROBORDA"/> </brush>  
      C.
      Server_lookid é pra por o ID da sprite que vai aparecer na paleta, pra identificar o atalho. Coloque o ID do ground principal caso tenha mais versões do mesmo. Em Z-order, se o brush X tiver z-order maior que brush Y, a borda de brush X vai sobrepor a do Y. Item Id e chances, adicione os grounds e mude o valor da chance para definir qual deles vai predominar caso houver vários, como por exemplo o grass, que tem diversas sprites diferentes. Se for apenas uma sprite, pode deixar uma linha. Border align, tem outer e inner. São para as duas finalidades apresentadas nas imagens abaixo.  
       

      (No inner dessa imagem, fora utilizado  <border align="inner" to="none" id="1"/>, que é padrão para vários brushs)
       
      O codigo do Dark Spikes ficará assim:
      <brush name="dark spikes" type="ground" server_lookid="12234" z-order="3200"> <item id="12234" chance="2500"/> <item id="12235" chance="2500"/> <item id="12236" chance="2500"/> <item id="12237" chance="2500"/> <border align="outer" id="155"/> </brush>  
       
      D.
      Revise o que você modificou e salve. Abra borders.xml. O esquema é o mesmo, desça até o final e depois de  </border> e antes de </materials>, adicione o código abaixo:    
      <border id="NUMEROBORDA"> -- NOME -- <borderitem edge="n" item="ID"/> <borderitem edge="e" item="ID"/> <borderitem edge="s" item="ID"/> <borderitem edge="w" item="ID"/> <borderitem edge="cnw" item="ID"/> <borderitem edge="cne" item="ID"/> <borderitem edge="csw" item="ID"/> <borderitem edge="cse" item="ID"/> <borderitem edge="dnw" item="ID"/> <borderitem edge="dne" item="ID"/> <borderitem edge="dsw" item="ID"/> <borderitem edge="dse" item="ID"/> </border>  
      E.
      O número que estiver em border id vai servir para ligar essass bordas ao brush criado anteriormente. Identifique o nome do brush a qual essa borda pertence para ficar fácil encontrar mais tarde ( -- exemplo -- ) Siga a tabela abaixo para configurar as bordas, conforme a posição delas:  

       
       
      O código das bordas do dark spikes ficará assim:
      <border id="155"> -- dark spikes border -- <borderitem edge="n" item="12255"/> <borderitem edge="e" item="12256"/> <borderitem edge="s" item="12254"/> <borderitem edge="w" item="12257"/> <borderitem edge="cnw" item="12264"/> <borderitem edge="cne" item="12265"/> <borderitem edge="csw" item="12263"/> <borderitem edge="cse" item="12262"/> <borderitem edge="dnw" item="12260"/> <borderitem edge="dne" item="12261"/> <borderitem edge="dsw" item="12259"/> <borderitem edge="dse" item="12258"/> </border>  
      F.
      Agora que o ground foi criado e as bordas configuradas, é preciso adicionar o atalho na paleta, para poder usá-lo. Abra tilesets.xml. Dê um ctrl + f e procure por: <tileset name="Nature"> em terrain. Ou no local que você preferir. Também pode colocar na ordem que quiser, reinicie o editor e teste.  
      Dúvidas? Comente.
       
       
       
       
       
       
       
       
       
       
    • By ossanes
      Galera, estou a mais de uma semana batendo cabeça e não consigo de jeito algum compilar as source que me mandaram pra uma distro win, lembrando q ela é a base otx. alguem pode me dar uma luz ?
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo