DA
resolvido

Trocar vocação com magia e destrocar no login

Por daniursolinoo, 04 de nov. de 2013 em Scripts

script
12
2k
daniursolinooD
04 de novembro de 2013 às 14:27
function onCastSpell(cid, var)
local config = {
[2] = {level = 15, newvoc = 18, outfit = 125, eff = 59},
[18] = {level = 200, newvoc = 2, outfit = 144, eff = 59}
}
trans = config[getPlayerVocation(cid)]
if not trans then
doPlayerSendCancel(cid, "You can not transform.") return false
elseif getPlayerLevel(cid) >= trans.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "You not level " .. trans.level .. " to transform.")
end
doSetCreatureOutfit(cid, {lookType = trans.outfit}, -1)
doPlayerSetVocation(cid, trans.newvoc)
doSendMagicEffect(getCreaturePosition(cid), trans.eff)
doPlayerSendCancel(cid, "You Transformed!")
return true
end

esse script é assim ele transforma um druid ne um master sorc mas quando eu relogo ele vira sorc eu queria que ele voutace a ser druid.

 

DESAFIO LANSADO VAMOS VER QUEM DA CONTA DE FASSE ISSO

zipter98Z
04 de novembro de 2013 às 15:03

Tentei fazer uma coisa aqui, não sei se vai funcionar. Suponho que as tags, você já saiba.

Spell:

function onCastSpell(cid, var)
local config = {
[2] = {level = 15, newvoc = 18, outfit = 125, eff = 59},
[18] = {level = 200, newvoc = 2, outfit = 144, eff = 59}
}
trans = config[getPlayerVocation(cid)]
if not trans then
doPlayerSendCancel(cid, "You can not transform.") return false
elseif getPlayerLevel(cid) >= trans.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "You not level " .. trans.level .. " to transform.")
end
doSetCreatureOutfit(cid, {lookType = trans.outfit}, -1)
doPlayerSetPromotionLevel(cid, 1)
doSendMagicEffect(getCreaturePosition(cid), trans.eff)
doPlayerSendCancel(cid, "You Transformed!")
setPlayerStorageValue(cid, 102913, 1)
return true
end
Creaturescript:
function onLogin(cid)
 
    if getPlayerStorageValue(cid, 102913) >= 1 then
         doPlayerSetPromotionLevel(cid, 0)
         setPlayerStorageValue(cid, 102913, -1)
    else
        return true
end
return true
end

O que eu fiz, foi simplesmente setar uma storage no player ao usar a spell. Ai, quando ele logar/relogar, caso tenha esta storage, será setado nele a vocation Druid (não esqueça de configurar o ID dela na variável voc_id).

Editado Novembro 5 por zipter98

OneshotO
04 de novembro de 2013 às 15:12

Não dou conta, cara, mas fica a dica pra quem "dá"

 

Não use:

doPlayerSetVocation(cid, vocation)

Use:

doPlayerSetPromotionLevel(cid, promotion)

Editado Novembro 4 por Oneshot

zipter98Z
04 de novembro de 2013 às 15:29

Oneshot, poderia dizer qual a diferença entre essas duas funções? Possibilidade de bug sobre o primeiro? Alguma limitação?

MaenilseM
04 de novembro de 2013 às 15:40

mudando a vocaçao do player, podera causar bug no mesmo, qnd tipo, usar uma magia, o servidor caira, "FIZ ISSO POR EXPERIENCIA PROPRIA".

zipter98Z
04 de novembro de 2013 às 18:20

Ah, entendi. A maneira de usar o doPlayerSetPromotionLevel(cid, promotion) é a mesmo do setvocation? (cid, id da vocação)?

MaenilseM
04 de novembro de 2013 às 18:27

sim, so que ai nao causara nenhum bug, e ainda trocara a vocaçao.

zipter98Z
04 de novembro de 2013 às 18:50

Muito obrigado pela informação, Maenilse e Oneshot (só não dou rep+ no momento, porque atingi meu limite de reputações positivas diárias :/)! Editei o código acima com essa função, espero que agora esteja tudo correto.

Editado Novembro 4 por zipter98

OmegaO
05 de novembro de 2013 às 21:19

O título do seu tópico não possui informações sobre o conteúdo dele, portanto está desrespeitando as regras. Por favor, preste mais atenção da próxima vez e leia as regras da seção antes de postar. Título editado.

2 semanas depois...
daniursolinooD
17 de novembro de 2013 às 09:04

Ninguem sabe mesmo 4 coisa que pergunto e ninguem responde

2 meses depois...
zipter98Z
15 de janeiro de 2014 às 21:44

Tópico movido para a seção de dúvidas e pedidos resolvidos.

1 mês depois...
daniursolinooD
14 de fevereiro de 2014 às 10:24

rep mais