Jump to content

Search the Community

Showing results for tags 'spell'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • OpenTibia
    • Promoted Projects
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
    • Divulgação de Servidores
    • Projetos e Formações de Equipes
  • Outros
    • Design

Found 16 results

  1. Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: [Hidden Content] [Hidden Content] Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). Ex: The Forgotten Server 1.3, Versão: 10.98. Base: OTServBR-Global 12.x Qual é a sua pergunta? Salve pessoal, estou usando o OtservBR Global versão 12.31 eu queria converter 3 magias do tfs 0.4 pro tfs 1.3 e tambem queria saber como eu posso vender charm coins na store ingame, aqui o codigo das magias (tfs 0.4) Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo: Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:
  2. Scripting Spell buff

    Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: [Hidden Content] [Hidden Content] Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). Otx2 client 8.54 Base: Otx2 Qual é a sua pergunta? Eu alterei um script buff que tinha aqui para que ela funciona-se da seguinte maneira: Do lvl 100 ao 250 desse um bonus de skill e solta-se um efeito no player durante 60 segundos. Do lvl 251 ao 350 desse um bonus de skill e solta-se um efeito no player durante 60 segundos. Do lvl 351+ desse um bonus de skill e solta-se um efeito no player durante 60 segundos. O script chega a dar o bonus de skill por 60 segundos porém o efeito não esta saindo. Se eu removo essa linha: if getPlayerStorageValue(cid, 102853) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then O script passa a soltar o efeito no entanto ele fica sem o exaust dos 60 segundos Solução: peguei outro script como base e solucionei o erro. Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo: Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:
  3. Eae galera eu estou usando um Server Global Full 7.6 com base OTX o meu problema é a respeito da magia exevo gran mas pox, eu queria que a magia causa-se o mesmo dano em monstros e players, mas ela causa sempre 50% do dano em players, eu quero que só essa magia tenha esse efeito, já revirei todos os forums e não achei nada que realmente funcione, tenho um outro OT Yurots (ExtremeOT) em que o dano é igual em players e monstros, porem o script não é compativel, alguem sabe como fazer ou o que mudar no meu script ? Esse é o script do meu server: ___________________________________ esse é o Script do yurots:
  4. Boa tarde, preciso de uma spell que deixe o player invisível por 5 segundos, invisível até o nome... Durante o uso se o player usar alguma magia, potion, runa, falar ou levar dano em área ele sai da invisibilidade.. creio que terei que fazer alterações nas sources, alguém conhece alguma forma de fazer isso? Uso o servidor do malucoo otxmaster 10x
  5. Lib Spell (POO) !

    ┌───────────────────────────────────────────────┐ │Nome: Spell System │Versão do script: 1.0.0 │Tipo do script: System/Lib │Servidor Testado: The Forgotten Server 0.4.0 Crying Damson │Autor: Lwkass └───────────────────────────────────────────────┘ Bem, é uma lib que criei para criação de spells, também para mostrar um sistema com "POO" em lua, já vou dizendo que não é super super útil (talvez seja para alguns), mas como eu estava com vontade de fazer pode acabar ajudando a diminuir codes também. Caracteristicas: Script: Apenas um script, crie um arquivo Lua com o nome de Spell-class.lua na pasta data/lib: --[[ @ Spell System By Lwkass form OTServerBrasil ! @ Version: 1.0.0 - Any questions (msn): [email protected] ]] ----------===================------------- ---- CONFIGURATIONS ----------===================------------- SpellOptions = { sendCastSay = true, -- true = Vai mandar uma mensagem sempre que usar uma spell showAnimatedValues = true, -- true = Ativa efeito animado onlySpellOwnerSeeAnimation = true -- true = Apenas o usuario da spell ve a animacao } ---- Constantes SPELL_TYPE_DIRECTION = 0 SPELL_TYPE_AREA = 1 ----------===================------------- ---- GENERAL FUNCTIONS ----------===================------------- function getPosByArea(area, topleftpos) arr = {} for y, a in pairs(area) do arr[y] = {} for x, tile in pairs(a) do arr[y][x] = {x=(x-1)+topleftpos.x, y=(y-1)+topleftpos.y, z=topleftpos.z} end end return arr end function rotateArea(area, angle) final = {} angle = math.rad(angle) for y, a in pairs(area) do for x, tile in pairs(a) do temp = {x = (x * math.cos(angle) + y * math.sin(angle)), y = (x * (-math.sin(angle)) + y * math.cos(angle))} e_x, e_y = (temp.x < 0 and #a + (temp.x) + 1 or temp.x), ((temp.y < 0 and #area + (temp.y) + 1 or temp.y)) final[e_y] = final[e_y] or {} table.insert(final[e_y], e_x, tile or 0) end end return final end ----------===================------------- SpellTile = {} function SpellTile:create(combat, effect, damage) --[[ - Cria uma SpellTile Param: #1 (combat) = combat para o tile, válido todos os combats do tibia (exemplo: COMBAT_PHYSICALDAMAGE, COMBAT_ENERGYDAMAGE, COMBAT_MANADRAIN, etc...) #2 (effect) = efeito para o tile, válido todos os efeitos do tibia (exemplo: CONST_ME_DRAWBLOOD, CONST_ME_LOSEENERGY, CONST_ME_POOF, etc...) #3 (damage) = tabela de dano, que deve seguir esse modelo: {min = -dano_minimo, max = -dano_maximo} ]] return setmetatable({ combat = combat, effect = effect, damage = damage }, { __index = self }) end function SpellTile:setCondition(condition) --[[ - Define uma condição para o SpellTile e retorna uma cópia do próprio SpellTile Param: #1 (condition) = Precisa ser uma condition válida do tibia, exemplo: condition = createConditionObject(CONDITION_POISON) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 10, 2000, -10) ]] copy = SpellTile:create(self.combat, self.effect, self.damage) copy.delay = self.delay copy.center = self.center copy.condition = condition return copy end function SpellTile:setSpellCenter() --[[ - Define que esse SpellTile é o centro da magia e retorna uma cópia do próprio SpellTile ]] copy = SpellTile:create(self.combat, self.effect, self.damage) copy.delay = self.delay copy.center = true return copy end function SpellTile:delay(mili) --[[ - Define um delay para lançar o spelltile e retorna uma cópia do próprio SpellTile Param: #1 (mili) = Tempo em milisegundos até lançar o spelltile ]] copy = SpellTile:create(self.combat, self.effect, self.damage) copy.delay = mili return copy end ----------===================------------- --[[ @ Spell System By Lwkass form OTServerBrasil ! @ Version: 1.0.0 - Any questions (msn): [email protected] ]] ----------===================------------- Spell = {} -- Construtor function Spell:create(spellwords, spelltype, options) --[[ - Cria uma nova spell Param: #1 (spellwords) = Palavras mágicas da spell #2 (spelltype) = Tipo da spell, é necessário utilizar os valores que estão no Spell-class.lua, por exemplo: SPELL_TYPE_DIRECTION (para spell com direção) ou SPELL_TYPE_AREA (para spell com area) #3 (options) = uma tabela com opções da spell, pode possuir esses valores (não é necessário colocar todos !): options = { level = 1, -- Level necessario maglevel = 1, -- Magic Level necessario mana = 100, -- Mana necessaria maxDistance = 3, -- Distancia máxima needWeapon = true, -- Se precisa estar usando alguma arma vocation = {1,2,3,4,5}, -- Vocações que podem usar a magia sex = 0, -- Sexo que pode usar a magia group = 2 -- Group minimo para usar a magia } ]] return setmetatable({ spellwords = spellwords, spelltype = spelltype, level = options and options.level or 0, maglevel = options and options.maglevel or 0, mana = options and options.mana or 0, options = options or {} }, { __index = self }) end -- Setters & Getters function Spell:setArea(area) --[[ - Define a area da spell Param: #1 (area) = Uma tabela que segue o modelo padrão de magias (exemplo: {{1,1,1},{1,1,1},{0,3,1}}) ]] self.area = area end function Spell:setOption(option, value) --[[ - Define as opções Param: #1 (option) = opção (exemplo: mana, level...) #2 (value) = valor ou novo valor ]] self.options = self.options or {} self.options[option] = value end function Spell:setMaxDistance(n) --[[ - Define a distancia máxima para usar a spell, pode-se definir direto através da tabela options também (maxDistance = distancia) Param: #1 (n) = Distancia máxima ]] self:setOption("maxDistance", n) end function Spell:setDefaultTile(tile) --[[ - Define a spellTile padrão para a spell (usa-se a marcação 1 na area) Param: #1 (tile) = precisa ser um spellTile ]] self.dftTile = tile end -- Others function Spell:getCreatureMark() --[[ - Procura e retorna a posição do tile que seja igual a 3 ou que esteja com a marcação tile.center = true ]] for y, b in pairs(self.area) do for x, d in pairs( do if ((type(d) == "table" and d.center) or d == 3) then return {x = x,y = y} end end end end -- Main Function function Spell:cast(cid, target) --[[ - Lança a magia Param: #1 (cid) = usuario da magia #2 (target) = alvo da magia (se necessário) ]] if (not isCreature(cid)) then return print('[spellClass - Warning / "'.. self.spellwords ..'"]: The cid must be a creature !') end -- Target checks if (target) then if (not isCreature(target)) then -- Target is not selected return doPlayerSendCancel(cid, "You need a target.") end if (self.spelltype == SPELL_TYPE_DIRECTION) then return print('[spellClass - Warning / "'.. self.spellwords ..'"]: Set the spelltype to SPELL_TYPE_AREA or remove the param target from the method \'cast\' !') end end -- Options for option, value in pairs(self.options) do if (target and option == "maxDistance" and type(value) == "number") then if (getDistanceBetween(getThingPos(cid), getThingPos(target)) > value) then return doPlayerSendCancel(cid, "Target too far.") end elseif (option == "needWeapon" and value) then if (getPlayerWeapon(cid).uid == 0) then return doPlayerSendCancel(cid, "You need be using a weapon.") end elseif (option == "vocation" and type(value) == "table") then if (not isInArray(value, getPlayerVocation(cid))) then return doPlayerSendCancel(cid, "Your vocation can't use this spell.") end elseif (option == "sex" and type(value) == "number") then if (not getPlayerSex(cid) == value) then return doPlayerSendCancel(cid, "Your sex can't use this spell.") end elseif (option == "group" and type(value) == "number") then if (not getPlayerGroupId(cid) >= value) then return doPlayerSendCancel(cid, "You can't use this spell.") end end end -- Cid checks if (isPlayer(cid)) then if (getPlayerLevel(cid) >= self.level) then if (getPlayerMagLevel(cid) >= self.maglevel) then if (getCreatureMana(cid) >= self.mana) then doCreatureAddMana(cid, -(self.mana)) if (SpellOptions.showAnimatedValues) then doSendAnimatedText(getThingPos(cid), self.mana, COLOR_PURPLE, (SpellOptions.onlySpellOwnerSeeAnimation and cid or false)) end else return doPlayerSendCancel(cid, "You need " .. self.mana .. " of mana to use this spell.") end else return doPlayerSendCancel(cid, "You need magic level " .. self.maglevel .. " or greater to use this spell.") end else return doPlayerSendCancel(cid, "You need level " .. self.level .. " or greater to use this spell.") end end -- Direction change if (self.spelltype == SPELL_TYPE_DIRECTION) then local dir = {[0] = 0, [1] = 270, [2] = 180, [3] = 90} self:setArea(rotateArea(self.area, dir[getCreatureLookDirection(cid)])) end -- Main local playerPos, player = getThingPos((target or cid)), self:getCreatureMark() local theArea = getPosByArea(self.area, {x=playerPos.x - player.x + 1, y=playerPos.y - player.y + 1, z=playerPos.z}) if (SpellOptions.sendCastSay) then doCreatureSay(cid, getCreatureName(cid) .. " casts " .. self.spellwords .. " !", TALKTYPE_MONSTER) end for y, b in pairs(self.area) do for x, _tile in pairs( do local tilePos = theArea[y][x] local tile = ((_tile == 1) and self.dftTile or _tile) if (tile ~= 0 and tile ~= 3) then if (tile.condition) then doAreaCombatCondition(cid, tilePos, {1}, tile.condition, tile.conditionEffect or CONST_ME_NONE) end addEvent(doAreaCombatHealth, tile.delay or -1, cid, tile.combat, tilePos, {1}, tile.damage.min, tile.damage.max, tile.effect) end end end return true end --[[ @ Spell System By Lwkass form OTServerBrasil ! @ Version: 1.0.0 - Any questions (msn): [email protected] ]] Caso seu server não carregue automaticamente o script, tente adicionar essa linha a qualquer outro arquivo lua da pasta lib: dofile('data/lib/Spell-class.lua') Pronto ! Aqui um exemplo de spell com esse sistema: function onCastSpell(cid, var) spell = Spell:create("spell", SPELL_TYPE_DIRECTION, {mana = 100, level = 10, maglevel = 5}) tile = SpellTile:create(COMBAT_PHYSICALDAMAGE, 15, {min = -1, max = -2}):delay(500) spell:setArea({ {tile, tile, tile}, {0, tile, 0}, {0, tile, 0}, {0, 3, 0} }) spell:cast(cid) end Usos: Você pode usar assim também a area se quiser: spell:setArea({ {tile:delay(10), tile, tile:delay(620)}, {0, tile:delay(100), 0}, {0, tile, 0}, {0, 3, 0} }) Cada spelltile vai aparecer no delay que estiver ali marcado e os que não estiverem aparecerão no delay = 500 (que está definido em 'tile'). ---- Para adicionar conditions pode ser feito assim: local condition = createConditionObject(CONDITION_FIRE) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 10, 2000, -10) spell:setArea({ {tile:delay(10), tile, tile:delay(620)}, {0, tile:delay(100):setCondition(condition), 0}, {0, tile, 0}, {0, 3, 0} }) Apenas o tile que está com o setCondition vai receber a condition ! ---- Para uma spell de area que é lançada em um alvo é necessário deixar a spell dessa maneira: function onCastSpell(cid, var) spell = Spell:create("spell", SPELL_TYPE_AREA, {mana = 100, level = 10, maglevel = 5}) tile = SpellTile:create(COMBAT_PHYSICALDAMAGE, 15, {min = -1, max = -2}):delay(500) spell:setArea({ {tile, tile, tile}, {0, tile, 0}, {0, tile:setSpellCenter(), 0} }) spell:cast(cid, getCreatureTarget(cid)) end ---- Mas caso você queira definir um spelltile como padrão para a spell (Sempre que usar o 1 na area esse spelltile será chamado), você pode fazer assim: function onCastSpell(cid, var) spell = Spell:create("spell", SPELL_TYPE_DIRECTION, {mana = 100, level = 10, maglevel = 5}) spell:setDefaultTile(SpellTile:create(COMBAT_ENERGYDAMAGE, 30, {min = -1, max = -2})) -- Define o tile padrão tile = SpellTile:create(COMBAT_PHYSICALDAMAGE, 15, {min = -1, max = -2}):delay(500) spell:setArea({ {tile, tile, tile}, {1, 1, 1}, {1, tile, 1}, {0, 3, 0} }) spell:cast(cid) end Então sempre que usar o numero 1 na area ele será substituido pelo spelltile padrão ! Todas as funções estão comentadas, em caso de dúvida sobre como usar uma função, leia o código-fonte ou pergunte aqui mesmo
  6. [font=Arial][b]Nome:[/b] Barrier of Sticks [b]Autor:[/b][/font][font=Arial][i]Saymon14[/i] [b]Versão Testada:[/b][/font][font=Arial][i]Tibia 8.60[/i] [b]Informações Adicionais[/b][/font][font=Arial][b]:[/b] A cada nivel a barreira aumenta.[/font] Olá galerinha, venho trazer mais uma spell para voces, essa é um tipo de spell que avança de level conforme a quantidade de uso Ex. a cada 100 conjuraçoes a spell avança para um novo nivel, lembrando que eu testei essa magia somente na versao 8.6, bem intao vamos a magia. Script da magia: vá em \data\spells\scripts\support e crie um novo arquivo lua com o nome kindling e adicione o seguinte script. local combat_lv1 = createCombatObject() setCombatParam(combat_lv1, COMBAT_PARAM_EFFECT, 50) setCombatParam(combat_lv1, COMBAT_PARAM_CREATEITEM, 1499) local combat_lv2 = createCombatObject() setCombatParam(combat_lv2, COMBAT_PARAM_EFFECT, 50) setCombatParam(combat_lv2, COMBAT_PARAM_CREATEITEM, 1499) local combat_lv3 = createCombatObject() setCombatParam(combat_lv3, COMBAT_PARAM_EFFECT, 50) setCombatParam(combat_lv3, COMBAT_PARAM_CREATEITEM, 1499) local area_lv1 = createCombatArea({ {0, 1, 0}, {0, 0, 0}, {0, 2, 0} }) local area_lv2 = createCombatArea({ {1, 1, 0}, {0, 0, 0}, {0, 2, 0} }) local area_lv3 = createCombatArea({ {1, 1, 1}, {0, 0, 0}, {0, 2, 0} }) setCombatArea(combat_lv1, area_lv1) setCombatArea(combat_lv2, area_lv2) setCombatArea(combat_lv3, area_lv3) local function onCastSpell1(parameters) doCombat(parameters.cid, combat_lv1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat_lv2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, combat_lv3, parameters.var) end function onCastSpell(cid, var) local position = getCreaturePosition(cid) local t = { [0] = {x = position.x, y = position.y - 3, z = position.z}, [1] = {x = position.x + 3, y = position.y, z = position.z}, [2] = {x = position.x, y = position.y + 3, z = position.z}, [3] = {x = position.x - 3, y = position.y, z = position.z} } doSendDistanceShoot(position, t[getCreatureLookDirection(cid)], 38) local parameters = { cid = cid, var = var} local spell_storage = 48502 if getPlayerStorageValue(cid, spell_storage) < 150 then addEvent(onCastSpell1, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) elseif getPlayerStorageValue(cid, spell_storage) == 150 then addEvent(onCastSpell2, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) doPlayerSendTextMessage(cid, 22, "Its barrier kindling progressed to level 2") doSendMagicEffect(getCreaturePosition(cid),28) doSendAnimatedText(getCreaturePosition(cid), 'Spell UP', 210) elseif getPlayerStorageValue(cid, spell_storage) > 150 and getPlayerStorageValue(cid, spell_storage) < 350 then addEvent(onCastSpell2, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) elseif getPlayerStorageValue(cid, spell_storage) == 350 then addEvent(onCastSpell3, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) doPlayerSendTextMessage(cid, 22, "Its barrier kindling progressed to level 3") doSendMagicEffect(getCreaturePosition(cid),28) doSendAnimatedText(getCreaturePosition(cid), 'Spell UP', 210) elseif getPlayerStorageValue(cid, spell_storage) > 350 then addEvent(onCastSpell3, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) end return TRUE end adicionado, agora vamos a TAG da Spell, abra o spells.xml e adicione a seguinte TAG. <instant name="Barrier of Sticks" words="utori con sio" lvl="65" mana="120" direction="1" prem="1" exhaustion="3000" blockwalls="1" needlearn="0" script="support/kindling.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> Pronto, sua magia está adicionada com sucesso, agora vou explicar como funciona o avanço da spell. Para passar do nivel 1 ao nivel 2 é preciso conjurar (usar) a magia em torno de 150 vezes, do nivel 2 ao 3 são necessarios em torno de 200 conjurações. Bem é isso galera as Screenshot's estao aqui em baixo, até a proxima. Screenshot's
  7. Element Attack

    Element Attack Vá em Data > Spells > Attack, copie qualquer arquivo .LUA e renomeio como "element attack" nele adicione isso: Vá em Data > Spells > Spells.XML, lá adicione isso: Agora salve e feche, agora é só abrir seu servidor e usa-lá. [*] Vídeo para demonstração: Bom, é isso. Obrigado pela atenção. Abraços.
  8. ~ Rajada de flexas

    Spell baseada no classe arqueiro de ragnarok Gasta certa quantidade de arrow e Conforme voce sobe de level ela aumenta a quantidade de disparos entre 0 e 19 = 2 disparos entre 20 e 49 = 3 disparos mais que 50 = 3 disparos normais e 1 disparo mais forte Vamos ao script em VERMELHO, e o ID da arrow em AZUL, e o ID da msg que aparecera, caso o player não tenha arrows suficientes Se alguem tiver sugests para melhorar ela, postaa ae ^^
  9. Minha Spell

    Ola galera vim postar minha spell. Então Vamos lá Va na pasta do seu OT/Data/Spells/Scripts copie qualquer arquivo lá é renomeio para SondMagic ai dps abra o arquivo é apague tudo que estiver lá dentro é cole isto. local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 18) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 19) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 21) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 22) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 23) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 24) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat7, COMBAT_PARAM_EFFECT, 31) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat8, COMBAT_PARAM_EFFECT, 42) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat9 = createCombatObject() setCombatParam(combat9, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat9, COMBAT_PARAM_EFFECT, 43) setCombatFormula(combat9, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) local combat10 = createCombatObject() setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat10, COMBAT_PARAM_EFFECT, 42) setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0) arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr3 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr4 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr5 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr6 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr7 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr8 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr9 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr10 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) local area7 = createCombatArea(arr7) local area8 = createCombatArea(arr8) local area9 = createCombatArea(arr9) local area10 = createCombatArea(arr10) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) setCombatArea(combat6, area6) setCombatArea(combat7, area7) setCombatArea(combat8, area8) setCombatArea(combat9, area9) setCombatArea(combat10, area10) local function onCastSpell1(parameters) doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, combat5, parameters.var) end local function onCastSpell6(parameters) doCombat(parameters.cid, combat6, parameters.var) end local function onCastSpell7(parameters) doCombat(parameters.cid, combat7, parameters.var) end local function onCastSpell8(parameters) doCombat(parameters.cid, combat8, parameters.var) end local function onCastSpell9(parameters) doCombat(parameters.cid, combat9, parameters.var) end local function onCastSpell10(parameters) doCombat(parameters.cid, combat10, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 200, parameters) addEvent(onCastSpell3, 300, parameters) addEvent(onCastSpell4, 400, parameters) addEvent(onCastSpell5, 500, parameters) addEvent(onCastSpell6, 600, parameters) addEvent(onCastSpell7, 700, parameters) addEvent(onCastSpell8, 800, parameters) addEvent(onCastSpell9, 900, parameters) addEvent(onCastSpell10, 1000, parameters) return TRUE end Dps volte na pasta spells abra spells XML com o bloco de notas ou algo parecido é cole isto antes da EXORI MORT! ali onde esta mude o numero 1 para o id da voc que vc quer que use a magia!!vlw galera espero que gostem Creditos: 100% para min eu que fiz a Spell! Scren:
  10. Holy Wave :D

    Holy Wave Iae galera vim postar aqui minha primeira spell espero que gostem OiaeuMae Primeiro vá em data\spells\spells.xml e coloque isto em <- Attack Spells -> Salve e Feche. Agora vá em data\spells\scripts\attack e crie um arquivo chamado Holy Wave.lua e cole isto : Salve e Feche , Pronto :loool: [spoiler=ScreenShot] Espero ter ajudado (Y) Gostou Doe-Me V$
  11. Zeus Tempest

    Vim postar uma magia feita por min mesmo espero que gostem:D Nome: Zeus tempest Autor: Walassypazini Servidor Testado: Stigma Ots (8.54) Descriçao:Magia boa para ser usada como uma magia vip vips. Crie um aquivo em (data\spells\scripts\attack) com o nome de "zeus tempest" e coloque isto dentro. [color=Sienna][color=Blue]local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)[/color] [color=Green]setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)[/color][/color] [color=Red]setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2.8, -60, -3.8, -80)[/color] [color=Blue]local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)[/color] [color=Green]setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)[/color] [color=Red]setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -2.8, -60, -3.8, -80) [/color] [color=Blue]local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)[/color] [color=Green]setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)[/color] [color=Red]setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -2.8, -60, -3.8, -80)[/color] [color=Green]local arr = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, } local arr2 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, } local arr3 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, }[/color] [color=Green]local area = createCombatArea(arr) setCombatArea(combat, area) local area = createCombatArea(arr2) setCombatArea(combat2, area) local area = createCombatArea(arr3) setCombatArea(combat3, area) function onCastSpell(cid, var) doCombat(cid, combat, var) doCombat(cid, combat2, var) return doCombat(cid, combat3, var) end[/color] Agora adicione isto em spells.xml [color=DarkGreen][color=Navy]<instant name="zeus tempest" words="exevo gran mas lux" lvl="80" mana="800" prem="1" selftarget="1" exhaustion="2000" needlearn="0" script="attack/zeus tempest.lua"> </instant>[/color][/color] [spoiler=SS] Espero ter ajudado xD _______________________ Tibia é o jogo do Futuro Farol Rullez [spoiler=.] TE AJUDEI??? DOE V$^^
  12. [8.1 - 8.4] Getsuga Tenshou

    Nome: Getsuga Tenshou Versão: So testei na 8.1 mas acho que funciona ate a 8.4 Tipo do script: Spell Servidor Testado: Thyrania Autor: Demodras Comentario: Spell baseada em um poder do anime Bleach. _____________________________________________________________________ E aew galera....hj eu irei postar umam spell baseada no anime Bleach. Como e a primeira vez que faço isso, espero que caso eu cometa algum erro, que alguem fale para mim q eu tntarei consertá-lo...Então Vamos Lá. 1º Abra a pasta do seu ot, e agora entra nas pastas: data/spells/scripts note que ha varios documentos, copie qualquer um e cole na mesma pasta, agora renomeie o arquivo colado para "getsuga tenshou". 2º Abra o arquivo e apague tudo que estiver dentro dele, e então copie e cole este texto no arquivo. Agora você percebeu que há muitas palavras (chega a deixarmeio tonto), caso queira modificar algo irei mostrar para oque cada "letrrinhas" dessas servem. * Os numeros que estão em azul (começo do script) servem para indicar a variavel do dano, ou seja, quanto maior aqueles numeros, maior sera o dano, então caso queira mais dano e so aumentar aqueles numeros. * Os numeros em vermelhos mostram quanto tempo demorará para cria a magia, quanto mais alto o numero, mais a magia demorara. PS: Aconselho a nao mecher nessa parte, pois na minha opinião a velocidade esta boa, e caso você modifique e fique muito rapido, nao ficara parecendo com o anime, e caso deixa muito devagar poder acontecer de nao acertar os inimigos. E caso for mecher sempre deixe a diferenã entre um numero e o outrro uniforme, ou seja caso a diferençado primeiro pro segundo for de 200, deixe todos com essa diferença em relação ao numero anterior. 3º Salve o arquivo. 4º Volte na Pasta data/spells, la você encontrara um arquivo com uma espécie de "planeta" que estara nomeado de spell, clique nele com o botão direito e va em "abrir com" - "bloco de notas" agora procure por algo q estara diferenciando Runas de Instants (isso para nao ficar bagunçado), procure por algo que esteja escrito Instant Spell, no meu caso esta escrito assim "<!-- instant spells -->" agora note que no começo de cada linha esta escrito isso "<instant name=" então faça o seguinte clique no começo da 1º linhas da divisão "Instant Spells" e de um enter de forma que ela va para a linha debaixo e fique uma linha vazia, agora copie e cole isso na linha vazia. Pronto agora vamos as modificações... * Em azul: e o que o player tera que dizer para exeutar a magia no caso esta "getsuga tenshou". * Em Vermelho: E o level minimo que o player precisa ter para poder usar a magia. * Em verve: E o magic level minimo que o player precisa ter para poder usar a magia. * Em roxo: E a mana nescessaria para a execução da magia (mana que sera gasta) * Em laranja: Isto indica se o player precisa ou naum ser Premium para poder usar a magia, caso o numero seja 1 ele precisa ser premium, caso ocontrário ele nao precisará ser premium. * Em cinza: São as vocações que poderao usar a magia (para descobrir o id de alguma vocação va em data/vocation e va em "abrir com" - "bloco de notas" e você ira ver o id seguido pelo nome da vocação), nessa magia eu coloqueiapenas duas, pois so uma vocação podera usar, mais por que 2 se so uma pode usar...Porque a vocação promoted (Elite Knight, Master Sorcerer e etc.) precisa estar listada, e caso queira adicionar mais alguma vocação e so copiar isso "<vocation id=" "/>" e colar em <vocation id="6"/>(colar aqui)</instant> e fazer as devidas alterações. Agora e só salvar e testá-la no jogo. SS: Acho que é so isso...Espero ter ajudado vocês e qualquer coisa podem perguntar...E nao se Esqueçam de comentar... E CASO GOSTARAM ME DÕE OT'S!!!XD
  13. Area Lib

    Nome: Area LIB Autor: Conde2 & Skyen Hasus Servidor testado: TFS 0.3.1++++ Versão: 0.1 Já vi infinidades de seplls (Lixos) com areas sempre iguais, nada de randomicidade e totalmente sem graça !!! Vendo isso eu decidi criar essas funções para que esses (Lixos) scripts ganhem um novo "ar". Além de que esses scripts podem ser usado em outros casos e não só em spells xD Antes de mais nada queria agradecer ao Skyen que me deu as dicas e me aguento no MSN. Tomei a liberdade de por as Palavras de Skyen Hasus (Em rosa !!): Agora vamos ao script... Em data/lib/data.lua adicione o seguinte código no final: Ou em data/global.lua. function getRandomArea(horizontal, vertical, incidence) -- By Conde2 area = {} for posv = 1, vertical do table.insert(area,{}) for posh = 1, horizontal do if incidence >= math.random(1, 100) then table.insert(area[posv], 1) else table.insert(area[posv], 0) end end end area[math.ceil(vertical/2)][math.ceil(horizontal/2)] = 3 return area end function getSquareArea(horizontal, vertical, bounds) -- By Skyen Hasus local area = {} local bounds = bounds or 1 for posy = 1, vertical do table.insert(area,{}) for posx = 1, horizontal do if posy > vertical-bounds or posy <= bounds or posx > horizontal-bounds or posx <= bounds then table.insert(area[posy], 1) else table.insert(area[posy], 0) end end end area[math.ceil(vertical/2)][math.ceil(horizontal/2)] = 3 return area end [spoiler=Conde2 getSquareArea(size)] function getSquareArea(size) local size = size or 0 local area = {} local vertical = 3+size local horizontal = 3+size for posv = 1, vertical do table.insert(area,{}) for posh = 1, horizontal do if size == 0 then table.insert(area[posv], 1) elseif size == 1 then area = { {1, 1, 1, 1}, {1, 0, 0, 1}, {1, 0, 0, 1}, {1, 1, 1, 1} } elseif posv == vertical then table.insert(area[posv], 1) elseif #area[1] < horizontal then table.insert(area[1], 1) elseif #area[posv] < 1 then table.insert(area[posv],1,1) table.insert(area[posv],horizontal,1) elseif #area[posv] < horizontal then table.insert(area[posv],0) end end end Agora explicando: A função getRandomArea(horizontal, vertical, incidence) ela cria uma area de spells randomicamente !! E a posição do player vai ser sempre o centro da area. Por exemplo: # O tamanho da area na horizontal # O tamanho da area na vertical # Quantos % de chance tem de a area ficar mais "cheia" # O tamanho da area na horizontal # O tamanho da area na vertical # Em vermelho é o tamanho da borda do Square !! Para melhorar a compreensão ai vai uma Spell com area randomizada pela função !! local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 47) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.8, 0, -1.4, 0) -- Você pode usar tambem: -- getSquareArea(horizontal, vertical, bounds) arr = getRandomArea(5, 5, 50) local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end NÃO AUTORIZO A POSTAGEM DESSE SCRIPT EM QUALQUER OUTRO FORUM SEM MINHA AUTORIZAÇÃO !!!!!!!
  14. Steal Spell~

    ┌────────────────────────────────────────┐ │Nome: Steal Spell │Versão: 8.4x │Tipo do script: Spell │Servidor Testado: The Forgotten Server 0.3.3 │Autor: Lwkass └────────────────────────────────────────┘ Comentário: Essa magia é simples mas ajuda a diferenciar a mesmice de magia que eu vejo(pelomenos eu). Este script é uma spell que tem uma pequena chance em porcentagem de roubar metade do dinheiro(pode ser outros itens também) de um player, o dano da magia é fraco por ter essa chance de roubar. Abra a pasta data/spells/script e adicione isso em um arquivo lua (Sugestão: steal.lua) : Lua: Legenda Lua: ■ Esse numero é porcentagem de chance de conseguir roubar um item. ■ São os itens que podem ser roubados, se não quiser dinheiro é só colocar os ids que você quer. (Obs: Ali está 2148 = Gold Coin, 2152 = Platinum Coin e 2160 = Crystal Coin). ■ Se você quiser que roube todo o dinheiro(ou item), ou seja que não roube só a metade, então tire os dois ' -- ' e adicione ' -- ' para a parte em Roxo Adicione essa linha no spells.xml Xml: LegendaXml:: ■ É aonde fica o nome das vocações que podem utilizar essa magia. ■ É o nome da vocação que pode utilizar essa magia. ■ Nome do arquivo lua da magia. --- Bom esse foi meu 2º script postado aqui na otnet, me desculpe por qualquer erro que eu fiz aqui, caso haja dúvidas é só postar aqui. Espero que gostem e possivelmente eu posto outros scripts. By: Lwkass, Grato~
  15. Holy Explosion

    Holy Explosion Tava sem nada para fazer então fiz uma spell x.x' Ela não esta tão boa quanto era pra ser. Vou fazer updates sempre que poder. Agora va ate data/spells/attack crie um arquivo .lua com nome Hollyexplosion Script ~ Agora adicione essa tag em spells.xml * Caso queira por para gast a porcentagem da mana substitua mana= por manapercent=" " (acho que é assim não to bem lembrado x.x' ) Não vou postar SS (Screen Shot) pelo motivo: Spell muito longa Não vai ter SS mais vai ter video ehuheuehuehuehuh' [ame=[Hidden Content]]||| YouTube |||[/ame] Ps: Aconselho a usarem a spell para paladinos (paladins) | Duvidas? erros ? bugs ? Post aqui no topico (se der erro na spell mande a mensagem do erro que o servidor apresentou) Shyoul Sem Mais Espero que gostem
  16. [8.1] Magia Sacrificio

    ------------------------------- Nome: Magia de Sacrificio Versão: 8.1 Tipo do script: Spells Servidor Testado: Aries 4.0 Autor: Lyndell ------------------------------- Bom, é uma magia bem forte que decha o player com apenas 100 de hp e 200 de mana, ou seja eh meio um sacrificio... a magia nao irá matar o player porque só ira ser feita se ele tiver uma quantidade de hp e mana. script: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -3.6, -30, -5.9, 4) local arr = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) health = getPlayerHealth(cid) mana = getPlayerMana(cid) if mana >= 1500 and health >= 2000 then doPlayerAddHealth(cid, -(health-100)) doPlayerAddMana(cid, -(mana-200)) return doCombat(cid, combat, var) else doPlayerSendTextMessage(cid,22,"Você nao tem mana ou health suficiente.") end end Aqueles valores 100 e 200 sao a vida e mana que o player irá ficar ao usar o spell, você tbm pode mudar quanto de hp e mana o player precisa para executar o spell. Bom... você pega qualquer arquivo, apaga tudu e cola o script dentro dele... Depois disso salve ele como magiadead.lua Feito isso abra seu Spells.xml e cole esse tag: <instant name="death" words="exevo death" soul="5" mana="0" aggressive="1" lvl="200" maglv="5" exhaustion="1" prem="1" enabled="1" script="magiadead.lua"><vocation id="2"/><vocation id="6"/><vocation id="5"/><vocation id="1"/><vocation id="3"/><vocation id="4"/><vocation id="7"/><vocation id="8"/></instant> Caso queiram mudar algo no script ou no tag pode, eu recomendo deixar assim mesmo. Gostaram? if yes then Comentem (Y) end
×