Ir para conteúdo
  • 0

Bloqueio de Itens e Talk em Sistema(Evento)


Thayna

Pergunta

Gostaria de pedir por gentileza pra alguém por o bloqueio nesses 2 itens e nessa talk pra os players não usarem quando estiverem no evento dentro da sala de espera:

Lib onde se encontra os dados da sala de espera:

DM_DATES = {"Sunday-11:42", "Tuesday-17:38"} -- Datas que irão ocorrer o evento, pode colocar quantas quiser, separadas por vírgula. Formato: "Dia-Hora:Minutos"

DM_TELEPORT = {x = 866, y = 288, z = 7, stackpos = 1} -- Posição que nasce o teleporte para irem pro evento, não mexa na stackpos.
DM_AREA = {{x = 567, y = 144, z = 7}, {x = 591, y = 158, z = 7}} -- Primeira posição é o canto superior esquerdo do evento e a segunda posição é o canto direito inferior. XYZ, no Z da primeira posição coloca o Z do primeiro andar e na segunda posição, o Z do ultimo andar.
DM_WAITAREA = {{x = 607, y = 102, z = 7}, {x = 620, y = 113, z = 7}} -- Mesma que o DM_AREA, só que da sala de espera
DM_WAITPOS = {x = 614, y = 107, z = 7} -- Posição da sala de espera.
DM_POSITION = {{x = 570, y = 148, z = 7}, {x = 578, y = 150, z = 7}, {x = 588, y = 155, z = 7}} -- Posições aonde o player pode aparecer na "arena", pode colocar quantas quiser, separadas por vírgula
DM_REWARD = {{5792, 1}, {7370, 1}} -- Prêmio que o 1º lugar recebe, o primeiro é o ItemID e o segundo a quantidade. (Padrão - 1kk)
DM_BONUS = {2157, 50} -- Prêmio de participação pra quem não ganhou, 50k.
DM_STARTPLAYERS = 3 -- Players necessários pra começar o evento, se não chegar nisso em 10 minutos, o evento é cancelado.
DM_TIMEMAX = 3 -- Tempo de duração em MINUTOS do evento.
DM_TIMESHOWKILLS = 1 -- Apartir quando iniciar o evento, a cada quantos minutos irá aparecer Broadcasts pra quem está dentro do evento, de quem está ganhando.
DM_TIMEWARNING = 1 -- Tempo em minutos para avisar quantos players faltam pra iniciar evento.
DM_TIMETOTALSTART = 1 -- Após completar as vagas na sala de espera, quanto tempo inicia.
DM_TIMECLOSEPORTAL = 3 -- Tempo para fechar o portal, ou seja, tempo máximo pros players entrarem.

-- // Favor não mexer daqui para baixo
DM_PREPARE = 201312031316
DM_PREPARE2 = 201312031317
DM_HOWMUCH = 201312031318
DM_KILLS = 201312031319
DM_TMPWINNER1 = 201312031320
DM_TMPWINNER2 = 201312031321
DM_RUNNING = 201312031322

function doDeathMatchOpen()

if getGlobalStorageValue(DM_PREPARE) ~= -1 then
return true
end

if getGlobalStorageValue(DM_RUNNING) ~= -1 then
return true
end

setGlobalStorageValue(DM_PREPARE, 1)
local tele = doCreateItem(1387, 1, DM_TELEPORT)
doItemSetAttribute(tele, "aid", 11379)
addEvent(doDeathMatchCancel, DM_TIMECLOSEPORTAL * 60 * 1000)
setGlobalStorageValue(DM_HOWMUCH, DM_STARTPLAYERS)
local function msg5()
if getGlobalStorageValue(DM_RUNNING) ~= -1 then
return true
end
if getGlobalStorageValue(DM_PREPARE) ~= -1 then
return true
end
doBroadcastMessage("[DeathMatch Event] Faltam apenas "..tostring(DM_TIMECLOSEPORTAL / 2).." minutos, estamos aguardando "..tostring(getGlobalStorageValue(DM_HOWMUCH)).." players.")
return true
end
addEvent(doDeathMatchWarning, DM_TIMEWARNING * 60 * 1000)
addEvent(msg5, (DM_TIMECLOSEPORTAL / 2) * 60 * 1000)
doBroadcastMessage("[DeathMatch Event] O evento irá se iniciar com "..tostring(getGlobalStorageValue(DM_HOWMUCH)).." players em "..tostring(DM_TIMECLOSEPORTAL).." minutos, corram para a sala de espera e aguardem...")
return true
end

function doDeathMatchCancel()

if getGlobalStorageValue(DM_RUNNING) ~= -1 then
return true
end

