Ir para conteúdo

Npcs De Quest, Usando Storage


MUTAN0

Posts Recomendados

Ae, como vai? :great:

Eu fiz uma quest que usa 2 NPCs, porem eles não funcionaram como eu queria :neutral:

 

Primeiro vou explicar como é para funcionar:

O player Chega em uma velha bruxa...

PLAYER: Hi

BRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy.

PLAYER:book of magic

BRUXA [npc]:My book of magic? I lost it for the vampires of Venore. Plan a way to handle it these worms.

*Adiciona o Storage 8569 no player.

Então o PLAYER vai até os vampires, e fala com um NPC Vampire para pedir o 'livro de magias' da velha bruxa...

PLAYER:Hi

VAMPIRE [npc]: Hi PLAYER. It is best that has disturbed me for good reason ... Well I'm very thirst for blood.

PLAYER:book of magic

*O NPC vê se o player já conversou com a bruxa sobre o livro, olhando se ele tem o Storage 8569.

(caso tenha o Storage 8569) VAMPIRE [npc]: The book that old witch? It may take, we can not understand a word that old.

*Dá o item 6120 (livro) ao player.

(caso não tenha o storage 8569) VAMPIRE [npc]: I do not know of any book, its useless. Get out of my home immediately.

Depois de conseguir o livro com o Vampire, o PLAYER volta á velha bruxa, para devolver o livro;

PLAYER:Hi

BRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy.

PLAYER:book of magic

*A bruxa confere se o livro que o vampire deu, está com o player.

BRUXA [npc]: I see you got my book of magic. Take this gift in exchange for their help. Thanks..Hmm..PLAYER that your name, right?

*Remove o livro (6120)

*Dá uma recompensa, que no caso é uma crown armor (2487)

------------------

Bom, agora os scripts:

Bruxa;

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

 

npcHandler:setMessage(MESSAGE_GREET, "Hmm...Hello |PLAYERNAME|. I am the most powerful magician in the region. But I have no time for you, I'm busy.")

 

if msgcontains(msg, 'book of magic') then

getPlayerItemCount(cid, 6120)

selfSay('I see you got my book of magic. Take this gift in exchange for their help. Thanks..Hmm..|PLAYERNAME|, that your name, right?', cid)

doPlayerRemoveItem(cid, 6120, 1)

doPlayerAddItem(uid, 2487, 1)

end

else

selfSay('My book of magic? I lost it for the vampires of Venore. Plan a way to handle it these worms.', cid)

setPlayerStorageValue(cid,8569)

end

talkState[talkUser] = 0

 

npcHandler:addModule(FocusModule:new())

 

Vampire NPC;

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

 

npcHandler:setMessage(MESSAGE_GREET, "Hi |PLAYERNAME|. It is best that has disturbed me for good reason ... Well I'm very thirst for blood.")

 

if msgcontains(msg, 'book of magic') then

getPlayerStorageValue(cid,8569)

selfSay('The book that old witch? It may take, we can not understand a word that old.', cid)

doPlayerAddItem(cid, 6120, 1)

end

else

selfSay('I do not know of any book, its useless. Get out of my home immediately.', cid)

end

talkState[talkUser] = 0

 

npcHandler:addModule(FocusModule:new())

 

Pedido~

Uma coisa que eu queria, que se possivel quem concertar o NPC já fizesse pra mim, é que o Vampire [NPC] desse um outro storage ao player, para que ele não pegasse o livro mais de uma vez.

Então se o player já tivesse pego o livro uma vez, ele diria:

VAMPIRE [npc]: Darkness ... Are you crazy? I already gave you the damn book.

 

Obrigado. Estarei voltando para ver as respostas.

Espero sua ajuda.

Cya~

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

Ae, como vai? :great:
Eu fiz uma quest que usa 2 NPCs, porem eles não funcionaram como eu queria :neutral:

Primeiro vou explicar como é para funcionar:

