R0
dúvida

Spell com Need Skill

Por r0bert0, 15 de set. de 2015 em Scripts

resolvido
script
otserv
9
1.9k
r0bert0R
15 de setembro de 2015 às 17:10

Bom galera, estou com uma dúvida que não sei se é possivel ou nao.

 

Bom queria saber se tem como colocar na tag da magia no spells.xml algo que faça com que a spell necessite skills.

 

Exemplo no caso do Magic Level é só colocar (maglv="10") na tag que faz com que a magia necessite de ml 10 para ser usada.

 

E para outras skills é possivel ? Fist Fighting , Sword, Club e Distance como faço para colocar ? da para colocar na tag do spells.xml ou tem que ser dentro do script da magia ?

 

Aguardo respostas , obg desde já ! smile.png

ClarymC
15 de setembro de 2015 às 22:22

Também queria saber :s

zipter98Z
15 de setembro de 2015 às 22:35
Melhor resposta

Por padrão, não há como configurar na tag condições envolvendo outras skills, como as citadas por você. Apesar de ser possível mudar isso nas sources do servidor, a opção mais fácil é no próprio código Lua, usando a seguinte função:

getPlayerSkillLevel(cid, skillid)

Exemplo de uso:

if getPlayerSkillLevel(cid, SKILL_SWORD) < 10 then
    return doPlayerSendCancel(cid, "Você não pode usar esta spell pois seu nível em sword é abaixo de 10.")
end
OBS: Você deve usar esta condição abaixo do callback onCastSpell.

Editado Setembro 15 por zipter98

r0bert0R
16 de setembro de 2015 às 02:12

Entendido Zipter98, porem sou leigo quanto a source será que voce poderia fazer esse imenso favor de me explicar ?

 

Qual ou quais arquivos devo modificar, será que pode deixar explicado aqui ?

Obg, agradeço desde já.

MartelixM
16 de setembro de 2015 às 09:34

Cara mexer nisso nas sources não será difícil, mas você poderá piorar o que não é perfeito.

Coloca conforme o código citado pelo @zipter98 no arquivo .LUA

Para saber qual é o arquivo, basta abrir spells.xml na pasta "data/spells".

Provavelmente irá gastar a mana de qualquer forma a não ser que você coloque para que quando essa verificação for verdadeira adicionar mana X ao player.

r0bert0R
16 de setembro de 2015 às 14:08

Ahhh sim, agora que entendi a mensagem do Zipter..

 

Então no caso é só adcionar essa condição dentro do script da spell né ?

Ficando assim \/ !

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -8.2, 1, -8.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, 71)
return doCombat(cid, combat, var)
if getPlayerSkillLevel(cid, SKILL_SWORD) < 10 then
return doPlayerSendCancel(cid, "Você não pode usar esta spell pois seu nível em sword é abaixo de 10.")
end
end

 

 

zipter98Z
16 de setembro de 2015 às 14:30


local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

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

 

function onCastSpell(cid, var)

if getPlayerSkillLevel(cid, SKILL_SWORD) < 10 then

return doPlayerSendCancel(cid, "Você não pode usar esta spell pois seu nível em sword é abaixo de 10.")

end

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

doSendMagicEffect(position1, 71)

return doCombat(cid, combat, var)

end

 

Editado Setembro 16 por zipter98

r0bert0R
16 de setembro de 2015 às 14:45

SHOW Zipter ! Obrigado, só mais uma... Essa condição nao atrapalha em nada do que vem a seguir, posso sempre colocar em baixo do callback onCastSpell?

 

Estava a um tempo já procurando isso, obrigado :)

Duvida sanada !

zipter98Z
16 de setembro de 2015 às 19:29

Exato, sempre coloque esta condição abaixo do callback.

Sanado, movido.


Tópico movido para dúvidas / pedidos resolvidos.