Ir para conteúdo

Featured Replies

Postado

Nao sei como, mas meu post criado sobre pedido de um QuestLog, ja nao consigo mais acessar, da page not found ...

Pois bem, vou criar de novo o post.

 

A ideia e um Grizzly Adams de somenta uma quest, o player fala hi, task ou quest sei la, yes, e a quest assim sendo adicionada ao QuestLog contentando assim as informações,

Cada monstro que ele matar, atualizara o QuestLog e apareca tambem uma mensagem no default de quantas ainda faltam, apos ter completado matando o monstro pedido na quest, o player retorna ao npc, entrega a quest, ganha a recompensa que sera experiencia e golds, e o seu QuestLog ficara com a mensagem de Completed, para o player ver que ja acabou por ali.

 

Obrigado seus lindos  ;D  :laugh:  ^^  :bleh:  :D

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

Resolvido por psychonaut

Ir para solução
  • Respostas 16
  • Visualizações 862
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Beleza, a começar pelo quest log. A tag quests fecha por último: <?xml version="1.0" encoding="UTF-8"?> <quests> <quest name="Example Quest I" startstorageid="1001" startstoragevalue

  • Muda o nome, não pode ser igual. <event type="kill" name="MonsterKillTest" script="monsterkill1.lua"/> player:registerEvent("MonsterKillTest")

Postado

É que tinha bugado, eu ja tinha respondido, vou fazer a resposta denovo aqui.


Script do npc:

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

local talkState = {}
local quest = 76669 --storage
local reward = 70000
local recompensa = 2160 -- id da recompensa
local recompensaqtd = 1 -- quantidade de itens que vai ganhar
local xpganha = 20000 -- xp q o jogador vai ganha

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)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if(not npcHandler:isFocused(cid)) then
		return false
	elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
		npcHandler:say("Ótimo! Vou recompensar você bem, {ok}?.", cid)
		talkState[talkUser] = 2
	elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then
		npcHandler:say("Okay, vamos!", cid)
		setPlayerStorageValue(cid, quest, 2)
		talkState[talkUser] = 0
	elseif msgcontains(msg, "missao") then
		local str = getPlayerStorageValue(cid, quest)
		if(str < 2) then
			npcHandler:say("Eu preciso de você. Pode matar 20 dragoes pra mim?", cid) 
			talkState[talkUser] = 1
			return true
		elseif(str == 2) then
			npcHandler:say("Por favor volte para uma recompensa.", cid)
		elseif(str == 3) then
			npcHandler:say("20 dragões, já? Você é realmente um matador de dragões! Como o prometido, ta aqui sua recompensa.", cid)
			doPlayerAddItem(cid, recompensa, recompensaqtd)
			doPlayerAddExp(cid, xpganha)
			setPlayerStorageValue(cid, quest, 4)
		elseif(str == 4) then
			npcHandler:say("Você ja me ajudou!", cid)
		end
		talkState[talkUser] = 0
	end
	return TRUE
end

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

data/creaturescripts/scripts

monsterkill.lua

local monsters = {
	--nome = storage
	["dragon"] = 55004,
	["dragon lord"] = 55004
}

function onKill(cid, target)
	local monster = monsters[getCreatureName(target):lower()]
	if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then
		if getPlayerStorageValue(cid, monster) < 20 then 
			local killedMonsters = getPlayerStorageValue(cid, monster)
            if(killedMonsters == -1) then
                killedMonsters = 1
			end
			setPlayerStorageValue(cid, monster, killedMonsters + 1)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce matou " .. killedMonsters .. " de 20 dragões.")
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou dragões suficientes.")
			setPlayerStorageValue(cid, 76669, 3)
		end
	end
	return TRUE
end

creaturescripts.xml

<event type="kill" name="monsterkill" script="monsterkill.lua"/> 

Registra o evento monsterkill no login.lua na pasta creaturescripts/scripts ou creaturescripts/scripts/data vai ter vários eventos é só copiar o molde de um e trocar o nome.

 

data/xml/quests.xml

<quest name="Tasks" startstorageid="76669" startstoragevalue="1">
<mission name="Task Dragoes" storageid="76669" startvalue="1" endvalue="4">
<missionstate id="1" description="Fale com o npc tal para aceitar a missao"/>
<missionstate id="2" description="Mate 20 dragoes em tal montanha"/>
<missionstate id="3" description="Volte ao npc tal para receber sua recompensa"/>
<missionstate id="3" description="Voce ja fez a task dos dragoes"/>
</mission>
</quest>

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

Life is so meaningless, there is nothing worth a smile
So goodbye, I'll miss you

 

 

sugestões?

 

 

Postado
  • Solução

Beleza, a começar pelo quest log.

A tag quests fecha por último:

<?xml version="1.0" encoding="UTF-8"?>
<quests>
<quest name="Example Quest I" startstorageid="1001" startstoragevalue="1">
<mission name="Example Mission 1" storageid="1001" startvalue="1" endvalue="3">
<missionstate id="1" description="Example description 1"/>
<missionstate id="2" description="Example description 2"/>
<missionstate id="3" description="Example description 3"/>
</mission>
<mission name="Example Mission 2" storageid="1001" startvalue="4" endvalue="5">
<missionstate id="4" description="Example description 1"/>
<missionstate id="5" description="Example description 2"/>
</mission>
 
</quest>
<quest name="Tasks" startstorageid="76669" startstoragevalue="1">
<mission name="Task Dragoes" storageid="76669" startvalue="1" endvalue="4">
<missionstate id="1" description="Fale com o npc tal para aceitar a missao"/>
<missionstate id="2" description="Mate 20 dragoes em tal montanha"/>
<missionstate id="3" description="Volte ao npc tal para receber sua recompensa"/>
<missionstate id="3" description="Voce ja fez a task dos dragoes"/>
</mission>
</quest>
</quests>

Bom, no login.lua o nome ta errado, mas vamos corrigir no creaturescripts.xml:

<event type="kill" name="MonsterKill" script="monsterkill.lua"/>

Bem, e o NPC ta sem dialogo inicial:

<?xml version="1.0" encoding="UTF-8"?><npc name="Adam" script="task1.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100" />
<look type="132" head="115" body="0" legs="114" feet="0" addons="3" corpse="2212"/>
<parameters>
  <parameter key="message_greet" value="Oi, você pode me ajudar? Se puder, me avise que eu lhe falo sobre a {missao}. "/>
</parameters>
</npc>

Pra mudar esse {missao}, que é a mensagem em azul, mude essa linha:

elseif msgcontains(msg, "missao") then

No script do npc


Qualquer erro ou mal funcionamento é só postar.

Life is so meaningless, there is nothing worth a smile
So goodbye, I'll miss you

 

 

sugestões?

 

 

Postado
  • Autor

Perfeito cara, simplesmente perfeito ...

Posso pedir um adicional?

 

Se no caso essa task ai sao 20 dragoes, sendo eles dragons ou dragons lord, eu gostaria de uma mais especifica por exemplo, que sejam 20 dragoes e 20 dragons lord, tipo assim mate 20 dragoes e 20 dragons lords para mim ... sacou? TE AMO CARA, como que da repu aqui mais de 1 vez >.<  :bleh:  :wow:  :wow:  :wow:

Conheça agora os planos e preços da TKS Host.

Qualidade e Preço Justo!

 

www.tkshost.com

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo