Ir para conteúdo
  • 0

Duvida sobre como criar uma Spell!


Nimaro22

Pergunta

Olá sou novo por aqui! vim aqui para encontrar uma maneira de criar uma spell onde ocorra as seguintes funçoes:

 

Skills como ML, Sword e tal sejam elevados.

Looktype seja alterado

E altere um item por outro. EX: ID 2250 se transforme em ID 2502, Mas que seja temporario, assim quando o tempo se esgotar o ID 2502 volte a ser 2250.

 

 

Versao do servidor 8.6

Sei mexer apenas com o basico, qualquer coisa desculpa pela ignorancia!

 

Obrigado, agradeço desde já!

 

Editado por Caronte
Adequar às regras
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Basicamente isso:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)


local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 1)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, 1)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)


local outfit = { lookType = 31 , lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 0}


function undoTransform(cid, itemid1, itemid2)
    if getPlayerItemCount(cid, itemid1) > 0 then
        local item = getPlayerItemById(cid, true, itemid1)
        doTransformItem(item.uid, itemid2)
    end
end


function onCastSpell(cid, var)
    if getPlayerItemCount(cid, 2250) > 0 then
        local item = getPlayerItemById(cid, true, 2250)
        doTransformItem(item.uid, 2502)
        addEvent(undoTransform, 1000, cid, 2502, 2250)
        doSetCreatureOutfit(cid, outfit, 1000)
        return doCombat(cid, combat, var)
    end
    return false
end

Agora tem que criar um storage pra controlar isso e adicionar um check no login.lua, se o player logar no meio da magia, quando ele entrar novamente o item retornará ao anterior.

 

Abraços,

Link para o comentário
Compartilhar em outros sites

  • 0

e se ele não possuir esse item 2250? a magia não irá funcionar? E se ele usar a spell e jogar fora o item 2502?

Assim, a magia so irá funcionar se possuir o item 2250. Se o item 2502 for jogado fora, ele tambem tera jogado fora o 2250, pois quando o tempo acabar ele ira voltar a ser o 2250.

Na verdade só preciso que tenha uma funçao de conjurar, tipo que o item 2250 se torne 2502, os processos seguintes eu mesmo dou conta, posso fazer com que o item 2502 tenha um tempo nele mesmo, ai quando acabar ele decayto 2250.

Link para o comentário
Compartilhar em outros sites

  • 0

Pera, deixa eu ver se eu entendi: O player usa a magia, tudo aquilo acontece e o item x vira y? Após um tempo T y volta a ser x e os efeitos passam, correto?

Link para o comentário
Compartilhar em outros sites

  • 0

Pera, deixa eu ver se eu entendi: O player usa a magia, tudo aquilo acontece e o item x vira y? Após um tempo T y volta a ser x e os efeitos passam, correto?

Exatamente isso! mas caso nao seja possivel a parte dos itens, poderia me dizer como fazer com que a spell mude o looktype por determinado tempo?

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você diz mudar looktype, o que deseja? Colocar um outfit de monstro/item, mudar para um outfit especifico, mudar so as cores?

Assim, digamos que o looktype atual seja o 5, eu quero que se torne o 69 (ou se facilitar pode fazer com que transforme em um montro, ai posso alterar o looktype do mesmo) . Mas tambem por um determinado tempo. Resumindo:

 

Estou usando um outfit qualquer, usei a magia, Skills foram elevados, outfit mudou para o desejado (looktype x), e certo item em maos se torna outro. E tudo volta ao normal depois de um tempo T.

Da pra se dizer que é uma transformaçao temporaria!

Link para o comentário
Compartilhar em outros sites

  • 0

Basicamente isso:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)


local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 1)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, 1)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)


local outfit = { lookType = 31 , lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 0}


function undoTransform(cid, itemid1, itemid2)
    if getPlayerItemCount(cid, itemid1) > 0 then
        local item = getPlayerItemById(cid, true, itemid1)
        doTransformItem(item.uid, itemid2)
    end
end


function onCastSpell(cid, var)
    if getPlayerItemCount(cid, 2250) > 0 then
        local item = getPlayerItemById(cid, true, 2250)
        doTransformItem(item.uid, 2502)
        addEvent(undoTransform, 1000, cid, 2502, 2250)
        doSetCreatureOutfit(cid, outfit, 1000)
        return doCombat(cid, combat, var)
    end
    return false
end

Agora tem que criar um storage pra controlar isso e adicionar um check no login.lua, se o player logar no meio da magia, quando ele entrar novamente o item retornará ao anterior.

 

Abraços,

Cara voce é um gênio ! Funcionou perfeitamente, estou a tempo tentando dar continuidade em meu server e essa spell é a peça chave. Sinceramente estou muito grato!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara voce é um gênio ! Funcionou perfeitamente, estou a tempo tentando dar continuidade em meu server e essa spell é a peça chave. Sinceramente estou muito grato!

Nada cara, que bom que ajudei.

`Precisando estamos ai.

 

Abraços,

Link para o comentário
Compartilhar em outros sites

  • 0

Só um adendo: como vc tá chamando uma função no addEvent e passando parametros do callback (cid) vc tem que re-checar se o cid ainda existe. Bota um if isCreature(cid) na function

function undoTransform(cid, itemid1, itemid2)
  if isCreature(cid) then
    if getPlayerItemCount(cid, itemid1) > 0 then
        local item = getPlayerItemById(cid, true, itemid1)
        doTransformItem(item.uid, itemid2)
    end
  end
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...