Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''breaker''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 1 registro

  1. Limit Break System (v2) !

    ┌──────────────────────────────────────────────────┐ │Nome: Limit Break │Versão do script: 2.0.0 │Tipo do script: Creature Script │Servidor Testado: The Forgotten Server 0.4 Doomed Elderberry │Autor: Lwkass └──────────────────────────────────────────────────┘ O Script é simples e baseado em um sistema do FF7, a cada hit que o player levar, ele carrega uma porcentagem de limit break e quando chegar a 100% o próximo hit melee (melee = ataque normal) liberará o Limit Break. Caracteristicas: Scripts: Na pasta data/creaturescripts/scripts, salve os dois scripts abaixo: limitbreaker.lua ------------------------------------------------ -- Limit Breaker System -- By: Lwkass from OTServBrasil dofile("data/lib/limitBreakerLib.lua") function onStatsChange(cid, attacker, type, combat, value) if (combat == COMBAT_HEALING) then return true end multiplier = (combat == COMBAT_PHYSICALDAMAGE and 1 or 1.5) limitBreak = LimitBreak:get(cid) if (limitBreak.percent < 100) then limitBreak(limitBreak.percent + math.ceil(((value*100)/(getCreatureMaxHealth(cid)*0.7)) * multiplier)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You charged +' .. math.ceil(((value*100)/(getCreatureMaxHealth(cid)*0.7)) * multiplier) .. '% of Limit Break [' .. limitBreak.percent .. '%/100%]' .. (isCreature(attacker) and (' by a attack of ' .. getCreatureName(attacker)) or '') .. '.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your Limit Break is full !") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_RED) end return true end -- By: Lwkass from OTServBrasil -- limitbreaker_release.lua ------------------------------------------------ -- Limit Breaker System -- By: Lwkass from OTServBrasil dofile("data/lib/limitBreakerLib.lua") function onAttack(cid, target) limitBreak = LimitBreak:get(cid) if (limitBreak.percent >= 100) then if (getDistanceBetween(getThingPos(cid), getThingPos(target)) <= 1) then doCreatureSay(cid, "Arghh!", TALKTYPE_MONSTER) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_RED) limitBreak:cast(target) limitBreak(0) limitBreak:addExp(1) else doPlayerSendDefaultCancel(cid, RETURNVALUE_DESTINATIONOUTOFREACH) end end return true end -- By: Lwkass from OTServBrasil Agora no arquivo creaturescripts.xml da pasta data/creaturescripts, adicione: <event type="statschange" name="limitbreaker" event="script" value="limitbreaker.lua"/> <event type="attack" name="limitbreaker_release" event="script" value="limitbreaker_release.lua"/> Aproveitando, na pasta data/creaturescripts/scripts, no arquivo login.lua do seu servidor, adicione essas linhas antes do return: registerCreatureEvent(cid, "limitbreaker") registerCreatureEvent(cid, "limitbreaker_release") Só mais uma coisinha, na pasta data/lib (caso não exista a pasta lib, crie) crie um arquivo com o nome limitBreakerLib.lua e salve isso dentro: ------------------------------------------------ -- Limit Breaker System -- By: Lwkass from OTServBrasil local config = { OPTION_CAST_SPELL = false, -- Cast spell when limit break is full EXP_RATING = 1, -- Exp rating of limit break exp || (exp * rating). STORAGE_LIMIT_PERCENT = 13015, STORAGE_LIMIT_LEVEL = 13016, STORAGE_LIMIT_EXP = 13017 } ------------------------------------------------ LimitBreak = {} function LimitBreak:get(cid) _lb = setmetatable({ player = cid, level = getPlayerStorageValue(cid, config.STORAGE_LIMIT_LEVEL), percent = getPlayerStorageValue(cid, config.STORAGE_LIMIT_PERCENT) }, { __index = self, __call = function(t, p) if (p > 100) then p = 100 end rawset(t, 'percent', p); setPlayerStorageValue(cid, config.STORAGE_LIMIT_PERCENT, p) end }) if (config.OPTION_CAST_SPELL) then -- spell limitBreak_spell = Spell:create("Limit Break", SPELL_TYPE_AREA, { maxDistance = 1 }) local weapon = (getPlayerWeapon(cid).uid > 0 and (((getItemInfo(getPlayerWeapon(cid).itemid)["attack"]) + getItemInfo(getPlayerWeapon(cid).itemid)["extraAttack"])*0.8) or 1) limitBreak_spell:setDefaultTile(SpellTile:create(COMBAT_PHYSICALDAMAGE, 34, {min = -(getPlayerLevel(cid)*3.6 + weapon), max = -(getPlayerLevel(cid)*4.9 + weapon)})) limitBreak_spell:setArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) _lb:setSpell(limitBreak_spell) end return _lb end function LimitBreak:getSpell() return self.spell end function LimitBreak:setSpell(spell) self.spell = spell end function LimitBreak:cast(target) if (self:getLevel() < 0) then self:setLevel(1) end if (self:getExp() < 0) then self:setExp(0) end if (config.OPTION_CAST_SPELL and self:getSpell()) then self:getSpell():cast(self.player) else local weapon = (getPlayerWeapon(self.player).uid > 0 and (((getItemInfo(getPlayerWeapon(self.player).itemid)["attack"]) + getItemInfo(getPlayerWeapon(self.player).itemid)["extraAttack"])*0.8) or 0) doTargetCombatHealth(self.player, target, COMBAT_PHYSICALDAMAGE, -(getPlayerLevel(self.player) * 2.5 + weapon + self:getLevel() * 3.6), -(getPlayerLevel(self.player) * 3.5 + weapon + self:getLevel() * 4.9), 34) end end function LimitBreak:setLevel(lvl) setPlayerStorageValue(self.player, config.STORAGE_LIMIT_LEVEL, lvl) end function LimitBreak:getLevel() return getPlayerStorageValue(self.player, config.STORAGE_LIMIT_LEVEL) end function LimitBreak:addLevel(n) n = n or 1; self:setLevel(self:getLevel() + n) end function LimitBreak:setExp(xp) setPlayerStorageValue(self.player, config.STORAGE_LIMIT_EXP, xp) end function LimitBreak:getExp() return getPlayerStorageValue(self.player, config.STORAGE_LIMIT_EXP) end function LimitBreak:addExp(xp) xp = (xp or 1) * config.EXP_RATING self:setExp(self:getExp() + xp) if (self:getExp() >= (self:getLevel() * 2)) then self:setExp(0) self:addLevel() doPlayerSendTextMessage(self.player, MESSAGE_EVENT_ORANGE, "Your Limit Break is level " .. self:getLevel() .. " now.") doSendMagicEffect(getThingPos(self.player), CONST_ME_MAGIC_GREEN) end end -- By: Lwkass from OTServBrasil Fiz uma lib pra ficar mais organizado. A spell deve ser definida no arquivo limitBreakerLib.lua onde está marcado "--spell", funciona apenas com a minha Lib de Spell, mas, por padrão está definida uma magia que pega em volta do player (foto abaixo). Precisa também ir na parte das configurações do Limit Break e definir OPTION_CAST_SPELL como true (na linha 6 do limitBreakerLib.lua) ---- Screenshot: Mensagem quando se leva algum hit. Limit Break como Dano Melee. Limit Break como Spell. ChangeLog: Prontinho Qualquer dúvida/sugestão só falar Ta simplesinho o sistema, mas é provável que eu adicione mais coisas depois
×