Ir para conteúdo
  • 0

[Resolvido] PEDIDO NPC QUE VENDA PROMOTION POR ITEM


Denver

Pergunta

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())

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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.

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...