NB
pedido

spell de transm

Por nbb147, 19 de dez. de 2012 em Scripts

spell
transform
muda
vocation
script
21
2k
nbb147N
19 de dezembro de 2012 às 16:07

galera eu estou com um script de uma spell que ela muda a vocação do player e muda a outfit, só tem um problema ela não esta mudando o outfit, já tentei mais só conheço uma função que transforma um player, que é doSetCreatureOutfit,mais essa função não esta funcionando, alguém ajuda ai.

 

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

 

function onCastSpell(cid, var)

if getPlayerVocation(cid) == 37 then

if getPlayerLevel(cid) >= 40 then

doPlayerSetVocation(cid, 65)

doSetCreatureOutfit(cid,355,-1)

doSendMagicEffect(getPlayerPosition(cid), 70)

else

doPlayerSendCancel(cid, "VocÊ não tem level nescessario para se transformar.")

doSendMagicEffect(getPlayerPosition(cid), 70)

end

 

elseif getPlayerVocation(cid) == 37 then

if getPlayerLevel(cid) >= 80 then

doPlayerSetVocation(cid, 65)

doSetCreatureOutfit(cid,356,-1)

doSendMagicEffect(getPlayerPosition(cid), 70)

else

doPlayerSendCancel(cid, "VocÊ não tem level nescessario para se transformar.")

doSendMagicEffect(getPlayerPosition(cid), 70)

end

 

elseif getPlayerVocation(cid) == 37 then

if getPlayerLevel(cid) >= 120 then

doPlayerSetVocation(cid, 65)

doSetCreatureOutfit(cid,357,-1)

doSendMagicEffect(getPlayerPosition(cid), 70)

else

doPlayerSendCancel(cid, "VocÊ não tem level nescessario para se transformar.")

doSendMagicEffect(getPlayerPosition(cid), 70)

end

 

elseif getPlayerVocation(cid) == 39 then

if getPlayerLevel(cid) >= 160 then

doPlayerSetVocation(cid, 65)

doSetCreatureOutfit(cid,358,-1)

doSendMagicEffect(getPlayerPosition(cid), 70)

else

doPlayerSendCancel(cid, "VocÊ não tem level nescessario para se transformar.")

doSendMagicEffect(getPlayerPosition(cid), 70)

end

 

else

doPlayerSendCancel(cid, "Transformado.")

doSendMagicEffect(getPlayerPosition(cid), 70)

end

end

Editado Dezembro 19 por nbb147

AkatsukyiA
19 de dezembro de 2012 às 16:23

ele muda a vocação pelo menos ? apareçe algum erro ?

CaronteC
19 de dezembro de 2012 às 16:29

Tenta este :

doCreatureChangeOutfit(cid, outfit)

nbb147N
19 de dezembro de 2012 às 16:38

@manyzin

não da nenhum erro, e sim a vocação e mudada.

 

@krhiegen

não funcionou com essa função.

LuckOakeL
19 de dezembro de 2012 às 16:40

Substitua sua função doSetCreatureOutfit por essa:

 

doSetCreatureOutfit(cid, {lookType = 355}, -1)

 

Onde 355 é o ID da outfit.

nbb147N
19 de dezembro de 2012 às 16:49

não funciona e nem da nenhum erro.

LuckOakeL
19 de dezembro de 2012 às 16:52

Dei uma arrumada no seu script, já vi o erro.

 

function onCastSpell(cid, var)
a = {
[37] = {level = 40, newvoc = 65, outfit = 355, eff = 70},
[38] = {level = 80, newvoc = 65, outfit = 356, eff = 70},
[39] = {level = 120, newvoc = 65, outfit = 357, eff = 70},
[40] = {level = 160, newvoc = 65, outfit = 358, eff = 70},
}

b = a[getPlayerVocation(cid)]

if getPlayerLevel(cid) < b.level then
doPlayerSendCancel(cid, "Você não tem o level necessário para se transformar.") return false
end

doSetCreatureOutfit(cid, {lookType = b.outfit}, -1)
doPlayerSetVocation(cid, b.newvoc)
doSendMagicEffect(getCreaturePosition(cid), b.eff)
doPlayerSendCancel(cid, "Transformado.")
return true
end

 

