Postado Junho 18, 2017 7 anos Galera, comentar "UP" nos tópicos é proibido, leiam as regras: 2.7 - Dar "UP" para subir tópicos: É totalmente proibido comentar "UP" para subir tópicos, caso você tenha a intenção você pode utilizar nosso recurso de subir tópicos e ele automaticamente irá te colocar um tempo de espera de 24 horas para realizar a função novamente. Caso o membro realize tal ato isso pode ser interpretado como flood. Regras Gerais: http://www.tibiaking.com/forum/forums/topic/1281-regras-gerais/ ➥ Regras | Seções OTServ | Seções BOT
Postado Março 5, 2018 7 anos @Micheel15 Dá uma tentada com esse: LIB: -- This script is part of Defend the Towers -- Copyright (C) 2016 ChaitoSoft -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. dtt = { pos = { temple_wait = {x=438, y=1138, z=7}, -- sala de espera tp_create = {x=36, y=151, z=7}, -- onde teleport de entrada sera criado }, --Configurações de abertura days_open = {1, 2, 3, 4, 5, 6, 7}, -- dias de semana que vai abrir min_players = 1, -- numero minimo de jogadores em cada time min_level = 200, -- level minimo permitido para entrar no evento wait_time = 3, -- tempo de espera para iniciar o evento, em minutos block_mc = false, -- false para permitir mcs no evento --Configuraçõe gerais delay_time = 10, -- tempo em segundos de delay ao morrer townid = {init = 1, blue = 3, red = 4}, -- init = templo da cidade, blue = templo do time azul, red = templo do time vermelho --Configurações dos premios reward_items = {6527, 6527}, bonus_time = 240, -- experiencia bonus em minutos bonus_rate = 1, -- porcentagem de experiencia bonus: 1 = 100% | 0.3 = 30% --Configuração dos monstros monster = { pos = { --Monstros do time azul a1 = {x=396, y=1138, z=6, stackpos=253}, -- Blue supreme tower a2 = {x=429, y=1107, z=6, stackpos=253}, -- Blue top tower a3 = {x=430, y=1135, z=6, stackpos=253}, -- Blue middle tower a4 = {x=429, y=1167, z=6, stackpos=253}, -- Blue bottom tower -- Monstros do time vermelho b1 = {x=477, y=1138, z=6, stackpos=253}, -- Red supreme tower b2 = {x=447, y=1107, z=6, stackpos=253}, -- Red top tower b3 = {x=445, y=1139, z=6, stackpos=253}, -- Red middle tower b4 = {x=447, y=1167, z=6, stackpos=253}, -- Red bottom tower -- Monstros buff na jungle mbuff1 = {x=440, y=1122, z=6, stackpos=253}, -- Buff sorecer and paladin 1 + 2 mbuff2 = {x=434, y=1155, z=6, stackpos=253}, -- Buff druid and knight 2 + 2 }, --------------------------------------------------- --NÃO MEXA DAQUI PRA BAIXO ----- ------------------------------------------------ name = { -- Azul a1 = "blue supreme tower", -- Base Tower a2 = "blue top tower", -- Top lane a3 = "blue middle tower", -- Middle lane a4 = "blue bottom tower", -- Bottom lane -- Vermelho b1 = "red supreme tower", -- Base Tower b2 = "red top tower", -- Top lane b3 = "red middle tower", -- Middle lane b4 = "red bottom tower", -- Bottom lane --Monstros Buff buff1 = "serpent of jungle", buff2 = "spider of jungle", }, }, --Storages alocadas storage = { win = 87771, -- GLOBAL STORAGE VENCEDOR kill_blue = 87775, -- GLobal storage frags team blue kill_red = 87776, -- GLobal storage frags team red tower_blue = 87777, -- GLobal storage towers team blue tower_red = 87778, -- GLobal storage towers team red team_blue = 9998, -- PLAYER STORAGE TIME A team_red = 9999, -- PLAYER STORAGE TIME A buffvoc1 = 7001, -- PLAYER STORAGE BUFF buffvoc2 = 7002, -- PLAYER STORAGE BUFF buffvoc3 = 7003, -- PLAYER STORAGE BUFF buffvoc4 = 7004, -- PLAYER STORAGE BUFF exp_bonus = 7005, --PLAYER STORAGE EXP BONUS delay = 7006, --PLAYER STORAGE DELAY }, msg = { win_team_blue = "[Defend The Tower] O time azul acabou de derrotar a Suprema Torre Vermelha e vencer o evento.", win_team_red = "[Defend The Tower] O time vermelho acabou de derrotar a Suprema Torre Azul e vencer o evento. ", reward = "[Defend The Tower] Seu time Venceu, voce recebeu como premio o dobro de experiencia por 4 horas automaticamente e 80 event coins, desejamos parabens.", no_reward = "[Defend The Tower] Derrota, confira as estatisticas da partida no site, desejamos mais sorte na proxima.", warning = "[Defend The Tower] Acabou de abrir, acesse o teleporte do templo principal para participar. Inicia em minutos...", start = "[Defend The Tower] Fechou o teleporte de entrada e iniciou o evento boa sorte aos times.", cancel = "[Defend The Tower] Fechou o teleporte de entrada e cancelou o evento por falta de jogadores.", outfit = "[Defend The Tower] Voce nao pode trocar de outfit durante o evento.", }, } local conditionBlue = createConditionObject(CONDITION_OUTFIT) setConditionParam(conditionBlue, CONDITION_PARAM_TICKS, -1) addOutfitCondition(conditionBlue, {lookType = 128, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86}) local conditionRed = createConditionObject(CONDITION_OUTFIT) setConditionParam(conditionRed, CONDITION_PARAM_TICKS, -1) addOutfitCondition(conditionRed, {lookType = 128, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94}) --Metodos set function dtt.setDelay(cid) doPlayerSetStorageValue(cid, dtt.storage.delay, os.time()+(60*dtt.delay_time)) return true end function dtt.setBuff(storTeam, voc1, voc2) local storBuff1 local storBuff2 if (voc1 == 1) and (voc2 == 3) then storBuff1 = dtt.storage.buffvoc1 storBuff2 = dtt.storage.buffvoc3 end if (voc1 == 2) and (voc2 == 4) then storBuff1 = dtt.storage.buffvoc2 storBuff2 = dtt.storage.buffvoc4 end for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, storTeam) == 1 then if (isInArray({voc1, (voc1+4), (voc1+8)}, getPlayerVocation(index.pid))) then doPlayerSetStorageValue(index.pid, storBuff1, 1) end if (isInArray({voc2, (voc2+4), (voc2+8)}, getPlayerVocation(index.pid))) then doPlayerSetStorageValue(index.pid, storBuff2, 1) end end end return true end function dtt.setBonusExp(cid) doPlayerSetStorageValue(cid, dtt.storage.exp_bonus, os.time()+(60*dtt.bonus_time)) return true end function dtt.setTeam() local tmp = 1 local result = db.getResult("SELECT * FROM `dtt_players`;") if result:getID() ~= -1 then repeat pid = tonumber(result:getDataInt("pid")) if(tmp % 2 == 0) then db.query("UPDATE `dtt_players` SET `team` = '0' WHERE `pid` = "..pid..";") tmp = (tmp+1) else db.query("UPDATE `dtt_players` SET `team` = '1' WHERE `pid` = "..pid..";") tmp = (tmp+1) end until(not result:next()) end result:free() end --Metodos GET function dtt.getPlayersInEvent() local result = db.getResult("SELECT * FROM `dtt_players`;") CACHE_PLAYERS = {} if result:getID() ~= -1 then repeat pid = tonumber(result:getDataInt("pid")) team = tonumber(result:getDataInt("team")) -- 0 = blue, 1 = red ip = tonumber(result:getDataInt("ip")) table.insert(CACHE_PLAYERS, {["pid"]=pid,["team"]=team,["ip"]=ip }) until(not result:next()) result:free() return CACHE_PLAYERS end return false end function dtt.getDelay(cid) local statsDelay = getPlayerStorageValue(cid, dtt.storage.delay) if (statsDelay - os.time() > 0) then local delay = 0 local times = dtt.delay_time doCreatureSetNoMove(cid, true) for i = times, 0, -1 do if isPlayer(cid) then addEvent(doPlayerSendCancel, delay, cid, "[Defend The Tower] Volte para a arena em "..i..".") end delay = 2000 + delay if (i == 0) and (isPlayer(cid)) then addEvent(dtt.enableMove, (delay+1000), cid) end end else return false end return true end function dtt.getBonusExp(cid) local statsBonus = getPlayerStorageValue(cid, dtt.storage.exp_bonus) return statsBonus - os.time() > 0 end --Outros métodos function dtt.enableMove(cid) doCreatureSetNoMove(cid, false) doPlayerSendCancel(cid, "[Defend The Tower] GO GO GO! seu time o aguarda.") setPlayerStorageValue(cid, dtt.storage.delay, 0) return true end function dtt.resetGlobalStorages() setGlobalStorageValue(dtt.storage.win, -1) setGlobalStorageValue(dtt.storage.kill_blue, 0) setGlobalStorageValue(dtt.storage.kill_red, 0) setGlobalStorageValue(dtt.storage.tower_blue, 0) setGlobalStorageValue(dtt.storage.tower_red, 0) print("[Defend The Tower] Todos os globais storages foram resetados...") return true end function dtt.resetPlayerStorages() if dtt.getPlayersInEvent() then for _, index in ipairs(dtt.getPlayersInEvent()) do doPlayerSetStorageValue(index.pid, dtt.storage.team_blue, 0) doPlayerSetStorageValue(index.pid, dtt.storage.team_red, 0) doPlayerSetStorageValue(index.pid, dtt.storage.buffvoc1, 0) doPlayerSetStorageValue(index.pid, dtt.storage.buffvoc2, 0) doPlayerSetStorageValue(index.pid, dtt.storage.buffvoc3, 0) doPlayerSetStorageValue(index.pid, dtt.storage.buffvoc4, 0) end print("[Defend The Tower] Todos os players storages foram resetados...") return true else print("[Defend The Tower] Tabela vazia...") end return true end function dtt.createMonsters() doSummonCreature(dtt.monster.name.a1, dtt.monster.pos.a1) doSummonCreature(dtt.monster.name.a2, dtt.monster.pos.a2) doSummonCreature(dtt.monster.name.a3, dtt.monster.pos.a3) doSummonCreature(dtt.monster.name.a4, dtt.monster.pos.a4) doSummonCreature(dtt.monster.name.b1, dtt.monster.pos.b1) doSummonCreature(dtt.monster.name.b2, dtt.monster.pos.b2) doSummonCreature(dtt.monster.name.b3, dtt.monster.pos.b3) doSummonCreature(dtt.monster.name.b4, dtt.monster.pos.b4) doSummonCreature(dtt.monster.name.buff1, dtt.monster.pos.mbuff1) doSummonCreature(dtt.monster.name.buff2, dtt.monster.pos.mbuff2) print("[Defend The Tower] Os monstros da arena battle foram sumonados...") return true end function dtt.countPlayers() local result = db.getResult("SELECT * FROM `dtt_players`;") local qntPlayers = 0 if result:getID() ~= -1 then repeat qntPlayers = (qntPlayers+1) until(not result:next()) end return qntPlayers end function dtt.trucatePlayersInEvent() local result = db.getResult("SELECT * FROM `dtt_players`;") if result:getID() ~= -1 then db.query("TRUNCATE TABLE `dtt_players`;") print("[Defend The Tower] Todos dados da tabela 'dtt_players' foram apagados...") end return true end -- FUNÇÕES PRINCIPAIS -- ABERTURA DO EVENTO function dtt.open() local time = os.date("*t") local timeopen1 = math.ceil(dtt.wait_time / 4) local timeopen2 = math.ceil(dtt.wait_time / 2) if (isInArray(dtt.days_open, time.wday)) then local tp = doCreateItem(1387, 1, dtt.pos.tp_create) doItemSetAttribute(tp, "aid", 9801) dtt.resetGlobalStorages() dtt.trucatePlayersInEvent() dtt.removeItemsTower() doBroadcastMessage(dtt.msg.warning) addEvent(doBroadcastMessage, timeopen1*1000*60, "[Defend The Tower] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!") if (timeopen2 ~= timeopen1) then addEvent(doBroadcastMessage, timeopen2*1000*60, "[Defend The Tower] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!") end addEvent(dtt.start, dtt.wait_time*1000*60,nil) end return true end -- COMEÇO DO EVENTO function dtt.start() local tp = getTileItemById(dtt.pos.tp_create, 1387).uid doRemoveItem(tp) if (dtt.min_players <= dtt.countPlayers()) then dtt.createMonsters() dtt.sendPlayersToEvent() doBroadcastMessage(dtt.msg.start) else doBroadcastMessage(dtt.msg.cancel) end return true end -- FECHANDO O EVENTO function dtt.close() for _, index in ipairs(dtt.getPlayersInEvent()) do doRemoveCondition(index.pid, CONDITION_OUTFIT) doRemoveCondition(index.pid, CONDITION_INFIGHT) doPlayerSetPzLocked(index.pid, false) if (getGlobalStorageValue(dtt.storage.win) == "blue") then if (index.team == 0) then doPlayerSetTown(index.pid, dtt.townid.init) doTeleportThing(index.pid, getTownTemplePosition(dtt.townid.init)) dtt.reward(index.pid) else doPlayerSetTown(index.pid, dtt.townid.init) doTeleportThing(index.pid, getTownTemplePosition(dtt.townid.init)) doPlayerSendTextMessage(index.pid, 25, dtt.msg.no_reward) end end if (getGlobalStorageValue(dtt.storage.win) == "red") then if (index.team == 1) then doPlayerSetTown(index.pid, dtt.townid.init) doTeleportThing(index.pid, getTownTemplePosition(dtt.townid.init)) dtt.reward(index.pid) else doPlayerSetTown(index.pid, dtt.townid.init) doTeleportThing(index.pid, getTownTemplePosition(dtt.townid.init)) doPlayerSendTextMessage(index.pid, 25, dtt.msg.no_reward) end end end --- limpando storage dos jogadores dtt.resetPlayerStorages() return true end function dtt.sendPlayersToEvent() dtt.setTeam() dtt.resetPlayerStorages() for _, index in ipairs(dtt.getPlayersInEvent()) do if (index.team == 0) then doAddCondition(index.pid, conditionBlue) doPlayerSetTown(index.pid, dtt.townid.blue) doTeleportThing(index.pid, getTownTemplePosition(dtt.townid.blue)) doPlayerSetStorageValue(index.pid, dtt.storage.team_blue, 1) end if (index.team == 1) then doAddCondition(index.pid, conditionRed) doPlayerSetTown(index.pid, dtt.townid.red) doTeleportThing(index.pid, getTownTemplePosition(dtt.townid.red)) doPlayerSetStorageValue(index.pid, dtt.storage.team_red, 1) end end return true end function dtt.reward(pid) local random_item = dtt.reward_items[math.random(1, #dtt.reward_items)] doPlayerAddItem(pid, 6527, 80) dtt.setBonusExp(pid) doPlayerSendTextMessage(pid, 25, dtt.msg.reward) return true end function dtt.removeItemsTower() if (getTileItemById(dtt.monster.pos.a2, 9596).uid) then doRemoveItem(getTileItemById(dtt.monster.pos.a2, 9596).uid) doRemoveItem(getTileItemById(dtt.monster.pos.a3, 9596).uid) doRemoveItem(getTileItemById(dtt.monster.pos.a4, 9596).uid) doRemoveItem(getTileItemById(dtt.monster.pos.b2, 9596).uid) doRemoveItem(getTileItemById(dtt.monster.pos.b3, 9596).uid) doRemoveItem(getTileItemById(dtt.monster.pos.b4, 9596).uid) print("[DEFEND THE TOWERS] Items torre limpos da arena de batalha...") else print("[DEFEND THE TOWERS] Nenhum item torre na arena de batalha...") end return true end function dtt.resultBattle() local frags_blue = getGlobalStorageValue(dtt.storage.kill_blue) local frags_red = getGlobalStorageValue(dtt.storage.kill_red) local towers_blue = getGlobalStorageValue(dtt.storage.tower_blue) local towers_red = getGlobalStorageValue(dtt.storage.tower_red) local hora = os.date("%X") local data = os.date("%x") db.query("INSERT INTO `dtt_results` VALUES ('', ".. frags_blue .. ",".. frags_red ..", ".. towers_blue ..", ".. towers_red ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");") return true end function dtt.warningAttack(cid, msg, storTeam) local lifePercent = 100 / (getCreatureMaxHealth(cid) / getCreatureHealth(cid)) if (lifePercent <= 100) and (lifePercent >= 99.9) then for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, storTeam) == 1 then doPlayerSendTextMessage(index.pid, 25, "[Defend The Tower] A torre "..msg.." esta sob ataque. Corra para defender!") end end end if (lifePercent <= 50) and (lifePercent >= 49.9) then for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, storTeam) == 1 then doPlayerSendTextMessage(index.pid, 25, "[Defend The Tower] A torre "..msg.." esta sob ataque. Corra para defender!") end end end if (lifePercent <= 20) and (lifePercent >= 19.9) then for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, storTeam) == 1 then doPlayerSendTextMessage(index.pid, 25, "[Defend The Tower] A torre "..msg.." esta sob ataque. Corra para defender!") end end end return true end function dtt.removeMonsters() for i= 1,4 do thing = getThingfromPos (dtt.monster.pos.a..i) thing = thing.uid thing2 = getThingfromPos (dtt.monster.pos.b..i) thing2 = thing.uid if isCreature (thing) then doRemoveCreature (thing) end if isCreature (thing2) then doRemoveCreature (thing2) end end return true end function dtt.cleanPlayer(cid) doPlayerSetTown(cid, dtt.townid.init) doTeleportThing(cid, getTownTemplePosition(dtt.townid.init)) doPlayerSetStorageValue(cid, dtt.storage.team_blue, 0) doPlayerSetStorageValue(cid, dtt.storage.team_red, 0) doPlayerSetStorageValue(cid, dtt.storage.buffvoc1, 0) doPlayerSetStorageValue(cid, dtt.storage.buffvoc2, 0) doPlayerSetStorageValue(cid, dtt.storage.buffvoc3, 0) doPlayerSetStorageValue(cid, dtt.storage.buffvoc4, 0) return true end Scripts: function onLogin(cid) registerCreatureEvent(cid, "dttDeath") registerCreatureEvent(cid, "dttPrepare") registerCreatureEvent(cid, "dttStats") registerCreatureEvent(cid, "dttOutfit") registerCreatureEvent(cid, "dttKill") registerCreatureEvent(cid, "dttCombat") if (getPlayerStorageValue(cid, dtt.storage.team_blue) == 1) or (getPlayerStorageValue(cid, dtt.storage.team_red) == 1) then dtt.cleanPlayer(cid) end if (dtt.getBonusExp(cid)) then doPlayerSendTextMessage(cid,25, "[DEFEND THE TOWER] Voce esta com "..dtt.bonus_rate.."x de bonus experiencia.") end return true end --Preparar jogadores pra morte function onPrepareDeath(cid, deathList) if not isPlayer(cid) then return true end if (getPlayerStorageValue(cid, dtt.storage.team_blue) == 1) or (getPlayerStorageValue(cid, dtt.storage.team_red) == 1) then local strings = {""} local j, position, corpse = 1, 1, 0 --Dropar corpo ficticio 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) dtt.setDelay(cid) dtt.getDelay(cid) end --Adicionando contagem de frags if (getPlayerStorageValue(cid, dtt.storage.team_blue) == 1) then setGlobalStorageValue(dtt.storage.kill_blue, (getGlobalStorageValue(dtt.storage.kill_blue)+1)) doPlayerSetTown(cid, dtt.townid.blue) elseif (getPlayerStorageValue(cid, dtt.storage.team_red) == 1) then setGlobalStorageValue(dtt.storage.kill_red, (getGlobalStorageValue(dtt.storage.kill_red)+1)) doPlayerSetTown(cid, dtt.townid.red) end return true end --Atacar jogadores do mesmo time function onCombat(cid, target) --Membros do mesmo time se atacando if isPlayer(cid) and isPlayer(target) then if (getPlayerStorageValue(cid, dtt.storage.team_blue) == 1) and (getPlayerStorageValue(target, dtt.storage.team_blue) == 1) then doPlayerSendCancel(cid, "[DEFEND THE TOWER] Nao se pode atacar um membro do mesmo time.") return false end if (getPlayerStorageValue(cid, dtt.storage.team_red) == 1) and (getPlayerStorageValue(target, dtt.storage.team_red) == 1) then doPlayerSendCancel(cid, "[DEFEND THE TOWER] Nao se pode atacar um membro do mesmo time.") return false end end --Membro time azul atacando propria torre if getPlayerStorageValue(cid, dtt.storage.team_blue) == 1 and isMonster(target) then if (getCreatureName(target) == dtt.monster.name.a1) then return false end if (getCreatureName(target) == dtt.monster.name.a2) then return false end if (getCreatureName(target) == dtt.monster.name.a3) then return false end if (getCreatureName(target) == dtt.monster.name.a4) then return false end end --Membro time vermelho atacando propria torre if getPlayerStorageValue(cid, dtt.storage.team_red) == 1 and isMonster(target) then if (getCreatureName(target) == dtt.monster.name.b1) then return false end if (getCreatureName(target) == dtt.monster.name.b2) then return false end if (getCreatureName(target) == dtt.monster.name.b3) then return false end if (getCreatureName(target) == dtt.monster.name.b4) then return false end end --Impedir que ataquem torres secundarias if (getCreatureName(target) == dtt.monster.name.a1) and isMonster(target) then if(isCreature(getThingFromPos(dtt.monster.pos.a2).uid) or isCreature(getThingFromPos(dtt.monster.pos.a3).uid) or isCreature(getThingFromPos(dtt.monster.pos.a4).uid)) then -- SE ALGUM VALOR DER TRUE NÃO VAI PODER ATACAR return false end end if (getCreatureName(target) == dtt.monster.name.b1) and isMonster(target) then if(isCreature(getThingFromPos(dtt.monster.pos.b2).uid) or isCreature(getThingFromPos(dtt.monster.pos.b3).uid) or isCreature(getThingFromPos(dtt.monster.pos.b4).uid)) then -- SE ALGUM VALOR DER TRUE NÃO VAI PODER ATACAR return false end end return true end --Bonus exp function onKill(cid, target) if (dtt.getBonusExp(cid)) and isMonster(target) then doPlayerAddExp(cid, getMonsterInfo(getCreatureName(target)).experience * dtt.bonus_rate) end return true end --Aviso de attack sobre as torres function onStatsChange(cid, attacker, type, combat, value) if not isPlayer(attacker) then return true end -- Avisar que as torres estão sendo atacadas | a2 = top, a3 = middle, a4 = bottom. if (type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == dtt.monster.name.a2) then dtt.warningAttack(cid, "azul do topo", dtt.storage.team_blue) end if (type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == dtt.monster.name.a3) then dtt.warningAttack(cid, "azul do meio", dtt.storage.team_blue) end if (type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == dtt.monster.name.a4) then dtt.warningAttack(cid, "azul de baixo", dtt.storage.team_blue) end if (type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == dtt.monster.name.b2) then dtt.warningAttack(cid, "vermelha do topo", dtt.storage.team_red) end if (type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == dtt.monster.name.b3) then dtt.warningAttack(cid, "vermelha do meio", dtt.storage.team_red) end if (type == STATSCHANGE_HEALTHLOSS) and (getCreatureName(cid) == dtt.monster.name.b4) then dtt.warningAttack(cid, "vermelha de baixo", dtt.storage.team_red) end return true end --Impedindo troca de outfit durante o evento function onOutfit(cid, old, current) if getPlayerStorageValue(cid, dtt.storage.team_blue) == 1 or getPlayerStorageValue(cid, dtt.storage.team_red) == 1 then doPlayerSendCancel(cid, dtt.msg.outfit) return false end return true end --Tratando morte dos montros buff e torres function onDeath(cid, corpse, mostDamageKiller) --Avisos de morte torres time azul creatureName = getCreatureName (cid) if creatureName == dtt.monster.name.a2 then doBroadcastMessage("[DEFEND THE TOWER] A torre azul do topo foi destruida.", MESSAGE_EVENT_ADVANCE) doCreateItem(9596, dtt.monster.pos.a2) setGlobalStorageValue(dtt.storage.tower_red, (getGlobalStorageValue(dtt.storage.tower_red)+1)) elseif creatureName == dtt.monster.name.a3 then broadcastMessage("[DEFEND THE TOWER] A torre azul do meio foi destruida.", MESSAGE_EVENT_ADVANCE) doCreateItem(9596, dtt.monster.pos.a3) setGlobalStorageValue(dtt.storage.tower_red, (getGlobalStorageValue(dtt.storage.tower_red)+1)) elseif creatureName == dtt.monster.name.a4 then broadcastMessage("[DEFEND THE TOWER] A torre azul de baixo foi destruida.", MESSAGE_EVENT_ADVANCE) doCreateItem(9596, dtt.monster.pos.a4) setGlobalStorageValue(dtt.storage.tower_red, (getGlobalStorageValue(dtt.storage.tower_red)+1)) --Avisos de morte torres time vermelho elseif creatureName == dtt.monster.name.b2 then broadcastMessage("[DEFEND THE TOWER] A torre vermelha do topo foi destruida.", MESSAGE_EVENT_ADVANCE) doCreateItem(9596, dtt.monster.pos.b2) setGlobalStorageValue(dtt.storage.tower_blue, (getGlobalStorageValue(dtt.storage.tower_blue)+1)) elseif creatureName == dtt.monster.name.b3 then broadcastMessage("[DEFEND THE TOWER] A torre vermelha do meio foi destruida.", MESSAGE_EVENT_ADVANCE) doCreateItem(9596, dtt.monster.pos.b3) setGlobalStorageValue(dtt.storage.tower_blue, (getGlobalStorageValue(dtt.storage.tower_blue)+1)) elseif creatureName == dtt.monster.name.b4 then broadcastMessage("[DEFEND THE TOWER] A torre vermelha de baixo foi destruida.", MESSAGE_EVENT_ADVANCE) doCreateItem(9596, dtt.monster.pos.b4) setGlobalStorageValue(dtt.storage.tower_blue, (getGlobalStorageValue(dtt.storage.tower_blue)+1)) --Aviso ultimas torres e abertura do teleporte elseif creatureName == dtt.monster.name.a1 then dtt.removeMonsters() setGlobalStorageValue(dtt.storage.win, "red") setGlobalStorageValue(dtt.storage.tower_red, (getGlobalStorageValue(dtt.storage.tower_red)+1)) dtt.close() broadcastMessage(dtt.msg.win_team_red, MESSAGE_EVENT_ADVANCE) dtt.resultBattle() --Aviso ultimas torres e abertura do teleporte elseif creatureName == dtt.monster.name.b1 then dtt.removeMonsters() setGlobalStorageValue(dtt.storage.win, "blue") setGlobalStorageValue(dtt.storage.tower_blue, (getGlobalStorageValue(dtt.storage.tower_blue)+1)) dtt.close() broadcastMessage(dtt.msg.win_team_blue, MESSAGE_EVENT_ADVANCE) dtt.resultBattle() --Verificando buff sorcerer and paladin if creatureName == dtt.monster.name.buff1 then if (getPlayerStorageValue(mostDamageKiller[1], dtt.storage.team_blue) == 1) then dtt.setBuff(dtt.storage.team_blue, 1, 3) for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, dtt.storage.team_blue) == 1 then doPlayerSendTextMessage(index.pid, 25, "[DEFEND THE TOWER] Os sorcerers e paladinos do seu time receberao buff, utilize as magias wizard buff ou archer buff.") end end else dtt.setBuff(dtt.storage.team_red, 1, 3) for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, dtt.storage.team_red) == 1 then doPlayerSendTextMessage(index.pid, 25, "[DEFEND THE TOWER] Os sorcerers e paladinos do seu time receberao buff, utilize as magias wizard buff ou archer buff.") end end end end --Verificando buff druid and knight if creatureName == dtt.monster.name.buff2 then if (getPlayerStorageValue(mostDamageKiller[1], dtt.storage.team_blue) == 1) then dtt.setBuff(dtt.storage.team_blue, 2, 4) for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, dtt.storage.team_blue) == 1 then doPlayerSendTextMessage(index.pid, 25, "[DEFEND THE TOWER] Os druids e knights do seu time receberao buff, utilize as magias magician buff ou warrior buff.") end end else dtt.setBuff(dtt.storage.team_red, 2, 4) for _, index in ipairs(dtt.getPlayersInEvent()) do if getPlayerStorageValue(index.pid, dtt.storage.team_red) == 1 then doPlayerSendTextMessage(index.pid, 25, "[DEFEND THE TOWER] Os druids e knights do seu time receberao buff, utilize as magias magician buff ou warrior buff.") end end end end end return true end Editado Março 5, 2018 7 anos por marcot (veja o histórico de edições)
Postado Março 7, 2018 7 anos Autor @marcot aconteceu um erro de no banco de dados, e o evento parece que não reconhece que tem players, cada vez que 1 player entra e vai pra sala de espera aparece 1 erro deste ai, não sei o motivo, imagem abaixo: Editado Março 7, 2018 7 anos por Micheel15 (veja o histórico de edições)
Postado Março 11, 2018 7 anos micheel adiciona na sua db os query CREATE TABLE IF NOT EXISTS `dtt_results` ( `id` int(11) NOT NULL AUTO_INCREMENT, `frags_blue` int(11) NOT NULL, `frags_red` int(11) NOT NULL, `towers_blue` int(11) NOT NULL, `towers_red` int(11) NOT NULL, `data` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, `hora` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `dtt_players` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` bigint(20) NOT NULL, `team` int(5) NOT NULL, `ip` bigint(50) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
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.