VO
sistema

Battlefield Event!

Por Vodkart, 28 de ago. de 2012 em Mods, funções e outros

script
5.0 (1)
118
31.6k
gustavoMtekG
20 de novembro de 2012 às 17:52

? LOL

 

tenta usar assim no globalevents

 

function onThink(interval, lastExecution)
local _Lib_Battle_Days = {
	["Monday"] = {
		["16:00"] = {players = 30},
		["21:30"] = {players = 20}	
	},
	["Tuesday"] = {
		["17:02"] = {players = 8}	
	},
	["Thursday"] = {
		["11:26"] = {players = 4},
		["20:30"] = {players = 10}
	}
}
if _Lib_Battle_Days[os.date("%A")] then
local hours = tostring(os.date("%X")):sub(1, 5)	  
local tb = _Lib_Battle_Days[os.date("%A")][hours]
if tb and (tb.players % 2 == 0) then
local tp = doCreateItem(1387, 1, _Lib_Battle_Info.tpPos)
doItemSetAttribute(tp, "aid", 45000)
CheckEvent(_Lib_Battle_Info.limit_Time)
doBroadcastMessage("The event BattleField was opened and We are waiting "..tb.players.." Players! Team divided into "..((tb.players)/2).." VS "..((tb.players)/2))
setGlobalStorageValue(_Lib_Battle_Info.storage_count, tb.players)
return true
end
end
return true
end 

 

continuo com a mesma coisa

 

17:47 O campo de batalha foi aberto e estamos à espera 2 Players! Equipes divididas em 1 VS 1

17:47 Você se juntou à equipe Black Assassins!

17:47 Battlefield vai começar em 2 minutos, crie sua estratégia !

17:49 BattleField vai começar agora!

17:51 [battleField Information] Black Assassins 6 VS 8 Red Barbarians.

VodkartV
20 de novembro de 2012 às 18:16

essa parte na lib troca as storages

 

 

_Lib_Battle_Info = {
Reward = {2160,10},
TeamOne = {name = "Black Assassins", storage = 150220, pos = {x=613,y=802,z=7}},
TeamTwo = {name = "Red Barbarians",storage = 150221,pos = {x=631,y=801,z=7}},
storage_count = 185400,
tpPos = {x=158, y=57, z=7},
limit_Time = 10 -- em minutos
}

gustavoMtekG
20 de novembro de 2012 às 18:36

essa parte na lib troca as storages

 

 

_Lib_Battle_Info = {
Reward = {2160,10},
TeamOne = {name = "Black Assassins", storage = 150220, pos = {x=613,y=802,z=7}},
TeamTwo = {name = "Red Barbarians",storage = 150221,pos = {x=631,y=801,z=7}},
storage_count = 185400,
tpPos = {x=158, y=57, z=7},
limit_Time = 10 -- em minutos
}

 

 

agr sim :D vlw

1 mês depois...
01 de dezembro de 2012 às 03:41

No meu funcionou mais quando os playrs entra da debug e o tibia cliente deles fechão, mais já com o god consigo passar ???? explica como resolvoo ??

1 mês depois...
juliok80J
19 de janeiro de 2013 às 12:25

Eu adicionei tudo certinho... coloquei as coordenadas de onde os players da Assassin e Barbarian team vão aparecer quando entrar no teleport, porém não estão sendo teleportados.

 

O Teleport aparece no templo e quem tenta entrar nele não consegue, fica como se o teleport estivesse sem coordenadas.

 

Alguém me ajuda PLS!

 

BattleLib.lua

 

 

_Lib_Battle_Info = {
Reward = {2160,10},
TeamOne = {name="Black Assassins", storage=140120, pos={x=294,y=93,z=6}},
TeamTwo = {name="Red Barbarians", storage=140121, pos={x=309,y=93,z=6}},
storage_count = 180400,
tpPos = {x=155, y=54, z=7},
limit_Time = 4 -- em minutos
}

function resetBattle()
return setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) and setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0)
end

function OpenWallBattle()
local B = {
{3517,{x=303, y=107, z=6, stackpos = 1}},
{3517,{x=303, y=108, z=6, stackpos = 1}},
{3517,{x=303, y=109, z=6, stackpos = 1}},
{3517,{x=303, y=110, z=6, stackpos = 1}}
}
for i = 1, #B do
if getTileItemById(B[i][2], B[i][1]).uid == 0 then
doCreateItem(B[i][1], 1, B[i][2])
else
doRemoveItem(getThingfromPos(B[i][2]).uid,1)
end
end
end

function doBroadCastBattle(type,msg)
local players = {}
for _, cid in pairs(getPlayersOnline()) do
if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 or getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 then
table.insert(players, cid)
end
end
for i = 1, #players do
doPlayerSendTextMessage(players[i],type,msg)
end
end

function removeBattleTp()
local t = getTileItemById(_Lib_Battle_Info.tpPos, 1387).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(_Lib_Battle_Info.tpPos, CONST_ME_POFF)
end

function getWinnersBattle(storage)
local players,str = {},""
for _, cid in pairs(getPlayersOnline()) do
if getPlayerStorageValue(cid, storage) == 1 then
table.insert(players, cid)
end
end
str = str .. ""..#players.." Player"..(#players > 1 and "s" or "").." from team "..(getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." won the event battlefield, they received a ".._Lib_Battle_Info.Reward[2].." "..getItemNameById(_Lib_Battle_Info.Reward[1]).."!"
for i = 1, #players do
doPlayerAddItem(players[i], _Lib_Battle_Info.Reward[1], _Lib_Battle_Info.Reward[2])
doRemoveCondition(players[i], CONDITION_OUTFIT)
doTeleportThing(players[i], getTownTemplePosition(getPlayerTown(players[i])))
setPlayerStorageValue(players[i], storage, -1)
end
resetBattle()
OpenWallBattle()
return doBroadcastMessage(str)
end

function CheckEvent(delay)
if delay > 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then
doBroadcastMessage("[battleField Event] We are waiting "..getGlobalStorageValue(_Lib_Battle_Info.storage_count).." players to Battlefield starts")
elseif delay == 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then
local players = {}
for _, cid in pairs(getPlayersOnline()) do
if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 or getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 then
table.insert(players, cid)
end
end
for i = 1, #players do
doRemoveCondition(players[i], CONDITION_OUTFIT)
doTeleportThing(players[i], getTownTemplePosition(getPlayerTown(players[i])))
setPlayerStorageValue(players[i], getPlayerStorageValue(players[i], _Lib_Battle_Info.TeamOne.storage) == 1 and _Lib_Battle_Info.TeamOne.storage or _Lib_Battle_Info.TeamTwo.storage, -1)
end
doBroadcastMessage("The event cannot be started because not had enough players.")
setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0)
resetBattle()
removeBattleTp()
end
addEvent(CheckEvent, 60000, delay-1)
end

 

Editado Janeiro 19 por juliok80

RaiatR
25 de janeiro de 2013 às 18:23

Eu estou com o msm problema o teleporte aparece mas não estão sendo teleportados.

Quem ajuda rep+

 

 

_Lib_Battle_Info = {

Reward = {2160,10},

TeamOne = {name = "Akatsuki", storage = 140120, pos = {x=794,y=706,z=7}},

TeamTwo = {name = "Naçaos",storage = 140121,pos = {x=795,y=775,z=7}},

storage_count = 180400,

tpPos = {x=1000, y=925, z=7},

limit_Time = 10 -- em minutos

}

function resetBattle()

return setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) and setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0)

end

function OpenWallBattle()

local B = {

{8476,{x=794, y=714, z=7, stackpos = 1}},

{8476,{x=793, y=714, z=7, stackpos = 1}},

{8476,{x=792, y=714, z=7, stackpos = 1}},

{8476,{x=791, y=714, z=7, stackpos = 1}},

{8476,{x=785, y=707, z=7, stackpos = 1}},

{8476,{x=785, y=706, z=7, stackpos = 1}},

{8476,{x=801, y=706, z=7, stackpos = 1}},

{8476,{x=801, y=705, z=7, stackpos = 1}},

{8476,{x=795, y=766, z=7, stackpos = 1}},

{8476,{x=794, y=766, z=7, stackpos = 1}},

{8476,{x=793, y=766, z=7, stackpos = 1}},

{8476,{x=786, y=773, z=7, stackpos = 1}},

{8476,{x=786, y=774, z=7, stackpos = 1}},

{8476,{x=802, y=773, z=7, stackpos = 1}},

{8476,{x=802, y=774, z=7, stackpos = 1}}

}

for i = 1, #B do

if getTileItemById(B[2], B[1]).uid == 0 then

doCreateItem(B[1], 1, B[2])

else

doRemoveItem(getThingfromPos(B[2]).uid,1)

end

end

end

function doBroadCastBattle(type,msg)

local players = {}

for _, cid in pairs(getPlayersOnline()) do

if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 or getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 then

table.insert(players, cid)

end

end

for i = 1, #players do

doPlayerSendTextMessage(players,type,msg)

end

end

function removeBattleTp()

local t = getTileItemById(_Lib_Battle_Info.tpPos, 1387).uid

return t > 0 and doRemoveItem(t) and doSendMagicEffect(_Lib_Battle_Info.tpPos, CONST_ME_POFF)

end

function getWinnersBattle(storage)

local players,str = {},""

for _, cid in pairs(getPlayersOnline()) do

if getPlayerStorageValue(cid, storage) == 1 then

table.insert(players, cid)

end

end

str = str .. ""..#players.." Player"..(#players > 1 and "s" or "").." from team "..(getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." won the event battlefield, they received a ".._Lib_Battle_Info.Reward[2].." "..getItemNameById(_Lib_Battle_Info.Reward[1]).."!"

for i = 1, #players do

doPlayerAddItem(players, _Lib_Battle_Info.Reward[1], _Lib_Battle_Info.Reward[2])

doRemoveCondition(players, CONDITION_OUTFIT)

doTeleportThing(players, getTownTemplePosition(getPlayerTown(players)))

setPlayerStorageValue(players, storage, -1)

end

resetBattle()

OpenWallBattle()

return doBroadcastMessage(str)

end

function CheckEvent(delay)

if delay > 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then

doBroadcastMessage("[battleField Event] We are waiting "..getGlobalStorageValue(_Lib_Battle_Info.storage_count).." players to Battlefield starts")

elseif delay == 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then

local players = {}

for _, cid in pairs(getPlayersOnline()) do

if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 or getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 then

table.insert(players, cid)

end

end

for i = 1, #players do

doRemoveCondition(players, CONDITION_OUTFIT)

doTeleportThing(players, getTownTemplePosition(getPlayerTown(players)))

setPlayerStorageValue(players, getPlayerStorageValue(players, _Lib_Battle_Info.TeamOne.storage) == 1 and _Lib_Battle_Info.TeamOne.storage or _Lib_Battle_Info.TeamTwo.storage, -1)

end

doBroadcastMessage("The event cannot be started because not had enough players.")

setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0)

resetBattle()

removeBattleTp()

end

addEvent(CheckEvent, 60000, delay-1)

end

Editado Janeiro 25 por Raiat

oktober15O
26 de janeiro de 2013 às 05:05

Como faço pra somente level 150+ poder entrar no evento?

 

se possivel ficaria legal, colocar um level em cada dia marcado pra iniciar o evento

tipo no evento de quarta feira somente level 300+

no de domingo uma noobwar de somente até level 50

 

mais preciso de vdd de um level minimo pra poder entrar no evento, se nao level 8 entra e perde a graça

 

edit: otra coisa, o evento só inicia com o numero de players ja colocados la, teria como faze iniciar msm com menos players?

tipo ta 30 players 15x15, mais se entra só 8x8 ele inicia assim msm..

Editado Janeiro 26 por öKTöBëR

TibiaGameT
29 de janeiro de 2013 às 20:08

Vodkart, porquê o meu sistema não está entregando vários prémios que coloquei no reward, só entrega o primeiro prémio, no caso coloquei reward = {8931,1, 9994,1} fui colocando vários, mais só entrega o primeiro prémio no caso no exemplo que dei ali só entrega o 8931.

Se o evento só entrega 1 prémio, tem como você fazer pra ele entregar vários , assim não todos de uma vez, mais aleatório cada hora um prémio.

Estou usando scripts, globalevents, Ok.

Obrigado.

oktober15O
30 de janeiro de 2013 às 22:06

Vodkart, porquê o meu sistema não está entregando vários prémios que coloquei no reward, só entrega o primeiro prémio, no caso coloquei reward = {8931,1, 9994,1} fui colocando vários, mais só entrega o primeiro prémio no caso no exemplo que dei ali só entrega o 8931.

Se o evento só entrega 1 prémio, tem como você fazer pra ele entregar vários , assim não todos de uma vez, mais aleatório cada hora um prémio.

Estou usando scripts, globalevents, Ok.

Obrigado.

 

tava com a msm duvida que vc, intao fiz uma "gambiara" pra ter premiação variada e aleatoria

fiz uma surprice bag com os items de premiação, e puis ela como recompensa. intao o player recebe ela, da use e recebe um dos items que vc colocar na bag, randomicamente..

se nao souber como fazer a surprice bag, fale que eu posto ela aki

Editado Janeiro 30 por öKTöBëR

TibiaGameT
31 de janeiro de 2013 às 02:59

Vodkart, porquê o meu sistema não está entregando vários prémios que coloquei no reward, só entrega o primeiro prémio, no caso coloquei reward = {8931,1, 9994,1} fui colocando vários, mais só entrega o primeiro prémio no caso no exemplo que dei ali só entrega o 8931.

Se o evento só entrega 1 prémio, tem como você fazer pra ele entregar vários , assim não todos de uma vez, mais aleatório cada hora um prémio.

Estou usando scripts, globalevents, Ok.

Obrigado.

 

tava com a msm duvida que vc, intao fiz uma "gambiara" pra ter premiação variada e aleatoria

fiz uma surprice bag com os items de premiação, e puis ela como recompensa. intao o player recebe ela, da use e recebe um dos items que vc colocar na bag, randomicamente..

se nao souber como fazer a surprice bag, fale que eu posto ela aki

Faz favor, mande pra mim! agradeço.

oktober15O
31 de janeiro de 2013 às 23:32
local PRESENT_BLUE = {2160, 2160}

local PRESENT_RED = {2160, 2160}

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local count = 1

if(item.itemid == 6570) then

local randomChance = math.random(1, #PRESENT_BLUE)

if(randomChance == 1) then

count = 10

elseif(randomChance == 2) then

count = 3

end

doPlayerAddItem(cid, PRESENT_BLUE[randomChance], count)

elseif(item.itemid == 6571) then

local randomChance = math.random(1, #PRESENT_RED)

if randomChance > 0 and randomChance < 4 then

count = 10

end

doPlayerAddItem(cid, PRESENT_RED[randomChance], count)

end

 

doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS)

doRemoveItem(item.uid, 1)

return true

end

 

<action fromid="6570" toid="6571" event="script" value="NOMESCRIPT.lua"/>

 

Bom, lendo o script ja da pra entende como ele funciona, destaquei as partes pra vc mudar ao seu gosto..

matheusmluzM
03 de fevereiro de 2013 às 22:03

Eu nao consegui fazer, nao consegui entender o tutorial, teria email ou face pra nós trocarmos ideia?

2 meses depois...
DerlexyD
25 de abril de 2013 às 13:51

@VODKART: Tem como arrumar para a recompensa dar experiencia também? (Dinheiro/Item + Experiencia)...

1 mês depois...
XReMiXX
15 de maio de 2013 às 18:31

mt bom

3 semanas depois...
pedreroxxP
30 de maio de 2013 às 21:43

Vodkart, è possivel colocar um script que não de para usar utana vid? obrigado