Ir para conteúdo

Sarah Wesker

Membro
  • Registro em

  • Última visita

Tudo que Sarah Wesker postou

  1. dofile('data/lib/events/firestorm_event.lua') function onSay(player, words, param) if Game.getStorageValue(configFireStormEvent.storages.joining) ~= 1 then player:sendCancelMessage('Fire Storm Event hasn\'t started yet.') return false elseif param == '' then player:sendCancelMessage('Command param required (say: "!fire join" or "!fire leave.").') return false elseif player:getLevel() < configFireStormEvent.players.minLevel then player:sendCancelMessage('You can\'t join to the event if you don\'t have a require '..configFireStormEvent.players.minLevel..' level.') return false elseif getTileInfo(player:getPosition()).protection ~= true then player:sendCancelMessage('You can\'t join to the event if you aren\'t in protection zone.') return false elseif player:getExhaustion(configFireStormEvent.storages.exhaust) > 0 then player:sendCancelMessage('You must wait '..player:getExhaustion(configFireStormEvent.storages.exhaust)..' seconds to use this command again.') return false end if param == 'join' then if player:getStorageValue(configFireStormEvent.storages.player) > 0 then player:sendCancelMessage('You have arleady joined to event. Wait patiently for start.') return false elseif doCountPlayersFireStormEvent() == configFireStormEvent.players.max then player:sendCancelMessage('Max players in the event have been reached.') return false end player:setMoveLocked(true) player:popupFYI(configFireStormEvent.text) player:setStorageValue(configFireStormEvent.storages.player, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have joined to Fire Storm Event. You can\'t move until event don\'t start. Wait patiently for the event start.') player:sendTextMessage(MESSAGE_EVENT_ORANGE, 'You have joined to Fire Storm Event.') elseif param == 'leave' then if player:getStorageValue(configFireStormEvent.storages.player) == 1 then player:setMoveLocked(false) player:setStorageValue(configFireStormEvent.storages.player, -1) player:sendTextMessage(MESSAGE_EVENT_ORANGE, 'You have left from the Fire Storm Event.') else player:sendCancelMessage('Command param required (say: "!fire join").') return false end end player:setExhaustion(configFireStormEvent.storages.exhaust, 5) return false end Ready 100% quem criou este código, não está muito familiarizado com o TFS 1.x +
  2. dofile('data/lib/events/firestorm_event.lua') function onSay(player, words, param) if Game.getStorageValue(configFireStormEvent.storages.joining) ~= 1 then player:sendCancelMessage('Fire Storm Event hasn\'t started yet.') return false elseif param == '' then player:sendCancelMessage('Command param required (say: "!fire join" or "!fire leave.").') return false elseif player:getLevel() < configFireStormEvent.players.minLevel then player:sendCancelMessage('You can\'t join to the event if you don\'t have a require '..configFireStormEvent.players.minLevel..' level.') return false elseif getTileInfo(player:getPosition()).protection ~= true then player:sendCancelMessage('You can\'t join to the event if you aren\'t in protection zone.') return false elseif player.getExhaustion(player, configFireStormEvent.storages.exhaust) > 0 then player:sendCancelMessage('You must wait '..player.getExhaustion(player, configFireStormEvent.storages.exhaust)..' seconds to use this command again.') return false end if param == 'join' then if player:getStorageValue(configFireStormEvent.storages.player) > 0 then player:sendCancelMessage('You have arleady joined to event. Wait patiently for start.') return false elseif doCountPlayersFireStormEvent() == configFireStormEvent.players.max then player:sendCancelMessage('Max players in the event have been reached.') return false end player:setMoveLocked(player, true) player:popupFYI(configFireStormEvent.text) player:setStorageValue(configFireStormEvent.storages.player, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have joined to Fire Storm Event. You can\'t move until event don\'t start. Wait patiently for the event start.') player:sendTextMessage(MESSAGE_EVENT_ORANGE, 'You have joined to Fire Storm Event.') elseif param == 'leave' then if player:getStorageValue(configFireStormEvent.storages.player) == 1 then player:setMoveLocked(false) player:setStorageValue(configFireStormEvent.storages.player, -1) player:sendTextMessage(MESSAGE_EVENT_ORANGE, 'You have left from the Fire Storm Event.') else player:sendCancelMessage('Command param required (say: "!fire join").') return false end end player:setExhaustion(configFireStormEvent.storages.exhaust, 5) return false end
  3. Sua solução é adicione isso ao data/lib/core/player.lua function Player.setExhaustion(self, value, time) return self:setStorageValue(value, time + os.time()) end function Player.getExhaustion(self, value) local storage = self:getStorageValue(value) if storage <= 0 then return 0 end return storage - os.time() end se você estiver pensando em usar outro evento: fácil de usar.
  4. >> Only TFS 1.X+ << Oi tudo bem, espero que bem. Hoje, apenas começando o ano novo, quero dar-lhe um Firestorm event que eu criei com muito amor para você. Atualmente, há muitos eventos semelhantes, mas espero que você dê uma chance ao meu Firestorm event. Em seguida, vou explicar rapidamente como usar o Firestorm event. (( Passo 1 )) Crie um novo arquivo.lua na pasta: ( data/lib/ ) com o nome ( fire_storm.lua ) Copie e cole o código no arquivo fire_storm.lua --[[ * Fire Storm Event * Evento creado por Sarah Wesker Dia 31 de Diciembre del 2018 a las 12:30 a.m. Version compatible con TFS 1.x+ ]]-- local DEBUG_ON = true local RELOAD_LIB_ON = true local SHOW_COPYRIGHT = true if RELOAD_LIB_ON or not FSE then if not FSE then print([[>>> The Firestorm Event lib loading...]]) end ---@Fire Storm Event FSE = {} ---@Room Properties FSE.room = {} FSE.room.from = Position(3095, 1847, 8) FSE.room.rangeX = 33 FSE.room.rangeY = 31 ---@Temple Position FSE.getTemplePosition = Position(3191, 1809, 7) ---@Attack Properties FSE.attackSignalEffect = CONST_ME_HITBYFIRE FSE.attackEffect = CONST_ME_FIREAREA FSE.attackDistEffect = CONST_ANI_FIRE ---@Player Counts FSE.players = {} FSE.players.min = 2 FSE.players.max = 30 FSE.players.win = 1 -- always less than FSE.players.min ---@Timers in seconds FSE.timer = {} FSE.timer.removeTp = 20 FSE.timer.checking = 2 FSE.timer.signal = {} FSE.timer.signal.min = 0.1 FSE.timer.signal.max = 0.5 FSE.timer.events = {} ---@Game Dificulty FSE.dificulty = {} FSE.dificulty.attacks = 30 FSE.dificulty.increment = 1 FSE.dificulty.D_attacks = FSE.dificulty.attacks FSE.dificulty.D_increment = FSE.dificulty.increment ---@Teleport Properties FSE.teleport = {} FSE.teleport.itemid = 1387 FSE.teleport.position = Position(3187, 1816, 7) FSE.teleport.destination = Position(3111, 1863, 8) FSE.teleport.actionid = 64500 -- movement script aid FSE.status = [[Stoped]] FSE.rewardContainerName = [[Firestorm Reward]] FSE.rewardContainerID = 2596 FSE.rewards = { -- { id = xxxx, count = 1 to 100 } { id = 2160, count = 100 }, { id = 2160, count = 100 } } function FSE:removeTp(seconds) local teleport = FSE.teleport.position:getTile():getItemById(FSE.teleport.itemid) if teleport then teleport:remove() FSE.teleport.position:sendMagicEffect(CONST_ME_POFF) end FSE:CheckControl() end function FSE:Init() if FSE.status == [[Stoped]] then FSE.status = [[Waiting]] local teleport = Game.createItem(FSE.teleport.itemid, 1, FSE.teleport.position) if not teleport then FSE:Stoped() return DEBUG_ON and print([[The Firestorm Event teleport could not be created.]]) else teleport:setActionId(FSE.teleport.actionid) end addEvent(FSE.removeTp, FSE.timer.removeTp * 1000) Game.broadcastMessage(string.format([[The Firestorm Event has been activated, waiting for participants, You have %s to enter.]], getStringTimeEnglish(FSE.timer.removeTp))) else return DEBUG_ON and print([[The Firestorm Event is trying to start, but an active instance already exists.]]) end end function FSE:Stoped(players, causeMessage, forceStoped) FSE.status = [[Stoped]] for index, eventID in pairs(FSE.timer.events) do stopEvent(eventID) end FSE.timer.events = {} for index, player in pairs(players) do player:teleportTo(FSE.getTemplePosition, false) end FSE.getTemplePosition:sendMagicEffect(CONST_ME_TELEPORT) if forceStoped then Game.broadcastMessage([[The Firestorm Event was forced to close.]]) elseif causeMessage then Game.broadcastMessage(causeMessage) end FSE.dificulty.attacks = FSE.dificulty.D_attacks FSE.dificulty.increment = FSE.dificulty.D_increment return true end function FSE:Started(startMessage) FSE.status = [[Started]] if startMessage then Game.broadcastMessage(startMessage) end FSE:CheckControl() end function FSE:AddEvent(eventID) table.insert(FSE.timer.events, eventID) return eventID end local function getWinNames(players) local names = [[]] for index, player in pairs(players) do names = string.format([[%s%s%s]], names, player:getName(), next(players, index) == nil and '.' or [[, ]]) end return names end function FSE:CheckControl() if FSE.status == [[Stoped]] then -- Break Control elseif FSE.status == [[Waiting]] then local players = FSE:GetPlayers() if #players < FSE.players.min then FSE:Stoped(players, [[The Firestorm Event could not be started because there are not enough participants.]]) else FSE:Started() end elseif FSE.status == [[Started]] then local players = FSE:GetPlayers() if #players <= FSE.players.win then if #players == 0 then FSE:Stoped(players, [[The Firestorm Event has ended.]]) else FSE:Stoped(players, string.format([[The Firestorm Event has ended, the winners are: %s]], getWinNames(players))) FSE:SendRewardToPlayers(players) end FSE:AllRightReserve() -- only credits you can remove if want. else for index = 1, FSE.dificulty.attacks do addEvent(FSE.AttackSignal, math.random(FSE.timer.signal.min * 1000, FSE.timer.signal.max * 1000)) end FSE.dificulty.attacks = FSE.dificulty.attacks + FSE.dificulty.increment FSE:AddEvent(addEvent(FSE.CheckControl, FSE.timer.checking * 1000)) end end end function FSE:GetPlayers() local spectators = Game.getSpectators(FSE.room.from, false, true, 1, FSE.room.rangeX, 1, FSE.room.rangeY) local players = {} if spectators and #spectators > 0 then for index, player in pairs(spectators) do if not player:getGroup():getAccess() then players[#players + 1] = player end end end return players end local function getRewardNames(items) local names = [[]] for index, item in pairs(items) do local it = ItemType(item.id) names = string.format([[%s%u %s%s]], names, item.count, it:getName(), next(items, index) == nil and '.' or [[, ]]) end return names end function FSE:SendRewardToPlayers(players) for index, player in pairs(players) do local depotChest = player:getDepotChest(0, true) if depotChest then local rewardContainer = Game.createItem(FSE.rewardContainerID, 1) if rewardContainer then rewardContainer:setName(FSE.rewardContainerName) local rewardNames = getRewardNames(FSE.rewards) for index2, item in pairs(FSE.rewards) do rewardContainer:addItem(item.id, item.count) end if depotChest:addItemEx(rewardContainer, INDEX_WHEREEVER, FLAG_NOLIMIT) then player:sendTextMessage(MESSAGE_INFO_DESCR, string.format([[You have received on your depot chest: %s]], rewardNames)) end end end end end function FSE:GetRandomTile() local foundTile = Tile(FSE.room.from + Position(math.random(0, FSE.room.rangeX), math.random(0, FSE.room.rangeY), 0)) while not foundTile or not foundTile:getGround() or foundTile:hasProperty(CONST_PROP_BLOCKSOLID) do foundTile = Tile(FSE.room.from + Position(math.random(0, FSE.room.rangeX), math.random(0, FSE.room.rangeY), 0)) end return foundTile end function FSE:AttackSignal() local foundTile = FSE:GetRandomTile() if not foundTile then return DEBUG_ON and print([[Not tile could be found in the Firestorm Event area.]]) end local position = foundTile:getPosition() position:sendMagicEffect(FSE.attackSignalEffect) return addEvent(FSE.AttackTile, 500, self, { x = position.x, y = position.y, z = position.z }) end function FSE:AttackTile(tpos) local position = Position(tpos) local creatures = position:getTile():getCreatures() local fromposdist = (position-Position(5, 5, 0)) fromposdist:sendDistanceEffect(position, FSE.attackDistEffect) position:sendMagicEffect(FSE.attackEffect) if creatures and #creatures > 0 then for index, creature in pairs(creatures) do local player = creature:getPlayer() if player and not player:getGroup():getAccess() then position:sendMagicEffect(CONST_ME_POFF) player:teleportTo(FSE.getTemplePosition, false) FSE.getTemplePosition:sendMagicEffect(CONST_ME_TELEPORT) Game.broadcastMessage(string.format([[The player %s has been eliminated from the Firestorm Event.]], player:getName())) end end end end function FSE:AllRightReserve() return SHOW_COPYRIGHT and print([[The Firestorm Event has ended, all rights reserved for Sarah Wesker.]]) end if type(FSE) == [[table]] then print([[>>> The Firestorm Event lib has successfully loaded.]]) end end (( Passo 2 )) Abra o arquivo ( data/lib/lib.lua ) e adicione esta linha: dofile('data/lib/fire_storm.lua') (( Passo 3 )) Abra o arquivo ( data/movements/movements.xml ) e adicione esta linha: <movevent event="StepIn" actionid="64500" script="fire_storm.lua" /> (( Passo 4 )) Vá para a pasta ( data/movements/scripts ) e crie um novo arquivo.lua ( fire_storm.lua ) Copie e cole o seguinte código nesse novo arquivo.lua function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if player then if #FSE:GetPlayers() >= FSE.players.max then player:teleportTo(FSE.getTemplePosition, false) FSE.getTemplePosition:sendMagicEffect(CONST_ME_TELEPORT) else player:teleportTo(FSE.teleport.destination, false) FSE.teleport.destination:sendMagicEffect(CONST_ME_TELEPORT) if not player:getGroup():getAccess() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, [[Welcome to the Firestorm Event, you have to survive the rain of fire to win.]]) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, [[Welcome, administrators can only participate as spectators.]]) end end else creature:teleportTo(fromPosition, false) end return true end (( Passo 5 )) Faça o evento começar em um determinado horário! Você abre o arquivo ( data/globalevents/globalevents.xml ) e adicione esta linha: <globalevent name="Firestorm Event" time="12:00:00" script="fire_strom.lua" /> (( Passo 6 )) Crie um novo arquivo.lua dentro da pasta ( data/globalevents/scripts/ ) -> ( fire_storm.lua ) e adicione este código dentro desse arquivo: function onTime(interval) FSE:Init() return true end (( The End )) Aproveite (( Others )) FSE:Init() | Para iniciar o evento. FSE:Stoped() | Para parar o evento. (( REF IMAGES )) | https://prnt.sc/m2a6ov | | https://prnt.sc/m2a6gf | | https://prnt.sc/m2a7t5 |

Informação Importante

Confirmação de Termo