Postado Junho 24, 2018 6 anos 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) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') thenselfSay('Você quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid)talkState[talkUser] = 2elseif talkState[talkUser] == 2 thenif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') thenif os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour thenselfSay('As inscrições para o torneio terminaram, volte Amanha AS 14:00 para nova inscriçao!.', cid)return trueendif doPlayerRemoveMoney(cid, torneio.price) thendoTeleportThing(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.."}.")elseselfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid)endelseselfSay('Voce nao quer participar do Torneio? Vem no Proximo Dia / Todos os Dias as [11:35]!', cid)talkState[talkUser] = 0endendendnpcHandler: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. Olá, que tal dar uma olhada no meu projeto? https://discord.gg/bsNkbsyJ3W
Postado Junho 25, 2018 6 anos 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. [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Junho 25, 2018 6 anos 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.
Postado Junho 25, 2018 6 anos Autor @Fabio Leandro Pronto. Olá, que tal dar uma olhada no meu projeto? https://discord.gg/bsNkbsyJ3W
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.