Ir para conteúdo
  • 0

Dúvida Sobre Spell!


kilat

Pergunta

Olá gente, vamos direto ao ponto.

 

Eu tenho essa spell (exevo gran mas vis):

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

 

local area = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

 

E também tenho esta spell (exevo gran mas flam):

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)

 

local area = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

 

Eu gostaria de colocar as 2 em um script só, cuja palavra mágica para ativar fosse "exevo gran mas vis" e fazer uma condição assim:

Vou dar um exemplo em portugol.

 

 

se (player = premium and promotion) entao

USA A MAGIA DE FOGO que no caso seria o script do (exevo gran mas flam)

senao

USA A MAGIA DE RAIO que no caso seria o script do (exevo gran mas vis)

fim

 

 

Espero que alguem possa me ajudar.

Desde já,

Obrigado!

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Olá gente, vamos direto ao ponto.

 

Eu tenho essa spell (exevo gran mas vis):

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

 

local area = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

 

 

E também tenho esta spell (exevo gran mas flam):

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)

 

local area = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

 

Eu gostaria de colocar as 2 em um script só, cuja palavra mágica para ativar fosse "exevo gran mas vis" e fazer uma condição assim:

Vou dar um exemplo em portugol.

 

 

se (player = premium and promotion) entao

USA A MAGIA DE FOGO que no caso seria o script do (exevo gran mas flam)

senao

USA A MAGIA DE RAIO que no caso seria o script do (exevo gran mas vis)

fim

 

 

Espero que alguem possa me ajudar.

Desde já,

Obrigado!

 

Kara.

dexa eu ve se entendi...

voce quer um exevo gran mas vis com ataque de fogo???

se for...

Troca: setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)

por: setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

 

é isso...

caso nao for isso que voce queira pode fala, que outras pessoas podem lhe sanar essa duvida...

Flw's

Link para o comentário
Compartilhar em outros sites

  • 0

kilat,

Pelo que compreendi, você quer uma magia que seja ativada de um jeito para certa condição, e do contrário, de outro jeito. Então, segue o conteúdo da sua magia, que você deverá substituir pelo conteúdo do arquivo LUA da magia Exevo Gran Mas Vis.

 

local combat_premium = createCombatObject()
  setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
  setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
  setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)

local combat_free = createCombatObject()
  setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
  setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
  setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

local area_premium = createCombatArea(AREA_CROSS5X5)
local area_free = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat_premium, area_premium)
setCombatArea(combat_free, area_free)

function onCastSpell_free(parameters)
  doCombat(parameters.cid, combat_free, parameters.var)
end

function onCastSpell_premium(parameters)
  doCombat(parameters.cid, combat_free, parameters.var)
end

function onCastSpell(cid, var)
  local parameters = {cid = cid, var = var}
  if (getPlayerVocation(cid) == 5 and getPlayerPremiumDays(cid) > 0) then
     addEvent(onCastSpell_premium, 0, parameters)
  else
     addEvent(onCastSpell_free, 0, parameters)
  end
  return true
end
Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

ah deixa nem vi o post do oneshot

 

abraços

 

ah o meu fico assim:

(acho que não tem funçao pra ve se o jogador é promote)

 

 

 

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)


local area1 = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat1, area1)

local area2 = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat2, area2)

function onCastSpell(cid, var)
if (isPremium(cid) == TRUE) then
return doCombat(cid, combat2, var)
else
return doCombat(cid, combat1, var)
end
end

 

 

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

  • 0

Oneshot, você entendeu perfeitamente o que eu desejo fazer, usei o seu script porém ocorreram alguns erros:

 

 

[17/07/2010 12:30:46] Lua Script Error: [spell Interface]

[17/07/2010 12:30:46] data/spells/scripts/attack/rage of the skies.lua

 

[17/07/2010 12:30:46] luaSetCombatParam(). Combat not found

 

[17/07/2010 12:30:46] Lua Script Error: [spell Interface]

[17/07/2010 12:30:46] data/spells/scripts/attack/rage of the skies.lua

 

[17/07/2010 12:30:46] luaSetCombatParam(). Combat not found

 

[17/07/2010 12:30:46] Lua Script Error: [spell Interface]

[17/07/2010 12:30:46] data/spells/scripts/attack/rage of the skies.lua

 

[17/07/2010 12:30:46] luaSetCombatFormula(). Combat not found

 

[17/07/2010 12:30:46] Lua Script Error: [spell Interface]

[17/07/2010 12:30:46] data/spells/scripts/attack/rage of the skies.lua

 

[17/07/2010 12:30:46] luaSetCombatParam(). Combat not found

 

[17/07/2010 12:30:46] Lua Script Error: [spell Interface]

[17/07/2010 12:30:46] data/spells/scripts/attack/rage of the skies.lua

 

[17/07/2010 12:30:46] luaSetCombatParam(). Combat not found

 

[17/07/2010 12:30:46] Lua Script Error: [spell Interface]

[17/07/2010 12:30:46] data/spells/scripts/attack/rage of the skies.lua

 

 

Obrigadão ai pelo esforço e pela ajuda, espero que consigamos resolver estes erros.

 

Vodkart, sua cript funcionou perfeitamente, do jeitinho que eu queria, te agradeço muitoo pela dedicação e esforço, porém, tem mais 2 negocinhos que eu precio nessa script ;x

Precisava que ele usasse como condição além de ser premium, ele tem q ser promotion = 2 e precisaria de uma variável booleana própria para identificar se o player tem permissão para usar a magia,

 

Verdadeiro = pode usar

falso = não pode usar

 

Muito obrigado pelo esforço de todos para me ajudar e desculpa se estou pedindo de mais,

aguardo resposta

abraço!

 

Eiiiii gente, eu já consegui fazer a condição pra promotion2 que no caso seria a vaocation alem do master sorcerer, agora só falta eu fazer uma condição própria de verdadeiro ou falso ou 0 e 1 para dizer se o player tem ou nao a magia 2 (que no caso é a de fogo).

 

A spell por enquanto está assim:

 

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)

setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)

 

 

local area1 = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat1, area1)

 

local area2 = createCombatArea(AREA_CROSS5X5)

setCombatArea(combat2, area2)

 

function onCastSpell(cid, var)

if (isPremium(cid) == TRUE and getPlayerVocation(cid) == 9) then

return doCombat(cid, combat2, var)

else

return doCombat(cid, combat1, var)

end

end

 

Só falta a condição que citei a cima..

Vlw gente!! to qsee :D

graças a vocês!!

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

kilat,

Haha! Se não fosse pelo meu erro, teria funcionado também,

Agora, vejamos se entendi, você quer uma verificação se o jogador aprendeu a magia para poder invocar-la? No caso seria com a função getPlayerLearnedInstantSpell(cid, name), ele retorna um valor booleano [verdadeiro = o jogador aprendeu a magia, falso = o contrário].

 

Vou usar o script do Vodkart, que está menos propenso a erros.

 

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)

local area1 = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat1, area1)

local area2 = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat2, area2)

function onCastSpell(cid, var)
if (isPremium(cid) == TRUE and getPlayerVocation(cid) == 9) then
return doCombat(cid, combat2, var)
elseif (getPlayerLearnedSpell(cid, "Rage of the Skies")) then
return doCombat(cid, combat1, var)
else
doPlayerSendCancel(cid, "You can\'t use this spell")
end
end

 

Até mais,

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

  • 0

O learn spell foi uma boa idéia, porém, não funcionou. Pois eu teria que abilidar o learnspell na magia nos spell.xml

Eu precisaria de uma condição propia, para que, quando o player entrar no site e clicar em "adicionar spell" ele tem q adicionar um TRUE no char para liberar a spell e assim passando pela condição a spell iria mudar. Seria algo mais ou menso assim:

 

if (player == premium AND vocation == 9 AND condição == TRUE) then

USAR MAGIA DE FOGO, no caso, return COMBAT 2

else

USAR MAGIA DE RAIO, no caso, retur combat 1

end

 

 

//a condição == TRUE seria a condição que te falei, que o cara vai add a spell pelo site e em algum lugar no char vai add condição = TRUE caso contrário será FALSO

precisaria de uma condição e uma tabela especial no sql do char para addo TRUE correto?

 

Fico no aguardo

Obrigadãoo

Link para o comentário
Compartilhar em outros sites

  • 0

botei por storage

ou seja quando esse cara for no site e comprar a spells ele ganha storage 11254 e pode usar a spells

 

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.6, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.6, -50, -1.8, 0)


local area1 = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat1, area1)

local area2 = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat2, area2)

local config = {
magia = "TRUE", 
storage = 11254
}


function onCastSpell(cid, var)
if (isPremium(cid) == TRUE and getPlayerVocation(cid) == 9) then
if (config.magia == "TRUE") and getPlayerStorageValue(cid, tonumber(config.storage)) >= 1  then
return doCombat(cid, combat2, var)
else
return doCombat(cid, combat1, var)
end
end
end

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

  • 0

Valeu Vodkart muito bem pensado, só faltou uma coisa. Como e onde eu vou fazer o direcionamento para quando ele clicar no site "adicionar magia" adicionar aquele número de storage no personagem?

Acho que se você apenas me informar aonde exatamente fica o número do storage no player eu já conseguirei fazer o direcionamento.

 

;)

Link para o comentário
Compartilhar em outros sites

  • 0

sinceramente eu não sei absolutamente nada sobre website...

 

oque eu sei é que dá para fazer o seguinte,ele clica lá compra o item talz ai ele usa o item ganha a storage...

 

mais esse do storage por site vo ficar devendo

 

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Sim sim eu te entendo, mais eu só precisava saber aonde essa storage fica salva no char, sabendo isso eu sei como fazer pra direcionar através do website.

Vou dar um exemplo bem simples: quando o cara clicar em adicionar magia, ele vai adicionar o número na storage, mais aonde fica essa storage?

Só isto eu precisaria saber :D

 

brigadão ai pelo esforço Vodkart

Link para o comentário
Compartilhar em outros sites

  • 0

kilat,

Imagine assim,

Cada personagem do jogo tem um creatureID distinto e a cada creatureID são atribuídos variáveis de memória que podem assumir qualquer valor ao longo do tempo, seja booleano, analógico ou uma string.

 

São, se não me engano, 65535 variáveis de memória. Essas são as chamadas storages.

Teoricamente elas ficam na personagem, mas acho que não dá para fazer algo com elas em websites,

Você só pode "setar" os valores das storages com setPlayerStorageValue(cid, storage, value) e pegar os valores das storages com getPlayerStorageValue(cid, storage)

Abraços,

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado Vodkart e Oneshot pela ajuda, foram muito proveitosas suas dicas e scripts, principalmente ao Vodkart que primeiramente enviou o script bem do jeito doido que eu queria fazer.

 

Att,

Kilat

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...