Ir para conteúdo
  • 0

[Resolvido] [Pedido] 3 Npcs [Acredito Médio]


NdboHakai

Pergunta

Boa noite, rapaziada do Xtibia

TFS 0.4

  

Gostaria de um npc que o jogador entregava 6 items e em troca recebesse a storage.

 

Outro Npc \/

 

Tenho uma duvida, tem sistemas como por exemplo os de Graduação

Eles utilizam o Look para mostrar qual graduação o jogador está, mas como eu faço para um npc entregar uma storage com valor 1,2,3,4,5 como os de Graduação?

 

e Ultimo Npc \/

 

Gostaria de um npc que seria Travel, só que para ir pros locais que estão nesse npc

[Obs: mesmo ele sabendo o nome da cidade ele teria que fazer isso] = O jogador teria que escrever "Viajar"

E ele teria outras três funções = Só poderia funcionar com players sem PK e o jogador não precisaria falar "hi/viajar/templo/yes"

Queria que o jogador só falasse "hi/viajar/templo" e já seria teleportado

Eu poderia escolher se a cidade seria Premium ou Free

 

Por gentileza se poderem enviar no pastebin.com , porque aqui no forum toda vez que vou copiar algum script fica com error no script não sei porque.

 

Espero que me ajudem.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

@NdboHakai
Nada, só mudei pra necessitar falar o "viajar" que você quer, já que no outro, apesar de ter o "viajar", tinha a condição 'elseif', dai, se falasse um ou outro ia da no mesmo.
Só disse pra mudar todo o script porque antes eu tinha mandado só uma parte e agora mandei ele todo, alterando o que o outro usuário tinha mandado.

Link para o comentário
Compartilhar em outros sites

  • 0
5 minutos atrás, gabriel28 disse:

@NdboHakai
Nada, só mudei pra necessitar falar o "viajar" que você quer, já que no outro, apesar de ter o "viajar", tinha a condição 'elseif', dai, se falasse um ou outro ia da no mesmo.
Só disse pra mudar todo o script porque antes eu tinha mandado só uma parte e agora mandei ele todo, alterando o que o outro usuário tinha mandado.

Atá, irei substituir e testar.

=======================

Não funcionou, deu no mesmo

Eu digitando [hi/hakai city] o meu personagem é teleportado.

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

  • 0
13 minutos atrás, NdboHakai disse:

Atá, irei substituir e testar.

=======================

Não funcionou, deu no mesmo

Eu digitando [hi/hakai city] o meu personagem é teleportado.

EDITADO (Reparei que do jeito que estava, o NPC não iria dizer ao jogador que precisaria ser premium pra ir pra cidade?
Ficaria assim:

elseif msgcontains(msg, "desert city") then
if isPremium(cid)
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
else
	  selfSay("precisa ser premium", cid)
end

 

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

  • 0
33 minutos atrás, gabriel28 disse:

EDITADO (Reparei que do jeito que estava, o NPC não iria dizer ao jogador que precisaria ser premium pra ir pra cidade?
Ficaria assim:


elseif msgcontains(msg, "desert city") then
if isPremium(cid)
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
else
	  selfSay("precisa ser premium", cid)
end

 

Não existe uma forma mais facil?, nessa forma se eu quisesse que todas as cidades fossem premium e se também eu tivesse vontade de por alguma free eu não conseguiria.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor

Fiz como pediu, teste ai:

local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

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 getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}.", cid)
   talkState[talkUser] = 1
   end
   if talkState[talkUser] == 1 then
   if msgcontains(msg, "hakai city") then
    if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium.
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
	  talkState[talkUser] = 0
	  else
	  selfSay("Você não é premium account!", cid)
	  end
   end  
   if msgcontains(msg, "desert city") then
    if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium.
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
	  talkState[talkUser] = 0
	  else
	  selfSay("Você não é premium account!", cid)
	  end
   end  
   if msgcontains(msg, "ice city") then
    if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium.
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
	  talkState[talkUser] = 0
	  else
	  selfSay("Você não é premium account!", cid)
	  end
     end  
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 minutos atrás, Yan Liima disse:

Fiz como pediu, teste ai:


local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

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 getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}.", cid)
   talkState[talkUser] = 1
   end
   if talkState[talkUser] == 1 then
   if msgcontains(msg, "hakai city") then
    if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium.
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
	  talkState[talkUser] = 0
	  else
	  selfSay("Você não é premium account!", cid)
	  end
   end  
   if msgcontains(msg, "desert city") then
    if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium.
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
	  talkState[talkUser] = 0
	  else
	  selfSay("Você não é premium account!", cid)
	  end
   end  
   if msgcontains(msg, "ice city") then
    if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium.
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
	  talkState[talkUser] = 0
	  else
	  selfSay("Você não é premium account!", cid)
	  end
     end  
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Nice, funcionou perfeitamente.

Estou na espera caso for ajudar, do npc 2

 

[Tem condições de desenvolver o npc 1 ou adicionar a função de quantidade do npc que o  @Kuro o Shiniga fez?

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa a demora brother, tava ocupado, aqui o script :

 

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 

str = 192537 --- STORAGE QUE VAI GANHAR
local temitens = {{id = 2160, count = 100}, {id = 8306, count = 3}, {id = 2400, count = 2}, {id = 5878, count = 100}, {id = 2494, count = 2}, {id = 2486, count = 2}, {id = 2491, count = 2}} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!



function onItemPlayer(cid, itemid)
for i = 1, #temitens do
if getPlayerItemCount(cid, temitens[i].id) < temitens[i].count then
return false
end
end
return true
end


function removeItem(cid)
for i in ipairs (temitens) do
doPlayerRemoveItem(cid, temitens[i].id, temitens[i].count)
end
end

if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then
removeItem(cid)
setPlayerStorageValue(cid, str, 1)
doSendMagicEffect(getThingPos(cid), 12)
selfSay("Storage Adicionada !", cid)
else
selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid)
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Aqui você muda a quantidade e o item que vai ser entregue ao NPC :

local temitens = {{id = 2160, count = 100}

Em "ID" é o id do item e em "COUNT" a quantidade !

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, Kuro o Shiniga disse:

Desculpa a demora brother, tava ocupado, aqui o script :

 


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 

str = 192537 --- STORAGE QUE VAI GANHAR
local temitens = {{id = 2160, count = 100}, {id = 8306, count = 3}, {id = 2400, count = 2}, {id = 5878, count = 100}, {id = 2494, count = 2}, {id = 2486, count = 2}, {id = 2491, count = 2}} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!



function onItemPlayer(cid, itemid)
for i = 1, #temitens do
if getPlayerItemCount(cid, temitens[i].id) < temitens[i].count then
return false
end
end
return true
end


function removeItem(cid)
for i in ipairs (temitens) do
doPlayerRemoveItem(cid, temitens[i].id, temitens[i].count)
end
end

if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then
removeItem(cid)
setPlayerStorageValue(cid, str, 1)
doSendMagicEffect(getThingPos(cid), 12)
selfSay("Storage Adicionada !", cid)
else
selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid)
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Aqui você muda a quantidade e o item que vai ser entregue ao NPC :


local temitens = {{id = 2160, count = 100}

Em "ID" é o id do item e em "COUNT" a quantidade !

Irei testar, você poderia fazer o npc 2?

Link para o comentário
Compartilhar em outros sites

  • 0

Npc 2  :

 

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 

local itenscoleta = {{id =5878 , count =100}, {id =5876 , count =100}, {id =5880 , count =100}} --- ITEMS QUE O NPC VAI PEDIR E A QUANTIDADE
local str = { {mission1 = 58321, recompensa = 2160}, {mission2 = 58322, recompensa = 5922}, {mission3 = 58323, recompensa = 2400} } -- STORAGE QUE VAI GANHAR DEPOIS DE COMPLETAR A QUEST E A RECOMPENSA EM ITEM
name = getCreatureName(cid)
strstart = 998292


if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) < 1 then
selfSay("Ola" ..name.. ", tenho algumas missoes interessantes para voce, deseja saber quais sao?", cid)
talkState[talkUser] = 1

elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) == 1 then
selfSay("Voce esta em missao, ou falta entregar os itens para mim!", cid)

elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
selfSay("Tenho 5 missoes, voce tem que coletar a quatidade de 100 itens em cada missao, digite (primeira missao, segunda missao ou terceira missao) e escolha qual deseja!", cid)
talkState[talkUser] = 2

elseif msgcontains(msg, "primeira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[1].mission1) < 1 then
selfSay("Colete 100 minotaur leather!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)

elseif msgcontains(msg, "segunda missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[2].mission2) < 1 then
selfSay("Colete 100 lizard leather!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)

elseif msgcontains(msg, "terceira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[3].mission3) < 1 then
selfSay("Colete 100 iron ore!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)
end

if msgcontains(msg, "primeira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[1].id) >= itenscoleta[1].count then
doPlayerRemoveItem(cid, itenscoleta[1].id, itenscoleta[1].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str.misson1, 1)
doPlayerAddItem(cid, str[1].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0

elseif msgcontains(msg, "segunda missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[2].id) >= itenscoleta[2].count then
doPlayerRemoveItem(cid, itenscoleta[2].id, itenscoleta[2].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str.misson2, 1)
doPlayerAddItem(cid, str[2].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0

elseif msgcontains(msg, "terceira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[3].id) >= itenscoleta[3].count then
doPlayerRemoveItem(cid, itenscoleta[3].id, itenscoleta[3].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str.misson3, 1)
doPlayerAddItem(cid, str[3].recompensa, 1) --- O VALOR 1 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

O script esta todo comentado, leia os comentarios que você vai entender como configurar !

Não esqueça de marcar melhor resposta, para o post ser fechado!

abraço

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

  • 0
30 minutos atrás, Kuro o Shiniga disse:

Npc 2  :

 


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 

local itenscoleta = {{id =5878 , count =100}, {id =5876 , count =100}, {id =5880 , count =100}} --- ITEMS QUE O NPC VAI PEDIR E A QUANTIDADE
local str = { {mission1 = 58321, recompensa = 2160}, {mission2 = 58322, recompensa = 5922}, {mission3 = 58323, recompensa = 2400} } -- STORAGE QUE VAI GANHAR DEPOIS DE COMPLETAR A QUEST E A RECOMPENSA EM ITEM
name = getCreatureName(cid)
strstart = 998292


if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) < 1 then
selfSay("Ola" ..name.. ", tenho algumas missoes interessantes para voce, deseja saber quais sao?", cid)
talkState[talkUser] = 1

elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) == 1 then
selfSay("Voce esta em missao, ou falta entregar os itens para mim!", cid)

elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
selfSay("Tenho 5 missoes, voce tem que coletar a quatidade de 100 itens em cada missao, digite (primeira missao, segunda missao ou terceira missao) e escolha qual deseja!", cid)
talkState[talkUser] = 2

elseif msgcontains(msg, "primeira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[1].mission1) < 1 then
selfSay("Colete 100 minotaur leather!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)

elseif msgcontains(msg, "segunda missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[2].mission2) < 1 then
selfSay("Colete 100 lizard leather!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)

elseif msgcontains(msg, "terceira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[3].mission3) < 1 then
selfSay("Colete 100 iron ore!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)
end

if msgcontains(msg, "primeira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[1].id) >= itenscoleta[1].count then
doPlayerRemoveItem(cid, itenscoleta[1].id, itenscoleta[1].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str.misson1, 1)
doPlayerAddItem(cid, str[1].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0

elseif msgcontains(msg, "segunda missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[2].id) >= itenscoleta[2].count then
doPlayerRemoveItem(cid, itenscoleta[2].id, itenscoleta[2].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str.misson2, 1)
doPlayerAddItem(cid, str[2].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0

elseif msgcontains(msg, "terceira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[3].id) >= itenscoleta[3].count then
doPlayerRemoveItem(cid, itenscoleta[3].id, itenscoleta[3].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str.misson3, 1)
doPlayerAddItem(cid, str[3].recompensa, 1) --- O VALOR 1 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

O script esta todo comentado, leia os comentarios que você vai entender como configurar !

Não esqueça de marcar melhor resposta, para o post ser fechado!

abraço

Irei testar

========================

Tem 2 problemas, o jogador pode fazer a mesma missão quantas vezes quiser.

E outro problema é que se o jogador digitar : hi/primeira missão , e não tiver os items não volta sinal de error, falando que ele ainda não está com os items da missão.

 

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

  • 0
52 minutos atrás, NdboHakai disse:

Irei testar

========================

Tem 2 problemas, o jogador pode fazer a mesma missão quantas vezes quiser.

E outro problema é que se o jogador digitar : hi/primeira missão , e não tiver os items não volta sinal de error, falando que ele ainda não está com os items da missão.

 

Desculpa, erro bobo, segue o script :

 

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 

local itenscoleta = {{id =5878 , count =100}, {id =5876 , count =100}, {id =5880 , count =100}} --- ITEMS QUE O NPC VAI PEDIR E A QUANTIDADE
local str = { {mission1 = 58321, recompensa = 2160}, {mission2 = 58322, recompensa = 5922}, {mission3 = 58323, recompensa = 2400} } -- STORAGE QUE VAI GANHAR DEPOIS DE COMPLETAR A QUEST E A RECOMPENSA EM ITEM
name = getCreatureName(cid)
strstart = 988223


if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) < 1 then
selfSay("Ola" ..name.. ", tenho algumas missoes interessantes para voce, deseja saber quais sao?", cid)
talkState[talkUser] = 1

elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) == 1 then
selfSay("Voce esta em missao, ou falta entregar os itens para mim!", cid)

elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
selfSay("Tenho 3 missoes, voce tem que coletar a quatidade de 100 itens em cada missao, digite (primeira missao, segunda missao ou terceira missao) e escolha qual deseja!", cid)
talkState[talkUser] = 2

elseif msgcontains(msg, "primeira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[1].mission1) < 1 then
selfSay("Colete 100 minotaur leather!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)


elseif msgcontains(msg, "segunda missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[2].mission2) < 1 then
selfSay("Colete 100 lizard leather!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)


elseif msgcontains(msg, "terceira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[3].mission3) < 1 then
selfSay("Colete 100 iron ore!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Start!")
setPlayerStorageValue(cid, strstart, 1)


elseif msgcontains(msg, "primeira missao")  and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[1].id) >= itenscoleta[1].count and getPlayerStorageValue(cid, str[1].mission1) < 1 then
setPlayerStorageValue(cid, str[1].mission1, 1)
doPlayerRemoveItem(cid, itenscoleta[1].id, itenscoleta[1].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
doPlayerAddItem(cid, str[1].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0

elseif msgcontains(msg, "segunda missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[2].id) >= itenscoleta[2].count and getPlayerStorageValue(cid, str[2].mission2) < 1 then
doPlayerRemoveItem(cid, itenscoleta[2].id, itenscoleta[2].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str[2].mission2, 1)
doPlayerAddItem(cid, str[2].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0

elseif msgcontains(msg, "terceira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[3].id) >= itenscoleta[3].count and getPlayerStorageValue(cid, str[3].mission3) < 1 then
doPlayerRemoveItem(cid, itenscoleta[3].id, itenscoleta[3].count)
selfSay("Que assim seja!", cid)
doSendMagicEffect(getThingPos(cid), 12)
doPlayerSendTextMessage(cid, 22, "Mission Completed!")
setPlayerStorageValue(cid, strstart, -1)
setPlayerStorageValue(cid, str[3].mission3, 1)
doPlayerAddItem(cid, str[3].recompensa, 1) --- O VALOR 1 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA
talkstate[talkUser] = 0
else
selfSay("voce ja completou essa missao!", cid)
end
end






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

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...