Ir para conteúdo
  • Cadastre-se

(Resolvido)Clicar no item trocar vocation


Ir para solução Resolvido por Wakon,

Posts Recomendados

Em "Data/actions/scripts", copie e cole um arquivo.lua e renomeie para changeVoc.lua, apague tudo e cole:

local t = {
    checkStorage = 0092, -- Não altere mesmo que faça outro script para outra vocation!!!
    vocStorage = 0091,   -- Mesma coisa da checkStorage.
    maxLevel = 10,       -- Level máximo para usar.
    useVoc = 7           -- Vocação após usar o item.
}

function onUse(cid, item)
    if getPlayerLevel(cid) <= t.maxLevel then
        doPlayerSetVocation(cid, t.useVoc)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação foi alterada para ".. (getVocationInfo(t.useVoc).name) ..".")
        setPlayerStorageValue(cid, t.vocStorage, t.useVoc)
        setPlayerStorageValue(cid, t.checkStorage, 1)
        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_GREEN)
        doRemoveItem(item.uid, 1)
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Apenas jogadores com level inferior a ".. t.maxLevel .." podem utilizar este item.")
    end
   return true
end

Em "Data/actions", abra o arquivo actions.xml e adicione:

<action itemid="2456" event="script" value="changeVoc.lua"/>

Agora em "Data/creaturescripts/scripts", copie e cole um arquivo.lua e renomeie para changeVoc.lua, apague tudo e cole:

local t = {
    checkStorage = 0092,
    vocStorage = 0091
}

function onLogin(cid)
    if getPlayerStorageValue(cid, t.checkStorage) > 0 then
	doPlayerSetVocation(cid, getPlayerStorageValue(cid, t.vocStorage))
    end
   return true
end

Em "Data/creaturescripts", no arquivo creaturescripts.xml adicione:

<event type="login" name="changeVocation" event="script" value="changeVoc.lua"/>

A mesma regra das storage no primeiro arquivo se aplicam ao segundo!

Se der algum problema, me avise.

Link para o post
Compartilhar em outros sites

É necessario o creaturescript?

Sim, se você não adiciona-lo, quando o jogador relogar a vocação irá voltar para a antiga.

Link para o post
Compartilhar em outros sites

Dei uma pesquisada no fórum e achei script sem o creaturescript, porem não está indo, poderia dar uma olhada?

function onUse(cid,item,frompos,item2,topos) 
if item.uid == 3000 then 

doPlayerSetVocation(cid,1) 
doSendMagicEffect(topos,14) 
doPlayerSendTextMessage(cid,22,"Voce trocou sua vocaçao pra assassin.") 

else 
doPlayerSendCancel(cid,"You cannot use this object.") 
end 
return 1 
end 
Link para o post
Compartilhar em outros sites
  • Solução

Aqui está:

local t = {
    checkStorage = 0092, -- Não altere mesmo que faça outro script para outra vocation!!!
    vocStorage = 0091,   -- Mesma coisa da checkStorage.
    maxLevel = 10,       -- Level máximo para usar.
        table = {
        [2456] = {voc = 6},
        [2457] = {voc = 7},
        [2458] = {voc = 8}
        },
}

function onUse(cid, item)
    for k, v in pairs(t.table) do
        if item.itemid == k then
            if getPlayerLevel(cid) <= t.maxLevel then
                doPlayerSetVocation(cid, v.voc)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação foi alterada para ".. (getVocationInfo(v.voc).name) ..".")
                setPlayerStorageValue(cid, t.vocStorage, v.voc)
                setPlayerStorageValue(cid, t.checkStorage, 1)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_GREEN)
                doRemoveItem(item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Apenas jogadores com level inferior a ".. t.maxLevel .." podem utilizar este item.")
            end
        end
     end
   return true
end
<action itemid="2456;2457;2458" event="script" value="changeVoc.lua"/>

Adicione os itens no script e na tag, como no exemplo.

O creaturescripts, use o mesmo!

Link para o post
Compartilhar em outros sites
  • 1 month later...

Olá Wakon, esse script funfa para todas a voc ?

Link para o post
Compartilhar em outros sites

Olá Wakon, esse script funfa para todas a voc ?

Como assim? Vai alterar para a vocação citada na tabela.

Link para o post
Compartilhar em outros sites

Tipo Wakon, eu crio um druid ai uso o item para trocar de voc, mais nesse item tem mais três voc para eu escolher entendeu agr man??

Link para o post
Compartilhar em outros sites

Wakon, da para fazer assim tipo 4 scroll cada um com uma voc ?? ai tipo quando o player quiser trocar de voc ele pode escolher pela as scroll será que da para fazer assim ??

 

1° Knight Scroll

2° Paladin Scroll

3° Sorcerer Scroll

4° Druid Scroll

Link para o post
Compartilhar em outros sites

É isso que o script faz amigo, é só alterar na tabela:

table = {
    [2456] = {voc = 6}, -- Item 2456 altera para a vocação elder druid.
    [2457] = {voc = 7}, -- Item 2457 altera para a vocação royal paladin.
    [2458] = {voc = 8}  -- Item 2458 altera para a vocação elite knight.
   },
}
Depois de alterar na tabela, altere também na tag.
Link para o post
Compartilhar em outros sites
local t = {
    checkStorage = 0092, -- Não altere mesmo que faça outro script para outra vocation!!!
    vocStorage = 0091,   -- Mesma coisa da checkStorage.
    maxLevel = 10,       -- Level máximo para usar.
        table = {
        [2455] = {voc = 5}, -- Master Sorcerer
        [2456] = {voc = 6}, -- Elder Druid
        [2457] = {voc = 7}, -- Royal Paladin
        [2458] = {voc = 8}  -- Elite Knight
        },
}

function onUse(cid, item)
    for k, v in pairs(t.table) do
        if item.itemid == k then
            if getPlayerLevel(cid) <= t.maxLevel then
                doPlayerSetVocation(cid, v.voc)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação foi alterada para ".. (getVocationInfo(v.voc).name) ..".")
                setPlayerStorageValue(cid, t.vocStorage, v.voc)
                setPlayerStorageValue(cid, t.checkStorage, 1)
                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_GREEN)
                doRemoveItem(item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Apenas jogadores com level inferior a ".. t.maxLevel .." podem utilizar este item.")
            end
        end
     end
   return true
end
Link para o post
Compartilhar em outros sites

Wakon, tem como tirar esse maxLevel 10 ? pq sem ele ficaria melhor,  ai sim fica mais facil de vender no site

Link para o post
Compartilhar em outros sites
local t = {
    checkStorage = 0092, -- Não altere mesmo que faça outro script para outra vocation!!!
    vocStorage = 0091,   -- Mesma coisa da checkStorage.
        table = {
        [2455] = {voc = 5}, -- Master Sorcerer
        [2456] = {voc = 6}, -- Elder Druid
        [2457] = {voc = 7}, -- Royal Paladin
        [2458] = {voc = 8}  -- Elite Knight
        },
}

function onUse(cid, item)
    for k, v in pairs(t.table) do
        if item.itemid == k then
            doPlayerSetVocation(cid, v.voc)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação foi alterada para ".. (getVocationInfo(v.voc).name) ..".")
            setPlayerStorageValue(cid, t.vocStorage, v.voc)
            setPlayerStorageValue(cid, t.checkStorage, 1)
            doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_GREEN)
            doRemoveItem(item.uid, 1)
        end
     end
   return true
end
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo