Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá, passei um tempo procurando este script até que um amigo do TK disponibilizou (credito no fim do post)
Edit1: O evento funciona assim, o evento começa as 14:00:00 para inscrições realizando as inscrições você é levado para sala de espera (coloque no-logout e protection) onde você tera de esperar 5 minutos passado os 5 minutos todos na sala de espera serão teleportados para uma arena que você pode fazer facilmente e configurar conforme explicado na script --> apenas lembre de colocar o no-logout e pvp tool na arena.
(As 13:59:00 vai aparecer um broadcast dizendo que o Npc PvP irá aparecer em 1 minutos que você terá então 5 minutos para se inscrever com o custo de 10k (configurável na script do actions) a área onde o npc nasce é configurável, o npc sumirá após 6 minutos (1 minuto depois do inicio da matança)-) 
O ultimo vivo na arena terá de clicar na alavanca e será teleportado para o templo (coordenadas configuráveis) ganhando o devido premio do evento (configuravel na script do actions).
Vamos lá:

data/lib adicione um arquivo .lua e renomeie para Torneio.lua e coloque dentro

Spoiler

torneio = {
    awardTournament = 2160,---- Premio inutilizado edite na action.
    awardAmount = 1500,---- quantia do Premio inutilizado edite na action.
    playerTemple = {x = 1096, y = 1009, z = 7}, ---- posiçao do Templo
    tournamentFight = {x = 909, y = 978, z = 7}, ----- Area (Mapa) do torneio
    area = {fromx = 899, fromy = 968, fromz = 7, tox = 919, toy = 989, toz= 7}, ---- primeiro X Y Z é da posiçao canto superior esquerdo do mapa de evento pvp, o segundo X Y Z é da posição do canto inferior direito do mapa do evento pvp
    waitPlace = {x = 992, y = 998, z = 7}, ---- Sala de Espera (Coloque No-logout e Protection na area)
    waitArea = {fromx = 987, fromy = 993, fromz = 7, tox = 997, toy = 1003, toz= 7},---- primeiro X Y Z é da posiçao canto superior esquerdo da area de espera, o segundo X Y Z é da posiçao do canto inferior  direito da area de espera
    startHour = "14:00:00", ---- Hora que Inicia as Inscriçoes do Torneio
    endHour = "14:05:00", ----- Hora que Começa a Batalha
    price = 10000, ------ Custo para se inscrever no torneio
}

function getPlayersInArea(area)
    
    local players = {}
    
    for x = area.fromx,area.tox do
        for y = area.fromy,area.toy do
            for z = area.fromz,area.toz do
                
                local m = getTopCreature({x=x, y=y, z=z}).uid
                
                if m ~= 0 and isPlayer(m) then
                    table.insert(players, m)
                end
            end
        end
    end
    return players
end

 

 

vai em Globalevents adicione Torneio.lua e dentro dele coloque

Spoiler

function onTimer()
    
    if #getPlayersInArea(torneio.area) > 1 then
    doBroadcastMessage("[Torneio] O torneio desta vez não teve vencedor, tentar na próxima vez!") return true end 
    
    for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) do
        doTeleportThing(pid, torneio.tournamentFight)
        
        doPlayerSendTextMessage(pid, 21, "[Torneio] O torneio começou, e que vença o melhor ! HEHEHEHE.")        -- mensagem de inicio do evento
    end
    return true
end

 

 

(se sua versão é em millisegundos então mude para)

Spoiler

function onTime()  
    if #getPlayersInArea(torneio.area) > 1 then
    doBroadcastMessage("[Torneio] O torneio desta vez não teve vencedor, tentar na próxima vez!") return true end 
    
    for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) do
        doTeleportThing(pid, torneio.tournamentFight)
        
        doPlayerSendTextMessage(pid, 21, "[Torneio] O torneio começou, e que vença o melhor ! HEHEHEHE.")        -- mensagem de inicio do evento
    end
    return true
end

 

 

Adicione a tag em globalevents.xml

Spoiler

<globalevent name="TournamentStart" time="14:05" event="script" value="Torneio.lua"/>

 

se seu servidor for em millisegundos:

Spoiler

<globalevent name="TournamentStart" time="14:05:00" event="script" value="Torneio.lua"/>

 

vai em Actions adicione Torneio.lua e dentro:

Atenção: Voce faz uma area do Torneio no Map editor e Coloca PVP-Zone e no-logout no Mapa editor e coloca uma Alavanca com a uniqueid "18279" e actionid "18279" antes verifique se não tem a action e unique id no seu servidor com o mesmo numero (18279) [ a alavanca serve para quando o ultimo player vivo no evento volte para o templo e receba os premios]

Spoiler

function onUse(cid, item)
    
    if #getPlayersInArea(torneio.area) > 1 then
        doPlayerSendTextMessage(cid, 20 ,"Somente o ultimo sobrevivente podera usar essa alavanca") 
        return true 
    end
    
    doTeleportThing(cid, torneio.playerTemple)
    setPlayerStorageValue(cid,130131,getPlayerStorageValue(cid,130131)+1)
    doPlayerSendTextMessage(cid, 21, "[Evento PvP] Jovem Shinobi Parabéns, voce ganhou o evento PvP e recebeu o devido premio.")
    local bag = doPlayerAddItem(cid, 1999, 1) -- 1999 e o id da bp que vai vir os premios dentro
    doAddContainerItem(bag, 2160, 1500) -- 2160 id do premio, 1500 e a quantia
    doAddContainerItem(bag, 824, 300) -- 824 id do premio, 300 e a quantia
    return true
end

 

 

Em Actions.xml adcione a tag 

Spoiler

<action uniqueid="18279" event="script" value="Torneio.lua"/>

 

Agora o NPC TORNEIO em  data/NPC adicione um xml, renomeie para o nome torneio.xml (pode mudar mais tarde, se não souber oque esta fazendo não mexa)

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Torneio PvP" script="Torneio.lua" walkinterval="2000" floorchange="0">
<health now="150" max="150"/>
<look type="664" head="20" body="100" legs="50" feet="99" corpse="2212"/>

<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. Voce Gostaria de Participar de Um torneio? Digite [torneio/enter] !."/>
</parameters>
</npc>

 

em NPC/SCRIPTS/torneio.lua

Spoiler

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then
return false
end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then



selfSay('Você quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)
talkState[talkUser] = 2


elseif talkState[talkUser] == 2 then

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then

if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
selfSay('As inscrições para o torneio terminaram, volte Amanha AS 14:00 para nova inscriçao!.', cid)
return true
end

if doPlayerRemoveMoney(cid, torneio.price) then
doTeleportThing(cid, torneio.waitPlace)
setPlayerStorageValue(cid,130130,1)
doPlayerSendTextMessage(cid, 21, "Bem-vindo, esta é a sala de espera, você espera aqui enquanto o torneio não começa. hora de início: {"..torneio.endHour.."}.")
else

selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)
end
else
selfSay('Voce nao quer participar do Torneio? Vem no Proximo Dia / Todos os Dias as [11:35]!', cid)
talkState[talkUser] = 0
end
end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

LEIA:

Spoiler

Areas em AZUL é onde voce PODE MUDAR

Areas em VERMELHO é onde voce DEVE MUDAR

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

aqui um script que achei no TK que você pode usar no seu evento, ele faz o npc aparecer 1 minuto depois do horario marcado na posição que você quiser, com um broadcast dizendo que ele esta chegando. (é bom para dizer que o evento esta começando)
vá em globalevents.xml e adicione a tag
Dica: Coloque 1 minuto antes do inicio do evento (configuravel no lib/torneio.lua) no meu caso seria as 12:00:00 hrs (meio dia)

Spoiler

<globalevent name="npc" time="11:59:00" event="script" value="npcpvp.lua"/>

 

se o seu servidor não for millisegundos use

Spoiler

<globalevent name="npc" time="11:59" event="script" value="npcpvp.lua"/>

 

va em globalevents/scripts e crie um arquivo .lua com o nome de npcpvp

Spoiler

function executeNpcPvp()
local pos = {x = 1010, y = 889, z = 7} -- Local onde aparece o npc
local npc = doCreateNpc("Torneio", pos ) -- Altere o (Torneio) pelo nome da pasta do seu npc
local nMin = 6 -- tempo em minutos para o npc sumir.
addEvent(doRemoveCreature, nMin*60*1000, npc)
return true
end

function onTime()
doBroadcastMessage("O npc Torneio PvP vai aparecer em 1 minuto, voce tem 5 minutos para entrar no evento PvP.") -- Broadcast em vermelho para avisar que o evento/npc vai aparecer/começar
addEvent(executeNpcPvp, 60000)
return true
end
 

 

se o seu servidor não for em millisegundos use assim:

Spoiler

function executeNpcPvp()
local pos = {x = 1010, y = 889, z = 7} -- Local onde aparece o npc
local npc = doCreateNpc("Torneio", pos ) -- Altere o (Torneio) pelo nome da pasta do seu npc
local nMin = 6 -- tempo em minutos para o npc sumir.
addEvent(doRemoveCreature, nMin*60*1000, npc)
return true
end

function onTimer()
doBroadcastMessage("O npc Torneio PvP vai aparecer em 1 minuto, voce tem 5 minutos para entrar no evento PvP.") -- Broadcast em vermelho para avisar que o evento/npc vai aparecer/começar
addEvent(executeNpcPvp, 60000)
return true
end

 


Creditos:
@J.L por disponibilizar os script do Evento PvP.
@Stigal por disponibilizar o script do Npc que aparece sozinho na hr marcada.
@King Laker por editar e mesclar os scripts.

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
  • Respostas 19
  • Visualizações 3.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

vodkart_logo.png

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

 

DISCORDvodkart#6090

 

Postado

Faltou vc explicar mais sobre o evento, como funciona? ele usa algum mapa? vc deixou o mapa da área disponível? eu mesmo não entendi nada, como vou instalar algo no meu ot que eu n entendo? por favor explique.

Desde já valeu pela iniciativa e parabéns pelo conteúdo novo. 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

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

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo