Ir para conteúdo
  • 0

[Resolvido] [8.60] Erro na troca de vocação


jeriposcleide

Pergunta

Bom dia/tarde/noite Galera.

 

Seguinte, estou montando um OT 8.60 que funciona da seguinte maneira

 

Todos os players começam com a vocaçao aprendiz, no level 30 eles falam com um npc e podem escolher entre Mago, Guerreiro e Paladino. No level 200, em outro NPC, o player tem o seguinte leque de vocações:

 

Mago - Feiticeiro / Sacerdote

Guerreiro - Gladiador / Barbaro / Brutamontes

Paladino - Arqueiro / Bestista

 

Eu ja criei todas as classes e numerei certinho no Vocations.Xml

 

Os npcs estão entregando as classes normalmente, o problema é que quando o player desloga, ele volta 1 classe para tras, e se deslogar novamente, volta outra vez... Já procurei em tudo aqui mas ninguem conseguiu me ajudar.... Alguem pfv?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
13 minutos atrás, Kuro o Shiniga disse:

Posta o script

Spoiler

-- By RigBy --
-- Xtibia.com --
 
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
 
local vocation = 2 -- Vocação que precisa ter
 
-- Primeira Vocação 
local vocationnome1 = 'Feiticeiro' -- Nome da primeira vocação que ira se torna
local vocationid1 = 5 -- id da vocação que vai ganha

-- Segunda Vocação
local vocationnome2 = 'Sacerdote' -- Nome da segunda vocação que ira se torna
local vocationid2 = 6 -- id da vocação que vai ganha

 
 
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
 return false
end
 
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
 
 
if msgcontains(msg, 'promover') then
if getPlayerVocation(cid) == vocation then
selfSay('Deseja se tornar um {'..vocationnome1..'} ou um {'..vocationnome2..'}?', cid)
talkState[talkUser] = 1
else
selfSay('Você precisar ser um {Mago} para que eu possa te promover.', cid)
end
end
 
if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome1..'') then
selfSay('Parabêns, agora você é um {'..vocationnome1..'!}', cid)
    doPlayerSetVocation(cid, vocationid1)
    doPlayerAddItem(cid, 2189, 1)
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
end
 
if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome2..'') then
selfSay('Parabêns, agora você é um {'..vocationnome2..'}!', cid)
    doPlayerSetVocation(cid, vocationid2)
    doPlayerAddItem(cid, 8912, 1)
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

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

  • 0
6 horas atrás, jeriposcleide disse:

 

Não vai funcionar seu script, não esta mudando no banco de dados !

 

doPlayerSetVocation só muda in game, depois que ele logar vai voltar como era antes por conta do banco de dados, tenta assim :

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false 
end 

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid 

local vocacao = getPlayerVocation(cid)


if msgcontains(msg, "trocar") and vocacao == 1 then
doPlayerSetVocation(cid, 3)
db.executeQuery('UPDATE `players` SET `vocation` = 3 WHERE `id` = '.. getPlayerGUID(cid))
selfSay("So be it!", cid)


elseif msgcontains(msg, "trocar") and vocacao == 2 then
doPlayerSetVocation(cid, 4)
db.executeQuery('UPDATE `players` SET `vocation` = 4 WHERE `id` = '.. getPlayerGUID(cid))
selfSay("So be it!", cid)

end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 20/02/2019 em 18:16, Kuro o Shiniga disse:

Não vai funcionar seu script, não esta mudando no banco de dados !

 

doPlayerSetVocation só muda in game, depois que ele logar vai voltar como era antes por conta do banco de dados, tenta assim :

 


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false 
end 

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid 

local vocacao = getPlayerVocation(cid)


if msgcontains(msg, "trocar") and vocacao == 1 then
doPlayerSetVocation(cid, 3)
db.executeQuery('UPDATE `players` SET `vocation` = 3 WHERE `id` = '.. getPlayerGUID(cid))
selfSay("So be it!", cid)


elseif msgcontains(msg, "trocar") and vocacao == 2 then
doPlayerSetVocation(cid, 4)
db.executeQuery('UPDATE `players` SET `vocation` = 4 WHERE `id` = '.. getPlayerGUID(cid))
selfSay("So be it!", cid)

end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

amigo desculpe a demora pra responder, tive uns imprevistos mas enfim:

não deu certo, ele troca a vocaçao tambem, mas acontece a mesma coisa, ao deslogar ele volta a ser o que era antes me ajuda pf

 

e da o seguinte erro

Citar

[13:28:25.829] data/npc/scripts/promote mago2.lua:29: attempt to call field 'executeQuery' (a nil value)
[13:28:25.829] stack traceback:
[13:28:25.829]  data/npc/scripts/promote mago2.lua:29: in function 'callback'
[13:28:25.830]  data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'
[13:28:25.830]  data/npc/scripts/promote mago2.lua:8: in function <data/npc/scripts/promote mago2.lua:8>

 

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

  • 0

 

2 minutos atrás, jeriposcleide disse:

amigo desculpe a demora pra responder, tive uns imprevistos mas enfim:

não deu certo, ele troca a vocaçao tambem, mas acontece a mesma coisa, ao deslogar ele volta a ser o que era antes me ajuda pf

Estranho aqui funcionou, testei com um sorcerer ele virou paladin, você colocou o script no local correto e deu reload?

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

  • 0
16 minutos atrás, Kuro o Shiniga disse:

 

Estranho aqui funcionou, testei com um sorcerer ele virou paladin, você colocou o script no local correto e deu reload?

sim, e ele deu o erro que postei acima, erro em "ExecuteQuery".

 

Amigo seguinte, troquei db.executequery por "db.query" e parou de dar o erro

mas mesmo assim eu relogo e volta pra vocaçao antiga.

 

EDIT: Consegui, seu script estava perfeito amigo, so precisei substituir por db.query mesmo... o erro estava persistindo pq meu "fromvoc" no vocations.xml tava errado! Rep+

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

  • 0
  • Diretor
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...