SkyDarkyes 104 Postado Abril 17, 2013 Share Postado Abril 17, 2013 (editado) Ta ai mais um evento que é vendido pela ChaitoSoft! #Descrição do evento: Neste evento 2 times (Azul e Vermelho) vão batalhar para conseguir a "quantidade" de frags para ganhar o evento, totalmente configuravel #O que possui? - Abertura automática ou via comando. - Quantidade minima de players para o evento (configuravel) - Level minimo para entrar no evento (configuravel) - Quantidade de frags que terão que conquistar para ganhar (configuravel) - Separação automática dos times (configuravel) - Mapa incluso - Tutorial explicativo - Premio o time vencedor do evento (configuravel) - Entre outras coisas…. *OBS: Este evento só funciona em TFS 0.4. Instalação: Em Data/Mods/Crie um arquivo XML,e coloque isso dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Rush Event" version="1.0" author="Tibia Hosting por disponibilizar" contact="eduardo.yhago@hotmail.com" enabled="yes"> <description> TUTORIAL DE COMO CONFIGURAR O EVENTO ACOMPANHE POR AQUI: q - mensagem que vai ser exibida quando o evento começar d_1 - posição do tempo vermelho ao começar evento d_2 - posição do tempo azul ao começar evento x - mensagem que vai ser exibida quando o evento não começar w - posição da sala de espera, onde os players vão ficar antes de começar lvl - level minimo para participar do evento v - a quantidade de frags que será necessária para o time ganhar mn - quantidade minima de players para começar o evento m - maximo de players dentro do evento o - mensagem exibida quando o time vermelho ganhar y - mensagem exibida quando o time azul ganhar i_1 - id do premio (agora é crystal coin = 2160) i_2 - quantidade do premio (agora esta 10 crystal coins) t - tempo para começar o evento (agora esta is 5 minutos) r - tempo em que os resultados da batalha serão mostrados aos players (agora esta 3 minutos) Adicione isto em 050-function.lua: ------------------------------------------------------------------------------------------------- function doPlayerRemoveLethalConditions(cid) local tmp = {1, 2, 4, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 32768, 65536} for i = 1, #tmp do if(hasCondition(cid, tmp)) then doRemoveCondition(cid, tmp) end end return true end ------------------------------------------------------------------------------------------------- Adicione isto em login.lua: ------------------------------------------------------------------------------------------------- registerCreatureEvent(cid, "RushCombat") registerCreatureEvent(cid, "RushAttack") registerCreatureEvent(cid, "RushDead") registerCreatureEvent(cid, "RushOutfit") ------------------------------------------------------------------------------------------------- Agora daqui pra baixo você vai configurar de acordo com o tutorial acima, o resto se não tiver conhecimento não mecha em nada pois poderá bugar o evento e não daremos suporte: </description> <config name="re"><![CDATA[ t = { a = 32145, g = 32146, l = 32147, u = 32148, h = 32149, wv = 32150, c = 0, q = "Rush Event has been started! Enjoy and have fun!", f = 5447, f_1 = 5448, f_2 = 5449, d_1 = {x = 26598, y = 26758, z = 7}, -- red temple d_2 = {x = 26655, y = 26726, z = 7}, -- blue temple x = "Event won't start bacause too few people were willing to participate", w = {x = 26628, y = 26804, z = 7}, lvl = 80, v = 2, mn = 1, m = 3, o = "Event was completed, RED TEAM has won Rush Event!", y = "Event was completed, BLUE TEAM has won Rush Event!", i_1 = 2160, i_2 = 10, t = 1, r = 3 } ]]></config> <globalevent name="Recognition" interval="1500" event="script"><![CDATA[ domodlib('re') function onThink(interval, lastExecution, thinkInterval) if(getGlobalStorageValue(t.a) == 1) then for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.f) == 1 then if(getPlayerStorageValue(pid, t.f_1) == 0) then doSendAnimatedText(getCreaturePosition(pid), "RED TEAM", TEXTCOLOR_RED) elseif(getPlayerStorageValue(pid, t.f_1) == 1) then doSendAnimatedText(getCreaturePosition(pid), "BLUE TEAM", TEXTCOLOR_LIGHTBLUE) end end end return true end return true end ]]></globalevent> <talkaction words="!start" event="script"><![CDATA[ domodlib('re') function onSay(cid, words, param, channel) if getPlayerGroupId(cid) > 3 then setGlobalStorageValue(t.g, 1) setGlobalStorageValue(t.u, 0) setGlobalStorageValue(t.l, 0) setGlobalStorageValue(t.a, 1) setGlobalStorageValue(t.c, 0) setGlobalStorageValue(t.wv, 0) doBroadcastMessage("Attention! Immediately register to Rush Event, event will start for ".. t.t .." minutes. All players can join to event typing this command: !rush", MESSAGE_STATUS_WARNING) addEvent(function() doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING) end, (t.t - 2) * 1000 * 60) addEvent(function() doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING) end, (t.t - 1) * 1000 * 60) addEvent(start, t.t * 1000 * 60, cid) return true end return true end function results() if(getGlobalStorageValue(t.a) == 1) then local red = getGlobalStorageValue(t.l) local blue = getGlobalStorageValue(t.u) doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING) addEvent(results, t.r * 1000 * 60) end end function start(cid) if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.wv, 1) addEvent(results, t.r * 1000 * 60) for _, pid in ipairs(getPlayersOnline()) do local myOutfit = getCreatureOutfit(pid) local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons} local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons} if getPlayerStorageValue(pid, t.f) == 1 then doCreatureAddHealth(pid, getCreatureMaxHealth(pid)) doCreatureAddMana(pid, getCreatureMaxMana(pid)) if((getPlayerStorageValue(pid, t.g) % 2) == 1) then doCreatureChangeOutfit(pid, red) setPlayerStorageValue(pid, t.h, 0) doTeleportThing(pid, t.d_1) setPlayerStorageValue(pid, t.f, 1) setPlayerStorageValue(pid, t.f_1, 0) setPlayerStorageValue(pid, t.f_2, 1) doSendMagicEffect(getCreaturePosition(pid), 10) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!") else doCreatureChangeOutfit(pid, blue) doTeleportThing(pid, t.d_2) setPlayerStorageValue(pid, t.h, 0) setPlayerStorageValue(pid, t.f, 1) setPlayerStorageValue(pid, t.f_1, 1) setPlayerStorageValue(pid, t.f_2, 0) doSendMagicEffect(getCreaturePosition(pid), 10) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!") end end end elseif(getGlobalStorageValue(t.c) < t.mn) then doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.a, 0) for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.f) == 1 then setPlayerStorageValue(pid, t.f, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT) end end end end ]]></talkaction> <globalevent name="RushStart" time="00:09" event="script"><![CDATA[ domodlib('re') function onTime(interval, lastExecution) setGlobalStorageValue(t.g, 1) setGlobalStorageValue(t.u, 0) setGlobalStorageValue(t.l, 0) setGlobalStorageValue(t.a, 1) setGlobalStorageValue(t.c, 0) setGlobalStorageValue(t.wv, 0) doBroadcastMessage("Attention! Immediately register to Rush Event, event will start for ".. t.t .." minutes. All players can join to event typing this command: !rush", MESSAGE_STATUS_WARNING) addEvent(function() doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING) end, (t.t - 2) * 1000 * 60) addEvent(function() doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING) end, (t.t - 1) * 1000 * 60) addEvent(start, t.t * 1000 * 60, cid) end function results() if(getGlobalStorageValue(t.a) == 1) then local red = getGlobalStorageValue(t.l) local blue = getGlobalStorageValue(t.u) doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING) addEvent(results, t.r * 1000 * 60) end end function start(cid) if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.wv, 1) addEvent(results, t.r * 1000 * 60) for _, pid in ipairs(getPlayersOnline()) do local myOutfit = getCreatureOutfit(pid) local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons} local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons} if getPlayerStorageValue(pid, t.f) == 1 then doCreatureAddHealth(pid, getCreatureMaxHealth(pid)) doCreatureAddMana(pid, getCreatureMaxMana(pid)) if((getPlayerStorageValue(pid, t.g) % 2) == 1) then doCreatureChangeOutfit(pid, red) setPlayerStorageValue(pid, t.h, 0) doTeleportThing(pid, t.d_1) setPlayerStorageValue(pid, t.f, 1) setPlayerStorageValue(pid, t.f_1, 0) setPlayerStorageValue(pid, t.f_2, 1) doSendMagicEffect(getCreaturePosition(pid), 10) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!") else doCreatureChangeOutfit(pid, blue) setPlayerStorageValue(pid, t.h, 0) doTeleportThing(pid, t.d_2) setPlayerStorageValue(pid, t.f, 1) setPlayerStorageValue(pid, t.f_1, 1) setPlayerStorageValue(pid, t.f_2, 0) doSendMagicEffect(getCreaturePosition(pid), 10) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!") end end end elseif(getGlobalStorageValue(t.c) < t.mn) then doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.a, 0) for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, t.f) == 1 then setPlayerStorageValue(pid, t.f, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT) end end end end ]]></globalevent> <talkaction words="!rush" event="script"><![CDATA[ domodlib('re') function onSay(cid, words, param, channel) if getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.wv) ~= 1 then if getPlayerLevel(cid) >= t.lvl then if getPlayerStorageValue(cid, t.f) == -1 then if getTilePzInfo(getPlayerPosition(cid)) == true then if getGlobalStorageValue(t.c) < t.m then setGlobalStorageValue(t.c, getGlobalStorageValue(t.c)+1) if getGlobalStorageValue(t.c) == t.m then doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!") else doBroadcastMessage("" .. getPlayerName(cid) .. " has joined to Rush Event! Actually we have: " .. getGlobalStorageValue(t.c) .. " players!", 19) end setPlayerStorageValue(cid, t.f, 1) setPlayerStorageValue(cid, t.h, -1) doTeleportThing(cid, t.w) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) setPlayerStorageValue(cid, t.g, getGlobalStorageValue(t.g)) setGlobalStorageValue(t.g, tonumber(getGlobalStorageValue(t.g))+1) else doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!") return true end else doPlayerSendCancel(cid, "You must be in protection zone.") return true end else doPlayerSendCancel(cid, "You are already registered in this event.") return true end else doPlayerSendCancel(cid, "Your level is too low to participate in this event.") return true end else doPlayerSendCancel(cid, "At the moment there are no records for this event.") return true end return true end ]]></talkaction> <event type="combat" name="RushCombat" event="script"><![CDATA[ domodlib('re') function onCombat(cid, target) if(getGlobalStorageValue(t.a) == 1) then if isPlayer(cid) and isPlayer(target) then if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then return doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.") and false end end end end return true end ]]></event> <event type="attack" name="RushAttack" event="script"><![CDATA[ domodlib('re') function onAttack(cid, target) if(getGlobalStorageValue(t.a) == 1) then if isPlayer(cid) and isPlayer(target) then if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then return doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.") and false end end end end return true end ]]></event> <event type="preparedeath" name="RushDead" event="script"><![CDATA[ domodlib('re') function onPrepareDeath(cid, deathList) if(not isPlayer(cid)) then return true end if getGlobalStorageValue(t.a) == 1 then local strings = {""} local j, position, corpse = 1, 1, 0 for _, pid in ipairs(deathList) do if isCreature(pid) == true then strings[position] = j == 1 and "" or strings[position] .. ", " strings[position] = strings[position] .. getCreatureName(pid) .. "" j = j + 1 else strings[position] = j == 1 and "" or strings[position] .. ", " strings[position] = strings[position] .."a field item" j = j + 1 end end for i, str in ipairs(strings) do if(str:sub(str:len()) ~= ",") then str = str .. "." end desc = "You recognize " desc = desc .. "" .. getCreatureName(cid) .. ". He was killed by " .. str end if(getPlayerSex(cid) == 1) then corpse = doCreateItem(3058, getCreaturePosition(cid)) else corpse = doCreateItem(3065, getCreaturePosition(cid)) end doItemSetAttribute(corpse, "description", desc) if((getPlayerStorageValue(cid, t.g) % 2) == 1) then setGlobalStorageValue(t.u, getGlobalStorageValue(t.u)+1) else setGlobalStorageValue(t.l, getGlobalStorageValue(t.l)+1) end local red = getGlobalStorageValue(t.l) local blue = getGlobalStorageValue(t.u) if blue < t.v or red < t.v then if(isPlayer(cid) == false) then return true end if((getPlayerStorageValue(cid, t.g) % 2) == 1) then doTeleportThing(cid, t.d_1) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerRemoveLethalConditions(cid) if getCreatureSkullType(cid) == SKULL_WHITE then doCreatureSetSkullType(cid, 0) end else doTeleportThing(cid, t.d_2) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerRemoveLethalConditions(cid) if getCreatureSkullType(cid) == SKULL_WHITE then doCreatureSetSkullType(cid, 0) end end end if blue >= t.v then doBroadcastMessage(t.y, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.h, 1) for _, pid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(pid, t.f_1) == 1) then doPlayerAddItem(cid, 2160, 30) end end elseif red >= t.v then doBroadcastMessage(t.o, MESSAGE_STATUS_WARNING) setGlobalStorageValue(t.h, 1) for _, pid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(pid, t.f_2) == 1) then doPlayerAddItem(cid, 2160, 30) end end end if getGlobalStorageValue(t.h) == 1 then setGlobalStorageValue(t.a, 0) setGlobalStorageValue(t.h, 0) setGlobalStorageValue(t.wv, -1) setPlayerStorageValue(cid, t.f, -1) setPlayerStorageValue(cid, t.g, 0) setPlayerStorageValue(cid, t.l, 0) setPlayerStorageValue(cid, t.u, 0) setPlayerStorageValue(cid, t.f_1, -1) setPlayerStorageValue(cid, t.f_2, -1) setPlayerStorageValue(cid, t.h, -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerRemoveLethalConditions(cid) for _, pid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(pid, t.f_1) == 1 or getPlayerStorageValue(pid, t.f_2) == 1) then setPlayerStorageValue(pid, t.f, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT) setPlayerStorageValue(pid, t.g, 0) setPlayerStorageValue(pid, t.l, 0) setPlayerStorageValue(pid, t.u, 0) setPlayerStorageValue(pid, t.f_1, -1) setPlayerStorageValue(pid, t.f_2, -1) setPlayerStorageValue(pid, t.h, -1) doCreatureAddHealth(pid, getCreatureMaxHealth(pid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true) doCreatureAddMana(pid, getCreatureMaxMana(pid)) doPlayerRemoveLethalConditions(pid) end end return false end return false end return true end ]]></event> <event type="outfit" name="RushOutfit" event="script"><![CDATA[ domodlib('re') function onOutfit(cid, old, current) if(getGlobalStorageValue(t.a) == 1) then if getPlayerGroupId(cid) > 3 then return true end if getPlayerStorageValue(cid, t.h) == 0 then if getPlayerStorageValue(cid, t.f) > -1 then doPlayerSendCancel(cid, "You cannot change your outfit during the event.") return false end end end return true end ]]></event> </mod> Download do mapa: http://www.2shared.com/file/WvySTo3Q/Map.html Scan do mapa: https://www.virustotal.com/pt/file/580413c7a4294400f55e6311d048cdcdf3e192ef20b6862a30bb56a4f4bc0c8d/analysis/1349135527/ Créditos: ChaitoSoft por fazer o evento. Editado Abril 17, 2013 por SkyDarkyes Link para o comentário Compartilhar em outros sites More sharing options...
BorgesRicardo 3 Postado Maio 20, 2013 Share Postado Maio 20, 2013 (editado) Instalei aqui no meu servidor, funcionou direitinho, mas eu gostaria de saber como configurar para ele começar todo dia em um certo horario. E o team que ganha não está recebendo o prêmio, quem está recebendo é o time que perdeu... Como mudo isso? Editado Maio 20, 2013 por BorgesRicardo Link para o comentário Compartilhar em outros sites More sharing options...
dodoboy 0 Postado Julho 8, 2013 Share Postado Julho 8, 2013 Meu TFS é 0.3.6 e tentei mudar seguindo um post para o tfs 0.4 mais ae ele da um erro dizendo que nao pode abrir meu mapa sabe pq ? Ve se da pra por na versão 0.3.6 Ta manero o post !!! Link para o comentário Compartilhar em outros sites More sharing options...
Subhe 3 Postado Agosto 9, 2013 Share Postado Agosto 9, 2013 (editado) mano, funcionou aqui , mas tem um probleminha se o evento tiver acontecendo já, e um cara que nao tá no evento morre, ele vai pra dentro do evento e nao fica com nenhum time, fica tipo neutro, e quando o evento acaba, os char que entraram no evento pq morreram, fica preço la e nao sai, e outra, nao está recebendo o premio, tem como arrumar isso ae ? Desde já agradeço Editado Agosto 9, 2013 por Subhe Link para o comentário Compartilhar em outros sites More sharing options...
ElitonOtserv 1 Postado Agosto 15, 2013 Share Postado Agosto 15, 2013 Mesmo problema ! Espero que consigam arrumar ! Abraços Link para o comentário Compartilhar em outros sites More sharing options...
Martelix 3 Postado Agosto 15, 2013 Share Postado Agosto 15, 2013 (editado) Eu arrumei o script, mas já fiz um post só que no #####. Espero que eu possa postar links de outros fórums, segue o link: ~~ Link de outro fórum ~~ Editado Agosto 15, 2013 por Skymagnum Link para o comentário Compartilhar em outros sites More sharing options...
SkyDarkyes 104 Postado Agosto 15, 2013 Autor Share Postado Agosto 15, 2013 /\ Proibido divulgar outros fórums,Reported, Não fiz o script,não sei arrumar o erro Link para o comentário Compartilhar em outros sites More sharing options...
Martelix 3 Postado Agosto 16, 2013 Share Postado Agosto 16, 2013 (editado) Eu também não fiz, mas sei arrumar os erro, tanto que arrumei Desculpas ae moderação pelo incoveniente. Editado Agosto 16, 2013 por Martelix Link para o comentário Compartilhar em outros sites More sharing options...
kleitonalan321 6 Postado Agosto 21, 2013 Share Postado Agosto 21, 2013 voce pode postar o script arumado ? ou me mandar por pm? Link para o comentário Compartilhar em outros sites More sharing options...
Martelix 3 Postado Dezembro 6, 2013 Share Postado Dezembro 6, 2013 Haha, script todo bugado, tive que arrumar pra por no servidor, mas é melhor ter um como base do que começar do zero. Link para o comentário Compartilhar em outros sites More sharing options...
Sarah Wesker 0 Postado Março 14, 2018 Share Postado Março 14, 2018 e link do mapa ? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados