Ir para conteúdo
  • Cadastre-se

(Resolvido)[ajuda] bug no npc de vocações supremas


Ir para solução Resolvido por hempz,

Posts Recomendados

Olá galera do TK gostaria de pedir uma força a todos vocês, eu tenho um npc que você entrega um item "X" a ele e em troca ele le dá a vocação suprema só que eu mudei o distro do meu servidor para o tsf 0.4 DEV e depois disso o npc bugou, quando o player fala com ele, ele da a vocação mais ao relogar o player perde a vocação volta para a anterior!

 

vocatiosuprema.lua

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, 'voc suprem') or msgcontains(msg, 'voc suprem')) then
selfSay('Deseja virar {Voc suprem} ?', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(getPlayerItemCount(cid, 142) >= 1) then
doPlayerRemoveItem(cid, 142, 1)
doPlayerSetVocation(cid, getPlayerVocation(cid) > 4 and getPlayerVocation(cid) + 4 or getPlayerVocation(cid) + 8)
selfSay('Parabéns você acaba de completar Asgard.', cid)
else
selfSay('Você não tem {suprem vocation} suficientes.', cid)
end
talkState[talkUser] = 0
end
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 
se alguem souber modificar a linha em vermelho para dar segunda promotion em vez de dar vocação será que dava certo? eu não sei o codigo porisso não tento!
Editado por hempz (veja o histórico de edições)

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites

Você mudou a pasta lib do NPC?

dá algum erro no distro?

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

N mudei nada na pasta lib manow e tmb n da nenhum erro no distro.

 

teria como alterar esta linha:

doPlayerSetVocation(cid, getPlayerVocation(cid) > 4 and getPlayerVocation(cid) + 4 or getPlayerVocation(cid) + 8)

para em vez de dar vocation ela dar a segunda promotion? porque a segunda promotion no meu servidor é a vocação suprema!

 

OBS: segunda promotion no caso que eu falo é acima de master sorcerer, elder druid, elite knight e royal paladin!

Editado por hempz (veja o histórico de edições)

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites

Fiz uma pequena modificação, espero que resolva seu problema.

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, 'voc suprem') or msgcontains(msg, 'voc suprem')) then
selfSay('Deseja virar {Voc suprem} ?', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(getPlayerItemCount(cid, 142) >= 1) then
doPlayerRemoveItem(cid, 142, 1)
if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then  -- id das vocation   
doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)
selfSay('Parabéns você acaba de completar Asgard.', cid)
else
selfSay('Você não tem {suprem vocation} suficientes.', cid)
end
talkState[talkUser] = 0
end
return true
end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

 

Fiz uma pequena modificação, espero que resolva seu problema.

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, 'voc suprem') or msgcontains(msg, 'voc suprem')) then
selfSay('Deseja virar {Voc suprem} ?', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(getPlayerItemCount(cid, 142) >= 1) then
doPlayerRemoveItem(cid, 142, 1)
if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then  -- id das vocation   
doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)
selfSay('Parabéns você acaba de completar Asgard.', cid)
else
selfSay('Você não tem {suprem vocation} suficientes.', cid)
end
talkState[talkUser] = 0
end
return true
end
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

amigo infelizmente não deu certo, o script não deu nenhum erro no console só que ao dizer yes para o npc ta sumindo o item e ele diz "você não tem supreme vocations suficientes" tai as prints!

antes de dizer hi

bug1.png

 

depois de dizer hi

bug2.png

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites

Você alterou if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then, para o numero da vocação?
Porque esse script é para dar uma 3 promotion, caso seja a 2 promotion, coloque 1, 2, 3 e 4

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Você alterou if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then, para o numero da vocação?

Porque esse script é para dar uma 3 promotion, caso seja a 2 promotion, coloque 1, 2, 3 e 4

sim manim! alterei para 9, 10, 11, 12 por que estas são as vocações supremas do meu serv!! testei com o script do jeitinho que tu me mandou e deu a mesma coisa o npc diz que não tem supreme vocations suficientes mais ele consome o item!!!

Editado por hempz (veja o histórico de edições)

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites

Não é pra alterar, esses 5,6,7,8 já sao a promotion e o + 4 no script é pra dar a 3° promotion...
ou seja, 5+4 = 9(etc)....
teste sem alterar o script.

 

EDIT: Testei sem alterar o script e funcionou perfeitamente.

fe2Qqo.png

Editado por joadson (veja o histórico de edições)

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

Eu testei sem alterar o script tmb qual a versao do tsf que vc testou?

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites

O problema é que a vocação volta ao relogar, certo?
Irei adaptar o script com uma storage, assim ao relogar o player que tiver a storage, ganha a voc supreme...
Tudo bem?

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites
  • Solução

O problema é que a vocação volta ao relogar, certo?

Irei adaptar o script com uma storage, assim ao relogar o player que tiver a storage, ganha a voc supreme...

Tudo bem?

não manim esse script que tu me passou não ta conseguindo compra a vocação!! qual tfs tu testou? o meu é 0.4 DEV se o teu for o mesmo tem alguma coisa errada pois aqui só ta dando "você não tem supreme vocations suficientes" mais mesmo assim o npc consome o item e não da a vocação!!

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites

Testei no TFS 0.3.7, mas o seu "antigo" funciona certo?
Porem ao relogar, ele some a vocação?
Irei modificar para nao sumir.

 

EDIT: substitua seu vocationsupreme.lua por esse

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, 'voc suprem') or msgcontains(msg, 'voc suprem')) then
selfSay('Deseja virar {Voc suprem} ?', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(getPlayerItemCount(cid, 142) >= 1) then
doPlayerRemoveItem(cid, 142, 1)
doPlayerSetVocation(cid, getPlayerVocation(cid) > 4 and getPlayerVocation(cid) + 4 or getPlayerVocation(cid) + 8)
setPlayerStorageValue(cid, 35125, 1) -- Storage que vai checar se tem a 3° promotion ou nao.
selfSay('Parabéns você acaba de completar Asgard.', cid)
else
selfSay('Você não tem {suprem vocation} suficientes.', cid)
end
talkState[talkUser] = 0
end
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

e depois vá em creaturescript/script e crie um arquivo chamado promote.lua e coloque isso dentro

function onLogin(cid)   
if getPlayerStorageValue(cid,35125) >= 1 then  
if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then  
doPlayerSetVocation(cid, getPlayerVocation(cid) + 4) 
    end  
end  
    return TRUE  
end 

e em login.lua adicione isso

registerCreatureEvent(cid, "Promotion")

e em creatures.xml adicione.

<event type="login" name="Promotion" event="script" value="promote.lua"/>

Editado por joadson (veja o histórico de edições)

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites

aeee manim agora foi 100% muito obrigado mesmo reputado ae pela força ;)!

 

opa.png

Editado por hempz (veja o histórico de edições)

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

Link para o post
Compartilhar em outros sites
local vocations = {5, 6, 7, 8} -- Não modifique...
local stg = 98749

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:lower(), 'voc suprem') then
			selfSay('Deseja virar {Voc suprem} ?', cid)
			talkState[talkUser] = 1
		
		elseif msgcontains(msg:lower(), 'yes') and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, stg) < 1 then
				if isInArray(vocations, getPlayerVocation(cid)) > 4 then
					if getPlayerItemCount(cid, 142) >= 1 then
						doPlayerRemoveItem(cid, 142, 1)
						doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)
						selfSay('Parabéns você acaba de completar Asgard.', cid)
						setPlayerStorageValue(cid, stg, 1)
						talkState[talkUser] = 0
					else
						selfSay('Você não tem {suprem vocation} suficientes.', cid)
						talkState[talkUser] = 0
					end
				else
					selfSay('Você não tem a primeira promotion', cid)
					talkState[talkUser] = 0
				end
			else
				selfSay('Você já tem vocation suprema', cid)
				talkState[talkUser] = 0
			end
		
		elseif msgcontains(msg:lower(), 'no') or msgcontains(msg:lower(), 'bye') then
			selfSay('Bye!', cid)
			talkState[talkUser] = 0
	
		end
		
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado por fywell (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local vocations = {5, 6, 7, 8} -- Não modifique...
local stg = 98749

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:lower(), 'voc suprem') then
			selfSay('Deseja virar {Voc suprem} ?', cid)
			talkState[talkUser] = 1
		
		elseif msgcontains(msg:lower(), 'yes') and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, stg) < 1 then
				if isInArray(vocations, getPlayerVocation(cid)) > 4 then
					if getPlayerItemCount(cid, 142) >= 1 then
						doPlayerRemoveItem(cid, 142, 1)
						doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)
						selfSay('Parabéns você acaba de completar Asgard.', cid)
						setPlayerStorageValue(cid, stg, 1)
						talkState[talkUser] = 0
					else
						selfSay('Você não tem {suprem vocation} suficientes.', cid)
						talkState[talkUser] = 0
					end
				else
					selfSay('Você não tem a primeira promotion', cid)
					talkState[talkUser] = 0
				end
			else
				selfSay('Você já tem vocation suprema', cid)
				talkState[talkUser] = 0
			end
		end
		
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

local vocations = {5, 6, 7, 8} -- Não modifique...
local stg = 98749

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:lower(), 'voc suprem') then
			selfSay('Deseja virar {Voc suprem} ?', cid)
			talkState[talkUser] = 1
		
		elseif msgcontains(msg:lower(), 'yes') and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, stg) < 1 then
				if isInArray(vocations, getPlayerVocation(cid)) > 4 then
					if getPlayerItemCount(cid, 142) >= 1 then
						doPlayerRemoveItem(cid, 142, 1)
						doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)
						selfSay('Parabéns você acaba de completar Asgard.', cid)
						setPlayerStorageValue(cid, stg, 1)
						talkState[talkUser] = 0
					else
						selfSay('Você não tem {suprem vocation} suficientes.', cid)
						talkState[talkUser] = 0
					end
				else
					selfSay('Você não tem a primeira promotion', cid)
					talkState[talkUser] = 0
				end
			else
				selfSay('Você já tem vocation suprema', cid)
				talkState[talkUser] = 0
			end
		end
		
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

ja deu certo aqui mano obrigado ai mais ja resolvi com a ajuda do joadson!!

Se Ajudei Clique no rep_up.png ao Lado, Não Custa nada :D!!

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