Killua 389 Postado Setembro 23, 2013 Share Postado Setembro 23, 2013 (editado) Últimas atualizações: 16/12/2013: - Adicionei uma configuração do número mínimo de players que o evento precisa para começar, se não atingir esse mínimo, o evento é fechado e já fica preparado para quando for acontecer novamente. Os jogadores que entraram são teleportados para o templo. - Coloquei um tempo máximo de permanêcncia no evento, se o player ficar X minutos no evento, ele é teleportado para o templo. - Retirei todos os bugs que podiam acontecer no evento: - O monstros (Guarda do Portao e Arcanjo) não são criados novamente caso já estejam em suas devidas posições - Caso alguém morra no evento, o evento entende que tem um participante a menos. - Após o tempo máximo de duração do evento, o script faz uma checagem para garantir que esteja tudo certo. Se algo estiver errado, o script arruma. - Caso o seu servidor caia durante o evento, quando o servidor for aberto novamente, todos os participantes do evento são teleportados para o templo e o script já prepara o evento para - -quando for acontecer de novo. [ATUALIZADO 12/04/2014] Introdução: Eai gente, vcs conhecem o evento Blood Castle que tem no jogo MU? Então, eu resolvi criar esse evento para OpenTibia e ficou bem legal Informações: Versões testadas: TFS 0.4, TFS 0.3.6 e Real Server 3.1 Como funciona: A cada X intervalo de tempo (ou manualmente) , o evento é anunciado e um teleporte é criado, os jogadores então ficam na sala de espera até o evento começar. Quando ele começa, os jogadores devem matar os monstros até chegarem no portão do castelo, no portão eles devem matar o Guarda para passar. Quando o guarda morre, eles entram no castelo, e vão matando os monstros até a estátua do Arcanjo aparecer. Depois que ela aparece, os jogadores tem que quebrar ela, aquele que causou mais dano na estátua é o vencedor e recebe um prêmio. OBS: NÃO é obrigatório o uso do mapa que vou por aqui, ele serve somente para exemplo. #Dica: Acho que fica legal o premio do evento ser um item que da double exp por um tempo. Atualização: Resolvi refazer o código, para facilitar a instalação e melhorar o funcionamento do evento. O que mudou? - Reduzi bastante o código - Reduzi a quantidade de arquivos para facilitar a instalação - Otimizei o código (refiz algumas funções e algumas partes do código) - Passei o nome das funções para ingles, para ficar mais bonito rs Instalando o evento: Lib: Na pasta data/lib crie um arquivo .lua chamado BloodCastle e cole esse código: -- == Blood Castle Event por Killua - Xtibia.com == -- bloodconfig = { templo = {x = 160, y = 51, z = 7}, -- templo posGuarda = {x = 29, y = 263, z = 7}, -- Onde o guarda do portão vai nascer premios = {{6527, 10}, {2160, 20}}, -- Premios que o vencedor vai ganhar {id, quantidade} positionTP = {x = 157, y = 44, z = 7}, -- Onde o tp será criado positionEvento = {x = 30, y = 314, z = 7}, -- Para onde o tp vai levar tempoTP = 2, -- Depois de quanto tempo que avisou vai ser criado o tp? Em minutos tempoAberto = 5, -- Tempo que o tp fica aberto. Em minutos minPlayers = 3, -- Número mínimo de players que devem entrar para que o evento aconteça tempoMaximo = 40, -- Tempo máximo, em minutos, que alguem pode permanecer no evento playersStorage = 54910, -- Não mude posPedras = {{x = 27, y = 304, z = 7, stackpos=1}, {x = 28, y = 304, z = 7, stackpos=1}, {x = 29, y = 304, z = 7, stackpos=1}, {x = 30, y = 304, z = 7, stackpos=1}, {x = 31, y = 304, z = 7, stackpos=1}}, -- Posições das pedras que bloqueiam a entrada do evento idDasParedes = 9486, -- ID das paredes que vao ser removidas quando o Guarda morrer (todas devem ter o mesmo id) estatua = {x = 29, y = 242, z = 7}, -- Posicao onde o arcanjo vai ser criado tempoSaida = 70, -- Quando tempo o tp q é criado quando a estátua morre vai ficar? Em segundos posParedes = {{x = 28, y = 262, z = 7, stackpos=1}, {x = 29, y = 262, z = 7, stackpos=1}, {x = 30, y = 262, z = 7, stackpos=1}}, -- Posições das paredes que ficam atrás do guarda fromPos = {x = 12, y = 237, z = 7}, -- Canto superior esquerdo da área do seu evento ---- Deve ser uma área quadrada ou retangular, de forma que todo o evento fique dentro dela. toPos = {x = 44, y = 323, z = 7}, -- Canto inferior direito da área do seu evento } -- [[ NAO ALTERE MAIS NADA DAQUI PARA BAIXO! ]] -- function removeTpb() local t = getTileItemById(bloodconfig.positionTP, 1387) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(bloodconfig.positionTP, CONST_ME_POFF) end end function removeStones() for i = 1, #bloodconfig.posPedras do local pedra = getTileItemById(bloodconfig.posPedras[i], 1304) if pedra then doRemoveItem(pedra.uid, 1) end end end function putStones() for i = 1, #bloodconfig.posPedras do local pedra = getTileItemById(bloodconfig.posPedras[i], 1304) if not pedra then doCreateItem(1304, 1, pedra) end end end function createTeleportb() local tip = doCreateTeleport(1387, bloodconfig.positionEvento, bloodconfig.positionTP) doItemSetAttribute(tip, "aid", 4726) end function removeTpa() local t = getTileItemById(bloodconfig.estatua, 1387) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(bloodconfig.estatua, CONST_ME_POFF) end end function getPlayersInBlood() local playersInBlood = getGlobalStorageValue(bloodconfig.playersStorage) return playersInBlood < 0 and 0 or playersInBlood end function removePlayers() for _, pid in pairs(getPlayersOnline()) do if isInArea(getThingPos(pid), bloodconfig.fromPos, bloodconfig.toPos) then doTeleportThing(pid, bloodconfig.templo, false) doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce foi removido do Blood Castle. Possiveis causas: o evento nao atingiu o numero minimo de players; Voce permaneceu no evento por mais de " .. bloodconfig.tempoMaximo .. " minutos.") end end end function checkBlood() if getPlayersInBlood() >= bloodconfig.minPlayers then removeStones() doBroadcastMessage("[Blood Castle] O Evento comecou e o teleporte para ele foi fechado. Boa sorte a todos!") if not isMonster(getTopCreature(bloodconfig.posGuarda).uid) then doCreateMonster("Guarda do Portao", bloodconfig.posGuarda) end addEvent(removePlayers, bloodconfig.tempoMaximo*60*1000) else removePlayers() setGlobalStorageValue(bloodconfig.playersStorage, 0) doBroadcastMessage("[Blood Castle] O evento nao atingiu o numero minimo de participantes e foi cancelado.") if isMonster(getTopCreature(bloodconfig.posGuarda).uid) then doRemoveCreature(getTopCreature(bloodconfig.posGuarda).uid) end if isMonster(getTopCreature(bloodconfig.estatua).uid) then doRemoveCreature(getTopCreature(bloodconfig.estatua).uid) end end end function putWalls() for i = 1, #bloodconfig.posParedes do doCreateItem(bloodconfig.idDasParedes, 1, bloodconfig.posParedes[i]) end end function removeWalls() for i = 1, #bloodconfig.posParedes do local wall = getTileItemById(bloodconfig.posParedes[i], bloodconfig.idDasParedes) if wall then doRemoveItem(wall.uid, 1) end end end function createAngel() if not isMonster(getTopCreature(bloodconfig.estatua).uid) then doCreateMonster("Arcanjo", bloodconfig.estatua) doBroadcastMessage("[Blood Castle] A estatua do arcanjo apareceu!") end end function Guarantee() if isMonster(getTopCreature(bloodconfig.posGuarda).uid) then putWalls() doRemoveCreature(getTopCreature(bloodconfig.posGuarda).uid) elseif isMonster(getTopCreature(bloodconfig.estatua).uid) then putStones() putWalls() doRemoveCreature(getTopCreature(bloodconfig.estatua).uid) end end Movements: Em data/movements/scripts crie um arquivo .lua chamado BloodMovement e coloque esse código: -- == Blood Castle Event por Killua - Xtibia.com == -- function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if item.actionid == 4726 then setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()+1) print(getPlayersInBlood().. " Jogadores no Blood Castle") elseif item.actionid == 9371 then setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()-1) print(getPlayersInBlood().. " Jogadores no Blood Castle") end return true end TAG do movements.xml: <movevent type="StepIn" actionid="4726;9371" event="script" value="BloodMovement.lua"/> Creaturescripts: Em data/creaturescripts/scripts crie um arquivo .lua chamado BloodCreatureGuarda e coloque esse código: -- == Blood Castle Event por Killua - Xtibia.com == -- function onDeath(cid, corpse, mostDamageKiller) local artigo = getPlayerSex(mostDamageKiller[1]) == 0 and "A jogadora" or "O jogador" if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower("Guarda do Portao") then removeWalls() addEvent(createAngel, 2*60*1000) doBroadcastMessage("[Blood Castle] " .. artigo .. " " .. getPlayerName(mostDamageKiller[1]) .. " derrotou o Guarda do Portao! Prossigam para proxima sala e aguardem ate o arcanjo nascer!") end return true end Na mesma pasta, crie um arquivo .lua chamado BloodCreatureAnjo e coloque esse código: -- == Blood Castle Event por Killua - Xtibia.com == -- function onDeath(cid, corpse, mostDamageKiller) local artigo = getPlayerSex(mostDamageKiller[1]) == 0 and "A jogadora" or "O jogador" if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower("Arcanjo") then doBroadcastMessage("[Blood Castle] " .. artigo .. " " .. getPlayerName(mostDamageKiller[1]) .. " destruiu a estatua do Arcanjo e foi o vencedor da rodada!") for _, premio in pairs(bloodconfig.premios) do doPlayerAddItem(mostDamageKiller[1], premio[1], premio[2]) end doPlayerSendTextMessage(mostDamageKiller[1], 25, "Parabens voce venceu o evento Blood Castle!") doSendMagicEffect(getCreaturePosition(mostDamageKiller[1]), 66) doCreateTeleport(1387, bloodconfig.templo, bloodconfig.estatua) addEvent(removeTpa, bloodconfig.tempoSaida*1000) setGlobalStorageValue(bloodconfig.playersStorage, 0) putWalls() putStones() end return true end Ainda na mesma pasta crie um arquivo .lua chamado BloodCreature e coloque esse código: -- == Blood Castle Event por Killua, antigo - Xtibia.com == -- function onDeath(cid, corpse, mostDamageKiller) if isPlayer(cid) and isInArea(getCreaturePosition(cid), bloodconfig.fromPos, bloodconfig.toPos) then setGlobalStorageValue(bloodconfig.playersStorage, getPlayersInBlood()-1) end return true end function onLogin(cid) if isInArea(getCreaturePosition(cid), bloodconfig.fromPos, bloodconfig.toPos) then doTeleportThing(cid, bloodconfig.templo, false) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce estava no meio do evento Blood Castle quando o servidor caiu. Voce foi teleportado para o templo.") end registerCreatureEvent(cid, "morrerblood") registerCreatureEvent(cid, "guardablood") registerCreatureEvent(cid, "arcanjoblood") return true end TAGs no creaturescripts.xml <event type="death" name="guardablood" event="script" value="BloodCreatureGuarda.lua"/> <event type="death" name="arcanjoblood" event="script" value="BloodCreatureAnjo.lua"/> <event type="death" name="morrerblood" event="script" value="BloodCreature.lua"/> <event type="death" name="loginblood" event="script" value="BloodCreature.lua"/> Monsters: Em data/monsters crie uma pasta chamada Blood Castle coloque esses dois códigos: Guarda do Portao.xml: <?xml version="1.0" encoding="UTF-8"?> <monster name="Guarda do Portao" nameDescription="the Guarda do Portao" race="undead" experience="500000" speed="0" manacost="0"> <health now="1000000" max="1000000"/> <look type="268" head="114" body="114" legs="114" feet="114" addons="3" corpse="6080"/> <targetchange interval="5000" chance="0"/> <strategy attack="0" defense="0"/> <script> <event name="guardablood"/> </script> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="0"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="100"/> </flags> <defenses armor="1" defense="1"/> <immunities> <immunity poison="1"/> <immunity lifedrain="1"/> <immunity paralyze="1"/> <immunity outfit="1"/> <immunity drunk="1"/> <immunity invisible="1"/> </immunities> </monster> Arcanjo.xml: <?xml version="1.0" encoding="UTF-8"?> <monster name="Arcanjo" nameDescription="the Arcanjo" race="undead" experience="500000" speed="0" manacost="0"> <health now="1000000" max="1000000"/> <look typeex="9751"/> <targetchange interval="5000" chance="0"/> <strategy attack="0" defense="0"/> <script> <event name="arcanjoblood"/> </script> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="0"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="100"/> </flags> <defenses armor="1" defense="1"/> <immunities> <immunity poison="1"/> <immunity lifedrain="1"/> <immunity paralyze="1"/> <immunity outfit="1"/> <immunity drunk="1"/> <immunity invisible="1"/> </immunities> </monster> Em monsters.xml coloque essas TAGs: <monster name="Guarda do Portao" file="Blood Castle/Guarda do Portao.xml"/> <monster name="Arcanjo" file="Blood Castle/Arcanjo.xml"/> O evento pode acontecer de duas maneiras: automática ou manualmente. Vou por as duas possibilidades: Automático: Globalevents: Em data/globalevents/scripts e crie BloodGlobalEvent.lua e coloque esse código: -- == Blood Castle Event por Killua - Xtibia.com == -- function onThink(cid, interval) local plural = bloodconfig.tempoTP == 1 and "minuto" or "minutos" local plurals = bloodconfig.tempoAberto == 1 and "minuto" or "minutos" doBroadcastMessage("[Blood Castle] O portal para o evento vai ser aberto em " .. bloodconfig.tempoTP .. " " .. plural .. ", nao percam!") addEvent(createTeleportb, bloodconfig.tempoTP*60*1000) addEvent(doBroadcastMessage, bloodconfig.tempoTP*60*1000, "[Blood Castle] O teleport para o evento foi aberto no templo e vai sumir em " .. bloodconfig.tempoAberto .. " " .. plurals .. ". Se apressem!") addEvent(removeTpb, bloodconfig.tempoTP+bloodconfig.tempoAberto*60*1000) addEvent(checkBlood, bloodconfig.tempoTP+bloodconfig.tempoAberto*60*1000+60*1000) addEvent(Guarantee, bloodconfig.tempoMaximo*60*1000+15000) return true end function onStartup() setGlobalStorageValue(bloodconfig.playersStorage, 0) print(getPlayersInBlood().. "Jogadores no Blood Castle") return true end TAGS no globalevents.xml: <globalevent name="bloodstart" type="start" event="script" value="BloodGlobalEvent.lua"/> <globalevent name="Blood Castle" interval="6000000" event="script" value="BloodGlobalEvent.lua"/> Manual: Talkactions: Em data/talkactions/scripts crie BloodTalk.lua e coloque esse código: -- == Blood Castle Event por Killua - Xtibia.com == -- function onSay(cid, words, param, channel) local plural = bloodconfig.tempoTP == 1 and "minuto" or "minutos" local plurals = bloodconfig.tempoAberto == 1 and "minuto" or "minutos" doBroadcastMessage("[Blood Castle] O portal para o evento vai ser aberto em " .. bloodconfig.tempoTP .. " " .. plural .. ", nao percam!") addEvent(createTeleportb, bloodconfig.tempoTP*60*1000) addEvent(doBroadcastMessage, bloodconfig.tempoTP*60*1000, "[Blood Castle] O teleport para o evento foi aberto no templo e vai sumir em " .. bloodconfig.tempoAberto .. " " .. plurals .. ". Se apressem!") addEvent(removeTpb, bloodconfig.tempoTP+bloodconfig.tempoAberto*60*1000) addEvent(checkBlood, bloodconfig.tempoTP+bloodconfig.tempoAberto*60*1000+60*1000) addEvent(Guarantee, bloodconfig.tempoMaximo*60*1000+15000) return true end TAG talkactions.xml: <talkaction log="yes" words="/blood-start" access="5" event="script" value="BloodTalk.lua"/> Globalevents: Em data/globalevents/scripts crie BloodGlobalStart.lua e coloque: -- == Blood Castle Event por Killua - Xtibia.com == -- function onStartup() setGlobalStorageValue(bloodconfig.playersStorage, 0) print(getPlayersInBlood().. "Jogadores no Blood Castle") return true end TAG globalevents.xml <globalevent name="bloodstart" type="start" event="script" value="BloodGlobalStart.lua"/> Como Configurar: * Se você for colocar, dentro do evento, um teleporte para as pessoas que não quiserem mais participar, coloque o Action ID 9371 nele. * Lembre-se de por NO-LOGOUT tool e NO-PVP tool em toda área do evento!! Todas as demais explicações estão na lib, mas vou demonstrar como configurar os mais "confusos". No modo automático, você configura de quanto em quanto o tempo o evento vai acontecer. Nessa tag: <globalevent name="Blood Castle" interval="3600" event="script" value="BloodGlobalEvent.lua"/> Aqui está 3600 segundos, ou seja, 1 hora. * Se seu servidor for em milisegundos, multiplique o número por 1000, assim: 3600 segundos * 1000 = 3600000 milisegundos = 1 hora. No modo manual, para iniciar o evento, basta usar a talkaction /blood-start com seu god. Em posGuarda, vc deve colocar a posicao do Guarda do Portao, como mostrado abaixo: As posPedras são onde ficam as pedras que tampam a passagem enquanto o evento não esta aberto, conforme na imagem abaixo: Em estátua, vc deve colocar a posição em que o arcanjo vai ser criado, conforme na imagem abaixo: Nas posParedes, vc deve por a posição das paredes que bloqueiam a entrada do castelo e que são removidas quando o guarda morre, conforme abaixo: (Paredes entre os dois skeletons pindurados.) Em fromPos e toPos, você vai por o canto superior esquerdo e o canto inferior direito do mapa do seu evento, respectivamente. Dessa maneira: As outras configurações eu acredito que já estejam bem explicadas. Espero que gostem dessa nova versão. Recomendo a todos que já usam o evento, reinstalar com essa nova versão. Qualquer dúvida ou bug, postem que irei responder. Download do mapa exemplo: Blood Castle.rar Editado Abril 12, 2014 por Killua Atualização do evento. Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/ Compartilhar em outros sites More sharing options...
Alexclusive 687 Postado Setembro 23, 2013 Share Postado Setembro 23, 2013 Legal cara, um evento a mais né? rs Obrigado por compartilhar! Obs: Coloquei os acentos pra ti Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1564423 Compartilhar em outros sites More sharing options...
Killua 389 Postado Setembro 23, 2013 Autor Share Postado Setembro 23, 2013 Legal cara, um evento a mais né? rs Obrigado por compartilhar! Obs: Coloquei os acentos pra ti Sim hahaha, obrigado alex! Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1564427 Compartilhar em outros sites More sharing options...
Nathan Fischer 4 Postado Setembro 24, 2013 Share Postado Setembro 24, 2013 (editado) Curti Eu tinha pedido esse evento a uns 6 meses atras! Editado Setembro 24, 2013 por NathanFischer Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1564960 Compartilhar em outros sites More sharing options...
Killua 389 Postado Setembro 24, 2013 Autor Share Postado Setembro 24, 2013 Curti Eu tinha pedido esse evento a uns 6 meses atras! Quem bom que vc gostou Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1564976 Compartilhar em outros sites More sharing options...
Omega 377 Postado Outubro 6, 2013 Share Postado Outubro 6, 2013 Caramba, tudo já completinho, com mapa e tudo. Gostei, cara, meus parabéns! Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1570029 Compartilhar em outros sites More sharing options...
Martelix 3 Postado Novembro 11, 2013 Share Postado Novembro 11, 2013 Desculpa ae "reviver" o tópico, mas que evento top hein cara!!! Realmente tinha pensado na hora em colocar um item de double exp kkkk, se tá manjando!! Muito bom cara, parabéns! Seus posts são bem completos e organizados Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1581183 Compartilhar em outros sites More sharing options...
Killua 389 Postado Novembro 11, 2013 Autor Share Postado Novembro 11, 2013 Desculpa ae "reviver" o tópico, mas que evento top hein cara!!! Realmente tinha pensado na hora em colocar um item de double exp kkkk, se tá manjando!! Muito bom cara, parabéns! Seus posts são bem completos e organizados Hehe q isso, é bom ele ser revivido. Muito obrigado pelos elogios, amigo Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1581188 Compartilhar em outros sites More sharing options...
BorgesRicardo 3 Postado Novembro 21, 2013 Share Postado Novembro 21, 2013 Será que funciona na tfs 0.3.6? Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1584220 Compartilhar em outros sites More sharing options...
Killua 389 Postado Novembro 21, 2013 Autor Share Postado Novembro 21, 2013 Será que funciona na tfs 0.3.6? Acredito que sim Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1584382 Compartilhar em outros sites More sharing options...
Kingfox421 0 Postado Novembro 22, 2013 Share Postado Novembro 22, 2013 É Só Colocar em Lib ? Ainda Não Entendi!!!!!! Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1584817 Compartilhar em outros sites More sharing options...
Killua 389 Postado Novembro 22, 2013 Autor Share Postado Novembro 22, 2013 É Só Colocar em Lib ? Ainda Não Entendi!!!!!! Você precisa somente baixar o arquivo .rar que está em anexo no tópico. Nele tem vários arquivos .lua dentro de suas respectivas pastas. Você tem somente que colocar os arquivos .lua dentro das pastas do seu server. Por exemplo: no arquivo rar tem uma pasta chamada globalevents, dentro dela tem um arquivo .lua que deve ser colocado na pasta globalevents do seu server. E assim por diante O script que eu coloquei no post serve somente para explicação. Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1584839 Compartilhar em outros sites More sharing options...
ferrazmurilo 0 Postado Dezembro 13, 2013 Share Postado Dezembro 13, 2013 Introdução: Eai gente, vcs conhecem o evento Blood Castle que tem no jogo MU? Então, eu resolvi criar esse evento para OpenTibia e ficou bem legal Informações: Versão testada: TFS 0.4 Como funciona: A cada X intervalo de tempo, o evento eh anunciado e um teleporte eh criado, os jogadores então ficam na sala de espera ate o evento começar. Quando ele começa os jogadores devem matar os monstros ate chegar no portão do castelo, no portão eles devem matar o Guarda para passar. Quando o guarda morre, eles entram no castelo, e vão matando os monstros ate a estátua do arcanjo aparecer. Depois que ela aparece, os jogadores tem que quebrar ela, aquele que causou mais dano na estátua eh o vencedor e recebe um premio. OBS: não eh obrigatório o uso do mapa que vou por aqui, ele serve somente para exemplo. #Dica: Acho que fica legal o premio do evento ser um item que da double exp por um tempo. Instalando: Os comentários no script já são autoexplicativos, mas vou detalhar ainda mais: Esta eh a configuração que esta na lib bcastle = { templo = {x=156, y=49, z=7}, -- templo posguarda = {x=1478, y=1076, z=7}, -- Onde o guarda do portao vai nascer premios = {2160, 2469, 2472}, -- Premios que o vencedor pode ganhar positiontp = {x=156, y=49, z=7}, -- Onde o tp sera criado positionevento = {x=1478, y=1112, z=7}, -- Para onde o tp vai levar tempoaviso = 2, -- Depois de quanto tempo que avisou vai ser criado o tp? Em minutos tempoaberto = 4, -- Tempo que o tp fica aberto. Em minutos voltarpedras = 10, -- Quanto tempo depois de sumirem as pedras vao aparecer dnv? pospedra1 = {x=1476, y=1108, z=7, stackpos=1}, -- Posicao da pedra pospedra2 = {x=1477, y=1108, z=7, stackpos=1}, -- Posicao da pedra pospedra3 = {x=1478, y=1108, z=7, stackpos=1}, -- Posicao da pedra pospedra4 = {x=1479, y=1108, z=7, stackpos=1}, -- Posicao da pedra pospedra5 = {x=1480, y=1108, z=7, stackpos=1}, -- Posicao da pedra iddasparedes = 3362, -- ID das paredes que vao ser removidas quando o Guarda morrer(todas devem ter o mesmo id) estatua = {x=1478, y=1059, z=7}, -- Posicao onde o arcanjo vai ser criado temposaida = 10, -- Quando tempo o tp q eh criada quando a estatua morre vai ficar? parede1 = {x=1477, y=1075, z=7, stackpos=1}, -- Posicao das paredes que vao ser removidas quando o Guarda morrer parede2 = {x=1478, y=1075, z=7, stackpos=1}, -- Posicao das paredes que vao ser removidas quando o Guarda morrer parede3 = {x=1479, y=1075, z=7, stackpos=1}, -- Posicao das paredes que vao ser removidas quando o Guarda morrer } Em posguarda, vc deve colocar a posicao do Guarda do Portao, como mostrado abaixo: As pospedra são onde ficam as pedras que tampam a passagem enquanto o evento não esta aberto, conforme na imagem abaixo: Em estátua, vc deve colocar a posição em que o arcanjo vai ser criado, conforme na imagem abaixo: Em paredes, vc deve por a posição das paredes que bloqueiam a entrada do castelo e que são removidas quando o guarda morre, conforme abaixo: O resto eu acho que já da para entender Espero que gostem do evento, me deu um pouco de trabalho para fazer... Por favor, postem seus elogios, criticas e duvidas! Blood Castle por amoeba13.rar Amoeba13...? Eu instalei certinho mais algum problema na hora do evento... 1°, gostaria de saber um tempo bom que posso por para o evento começar. 2°, quando começa o evento as pedras desaparecem e na hora que aparece chega no Guarda aparece mais de 1 guarda. 3°, Depois de matar o guarda a parede desaparece eu vou atacar a estatua tem mais de uma tambem. mais depois que mata a estatua. não aparece o Teleporte para voltar ao templo. Gostaria me ajudasse... Nota 10 o Script, mais sou ruim para instalar rsrs. Ajuda ai. Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1592095 Compartilhar em outros sites More sharing options...
Killua 389 Postado Dezembro 13, 2013 Autor Share Postado Dezembro 13, 2013 O problema de criar dois guardas realmente existia... Entao eu arrumei ele. Para corrigir, basta vc adicionar estas linhas: if not isMonster(getTopCreature(bcastle.posguarda).uid) then doCreateMonster('Guarda do Portao', bcastle.posguarda) end Logo depois de function onThink(interval, lastExecution, thinkInterval) no bloodcastle.lua do globalevents. Ficando assim: --==- Evento Blood Castle feito por amoeba13 -=-- function onThink(interval, lastExecution, thinkInterval) if not isMonster(getTopCreature(bcastle.posguarda).uid) then doCreateMonster('Guarda do Portao', bcastle.posguarda) end doBroadcastMessage("[Blood Castle] O teleporte para o evento Blood Castle vai ser aberto em "..bcastle.tempoaviso.." minutos, nao percam!") addEvent(BotarTp, bcastle.tempoaviso*60*1000) addEvent(doBroadcastMessage, bcastle.tempoaviso*60*1000, "[Blood Castle] O teleport para o Blood Castle foi criado e vai sumir em "..bcastle.tempoaberto.." minutos, se apressem!") addEvent(TirarTp, bcastle.tempoaviso*60*1000+bcastle.tempoaberto*60*1000) addEvent(doBroadcastMessage, bcastle.tempoaviso*60*1000+bcastle.tempoaberto*60*1000, "[Blood Castle] O evento Blood Castle comecou e o teleport para ele foi fexado. Boa sorte a todos!") addEvent(TirarPedras, bcastle.tempoaviso*60*1000+bcastle.tempoaberto*60*1000) return true end Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1592114 Compartilhar em outros sites More sharing options...
ferrazmurilo 0 Postado Dezembro 14, 2013 Share Postado Dezembro 14, 2013 O problema de criar dois guardas realmente existia... Entao eu arrumei ele. Para corrigir, basta vc adicionar estas linhas: if not isMonster(getTopCreature(bcastle.posguarda).uid) then doCreateMonster('Guarda do Portao', bcastle.posguarda) end Logo depois de function onThink(interval, lastExecution, thinkInterval) no bloodcastle.lua do globalevents. Ficando assim: --==- Evento Blood Castle feito por amoeba13 -=-- function onThink(interval, lastExecution, thinkInterval) if not isMonster(getTopCreature(bcastle.posguarda).uid) then doCreateMonster('Guarda do Portao', bcastle.posguarda) end doBroadcastMessage("[Blood Castle] O teleporte para o evento Blood Castle vai ser aberto em "..bcastle.tempoaviso.." minutos, nao percam!") addEvent(BotarTp, bcastle.tempoaviso*60*1000) addEvent(doBroadcastMessage, bcastle.tempoaviso*60*1000, "[Blood Castle] O teleport para o Blood Castle foi criado e vai sumir em "..bcastle.tempoaberto.." minutos, se apressem!") addEvent(TirarTp, bcastle.tempoaviso*60*1000+bcastle.tempoaberto*60*1000) addEvent(doBroadcastMessage, bcastle.tempoaviso*60*1000+bcastle.tempoaberto*60*1000, "[Blood Castle] O evento Blood Castle comecou e o teleport para ele foi fexado. Boa sorte a todos!") addEvent(TirarPedras, bcastle.tempoaviso*60*1000+bcastle.tempoaberto*60*1000) return true end Amoeba13.. Outro probleminha... Ao matar o guarda, Eu vou matar o Arcanjo depois que mata o arcanjo o teleporte não aparece... Ao matar ele ele aparece e desaparece mais isso é muito rapido.. Ajuda eu Depois do teleporte arrumado. so testar uns 3 Round do evento blood castle. Obrigado! Meu problema é na hora de aparecer o teleporte ao terminar o evento... E esse problema; [13/12/2013 22:18:19] > Broadcasted message: "[blood Castle] O evento Blood Castle comecou e o teleport para ele foi fexado. Boa sorte a todos!". [13/12/2013 22:18:19] [Error - GlobalEvent Interface] [13/12/2013 22:18:19] In a timer event called from: [13/12/2013 22:18:19] data/globalevents/scripts/bloodcastle.lua:onThink [13/12/2013 22:18:19] Description: [13/12/2013 22:18:19] (luaDoRemoveItem) Item not found [13/12/2013 22:18:19] [Error - GlobalEvent Interface] [13/12/2013 22:18:19] In a timer event called from: [13/12/2013 22:18:19] data/globalevents/scripts/bloodcastle.lua:onThink [13/12/2013 22:18:19] Description: [13/12/2013 22:18:19] (luaDoRemoveItem) Item not found Link para o comentário https://xtibia.com/forum/topic/221536-blood-castle-evento-otimizado120414/#findComment-1592248 Compartilhar em outros sites More sharing options...
Posts Recomendados