Ir para conteúdo

[Encerrado] Jutsu sennin modo


Posts Recomendados

Boa tarde pessoal, tudo bem?

 

estava pensando em um jutsu para meu server, mas como não sou bom em criar scripts de spells venho pedir para alguém me ajudar rs :)

 

vamos ao jutsu:

 

Então pensei em um jutsu que o player primeiramente o consegue em um npc, porém isso eu sei fazer, depois ele usa o jutsu e muda a outfit e fica saindo efeito por 5 minutos (configuravel) enquanto o jutsu está ativo ele poderá usar mais 1 jutsu novo e quando o jutsu "acabar" irá aparecer uma mensagem dizendo "você não está no modo sennin".

 

Alguém pode me ajudar?

 

também tenho mais 1 tópico, se quiserem olhar http://www.xtibia.com/forum/topic/223281-jutsu-de-andar-na-agua/

 

 

Obrigado, dúvidas deixem nos comentários.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Boa noite.

 

Fiz o script conforme entendi, e ainda adicionei para quando se tornar um "Sennin", além do Outfit e Efeito, ficar mais ágil também.

Obs: Coloquei o Condition Infight para evitar que players efetuem logout enquanto estão com o script, porém, NÃO bugará mesmo se ocorrer.

Tudo facilmente configurável.

 

Sem mais delongas, abaixo segue o script:

 

Esta tag vai em spells.xml:

<instant name="Sennin" words="sennin" lvl="1" mana="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="sennin.lua"/>

E agora o arquivo sennin.lua, cole este script abaixo:

 

 

local tempo = 5 -- Tempo em minutos para a duração
local repetindo = 1000 -- Tempo em milésimos entre um efeito e outro
local transform = {lookType = 25} -- aqui a LookType do outfit
local strg = 50078 -- aqui não precisa mexer

local condition_outfit = createConditionObject(CONDITION_OUTFIT)
setConditionParam(condition_outfit, CONDITION_PARAM_OUTFIT, true)
setConditionParam(condition_outfit, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(condition_outfit, transform)

local condition_haste = createConditionObject(CONDITION_HASTE)
setConditionParam(condition_haste, CONDITION_PARAM_TICKS, tempo * 60 * 1000)
setConditionFormula(condition_haste, 0.5, -34, 0.5, -34)

local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)

    function onCastSpell(cid, var)
        doAddCondition(cid, condition_outfit)
        doAddCondition(cid, condition_haste)
        doAddCondition(cid, condition_infight)
        setPlayerStorageValue(cid, strg, 1)
        Effect(cid)
        addEvent(StopEffect, tempo * 60 * 1000, cid)
end

    function Effect(cid)
    if (isCreature(cid)) then
         if (getPlayerStorageValue(cid, strg) == 1) then
    local position = getCreaturePosition(cid)
    local efeito = CONST_ME_MAGIC_GREEN
        setPlayerStorageValue(cid, strg, 1)
        doSendMagicEffect(position, efeito)
    end
        addEvent(Effect, repetindo, cid)
    else
        return StopEffect(cid)
    end
end

    function StopEffect(cid)
    if (getPlayerStorageValue(cid, strg) == 1) then
        setPlayerStorageValue(cid, strg, 0)
        doPlayerSendTextMessage(cid, 27, "Voce nao esta mais no modo Sennin.")
        doRemoveCondition(cid, CONDITION_OUTFIT)
        doRemoveCondition(cid, CONDITION_HASTE)
        doRemoveCondition(cid, CONDITION_INFIGHT)
      end
  return TRUE
end

 

 

 

Testei aqui e funcionou perfeitamente.

Caso apresente algum erro, poste aqui para resolvermos.

 

Boa sorte.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

Poderia até ser, porém, poderia por para só usar essas spells se tivesse tal storage que ganha quando se torna Sennin.

Acho que seria mais fácil.

 

Mas se necessitar mesmo da nova vocação, da também.

 

-edit-

Agora fica a seu critério decidir se vai querer.

Eu acho mais fácil trabalhar com storage para liberar magias do que vocações, pois podem haver bugs e dá mais trabalho para remover esta se o player conseguir fazer logout e etc..


-edit²-

Tópico abandonado?

Posso solicitar o 'fechamento'?

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

Você já tem as magias prontas?

Se tiver, poste-as aqui para que eu configure as mesmas para poder ser usadas somente se tiver tal storage.

Logo em seguida eu adiciono ao script que postei para adicionar storage quando "transformar" em Sennin.

 

Então, aguardo a postagem das magias.

Link para o comentário
Compartilhar em outros sites

No caso desta é o amaterasu do sasuke, mas pode se com ela pois irei adicionar mais coisas além do sennin modo :)


local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT,134)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -8.2, 1, -9.2, 1)


function onCastSpell(cid, var)

local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}

doSendMagicEffect(position1, 79)

local efeito = 110

doSendMagicEffect(getThingPos(cid), efeito)

doCreatureSay(cid, "Amaterasu", TALKTYPE_MONSTER)

doCombat(cid, combat, var)

end
Link para o comentário
Compartilhar em outros sites

Teste este abaixo.

Me avise do resultado.

local strg = 50078 -- este valor tem que ser o mesmo que o do script do Sennin, então se não alterou o que postei, deixe-o assim mesmo.
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
local efeito = 110
    
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,134)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -8.2, 1, -9.2, 1)
 
function onCastSpell(cid, var)
    if getPlayerStorageValue(cid, strg) == 1 then
        doSendMagicEffect(position1, 79)
        doSendMagicEffect(getThingPos(cid), efeito)
        doCreatureSay(cid, "Amaterasu", TALKTYPE_MONSTER)
        doCombat(cid, combat, var)
    else
        doPlayerSendCancel(cid, "Voce precisa estar no modo Sennin para usar esta magia.")
    end
end

Boa sorte.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

O Exhaust do Modo Sennin já está pronto.

 

 

 

local tempo = 5 -- Tempo em minutos para a duração
local repetindo = 1000 -- Tempo em milésimos entre um efeito e outro
local transform = {lookType = 25} -- aqui a LookType do outfit
local strg = 50078 -- aqui não precisa mexer
local strg_exhaust = 50079
local tempo_exhaust = 5 -- em minutos

local condition_outfit = createConditionObject(CONDITION_OUTFIT)
setConditionParam(condition_outfit, CONDITION_PARAM_OUTFIT, true)
setConditionParam(condition_outfit, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(condition_outfit, transform)

local condition_haste = createConditionObject(CONDITION_HASTE)
setConditionParam(condition_haste, CONDITION_PARAM_TICKS, tempo * 60 * 1000)
setConditionFormula(condition_haste, 0.5, -34, 0.5, -34)

local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)

    function onCastSpell(cid, var)
    if getPlayerStorageValue(cid, strg) == 1 then
        doPlayerSendCancel(cid, "Voce ja esta no modo Sennin.")
    else
    if getPlayerStorageValue(cid, strg_exhaust) - os.time() >= 0 then
        doPlayerSendCancel(cid, "Voce precisa esperar " .. getPlayerStorageValue(cid, strg_exhaust) - os.time() .. " segundos para usar novamente.")
    else
        doAddCondition(cid, condition_outfit)
        doAddCondition(cid, condition_haste)
        doAddCondition(cid, condition_infight)
        setPlayerStorageValue(cid, strg, 1)
        Effect(cid)
        addEvent(StopEffect, tempo * 60 * 1000, cid)
    end
  end
end

    function Effect(cid)
    if (isCreature(cid)) then
         if (getPlayerStorageValue(cid, strg) == 1) then
    local position = getCreaturePosition(cid)
    local efeito = CONST_ME_MAGIC_GREEN
        setPlayerStorageValue(cid, strg, 1)
        doSendMagicEffect(position, efeito)
    end
        addEvent(Effect, repetindo, cid)
    else
        return StopEffect(cid)
    end
end

    function StopEffect(cid)
    if (getPlayerStorageValue(cid, strg) == 1) then
        setPlayerStorageValue(cid, strg, 0)
        setPlayerStorageValue(cid, strg_exhaust, os.time() + tempo_exhaust * 60)
        doPlayerSendTextMessage(cid, 27, "Voce nao esta mais no modo Sennin.")
        doRemoveCondition(cid, CONDITION_OUTFIT)
        doRemoveCondition(cid, CONDITION_HASTE)
        doRemoveCondition(cid, CONDITION_INFIGHT)
      end
  return TRUE
end

 

 

Testado e 100% funcional.

 

Agora o da magia, nem magia em si está funcionando.

Testei do jeito que me mandou e não funciona, por isto deu erro quando adaptei o script.

 

Me envie a magia que deseja, funcionando, e eu adiciono o script para usar somente no modo Sennin.

 

-EDIT-

Agora o da magia está funcionando perfeitamente, eu que havia cometido um erro bobo aqui na hora de registrá-la.

E só funciona no modo Sennin, bom agora está tudo perfeito e testado.

A magia deve ficar assim:

 

 

local strg = 50078 -- este valor tem que ser o mesmo que o do script do Sennin, então se não alterou o que postei, deixe-o assim mesmo.
    
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,134)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -8.2, 1, -9.2, 1)
 
function onCastSpell(cid, var)
    if getPlayerStorageValue(cid, strg) == 1 then
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
        doSendMagicEffect(position1, 79)
local efeito = 110
        doSendMagicEffect(getThingPos(cid), efeito)
        doCreatureSay(cid, "Amaterasu", TALKTYPE_MONSTER)
        doCombat(cid, combat, var)
    else
        doPlayerSendCancel(cid, "Voce precisa estar no modo Sennin para usar esta magia.")
    end
end

 

Como disse acima, tudo testado e funcionando perfeitamente.

 

Boa sorte.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...