Ir para conteúdo

Featured Replies

Postado

eu queria um npc de missao que desse pra por varias missoes em um npc só... tem como?? exemplo: mate 100 dragons.. ou traga tal item para mim... queria esses dois tipos de missao. e a recompensa por exp e dinheiro...

~~

Postado

Pra fazer NPC de missão pra verificar quantos monstros você matou, precisa de outros scripts. No caso irei fazer apenas o NPC, e configurei com duas missões.

 

  • Mission 1 - Pegar 1 Item
  • Mission 2 - Pegar 2 Item
-- < Script by Frenesy > --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 doCreatureSayWithDelay(cid,text,type,delay,e)
   if delay<=0 then
      doCreatureSay(cid,text,type)
   else
      local func=function(pars)
                    doCreatureSay(pars.cid,pars.text,pars.type)
                    pars.e.done=TRUE
                 end
      e.done=FALSE
      e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e})
   end
end




function cancelNPCTalk(events)
  local ret=1
  for aux=1,table.getn(events) do
     if events[aux].done==FALSE then
        stopEvent(events[aux].event)
     else
        ret=ret+1
     end
  end
  events=nil
  return(ret)
end




function doNPCTalkALot(msgs,interval)
  local e={}
  local ret={}
  if interval==nil then interval=3000 end --3 seconds is default time between messages
  for aux=1,table.getn(msgs) do
      e[aux]={}
      doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux])
      table.insert(ret,e[aux])
  end
  return(ret)
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


    if(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1001) == -1 then
    selfSay('Ola, poderia me ajudar me dando tal item?', cid)
talkState[talkUser] = 1


elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1) then
selfSay('estarei esperando', cid)


talkState[talkUser] = 0
setPlayerStorageValue(cid, 1001, 1)
setPlayerStorageValue(cid, 1002, 1)


elseif(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1002) == 1 then
selfSay('Conseguiu recolher os itens?', cid)
talkState[talkUser] = 2


elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 and getPlayerItemCount(cid, IDDoItem) < 1 then
selfSay('Voce ainda nao tem o item necessarios.', cid)
talkState[talkUser] = 0


elseif((msgcontains(msg, 'No') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2) then
selfSay('Entao vai la buscar.', cid)
talkState[talkUser] = 0


elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and getPlayerStorageValue(cid,1002) == 1 and talkState[talkUser] == 2 and getPlayerItemCount(cid, IDDoItem) == 1 then
selfSay('Muito obrigado, aqui está seu premio!', cid)


doPlayerAddItem(cid,IDDoItem, 1) -- Recompensa
doPlayerRemoveItem(cid, IDDoItem, 1) -- Remove o Item
setPlayerStorageValue(cid, 1002, -1)
setPlayerStorageValue(cid, 1003, 1) -- Storage pra começar proxima mission.

--============ Primeira Mission Completa. Vamos pra segunda. ===============--

 elseif(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1003) == 1 then
    selfSay('Preciso de mais dois outros items. Me ajuda ai, pode ser?', cid)
talkState[talkUser] = 3


elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 3) then
selfSay('Beleza, estou esperando.', cid)


talkState[talkUser] = 0
setPlayerStorageValue(cid, 1003, -1)
setPlayerStorageValue(cid, 1004, 1)


elseif(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1004) == 1 then
selfSay('Conseguiu recolher os dois itens?', cid)
talkState[talkUser] = 4


elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 4 and getPlayerItemCount(cid, IDDoItem) < 2 then
selfSay('Voce ainda nao tem o item necessarios.', cid)
talkState[talkUser] = 0


elseif((msgcontains(msg, 'No') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2) then
selfSay('Entao vai la buscar.', cid)
talkState[talkUser] = 0


elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and getPlayerStorageValue(cid,1002) == 1 and talkState[talkUser] == 4 and getPlayerItemCount(cid, IDDoItem) == 2 then
selfSay('Muito obrigado, aqui está seu premio!', cid)


doPlayerAddItem(cid,IDDoItem, 1) -- Recompensa
doPlayerRemoveItem(cid, IDDoItem, 2) -- Remove o Item
setPlayerStorageValue(cid, 1004, -1)
setPlayerStorageValue(cid, 1005, 1) -- Storage pra começar proxima mission.

--================= Fim da Mission 2 ===================--

end 
return TRUE
end


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

Adicionando Mais Missões:

 

Para adicionar mais missões, basta colar essa parte:

elseif(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1003) == 1 then
    selfSay('Preciso de mais dois outros items. Me ajuda ai, pode ser?', cid)
talkState[talkUser] = 3


elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 3) then
selfSay('Beleza, estou esperando.', cid)


talkState[talkUser] = 0
setPlayerStorageValue(cid, 1003, -1)
setPlayerStorageValue(cid, 1004, 1)


elseif(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1004) == 1 then
selfSay('Conseguiu recolher os dois itens?', cid)
talkState[talkUser] = 4


elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 4 and getPlayerItemCount(cid, IDDoItem) < 2 then
selfSay('Voce ainda nao tem o item necessarios.', cid)
talkState[talkUser] = 0


elseif((msgcontains(msg, 'No') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2) then
selfSay('Entao vai la buscar.', cid)
talkState[talkUser] = 0


elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and getPlayerStorageValue(cid,1002) == 1 and talkState[talkUser] == 4 and getPlayerItemCount(cid, IDDoItem) == 2 then
selfSay('Muito obrigado, aqui está seu premio!', cid)


doPlayerAddItem(cid,IDDoItem, 1) -- Recompensa
doPlayerRemoveItem(cid, IDDoItem, 2) -- Remove o Item
setPlayerStorageValue(cid, 1004, -1)
setPlayerStorageValue(cid, 1005, 1) -- Storage pra começar proxima mission.

Abaixo do comentário e modificar as storages o os itens:

--================= Fim da Mission 2 ===================--

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

cms1-pr%C3%AAmio.png

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.7k

Informação Importante

Confirmação de Termo