Postado Agosto 17, 2015 9 anos Bom dia pessoal!! Bom, meu servidor de tibia tem 3 eventos!, BloodCastle Battlefield City War Bom nesse 3 eventos, esta para acontecer sozim, e varios horario 1 vez por dia!! oque eu estou procurando e uma função. que seguinte, nesses evento ao termina todos os jogadores que participou ganham 1,000,000,00 de exp e um item surpresa!! iten surpresa e 6567, antigo santa doll!!! Batlefield battlefield = { storage = 201206300801, storage2 = 201206300802, tpPos = {x=168, y=45, z=7}, -- aonde aparecerá o teleport pos_team_1 = {x=82,y=1362,z=8}, -- posição do team 1 (do lado direito) pos_team_2 = {x=126,y=1362,z=8}, -- posição do team 2 (do lado esquerdo) spectors = {{x=113,y=1352,z=6},{x=113,y=1368,z=6},{x=129,y=1368,z=6},{x=129,y=1353,z=6}}, -- aonde aparecerá os espectadores (em volta do battlefield) team1Name = "Black Assassins", team2Name = "Red Barbarians", } function doBroadCastBattle(type,msg) for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, battlefield.storage2) ~= -1 then doPlayerSendTextMessage(cid,type,msg) end end return true end function removeTp() local t = getTileItemById(battlefield.tpPos, 1387) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(battlefield.tpPos, CONST_ME_POFF) end end function OpenWallBattle() local x = true local B = { [1] = {1056,{x=121, y=1359, z=6, stackpos = 1}}, -- posição da barreira [2] = {1056,{x=121, y=1360, z=6, stackpos = 1}}, -- posição da barreira [3] = {1056,{x=121, y=1361, z=6, stackpos = 1}}, -- posição da barreira [4] = {1056,{x=121, y=1362, z=6, stackpos = 1}} -- posição da barreira } for i = 1, #B do if getTileItemById(B[2], B[1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[2]).uid,1) else doCreateItem(B[1], 1, B[2]) end end end function getWinnersBattle(storage) local team = storage == 1 and battlefield.team1Name or battlefield.team2Name doBroadcastMessage("Players from team ".. team .." won the event battlefield,they received a Master Surprise Bag!") setGlobalStorageValue(battlefield.storage, -1) removeTp() OpenWallBattle() for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, battlefield.storage2) ~= -1 then doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) if getPlayerStorageValue(cid, battlefield.storage2) == storage then doPlayerAddItem(cid,6567,1) doPlayerAddExp(cid,10000000) end setPlayerStorageValue(cid, battlefield.storage2, -1) end end end Blood Castle -- == Blood Castle Event por Killua == -- bloodconfig = { templo = {x = 155, y = 52, z = 7}, -- templo posGuarda = {x = 343, y = 822, z = 7}, -- Onde o guarda do portão vai nascer premios = {{6567, 1}, {2160, 100}}, -- Premios que o vencedor vai ganhar {id, quantidade} positionTP = {x = 168, y = 47, z = 7}, -- Onde o tp será criado positionEvento = {x = 343, y = 861, 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 = 341, y = 857, z = 7, stackpos=1}, {x = 342, y = 857, z = 7, stackpos=1}, {x = 343, y = 857, z = 7, stackpos=1}, {x = 344, y = 857, z = 7,stackpos=1}, {x = 345, y = 857, z = 7, stackpos=1}}, -- Posições das pedras que bloqueiam a entrada do evento idDasParedes = 3368, -- ID das paredes que vao ser removidas quando o Guarda morrer (todas devem ter o mesmo id) estatua = {x = 343, y = 804, 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 = 342, y = 821, z = 7, stackpos=1}, {x = 343, y = 821, z = 7, stackpos=1}, {x = 344, y = 821, z = 7, stackpos=1}}, -- Posições das paredes que ficam atrás do guarda fromPos = {x = 331, y = 801, 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 = 354, y = 867, 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, 1304) if pedra then doRemoveItem(pedra.uid, 1) end end end function putStones() for i = 1, #bloodconfig.posPedras do local pedra = getTileItemById(bloodconfig.posPedras, 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) end end function removeWalls() for i = 1, #bloodconfig.posParedes do local wall = getTileItemById(bloodconfig.posParedes, 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 City war configCW = {timetostart = 500, -- tempo para iniciar o evento em segundos by Absolute telpos = {x=149, y=55, z=7}, -- onde aparecerá o teleport stats = 201201201701, kill = 201201201702, death = 201201201703, ostime = 201201201704, evttime = 20, -- quanto tempo irá rolar o evento topleftPos = {x=211, y=1336, z=7}, -- canto esquerdo superior botrightPos = {x=286, y=1390, z=7}, -- canto direito inferior templepos = {x=160, y=54, z=7}, -- posição do templo principal arenapos = {{x=218, y=1341, z=7}, {x=278, y=1341, z=7}, {x=281, y=1382, z=7}, {x=214, y=1383, z=7}}, -- posição dos 4 tronos times = 8, -- não precisa mexer finaltime = 300 -- não precisa mexer } function configCW:new() local newevt = {} setmetatable(newevt, self) self.__index = self doBroadcastMessage("The City War will be open in " .. self.timetostart .. " seconds.") setGlobalStorageValue(self.stats, 0) addEvent(function () newevt:start() end, self.timetostart*1000) end function configCW:start() if getGlobalStorageValue(self.stats) == 0 then setGlobalStorageValue(self.ostime, os.time()) local teleport = doCreateItem(1387, self.telpos) doItemSetAttribute(teleport, "aid", 5540) setGlobalStorageValue(self.stats, 1) doBroadcastMessage("The City War is starting...") for _, posi in pairs(self.arenapos) do local item = getTileItemById(posi, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end addEvent(function () self:preclose() end, self.evttime*1000*60) addEvent(function () self:announce(0) end, (self.evttime/self.times)*1000*60) end end function configCW:announce(times) if times < self.times then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("Top City War fraggers: " .. self:getTopFrags()) end addEvent(function () self:announce(times+1) end, (self.evttime/self.times)*1000*60) end end function configCW:preclose() if getGlobalStorageValue(self.stats) == 1 then setGlobalStorageValue(self.stats, 2) doBroadcastMessage("The City War will end in " .. self.finaltime .. " seconds.") addEvent(function () self:close() end, self.finaltime*1000) local item = getTileItemById(self.telpos, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end end function configCW:close() if getGlobalStorageValue(self.stats) == 2 then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("The City War has ended. The winners are: " .. self:getTopFrags()) else doBroadcastMessage("The City War has ended. There were no winners.") end doRemovePlayersFromArea(self.topleftPos, self.botrightPos, self.templepos) for _, posi in pairs(self.arenapos) do doCreateTeleport(1387, self.templepos, posi) end for place, info in ipairs(self:getTopFrags(true)) do if place > 5 then break end local cid = getPlayerByName(info) doPlayerSendTextMessage(cid, 4, "Congratulations, you were the " .. place .. "º place in the City War.") doPlayerAddItem(cid, 7440, 1) doPlayerAddItem(cid, 6567, 1) doPlayerAddExp(cid,10000000) end setGlobalStorageValue(self.stats, -1) end end function configCW:isPlayerInEvent(cid) if getPlayerStorageValue(cid, self.stats) == -1 or getPlayerStorageValue(cid, self.stats) - os.time() <= -5 or getGlobalStorageValue(self.stats) < 1 then return false end return true end function configCW:getTopFrags(tab) local frag = {} for _, pid in pairs(getPlayersOnline()) do if (getPlayerStorageValue(pid, self.kill) ~= -1 or getPlayerStorageValue(pid, self.death) ~= -1) and self:isPlayerInEvent(pid) then local kill = getPlayerStorageValue(pid, self.kill)+1 local death = getPlayerStorageValue(pid, self.death)+1 print(getCreatureName(pid), kill-death) table.insert(frag, {getCreatureName(pid), kill-death}) end end print(#frag) local frag, str, n = doOrderTab(frag, 0), nil, 5 print(#frag) if tab then return frag else if #frag < 5 then n = #frag end for i = 1, n do local cid = getPlayerByName(frag) local kill = getPlayerStorageValue(cid, self.kill)+1 local death = getPlayerStorageValue(cid, self.death)+1 str = str and str .. ", " .. frag .. "[" .. kill .. "/" .. death .. "]" or frag .. "[" .. kill .. "/" .. death .. "]" end end return str end function doOrderTab(tabela, value) local max, index = {}, nil for i = 1, #tabela do valor = value for a, b in ipairs(tabela) do if b[2] > valor then valor = b[2] valor2 = b[1] index = a end end table.remove(tabela, index) if valor ~= value then table.insert(max, valor2) end end return max end Editado Agosto 17, 2015 9 anos por mateusmoretti (veja o histórico de edições)
Postado Agosto 17, 2015 9 anos Não entendi, você quer saber onde está a função que dá os prêmios ou você quer adicionar/remover?
Postado Agosto 17, 2015 9 anos Autor ADicionar a função que assim que o evento acabar, ganhar 1,000,000,00 de exp para todos jogadores que participaram
Postado Agosto 17, 2015 9 anos Entendi... Editado Agosto 17, 2015 9 anos por Caronte (veja o histórico de edições) Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado). Tópicos: [FAQ] BBCODE [LIB] Constant [RME] Administrando bordas. [TALK] Broadcast Editável. [TALK] Sugest. [TALK] Checkpoint. [MOVE] Pântano pegajoso. [ACTION] Piggy Bank. (Cassino). [GLOBAL] Uptime Ad. [C0DE] Consertando 'Invalid Password' [PROGRAM] Quest Maker
Postado Agosto 17, 2015 9 anos Autor Creio que não tem Caronte,! queria adicionar e onde colocar para que funciona nos 3!!!
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.