Ir para conteúdo
  • 0

Duvida/pedido


lokitobr12

Pergunta

Gostaria de saber se é possível, um npc que troque itens.

Exemplo: Tenho 3 itens separados (No caso IDS: 12285, 12286, 12287). E quando eu falar com o "NPC" Ele juntará os 3 itens e formará uma staff. (No caso ID: 12288).

 

Player: Hi
NPC: O que desejas aqui |PLAYERNAME|?
Player: staff
NPC: Então, você tem as 3 partes para completar a staff?
Player: yes
NPC: Aqui está a sua staff! Ou (Venha aqui depois de 10 minutos e estará pronta.)
Player: bye
NPC: Vá Com Deus!

 

 

 

Bom, creio que isso seja um script.

 

Protocolo: TFS 0.4.

Versão: 8.6.

 

 

 

Obrigado a todos!

Editado por lokitobr12
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Vá em data/npc/script crie um arquivo chamado staff,lua e cole isso:

local umaVez = sim -- Aqui você bota sim, para que o player faça só uma vez
local level = sim -- Se precisa de level pra fazer
local checaLevel = 8 -- Level nessesarion
local idStaff1 = 1511 -- id dos itens que precisa pra fazer a staff
local idStaff2 = 1511
local idStaff3 = 1511
local staff = 5262 -- Aqui a staff que o npc vai dar

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

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false  
end  
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
-- Conversa Jogador/NPC
if umaVez == "sim" and getStor(cid, 148) >= 1 then selfSay('Você já me entregou os itens.') return true end
if(msgcontains(msg, 'hi') and getStor(cid, 770) <= 0) then
  if level == "sim" and getPlayerLevel(cid) >= 8 then else return selfSay('Você precisa de level '..checaLevel..', para pegar a staff.') end
  setStor(cid, 770, 1)
  selfSay('O que desejas aqui |PLAYERNAME|?')
elseif(msgcontains(msg, 'staff')and getStor(cid, 770) == 1) then
  selfSay('Então, você tem as 3 partes para completar a staff?.')
  setStor(cid, 770, 2)
elseif(msgcontains(msg, 'yes')and getStor(cid, 770) == 3) then	
if(doPlayerRemoveItem(cid, idStaff1,1)) then else return selfSay('Você não tem todos os itens para fazer a staff.') end
if(doPlayerRemoveItem(cid, idStaff2,1)) then else return selfSay('Você não tem todos os itens para fazer a staff.') end
if(doPlayerRemoveItem(cid, idStaff3,1)) then else return selfSay('Você não tem todos os itens para fazer a staff.') end
doPlayerAddItem(cid, staff, 1)
setStor(cid, 148, 1)
selfSay('Aqui está a sua staff!')
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
function setStor(cid, sto, value)
return setPlayerStorageValue(cid, sto, value)
end
function getStor(cid, value)
return getPlayerStorageValue(cid, value)
end

Depois crie um arquivo em data/npc chamado staff e cole isso:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Chuck Norris" script="staff.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2">

<health now="150" max="150"/>

<look type="502" head="92" body="113" legs="87" feet="87"/>

<parameters>


</parameters>

</npc>

Editado por SmiX
Link para o comentário
Compartilhar em outros sites

  • 0

Testando! já já edito.

 

 

@EDIT1: Não consegui :S Eu falo "Hi, Staff", e não acontece nada

 

@EDIT2: Alguém, pode me ajudar? ;=; Quero muito esse npc =/

Editado por lokitobr12
Link para o comentário
Compartilhar em outros sites

  • 0



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

local items = {12285, 12286, 12287}
local staff = 12288

local storage = 88776

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 onGreetCallback(cid)
local status = getCreatureStorage(cid, storage)
if status == -1 then
	talkState[cid] = 0
	npcHandler:setMessage(MESSAGE_GREET, "What do you want, |PLAYERNAME|?")
elseif os.time() < status then
	npcHandler:setMessage(MESSAGE_GREET, "Wait more ".. math.ceil((status - os.time())/60) .." minutes, |PLAYERNAME|!")
	npcHandler:releaseFocus(cid)
else
	npcHandler:setMessage(MESSAGE_GREET, "Here it is! The great ".. getItemNameById(staff) ..".")
	doPlayerAddItem(cid, staff, 1)
	doCreatureSetStorage(cid, storage, -1)
end
return true
end

function onCreatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
	return false
end

if msgcontains(msg, "staff") and talkState[cid] == 0 then
	npcHandler:say("So do you have the three pieces to create the staff?", cid)
	talkState[cid] = 1
end

if talkState[cid] == 1 then
	if msgcontains(msg, "yes") then
		local match = true
		for _, item in ipairs(items) do
			if getPlayerItemById(cid, true, item).uid == 0 then
				match = false
				break
			end
		end

		if match == true then
			for _, item in ipairs(items) do
				doPlayerRemoveItem(cid, item, 1)
			end

			npcHandler:say("Alright! Come back in ten minutes and the staff shall be made.", cid)
			doCreatureSetStorage(cid, storage, os.time() + 600)
		else
			npcHandler:say("Sorry, but you don't have all the items I need.", cid)
		end
	elseif msgcontains(msg, "no") then
		npcHandler:say("Alright then.")
		talkState[cid] = 0
	end
end
return true
end

npcHandler:setCallback(CALLBACK_GREET, onGreetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, onCreatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Sinta-se a vontade para traduzir. Não curto muito NPCs em português. happy.png

 

Fiz ele com os dez minutos para dar o item.

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...