Ir para conteúdo
  • 0

Npc Vocação Não Mantem Ação


crd1990

Pergunta

To com esse problema no npc ele altera a vocação do player mais quando o player desloga e loga novamente volta a vocação inicial... o que devo fazer para resolver isso ??

 

 

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

if(msgcontains(msg, 'vagabundo') or msgcontains(msg, 'vagabundo')) then

selfSay('Deseja virar {Vagabundo} por 10 especial coins?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then

if(getPlayerItemCount(cid, 11443) >= 1) then -- item necessario pra mudar de vocação

doPlayerRemoveItem(cid, 11443, 1)

doPlayerSetVocation(cid,32) -- adcionei a vocaçao 32 la nas minhas vocacoes

selfSay('Parabens , Agora você é um Vagabundo.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'druid') or msgcontains(msg, 'druida')) then

selfSay('Deseja virar {druid} por 10 especial coins?', cid)

talkState[talkUser] = 2

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then

if(getPlayerItemCount(cid, 2159) >= 10) then

doPlayerRemoveItem(cid, 2159, 10)

doPlayerSetVocation(cid,2)

selfSay('Vocação trocada com sucesso , Agora você é um Druid.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'knight') or msgcontains(msg, 'kina')) then

selfSay('Deseja virar {knight} por 10 especial coins?', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then

if(getPlayerItemCount(cid, 2159) >= 10) then

doPlayerRemoveItem(cid, 2159, 10)

doPlayerSetVocation(cid,4)

selfSay('Vocação trocada com sucesso , Agora você é um Knight.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'paladin') or msgcontains(msg, 'pala')) then

selfSay('Deseja virar {paladin} por 10 especial coins?', cid)

talkState[talkUser] = 4

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 4) then

if(getPlayerItemCount(cid, 2159) >= 10) then

doPlayerRemoveItem(cid, 2159, 10)

doPlayerSetVocation(cid,3)

selfSay('Vocação trocada com sucesso , Agora você é um Paladin.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Msm eu dando /save quando reloga volta a vocacao de antes ...

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Coloque, após cada linha onde o NPC muda a vocação, a seguinte linha:

db.executeQuery("UPDATE `players` SET `vocation`= [color=#ff0000][b]NÚMERO[/b][/color] WHERE `id`= " .. getPlayerGUID(cid) .. "; ")

Link para o comentário
Compartilhar em outros sites

  • 0

Coloque, após cada linha onde o NPC muda a vocação, a seguinte linha:

db.executeQuery("UPDATE `players` SET `vocation`= [color=#ff0000][b]NÚMERO[/b][/color] WHERE `id`= " .. getPlayerGUID(cid) .. "; ")

To com esse problema no meu servidor tambem, essa linha tem que editala?

ficando assim ? :

db.executeQuery("UPDATE `players` SET `vocation`= aqui a vocation que eu vo alterar WHERE `id`= " .. getPlayerGUID(cid) .. "; ")

 

assim ?

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade a vocation sempre vai ser a mesma, oque muda nos OTs mais novos é a promotion level.

Druid = promotion level 0

Elder Druid = promotion level 1

? Druid = promotion level 2

 

doPlayerSetPromotionLevel(cid, 2)

Hum ... e colocando isso em pratica como ficaria esse npc?? nao sei como adcionar

 

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

 

if(msgcontains(msg, 'vagabundo') or msgcontains(msg, 'vagabundo')) then

selfSay('Deseja virar {Vagabundo} por 10 especial coins?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then

if(getPlayerItemCount(cid, 11443) >= 1) then

doPlayerRemoveItem(cid, 11443, 1)

doPlayerSetVocation(cid,32)

selfSay('Parabens , Agora você é um Vagabundo.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

 

elseif(msgcontains(msg, 'druid') or msgcontains(msg, 'druida')) then

selfSay('Deseja virar {druid} por 10 especial coins?', cid)

talkState[talkUser] = 2

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then

if(getPlayerItemCount(cid, 2159) >= 10) then

doPlayerRemoveItem(cid, 2159, 10)

doPlayerSetVocation(cid,2)

selfSay('Vocação trocada com sucesso , Agora você é um Druid.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

 

elseif(msgcontains(msg, 'knight') or msgcontains(msg, 'kina')) then

selfSay('Deseja virar {knight} por 10 especial coins?', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then

if(getPlayerItemCount(cid, 2159) >= 10) then

doPlayerRemoveItem(cid, 2159, 10)

doPlayerSetVocation(cid,4)

selfSay('Vocação trocada com sucesso , Agora você é um Knight.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

 

elseif(msgcontains(msg, 'paladin') or msgcontains(msg, 'pala')) then

selfSay('Deseja virar {paladin} por 10 especial coins?', cid)

talkState[talkUser] = 4

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 4) then

if(getPlayerItemCount(cid, 2159) >= 10) then

doPlayerRemoveItem(cid, 2159, 10)

doPlayerSetVocation(cid,3)

selfSay('Vocação trocada com sucesso , Agora você é um Paladin.', cid)

else

selfSay('Você não tem {Especial Coins} Suficientes.', cid)

end

talkState[talkUser] = 0

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Voce troca setPlayerVocation por doPlayerSetPromotionLevel o.O`

nao deu certo vei troquei e nem siquer alterou a vocacao antes allterava so que quando eu relogava voltava a vocacao inicial

Coloque, após cada linha onde o NPC muda a vocação, a seguinte linha:

db.executeQuery("UPDATE `players` SET `vocation`= [color=#ff0000][b]NÚMERO[/b][/color] WHERE `id`= " .. getPlayerGUID(cid) .. "; ")

Como eu add isso Editado por sfdsduhfsuifh
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

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