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
  • Respostas 7
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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

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

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

      Hidden Content
      Give reaction to this post to see the hidden content.

      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.
  • Estatísticas dos Fóruns

    96842
    Tópicos
    519597
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo