[Resolvido] PEDIDO NPC QUE VENDA PROMOTION POR ITEM

Denver
Por Denver
em Resolvidos

Denver

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/03/18Posts: 8Gênero: Masculino

Estou precisando de um NPC que troque item por promotion. Já tentei fazer mas sempre quando relogo o char, a promotion some. Uso o seguinte script.

 

ID do item é 7722 e serão necessários 5 deste.

 

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

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 node1 = keywordHandler:addKeyword({'promot'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 50kk. Do you want me to promote you?'})
	node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 50000000, level = 20, promotion = 1, text = 'Congratulations! You are now promoted.'})
	node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true})
]]--

npcHandler:addModule(FocusModule:new())

 

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 431Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

@Denver

Isso é quest de segunda promotion?

Qwizer

WHATSAPP: (66) 9 8427-4493
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 11/04/15Posts: 351Gênero: Masculino

procure elseif(doPlayerRemoveMoney(cid, parameters.cost, 1) ~= TRUE) then em data/npc/lib/npcsystem/modules.lua e muda a função doPlayerRemoveMoney para doPlayerRemoveItem apos feito isso e so por no script do npc em cost = 2000 o ID do item no 2000 que sera resolvido, isso e so um gato da pra deixar mais organizado.

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 431Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

Ta ai:
 

Spoiler
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 storage = 1111514 --storage da quest

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, "promotion") then
		if getPlayerStorageValue(cid, storage) == -1 then
			selfSay("Então você quer ser promovido? Bem, você terá que me trazer 5 {nome do item}, você aceita?", cid)
			talkState[talkUser] = 1
		elseif getPlayerStorageValue(cid, storage) == 1 then	
			selfSay("Você trouxe os itens?", cid)
      		talkState[talkUser] = 1
		else
			selfSay("Você já está promovido, jovem.", cid)
		end	
		npcHandler:addFocus(cid)	
			
	end
		
    if msgcontains(msg, "yes") and talkState[talkUser] == 1 then
        if getPlayerStorageValue(cid, storage) == -1 then
            selfSay("Ok. Retorne quando você tiver juntados os itens.", cid)
            setPlayerStorageValue(cid, storage, 1)
        elseif getPlayerStorageValue(cid, storage) == 1 then
			if doPlayerRemoveItem(cid, 7722, 5) then
				selfSay("Que ótimo. Você está promovido.", cid)
				doPlayerSetPromotionLevel(cid, 1) --se for quest de segunda promotion, mude o valor '1' pra '2'
				doPlayerAddItem(cid, 2160, 10) --ta ganhando 10 crystal coin, se não quiser, basta apagar a linha ou mudar item e/ou quantidade
				setPlayerStorageValue(cid, storage, 2)
			else
				selfSay("Está tentando me enganar? Você não tem os itens nescessários", cid)
			end	
		elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
        selfSay("Então porque veio até mim?", cid)
        talkState[talkUser] = 0	
		end	
    return true
	end
end

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

 


Se for quest de segunda promotion, pra não ficar perdendo ela quando desloga, em fromvoc="XX", você tem que por o valor da ID da promotion anterior. Por exemplo: Se você fez uma promotion de sorc chamada Supreme Sorcerer, na tag dela, em fromvoc="XX", deve ficar fromvoc="5", que é o ID correspondente a promotion Master Sorcerer.

Stigal

don't ever stop...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 28/11/10Posts: 3402Gênero: Masculino
O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico.

VI6MDIG.png

 

"O fracasso é a oportunidade de se começar de novo inteligentemente"

Minhas Redes Sociais: Youtube | Página & Grupo | Steam  | Discord Xtibia | Skype: @mrooger

 

OTpanel