if #getDeathMatchPlayers() < DM_STARTPLAYERS then
for index, creature in ipairs(getDeathMatchPlayers()) do
setPlayerStorageValue(creature, DM_KILLS, -1)
doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature)))
end
doRemoveItem(getThingFromPos(DM_TELEPORT).uid, 1)
doBroadcastMessage("[DeathMatch Event] Não foi possível iniciar, faltando "..tostring(getGlobalStorageValue(DM_HOWMUCH)).." player(s).")
setGlobalStorageValue(DM_RUNNING, 1)
setGlobalStorageValue(DM_PREPARE2, 1)
addEvent(setGlobalStorageValue, 2 * 60 * 1000, DM_RUNNING, -1)
addEvent(setGlobalStorageValue, 2 * 60 * 1000, DM_PREPARE1, -1)
addEvent(setGlobalStorageValue, 2 * 60 * 1000, DM_PREPARE2, -1)
addEvent(setGlobalStorageValue, 2 * 60 * 1000, DM_HOWUCH, -1)
return true
end
return true
end

function doDeathMatchEnter(cid)

setGlobalStorageValue(DM_HOWMUCH, (getGlobalStorageValue(DM_HOWMUCH) - 1))
if getGlobalStorageValue(DM_HOWMUCH) < 1 then
doTeleportThing(cid, DM_WAITPOS)
doRemoveItem(getThingFromPos(DM_TELEPORT).uid, 1)
setGlobalStorageValue(DM_PREPARE2, 1)
doBroadcastMessage("[DeathMatch Event] Vagas completas, faltam apenas "..tostring(DM_TIMETOTALSTART).." minuto(s) para serem teleportados e a guerra se iniciara!.")
addEvent(doDeathMatchAttack, DM_TIMETOTALSTART * 60 * 1000)
return true
end

doTeleportThing(cid, DM_WAITPOS)
setPlayerStorageValue(cid, DM_KILLS, 0)
return true
end

function doDeathMatchAttack(cid)

if getGlobalStorageValue(DM_RUNNING) ~= -1 then
return true
end

for index, creature in ipairs(getDeathMatchPlayers()) do
setPlayerStorageValue(creature, DM_KILLS, 0)
doTeleportThing(creature, DM_POSITION[math.random(1, #DM_POSITION)])
end
doBroadcastMessage("[DeathMatch Event] A batalha iniciou com "..tostring(DM_STARTPLAYERS).." players, que vença o melhor!")
setGlobalStorageValue(DM_PREPARE, -1)
setGlobalStorageValue(DM_RUNNING, 1)
addEvent(doDeathMatchAutoMessage, DM_TIMESHOWKILLS * 60 * 1000)
addEvent(doDeathMatchFinish, DM_TIMEMAX * 60 * 1000)
return true
end

function doDeathMatchWarning()

if getGlobalStorageValue(DM_RUNNING) ~= -1 then
return true
end

if getGlobalStorageValue(DM_PREPARE2) ~= -1 then
return true
end

doBroadcastMessage("[DeathMatch Event] Venham participar! faltam "..tostring(getGlobalStorageValue(DM_HOWMUCH)).." vaga(s).")
return addEvent(doDeathMatchWarning, DM_TIMEWARNING * 60 * 1000)
end

function doDeathMatchFinish()
local winner = getPlayerByName(getDeathMatchWinner())

doBroadcastMessage("[DeathMatch Event] A batalha terminou, o vencedor foi: "..getDeathMatchWinner().." com "..getPlayerStorageValue(winner, DM_KILLS).." kills.")
setGlobalStorageValue(DM_HOWMUCH, -1)
setGlobalStorageValue(DM_PREPARE2, -1)
addEvent(setGlobalStorageValue, 2 * 60 * 1000, DM_RUNNING, -1)
setPlayerStorageValue(winner, DM_KILLS, -1)
for index, reward in ipairs(DM_REWARD) do
doPlayerAddItem(winner, reward[1], reward[2])
end
doPlayerAddItem(winner, DM_BONUS[1], DM_BONUS[2])
doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)))
local function doDeathMatchRewards()
for index, creature in ipairs(getDeathMatchPlayers()) do
doPlayerAddItem(creature, DM_BONUS[1], DM_BONUS[2])
setPlayerStorageValue(creature, DM_KILLS, -1)
doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature)))
end
return true
end

addEvent(doDeathMatchRewards, 2 * 1000)
setGlobalStorageValue(DM_TMPWINNER1, -1)
setGlobalStorageValue(DM_TMPWINNER2, -1)
return true
end

function doDeathMatchAutoMessage()

if getGlobalStorageValue(DM_RUNNING) ~= 1 then
return true
end

for index, creature in ipairs(getDeathMatchPlayers()) do
doPlayerSendTextMessage(creature, MESSAGE_EVENT_ADVANCE, "[DeathMatch Event] "..getDeathMatchWinner().." está vencendo com "..getPlayerStorageValue(getPlayerByName(getDeathMatchWinner()), DM_KILLS).." kills.")
end
return addEvent(doDeathMatchAutoMessage, DM_TIMESHOWKILLS * 60 * 1000)
end

function getDeathMatchWinner()
local rank = {}
for index, creature in ipairs(getDeathMatchPlayers()) do
if getGlobalStorageValue(DM_TMPWINNER1) == getCreatureName(creature) then
table.insert(rank, getCreatureName(creature))
end
end
return rank[1]
end

function doDeathMatchKill(cid, target)

setPlayerStorageValue(cid, DM_KILLS, (getPlayerStorageValue(cid, DM_KILLS) + 1))
if getGlobalStorageValue(DM_TMPWINNER2) < getPlayerStorageValue(cid, DM_KILLS) then
setGlobalStorageValue(DM_TMPWINNER1, getCreatureName(cid))
setGlobalStorageValue(DM_TMPWINNER2, getPlayerStorageValue(cid, DM_KILLS))
end
addEvent(doTeleportThing, 500, target, DM_POSITION[math.random(1, #DM_POSITION)])
doSendAnimatedText(getThingPos(target), "OWNED", math.random(1, 255))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "[DeathMatch Event] Você eliminou o jogador "..getCreatureName(target)..".")
doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_RED, "[DeathMatch Event] Você foi eliminado pelo jogador "..getCreatureName(cid)..".")
return true
end

function getDeathMatchPlayers()
local players = {}

for index, creature in ipairs(getPlayersOnline()) do
if (isInArea(getThingPos(creature), DM_AREA[1], DM_AREA[2])) or (isInArea(getThingPos(creature), DM_WAITAREA[1], DM_WAITAREA[2])) then
table.insert(players, creature)
end
end
return players or #players
end

 

 

Primeiro Item:

 

function onUse(cid, item, frompos, item2, topos)
pos = {x=549, y=14, z=7}
if getTileInfo(getThingPos(cid)).protection == false then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You can't remove your skull in this area.")
return false
elseif item.itemid == 8985 then
doPlayerSendCancel(cid,"Abra o bau para se tornar vip!")
doTeleportThing(cid,pos)
doRemoveItem(item.uid,1)
else
doPlayerSendCancel(cid,"Fail !")
end
return true
end

 

 

Segundo item:

 

function onUse(cid, item, frompos, item2, topos)
pos = {x=528, y=14, z=7}
if getTileInfo(getThingPos(cid)).protection == false then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Não é possivel usar nessa area.")
return false
elseif item.itemid == 8982 then
doPlayerSendCancel(cid,"Abra o bau para se tornar vip!")
doTeleportThing(cid,pos)
doRemoveItem(item.uid,1)
else
doPlayerSendCancel(cid,"Fail !")
end
return true
end

 

 

Talk:

 

--[[script By Vodkart]]--

function onSay(cid, words, param)

local config = {
pz = true, -- players precisam estar em protection zone para usar? (true or false)
battle = true, -- players deve estar sem battle (true or false)
custo = true, -- se os teleport irão custa (true or false)
need_level = true, -- se os teleport irão precisar de level (true or false)
premium = true -- se precisa ser premium account (true or false)
}

--[[ Config lugares]]--
local lugar = {
["depot"] = { -- nome do lugar
pos = {x=129, y=54, z=6},level = 5,price = 000},
["templo"] = { -- nome do lugar
pos = {x=160, y=54, z=7},level = 10, price = 000},
["arena"] = { -- nome do lugar
pos = {x=491, y=390, z=7},level = 15,price = 000},

}

--[[ Lista de Viagem (Não mexa) ]]--
if (param == "lista") then
local str = ""
str = str .. "lista de viagem :\n\n"
for name, pos in pairs(lugar) do
str = str..name.."\n"
end
str = str .. ""
doShowTextDialog(cid, 6579, str)
return TRUE
end


local a = lugar[param]
if not(a) then
doPlayerSendTextMessage(cid, 22, "desculpe,este lugar não existe")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
elseif config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.")
return TRUE
elseif config.premium == true and not isPremium(cid) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com premium account podem teleportar.")
return TRUE
elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.")
return TRUE
elseif config.need_level == true and getPlayerLevel(cid) < a.level then
doPlayerSendTextMessage(cid, 22, "Desculpe,Voce não tem level. voce precisa "..a.level.." level ou mais para ser teleportado.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
elseif config.custo == true and doPlayerRemoveMoney(cid, a.price) == FALSE then
doPlayerSendTextMessage(cid, 22, "Desculpe,voce nao tem dinheiro suficiente. Voce precisa "..a.price.." gp para ser teleportado.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return TRUE
end
doTeleportThing(cid, a.pos)
doSendMagicEffect(a.pos, CONST_ME_TELEPORT)
doPlayerSendTextMessage(cid, 22, "" .. getPlayerName(cid) .. " foi teleportado para: \n " .. param .. ".")
return TRUE
end

 

 

Tibia 8.60
Versão do distro Real Server 0.3..
Ajudou Ganhou Rep++

Editado por skynet2
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Pode me falar qual a posição da área onde não pode usar este comando e o item?

Ex: 1000,1000,7 ate 1010,1020,7

{{x = 607, y = 102, z = 7}, {x = 620, y = 113, z = 7}}

Podem Fechar o topico, ja conseguii!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...