O player Chega em uma velha bruxa...
PLAYER: Hi
BRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy.
PLAYER:book of magic
BRUXA [npc]:My book of magic? I lost it for the vampires of Venore. Plan a way to handle it these worms
*Adiciona o Storage 8569 no player.
Então o PLAYER vai até os vampires, e fala com um NPC Vampire para pedir o 'livro de magias' da velha bruxa...
PLAYER:Hi
VAMPIRE [npc]: Hi PLAYER. It is best that has disturbed me for good reason ... Well I'm very thirst for blood.
PLAYER:book of magic
*O NPC vê se o player já conversou com a bruxa sobre o livro, olhando se ele tem o Storage 8569.
(caso tenha o Storage 8569) VAMPIRE [npc]: The book that old witch? It may take, we can not understand a word that old.
*Dá o item 6120 (livro) ao player.
(caso não tenha o storage 8569) VAMPIRE [npc]: I do not know of any book, its useless. Get out of my home immediately.
Depois de conseguir o livro com o Vampire, o PLAYER volta á velha bruxa, para devolver o livro;
PLAYER:Hi
BRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy.
PLAYER:book of magic
*A bruxa confere se o livro que o vampire deu, está com o player.
BRUXA [npc]: I see you got my book of magic. Take this gift in exchange for their help. Thanks..Hmm..PLAYER that your name, right?
*Remove o livro (6120)
*Dá uma recompensa, que no caso é uma crown armor (2487)
------------------
Bom, agora os scripts:
Bruxa;


Vampire NPC;


Pedido~
Uma coisa que eu queria, que se possivel quem concertar o NPC já fizesse pra mim, é que o Vampire [NPC] desse um outro storage ao player, para que ele não pegasse o livro mais de uma vez.
Então se o player já tivesse pego o livro uma vez, ele diria:
VAMPIRE [npc]: Darkness ... Are you crazy? I already gave you the damn book.

Obrigado. Estarei voltando para ver as respostas.
Espero sua ajuda.
Cya~


Gostaria de pedir que os revisores de script dessem uma olhada no script do
. Não consigo fazer uma resposta sem o texto inteiro sair como citação. Grato pela atenção

Hmm quest bem boladíssima, parabéns. Posso dar uma sugestão antes de tudo? Faça as falas em português =). Você rala o ano inteiro pra passar de ano na escola aprendendo gramática, redação e literatura, pra depois fazer um OTServ com falas em inglês??

agora vamos ao que interessa =)

bruxa
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 msgs = {
  "Olá, |PLAYERNAME|! Eu sou a bruxa mais poderosa da região. Mas eu não tenho tempo para você, estou ocupada!",
  "Meu livro mágico? Os vampiros de venore me roubaram! Mas já estou planejando uma maneira de tomá-lo de volta daqueles vermes.",
  "Vejo que recuperou meu livro mágico! Tome este presente como gratificação. Obrigado, |PLAYERNAME|. Este é seu nome, certo?",
  "Muito obrigada por ter recuperado meu livro!",
  "Disse que recuperou meu livro, mas onde ele está? Está tentando me roubar? Saia da minha frente!!",
  "Parece que meu presente é muito pesado para você. Por favor, volte quando puder carregá-lo."
} -- reuni todas as falas do npc em um só lugar, se vc insistir em utilizar em inglês, fica mais fácil trocar

npcHandler:setMessage(MESSAGE_GREET, msgs[1])

if msgcontains(msg, 'book of magic') then

  if getPlayerStorageValue(cid, 8569) == -1 then -- nunca falou com a bruxa
  selfSay(msgs[2], cid)
  setPlayerStorageValue(cid,8569, 1)
  elseif getPlayerStorageValue(cid, 8569) == 3 then -- bruxa já entregou a recompensa
  selfSay(msgs[4],cid)
  elseif getPlayerStorageValue(cid, 8569) == 2 then -- falou com o vampiro
  if getPlayerItemCount(cid, 6120) then
	 if getPlayerFreeCap + getItemWeight(6120, 1) >= getItemWheight(2487,1) then
		selfSay(msgs[3], cid)
		doPlayerRemoveItem(cid, 6120, 1)
		doPlayerAddItem(uid, 2487, 1)
		setPlayerStorageValue(cid, 8569, 3)
	 else
		selfSay(msgs[6], cid) -- não aguenta a armor, não define a storage para poder buscar outra hr
	 end
  else
	 selfSay(msgs[5], cid) -- livro não está na mochila, mas já falou com o vampiro
  end
  end

end
talkState[talkUser] = 0

npcHandler:addModule(FocusModule:new())



vampiro:

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 msgs = {
  "Oi, |PLAYERNAME|. É melhor que tenha me perturbado por uma boa razão, pois estou sedento de sangue.",
  "O livro daquela bruxa velha? Pode levar, nós não conseguimos entender uma escrita tão antiga",
  "Não sei de que livro está falando. Saia da minha frente imediatamente!",
  "Você está louco??? Eu já te dei o maldito livro!"
  "Não posso lhe entregar algo que não aguenta carregar!"
} -- reuni todas as falas do npc em um só lugar, se vc insistir em utilizar em inglês, fica mais fácil trocar

npcHandler:setMessage(MESSAGE_GREET, msgs[1])

if msgcontains(msg, 'book of magic') then
  if getPlayerStorageValue(cid,8569) == 1 then -- storage1 a bruxa define quando se fala do livro
  if getPlayerFreeCap(cid) < getItemWeight(6120,1) then
	 selfSay(msgs[5], cid) -- não entrega o livro, e não define a storage value
  else
	 selfSay(msgs[2], cid)
	 doPlayerAddItem(cid, 6120, 1)
	 setPlayerStorageValue(cid, 8569, 2) -- proteção para evitar que se peguem vários livros
  end
  elseif getPlayerStorageValue(cid, 8569) >= 2 then -- o script q vc pediu para que ele não dê mais de um livro
  selfSay(msgs[4], cid)
  else
  SelfSay(msgs[3], cid) -- fala do vampiro se não tiver falado com a bruxa ainda
  end
end
talkState[talkUser] = 0

npcHandler:addModule(FocusModule:new())



como boa parte dos scripters fazem, desenvolvi o script no campo de resposta e não testei. qualquer erro ou dúvida estamos aqui ;)

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

Existe a function tanto para retornar quanto o livro pesa, quanto para saber o cap do player.

 

local playerCap = getPlayerFreeCap(cid)

local item = 2393 --Giant Sword

local itemweight = getItemWeight(item, 1)

if playerCap >= itemweight then

doPlayerSendTextMessage(cid,22,'You have found a giant sword.')

doPlayerAddItem(cid,item,1)

else

doPlayerSendTextMessage(cid, 22, 'You have found a giant sword weighing ' ..itemweight.. ' oz it\'s too heavy.')

end

 

Retirado de docs/LUA_FUNCTIONS do distro TFS 0.2.14.

Link para o comentário
Compartilhar em outros sites

Existe a function tanto para retornar quanto o livro pesa, quanto para saber o cap do player.

 

 

 

Retirado de docs/LUA_FUNCTIONS do distro TFS 0.2.14.

 

graannnde noobinhu =)

 

coincidentemente eu acabei de achar o tutorial do tibiaa4e sobre functions ahuahuahuahuahuahu

 

editei as linhas no código

Link para o comentário
Compartilhar em outros sites

@Brainless:

Ficou bom mesmo, e realmente eu optei a deixar meu ingles de lado e fazer em portugues. hehe

Peguei os scripts que você deixou, vou testar e já volto pra dizer se funcionou ou não.

Obrigado á todos.

 

-----

Deu uns erros, sim. Mas eu não entendi o pq dos erros :shocked:

 

Imagem do erro:

imagem-1.jpg

 

Obs.: A versão do meu Server é 8.31, TFS V0.3 - Alpha 4.

Espero que você saiba o que deu :tongue:

Valeu.

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


@Brainless:
Ficou bom mesmo, e realmente eu optei a deixar meu ingles de lado e fazer em portugues. hehe
Peguei os scripts que você deixou, vou testar e já volto pra dizer se funcionou ou não.
Obrigado á todos.

-----
Deu uns erros, sim. Mas eu não entendi o pq dos erros :shocked:

Imagem do erro:

Obs.: A versão do meu Server é 8.31, TFS V0.3 - Alpha 4.
Espero que você saiba o que deu :tongue:
Valeu.



nas falas, eu criei uma array... { }

verifique se após a última fala dos dois npc's existe o caractere }

"não posso lhe entregar, você não pode carregar" }

no script, eu tinha colocado na linha debaixo, seguido do comentário -- se vc desejar trocar para ingles etc

EDIT 14:12

se a acentuação nos npc's não aparecer corretamente, salve os arquivos.lua como UNICODE como na imagem abaixo
22zvw5.jpg
Editado por brainless
Link para o comentário
Compartilhar em outros sites

@Brainless:

Ta valendo muito a sua ajuda, mas apareceu outro erro que até tentei concertar sozinho, mas não achei o problema.

Parece um simbolo inesperado, ou alguma coisa assim, ele acusa um sibolo assim --> ' '

Mas para você mesmo ver, ai está:

imagem2.jpg

Deve ser um ultimo erro, um erro bobo talvez., mas que não deixa os NPCs carregarem.

Obs.: Após o concerto, postarei os NPCs aqui no forum, e estarei colocando seus créditos junto, e de quem ainda vir a ajudar no erro.

Valeu... :smile_positivo:

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...