Configurando a tabela:

a = {
[37] = {level = 40, newvoc = 65, outfit = 355, eff = 70},
[38] = {level = 80, newvoc = 65, outfit = 356, eff = 70},
[39] = {level = 120, newvoc = 65, outfit = 357, eff = 70},
[40] = {level = 160, newvoc = 65, outfit = 358, eff = 70},
}

 

Traduzindo:

 

[iD da Vocação] = {level necessário, id da vocação que ficará, outfit, efeito},

Editado Dezembro 19 por LuckOake

nbb147N
19 de dezembro de 2012 às 16:58

da esse erro:

 

 

20/12/2012 16:51:57] [Error - Spell Interface]

[20/12/2012 16:51:57] data/spells/scripts/shikara/transform.lua:onCastSpell

[20/12/2012 16:51:57] Description:

[20/12/2012 16:51:57] data/spells/scripts/shikara/transform.lua:11: attempt to index global 'b' (a nil value)

[20/12/2012 16:51:57] stack traceback:

[20/12/2012 16:51:57] data/spells/scripts/shikara/transform.lua:11: in function <data/spells/scripts/shikara/transform.lua:1>

LuckOakeL
19 de dezembro de 2012 às 17:04

Tó:

 

function onCastSpell(cid, var)
a = {
[37] = {level = 40, newvoc = 65, outfit = 355, eff = 70},
[38] = {level = 80, newvoc = 65, outfit = 356, eff = 70},
[39] = {level = 120, newvoc = 65, outfit = 357, eff = 70},
[40] = {level = 160, newvoc = 65, outfit = 358, eff = 70},
}

b = a[getPlayerVocation(cid)]

if not b then
doPlayerSendCancel(cid, "Você não pode se transformar.") return false
elseif getPlayerLevel(cid) < b.level then
doPlayerSendCancel(cid, "Você não tem o level necessário para se transformar.") return false
end

doSetCreatureOutfit(cid, {lookType = b.outfit}, -1)
doPlayerSetVocation(cid, b.newvoc)
doSendMagicEffect(getCreaturePosition(cid), b.eff)
doPlayerSendCancel(cid, "Transformado.")
return true
end

nbb147N
19 de dezembro de 2012 às 17:29

não ta nem transformando e nem mudando a vocation, so aparece a msg 'Você não pode se transformar.'.

LuckOakeL
19 de dezembro de 2012 às 17:32

Se a vocação não tiver configurada na tabela não vai acontecer nada mesmo. Acabei de testar o script aqui e tá funcionando.

Editado Dezembro 19 por LuckOake

nbb147N
19 de dezembro de 2012 às 17:42

mais ta configurada olha como ficou minha tabela:

 

 

 

[37] = {level = 40, newvoc = 64, outfit = 354, eff = 73},

[38] = {level = 80, newvoc = 65, outfit = 355, eff = 73},

[39] = {level = 120, newvoc = 66, outfit = 356, eff = 73},

[40] = {level = 160, newvoc = 67, outfit = 357, eff = 73},

LuckOakeL
19 de dezembro de 2012 às 17:44

Você configurou corretamente o ID das vocações entre os Colchetes [ ]?

 

Do jeito que tá sua tabela, apenas quem tiver nas vocações de ID 37, 38, 39 e 40 pode transformar.

nbb147N
19 de dezembro de 2012 às 18:03

vixi, e msm tem como colocar para mais vocations usar?

LuckOakeL
19 de dezembro de 2012 às 18:16

Claro, é só adicionar mais linhas na tabela:

 

[37] = {level = 40, newvoc = 64, outfit = 354, eff = 73},
[38] = {level = 80, newvoc = 65, outfit = 355, eff = 73},
[39] = {level = 120, newvoc = 66, outfit = 356, eff = 73},
[40] = {level = 160, newvoc = 67, outfit = 357, eff = 73},
[41] = {level = 200, newvoc = 68, outfit = 358, eff = 73},
[42] = {level = 240, newvoc = 69, outfit = 359, eff = 73},
[43] = {level = 280, newvoc = 70, outfit = 360, eff = 73},

 

E assim em diante.