Postado Agosto 22, 2015 9 anos Informações Sistema disponibilizado e atualizado por hellboy. Para TFS 0.3.6, 0.4 e 1.0: Clique nesse tópico. Basicamente é a mesma função. Adicionado no sistema: lista de players ignorados. Instalando data/lib/hunger.lua -- Hunger System by Kronos -- version="1.2" -- author Hellboy aka Kronos (idea Nandonalt) -- CONFIG hungerConfig = { FIRST_LOGIN = -1, storageStage = 3636, storageOnDeathFeed = 3637, storageDmgAndCheckTicks = 3638, dmgAmount = 1, dmgAndCheckTicks = 5, newPlayerFeed = 30, ignore = { "Account Manager" }, stages = { [1] = {minFeed = 15, msg = "You will die if you don't eat something."}, [2] = {minFeed = 90, msg = "You are very hungry."}, [3] = {minFeed = 200, msg = "You are hungry."}, [4] = {minFeed = 395, msg = "You can eat something."}, [5] = {minFeed = 400, msg = "You are full."} } } -- /CONFIG function Player.hungerIgnorePlayer(self) return isInArray(hungerConfig.ignore, self:getName()) end function Player.hungerGetFeed(self) local feedCondition = self:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT) if feedCondition then return math.floor(feedCondition:getTicks() / 1000) end return 0 end function Player.hungerGetFeedStorage(self) return self:getStorageValue(hungerConfig.storageOnDeathFeed) end function Player.hungerSetFeedStorage(self, value) self:setStorageValue(hungerConfig.storageOnDeathFeed, value) end function Player.hungerGetStage(self) return self:getStorageValue(hungerConfig.storageStage) end function Player.hungerSetStage(self) local feed = self:hungerGetFeed() local tmpStage = 0 for stageNumber, stageInfo in ipairs(hungerConfig.stages) do tmpStage = stageNumber if stageInfo.minFeed >= feed then break end end self:setStorageValue(hungerConfig.storageStage, tmpStage) end function Player.hungerGetStageMsg(self) local stageId = self:getStorageValue(hungerConfig.storageStage) return hungerConfig.stages[stageId].msg end function Player.hungerDoDmg(self) self:addHealth(-hungerConfig.dmgAmount) return true end Adicione em data/lib/lib.lua dofile('data/lib/hunger.lua') data/creaturescripts/scripts/hunger.lua function onLogin(player) if player:hungerIgnorePlayer() then return true end local value = player:hungerGetFeedStorage() if value > 0 then player:feed(value) elseif value == hungerConfig.FIRST_LOGIN then player:feed(hungerConfig.newPlayerFeed) end player:hungerSetFeedStorage(0) player:setStorageValue(hungerConfig.storageDmgAndCheckTicks, 0) player:registerEvent("HungerDeath") player:registerEvent("Hunger") player:hungerSetStage() local msg = player:hungerGetStageMsg() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, msg) return true end function onThink(player, interval) local counter = (player:getStorageValue(hungerConfig.storageDmgAndCheckTicks) +1) % hungerConfig.dmgAndCheckTicks if counter == 0 then -- status changed ? send msg : do nothing local stage = player:hungerGetStage() player:hungerSetStage() local newStage = player:hungerGetStage() if stage ~= newStage then local msg = player:hungerGetStageMsg() player:sendTextMessage(MESSAGE_STATUS_DEFAULT, msg) end if player:hungerGetFeed() == 0 then player:hungerDoDmg() end end player:setStorageValue(hungerConfig.storageDmgAndCheckTicks, counter) return true end function onDeath(player, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) local feedLvl = player:hungerGetFeed() if feedLvl < hungerConfig.newPlayerFeed then player:hungerSetFeedStorage(hungerConfig.newPlayerFeed) else player:hungerSetFeedStorage(feedLvl) end return true end Adicione em data/creaturescripts/creaturescripts.xml <event type="login" name="HungerLogin" script="hunger.lua" /> <event type="death" name="HungerDeath" script="hunger.lua" /> <event type="think" name="Hunger" script="hunger.lua" /> data/talkactions/scripts/hunger.lua function onSay(player, words, param) local msg = player:hungerGetStageMsg() player:sendTextMessage(MESSAGE_STATUS_DEFAULT, msg) return true end Adicione em data/talkactions/talkactions.xml <talkaction words="/hunger" script="hunger.lua" /> Dúvidas ou problemas, poste no tópico! Editado Agosto 22, 2015 9 anos por Larissa Azhaurn (veja o histórico de edições)
Postado Agosto 23, 2015 9 anos Tópico aprovado e movido a área correta, obrigado por compartilhar. Você recebeu um REP pela contribuição. ➥ Regras | Seções OTServ | Seções BOT
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.