Postado Junho 18, 2014 11 anos 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 Junho 18, 2014 11 anos 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 Junho 18, 2014 11 anos por Frenesy (veja o histórico de edições)
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.