Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Nome: Sewing Straight (costura em linha reta)

Versão testada: The Forgotten Server 8.54

Autor: Jedian

Explicação: Abaixo \/

Olá galera, aqui eu denovo com outro post, que espero que seja útil pra vocês.

Pois é, eu só posto spells, mas é que o resto, praticamente não tem o que inventar, sim, tem, mas o que está exatamente ao alcance de um scripter, nem fácil demais, nem impossível pra ele, é praticamente inexistente, por isso é difícil pra nós, scripters, na minha opinião, demonstrar exatamente o potencial de cada um, e em spells, cada um faz do seu jeito, ficando ruim ou não, é perfeita pra cada um que a faz, estou pensando muito em outros sistemas pra vocês, sério, mas tá difícil.

Mudando de assunto, vamos a magia, pensei nela esfregando pedras :rock: a ideia seria uma magia que faz uma espada "costurar em linha reta"(como o nome diz) para frente do personagem de acordo com o tipo de arma usada, aí, se houver um target, ela vai até ele e dá "costuradas" conforme a distância que percorreu até chegar nele, quanto mais perto, mais "costuradas" e vice-versa.

Vamos instalar:

em data/spells/scripts copie um arquivo e cole-o, renomeie para algum nome, apague todo o conteúdo e cole isso dentro:

:) if getPlayerWeapon(cid).uid ~= 0 then doSendAnimatedText(getThingPos(cid), 'Sewing', 144) addEvent(doSendAnimatedText, 350, getThingPos(cid), 'Straight!', 144) if isCreature(getCreatureTarget(cid)) then local function gotarget(cid, pos, n) if isCreature(getCreatureTarget(cid)) then local n = n or 0 local pos = pos or getCreaturePosition(cid) local topos = getThingPos(getCreatureTarget(cid)) local dir = getRetDirToPos(pos, topos) if n < 8 then if not(pos.x == topos.x and pos.y == topos.y) then pos = getPosByDir(pos, dir) end doAreaCombatHealth(cid, 1, pos, 0, -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*1.6), -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*2.3), 255) doSendDistanceShoot({x=pos.x-2,y=pos.y-2,z=pos.z}, pos, t[getItemWeaponType(getPlayerWeapon(cid).uid)][1]) addEvent(gotarget, 80, cid, pos, n+1) end end end gotarget(cid) else n = 0 while n < 8 do n = n + 1 local front = getPosByLookDist(cid, n) if not getTilePzInfo(front) then addEvent(doSendDistanceShoot, n*80, {x=front.x-2, y=front.y-2, z=front.z},front, t[getItemWeaponType(getPlayerWeapon(cid).uid)][1]) addEvent(doAreaCombatHealth, n*80, cid, 1, front, 0, -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*1.6), -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*2.3), 255) end end end else return doPlayerSendCancel(cid, 'You need a weapon to cast it.') end return true end


local function getPosByLookDist(cid, quant) -- by Jedian

local pos = getPlayerPosition(cid)

if getPlayerLookDir(cid) == 0 then

   return {x = pos.x, y = pos.y - quant, z = pos.z}

elseif getPlayerLookDir(cid) == 1 then

   return {x = pos.x + quant, y = pos.y, z = pos.z}

elseif getPlayerLookDir(cid) == 2 then

   return {x = pos.x, y = pos.y + quant, z = pos.z}

elseif getPlayerLookDir(cid) == 3 then

   return {x = pos.x - quant, y = pos.y, z = pos.z}

end

end

local function getRetDirToPos(pos1, pos2)

local retdirs = {

  [0] = 0,

  [1] = 1,

  [2] = 2,

  [3] = 3,

  [4] = 2,

  [5] = 1,

  [6] = 3,

  [7] = 0}

return retdirs[getDirectionTo(pos1, pos2)]

end

local t = {

  [1] = {24, SKILL_SWORD},

  [2] = {26, SKILL_CLUB},

  [3] = {25, SKILL_AXE}

  }

function onCastSpell(cid, var) -- by Jedian 
salve e feche, agora em spells.xml adicione a seguinte tag:

<instant name="Sewing Straight" words="sewing straight" lvl="35" mana="0" prem="0" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="nome.lua"></instant>

edite o nome do arquivo e ajeite conforme as preferências.

Pronto, está instalado, nenhuma foto, pois não dá pra ter uma ideia muito boa com elas :S testem e critiquem aí.

Editado por Jedian
Nova versão, fórmula por skill. (veja o histórico de edições)

avatarlogoedit.png

Scripter

Link para o post
Compartilhar em outros sites

Gostei! Bem interessante

Só acho que deveria usar o skill do personagem como base de dano, junto com o level também claro, mas não SÓ o level.

Mas curti. Parabéns

Espero ver mais spells :P

Abraços.

Link para o post
Compartilhar em outros sites

@Equipe Avatar Online

Valeu pelo apoio galera .-.

@Renato

Obrigado pelo comentário, realmente fica mais realista usar o skill, já que usa o tipo da arma, porque não usar skill? :P

Vou incrementar depois, obrigado :)

Concerteza vai ver mais spells :D

@Topic

Continuem comentando galera. :)

avatarlogoedit.png

Scripter

Link para o post
Compartilhar em outros sites

Parabéns Jedian !

Você é um grande scripter.

Reputado + !

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites

@Skydangerous

Obrigado :D

fiquei encabulado agora

@topic

Editado pra formula pelo skill da arma que o player tá usando :)

qualquer erro postem ae que eu tento arrumar.

avatarlogoedit.png

Scripter

Link para o post
Compartilhar em outros sites

opa ja axei otra magia do jedia

e tava procurando ela pro meu ot

vlw ae (:

flw :]

Reputado

Viu meu post ali emcima? Foi Util?

Entao aperta rep_up.png ali no cantinho (:

Att: Japan

ed1a9b410f074db2bddd449224eb2ea3.0.gif

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Kazuya9629
      como eu fasso pro charmander usa spell Ember ea outfit dele mudar por alguns segundos
       
      base poke jornadas 
    • Por Sociopata
      Abra data\spells\scripts cria um arquivo com nome earthquake.lua e cole isso \/


      local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STONES) setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0.9, 0, 1.0, 0) local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 34) setCombatParam(combat1, COMBAT_PARAM_USECHARGES, TRUE) setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 0.9, 0, 1.0, 0) local area1 = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat1, area1) function onCastSpell(cid, var) doCombat(cid, combat1, var) return doCombat(cid, combat, var) end em data /spells.xml cole isso \/ <instant name="earthquake" words="exori beam" lvl="33" mana="450" prem="0" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="earthquake.lua"> <vocation id="4"/>
    • Por Linus
      Tag spells.XML(configure a gosto, use o mesmo para todos os scripts acima) :
      <instant name="NAME" words="NAME" lvl="1" mana="1" prem="0" aggressive="1" selftarget="0" exhaustion="1" group="attack" groupcooldown="1" needlearn="0" script="ARQUIVO.lua"> <vocation name="VOCATION NAME"/> </instant>  Para adicionar a spell, só ir em data/spells/scripts criar um arquivo .lua para o script e adicionálo e dps ir em spells.XML colocando a tag, configurada de acordo com a spell em questão.
       
       
       
       
      Créditos Printer.
       
       
       
    • Por Tricoder
      Descrição
      Estilo utito tempo, adiciona 10x mais magic levels durante 30 segundos. Para alterar, modifique essa parte:
      setConditionParam(condition2, CONDITION_PARAM_TICKS, 30000) setConditionParam(condition2, CONDITION_PARAM_STAT_MAGICLEVEL, 10) Modifique as vocações na tag também.
       
      Script
      data/spells/scripts/utitomana.lua
      local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition2 = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition2, CONDITION_PARAM_TICKS, 30000) setConditionParam(condition2, CONDITION_PARAM_STAT_MAGICLEVEL, 10) setCombatCondition(combat, condition2) function onCastSpell(cid, var) local ret = LUA_ERROR if(doCombat(cid, combat, var) == LUA_NO_ERROR) then ret = LUA_NO_ERROR end return ret end data/spells/spells.xml 
      <instant name="Utito Mana" words="utito tempo mana" lvl="60" mana="450" prem="1" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="utitomana.lua"> <vocation id="3"/> <vocation id="7"/> </instant> Créditos: Acubens
       
    • Por Stigal
      Nome: Spell Paralyze Função: Paralyza o monstro/player deixando lerdos. Versão: Testada somente na "8.54". Créditos: Stigal. -
      "Pasta Servidor > Data > Spell > Scripts" crie "newparalyze.lua" e adicione: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat, condition) function onCastSpell(cid, var)     return doCombat(cid, combat, var) end -
       
      "Pasta Servidor > Data > Spell" em spell.xml adicione:
      <instant name="paralyze" words="paralyze" lvl="40" mana="70" prem="0" range="5" needtarget="1" blockwalls="1" needweapon="1" exhaustion="2000" needlearn="0" script="newparalyze.lua">         <vocation name="VOCAÇÃO1"/>         <vocation name="VOCAÇÃO2"/>     </instant>  
       
      Atenciosamente, Stigal.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo