Ir para conteúdo
  • 0

Npc dando recompensa


Fjinst

Pergunta

Bom, gostaria primeiramente de pedir uma ajuda, gostaria de por esse npc aqui para dar uma recompensa ou seja uma magia, mas não sei como fazer isso, alguém pode me explicar? uso 8.54 tfs

 

 

function onCreatureAppear(cid)

--
end
function onCreatureDisappear(cid)
--
end
function onCreatureSay(cid, type, msg)
local valor = math.random(1, 1)
if msgcontains(msg, 'reward 1') or msgcontains(msg, 'recompensa') or msgcontains(msg, 'quest') or msgcontains(msg, 'reward') then
if valor == 1 then
doCreatureSay(getNpcId(), getCreatureName(cid)..' Teste de sorte, numero 1', TALKTYPE_ORANGE_1)
elseif valor == 2 then
doCreatureSay(getNpcId(), getCreatureName(cid)..' Teste de sorte, numero 2', TALKTYPE_ORANGE_1)
elseif valor == 3 then
doCreatureSay(getNpcId(), getCreatureName(cid)..' Teste de sorte, numero 3', TALKTYPE_ORANGE_1)
elseif valor == 4 then
doCreatureSay(getNpcId(), getCreatureName(cid)..' Teste de sorte, numero 4', TALKTYPE_ORANGE_1)
elseif valor == 5 then
doCreatureSay(getNpcId(), getCreatureName(cid)..' Teste de sorte, numero 5', TALKTYPE_ORANGE_1)
elseif valor == 6 then
doCreatureSay(getNpcId(), getCreatureName(cid)..' Teste de sorte, numero 6', TALKTYPE_ORANGE_1)
end
end
end
function onThink()
end

Obs; quero que seja por math.random por que terá chance de dar magias aleatórias, se possivel também, queria que colocassem para esse npc só dar essa recompensa se você tiver tal storage, e quando der a recompensa o player perdia a storage e não podia fazer mais a quest novamente.

 

Desde já grato pela atenção.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

@Fjinst,

 

Vá em data/npc e crie um arquivo chamado Recompensa.xml e coloque o seguinte conteúdo:

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Recompensa" script="data/npc/scripts/recompensa.lua" walkinterval="2000" floorchange="0" access="5" lookdir="1" >
    <health now="150" max="150"/>
    <look type="128" head="114" body="60" legs="78" feet="115" addons="3"/>
    
    <parameters>
        <parameter key="message_greet" value="Ola |PLAYERNAME|! Voce ja pegou sua {recompensa}?"/>
        <parameter key="message_alreadyfocused" value="Voce ja esta falando comigo."/>
        <parameter key="message_farewell" value="Ate logo amigo."/>
    </parameters>
</npc> 

 

 

Agora vá em data/npc/scripts e crie um arquivo chamado recompensa.lua e coloque o seguinte conteúdo:

 

local config = {
	storage = 9900, -- STORAGE	
	magias = {"Berserk", "Hell's Core", "Rage of the Skies", "Strong Ice Wave", "Wrath of Nature"} -- MAGIAS
}

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 creatureSayCallback(cid, type, msg)

	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if not npcHandler:isFocused(cid) then
		return false
	end
	
	if msgcontains(msg, "recompensa") then
		if getPlayerStorageValue(cid, config.storage) > 0 then
			selfSay('Voce ja pegou sua recompensa', cid)
			return true
		end
		selfSay("Voce esta pronto para pegar sua recompensa ?", cid)
		talkState[talkUser] = 1
	elseif (msgcontains(msg, "sim") or msgcontains(msg, "yes")) and talkState[talkUser] == 1 then
		local rand = math.random(1, #config.magias)
		doPlayerLearnInstantSpell(cid, config.magias[rand])
		setPlayerStorageValue(cid, config.storage, 1)
		talkState[talkUser] = 0
	end
	
	return true
end

function onThink() npcHandler:onThink() end

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

 

Link para o comentário
Compartilhar em outros sites

  • 0

É quase isso que eu queria, você pode adicionar pra quando receber a recompensa aparecer o nome da magia que ganhou?

E que só consiga pegar essa recompensa após ter feito uma task, tipo fiz a task de dragon, ganhei storage 15232, só posso falar com esse npc se caso eu tiver essa storage

Link para o comentário
Compartilhar em outros sites

  • 0

É quase isso que eu queria, você pode adicionar pra quando receber a recompensa aparecer o nome da magia que ganhou?

E que só consiga pegar essa recompensa após ter feito uma task, tipo fiz a task de dragon, ganhei storage 15232, só posso falar com esse npc se caso eu tiver essa storage

Feito:

 

local config = {
	storage = 9900, -- STORAGE	
	magias = {"Berserk", "Hell's Core", "Rage of the Skies", "Strong Ice Wave", "Wrath of Nature"} -- MAGIAS
}

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 creatureSayCallback(cid, type, msg)

	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if not npcHandler:isFocused(cid) then
		return false
	end
	
	if msgcontains(msg, "recompensa") then
		if getPlayerStorageValue(cid, 15232) == -1 then
			selfSay('Voce precisa terminar a task de dragons para poder pegar sua recompensa.', cid)
			return true
		elseif getPlayerStorageValue(cid, config.storage) > 0 then
			selfSay('Voce ja pegou sua recompensa.', cid)
			return true
		end
		selfSay("Voce esta pronto para pegar sua recompensa ?", cid)
		talkState[talkUser] = 1
	elseif (msgcontains(msg, "sim") or msgcontains(msg, "yes")) and talkState[talkUser] == 1 then
		local rand = math.random(1, #config.magias)
		local magia = config.magias[rand]
		doPlayerLearnInstantSpell(cid, magia)
		selfSay("Parabens, voce aprendeu magia " .. magia .. ", aproveite.", cid)
		setPlayerStorageValue(cid, config.storage, 1)
		talkState[talkUser] = 0
	end
	
	return true
end

function onThink() npcHandler:onThink() end

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

 

Tópico movido para a seção de dúvidas e pedidos resolvidos.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...