Jump to content
Close
Naze

Scripting NPC Verificar Storage Apartir do "Hi"

Recommended Posts

Uso TFS 0.4, e em meu servidor tenho sistema de reputação por storage, e tem um rank de acordo com o valor da storage, por exempo se o valor da storage XXXX = 1000 ele é Heroi, se o valor for = -1000 ele é um Criminoso.

 

Estou querendo fazer npc que teria quest para cada rank de reputação, para isso eu poderia fazer um npc que após ele falar missão, verifica a storage e se for valor adequado continua a quest, do contrario encerra ali. 

 

Mas meu servidor estou focando em ter um local (continente) totalmente focado no RPG e Historia, por isso gostaria que o NPC fizesse uma verificação de storage a partir da hora que o Player fala "Hi", assim se for a requerida ele executa uma fala do contrario executa outra.

 

Se precisar mexer nas sources  tenho elas e um pouco de conhecimento se me indicarem o local.

Agradeço dês de ja.



Naze#3578

 

<!-- Pirataria é crime, original é roubo, compartilhar é legal. -->

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Share this post


Link to post
Share on other sites

Poste aqui o lua do seu npc.

 

 


Share this post


Link to post
Share on other sites

Ainda não criei os NPCs em questão, mas pode utilizar a partir desse

 

Spoiler

local DESTINO = {x = 2241, y = 2374, z = 7} -- POSIÇÃO DE DESTINO
 
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:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
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, "ancient paradise") then
		if getPlayerStorageValue(cid, 100101) >= 2 then
		selfSay("Você ja obteve a aprovação, porque está ocupando meu tempo?", cid)
		talkState[talkUser] = nil
		npcHandler:onCreatureDisappear(cid)
		else
		doNPCTalkALot(cid, getNpcCid(), 1000, {"Jovem Heroi, Ancient Paradise acreditamos que seja um continente imensuravel, e sua localização foi descoberta por navegadores, e essa ilha a nomeamos como Small Paradise, a primeira ilha antes de chegar em Ancient Paradise Island.", "Eu estou encarregado de aprovar novos aventureiro nessa ilha, se passar pelo meu {teste} podera ir sem mais restrições para Ancient Paradise e também desfrutar dos misterios dessa Small Paradise."})
		talkState[talkUser] = 1
		end
	elseif msgcontains(msg, "teste") and talkState[talkUser] == 1 then
		talkState[talkUser] = 2
		doNPCTalkALot(cid, getNpcCid(), 1000, {"Veja bem, meu teste é muito simples, essa Smalll Paradise está repleta de monstros um tanto curioso, então por isso resolvemos usar ela para fazer esse teste.", "Você vai precisar escontrar um báu deixado por mim em uma determinada parte da ilha, após encontra recebera um presente por sua conquista, e também te darei acesso imediato a Ancient Paradise, deseja {tentar} obeter aprovação agora?"})

	elseif msgcontains(msg, "tentar") and talkState[talkUser] == 2 then
		talkState[talkUser] = 3
		selfSay("Você realmente deseja tentar obter aprovação, recomendo altamente ir em grupo, e achar o caminho de volta pode ser muito dificil se não conseguir?", cid)

	elseif msgcontains(msg, "yes") or msgcontains(msg, "sim") then
		if talkState[talkUser] == 3 then
		if getPlayerLevel(cid) >= 400 then
		doNPCTalkALot(cid, getNpcCid(), 2000, {"Para obter sua aprovação encontre o báu que deixei na ilha, se conseguir te teleportarei novamente e recebera acesso a Ancient Paradise, e poderá explorar o restante dessa Small Paradise.", "Jovem herói, não que eu teja olhando para baixo em você, mas você não me parece que possa passar a aprovação com apenas isso... Por isso vou te dar um aviso e também conta como ajuda já que vai saber o que enfrentar, va em grupo e cuidado com os dragões.","Tome esse {machete} também vai precisar. Mais informações checa seu {Quest Log}."})
		local bp = doPlayerAddItem(cid, 1987, 1)
		doAddContainerItem(bp, 2420, 1)
		setPlayerStorageValue(cid,100101,1)
		doSendMagicEffect(getThingPos(cid), 10)
		npcHandler:releaseFocus(cid)
		doTeleportThing(cid, DESTINO)
		doSendMagicEffect(DESTINO, 10)
		talkState[talkUser] = nil
		else
		selfSay("Me desculpe, mas você não tem level necessario para obter aprovação. Volte quando atingir level 400 e não esqueça de vim em grupo, sozinho sera muito difícil.", cid)
		npcHandler:onCreatureDisappear(cid)
		talkState[talkUser] = nil
		end
		end
	end
	return true
	end


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

 

 



Naze#3578

 

<!-- Pirataria é crime, original é roubo, compartilhar é legal. -->

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Share this post


Link to post
Share on other sites

Remove alguma mensagem que estiver no xml. No arquivo lua fica algo assim:

 

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:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
function onCreatureSay(cid, type, msg)	
	npcHandler:setMessage(MESSAGE_FAREWELL, "Byee..")
	if (getPlayerStorageValue(cid,12345) == 3) then
		npcHandler:setMessage(MESSAGE_GREET, "Sua storage eh 3.")
	elseif (getPlayerStorageValue(cid,12345) == 4) then
		npcHandler:setMessage(MESSAGE_GREET, "Sua storage eh 4.")
		elseif (getPlayerStorageValue(cid,12345) < 4) then
		npcHandler:setMessage(MESSAGE_GREET, "Sua storage eh menor que 4.")
	end
	npcHandler:onCreatureSay(cid, type, msg)		
end

function creatureSayCallback(cid, type, msg)
	if(not npcHandler:isFocused(cid)) then
		return FALSE
	end
	end


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

 


Share this post


Link to post
Share on other sites

@dragonfight  Obrigado.



Naze#3578

 

<!-- Pirataria é crime, original é roubo, compartilhar é legal. -->

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...