Ir para conteúdo

Yunie Quest Npc System


noobinhu

Posts Recomendados

pegue o script que você usa (no npc de backpack, rope, por exemplo) e adicione ao final dele:

 

function getNPCConfigs(cid)

configs = {storageid = NpcSystem.getParameter('storageid')}

 

configs.mission = getPlayerStorageValue(cid, configs.storageid)

 

if (configs.mission < 1) then

configs.mission = 1

end

 

configs.addon_looktype = NpcSystem.getParameter('addon_looktype['..configs.mission..']') or 0

configs.addon_number = NpcSystem.getParameter('addon_number['..configs.mission..']') or 0

configs.minimumlevel = tonumber(NpcSystem.getParameter('minimumlevel')) or 0

 

a = 0

items = NpcSystem.getParameter('missionItems['..configs.mission..']')

if (items ~= nil) then

configs.items = transformInTable(items)

else

configs.items = nil

end

configs.noquests = nil

 

configs.msg = NpcSystem.getParameter('missionMsg['..configs.mission..']')

if (configs.msg == nil) then

configs.msg = NpcSystem.getParameter('finishedMissionsMsg')

configs.noquests = 1

else

configs.thanks = parseMessages(cid, NpcSystem.getParameter('missionThanks['..configs.mission..']'))

configs.experience = NpcSystem.getParameter('missionExperienceGain['..configs.mission..']') or nil

itemgain = NpcSystem.getParameter('missionItemGain['..configs.mission..']')

if (itemgain ~= nil) then

configs.itemgain = transformInTable(itemgain)

else

configs.itemgain = nil

end

end

configs.msg = parseMessages(cid, configs.msg)

 

 

return configs

end

 

 

 

function transformInTable(data)

-- based in npchandler:traveldata...

items = {}

for item in string.gmatch(data, '[^;]+') do

local i = 1

a = a + 1

itemid = nil

quantity = nil

for temp in string.gmatch(item, '[^,]+') do

if(i == 1) then

itemid = tonumber(temp)

elseif(i == 2) then

quantity = tonumber(temp)

else break

end

i = i+1

end

items[a] = {itemid = itemid, quantity = quantity}

end

return items

end

 

 

function parseMessages(cid, msg)

-- based in npchandler:parsemsg

TAG_PLAYERNAME = '|PLAYERNAME|'

 

parseInfo = { [TAG_PLAYERNAME] = getCreatureName(cid)}

local ret = msg

for search, replace in pairs(parseInfo) do

ret = string.gsub(ret, search, replace)

end

return ret

end

 

 

function askMission(cid, message, keywords, parameters, node)

--TODO: buyAddons function in modules.lua

if(not npcHandler:isFocused(cid)) then

return false

end

configs = getNPCConfigs(cid)

error = 'Sorry, but you need to have these items: '

itemshave = 0

itemsneeded = 0

 

if (parameters.confirm ~= true) and (parameters.decline ~= true) then

if (getPlayerLevel(cid) >= configs.minimumlevel) then

npcHandler:say(configs.msg, cid)

else

npcHandler:say('Only players higher than level '.. configs.minimumlevel ..' can do this quest.', cid)

npcHandler:resetNpc()

end

elseif (parameters.confirm == true) then

a = 1

itemstext = ''

 

 

-- checking items

if (configs.items == nil) then

 

else

for k, item in pairs(configs.items) do

itemsneeded = itemsneeded + 1

quantity = nil

itemid = nil

for i, v in pairs(item) do

if (i == 'quantity') then

quantity = v

elseif (i == 'itemid') then

itemid = v

end

end

if(getPlayerItemCount(cid,itemid) >= quantity) then

itemshave = itemshave + 1

else

error = error .." ".. quantity .." ".. getItemName(itemid).."(s)"

 

if (itemsneeded == table.maxn(configs.items)) then

error = error .. "."

else

error = error .. ","

end

end

end

end

-- end checking items

 

if itemshave == table.maxn(configs.items) and configs.items ~= nil or configs.items == nil then

if (configs.experience ~= nil) then

doPlayerAddExp(cid,configs.experience)

end

 

-- removing items

if (configs.items == nil) then

else

for k, item in pairs(configs.items) do

itemsneeded = itemsneeded + 1

quantity = nil

itemid = nil

for i, v in pairs(item) do

if (i == 'quantity') then

quantity = v

elseif (i == 'itemid') then

itemid = v

end

end

doPlayerRemoveItem(cid, itemid, quantity)

end

end

-- end removing items

 

-- add items

if (configs.itemgain == nil) then

 

else

 

 

for k, item in pairs(configs.itemgain) do

itemsneeded = itemsneeded + 1

quantity = nil

itemid = nil

 

 

for i, v in pairs(item) do

if (i == 'quantity') then

quantity = v

elseif (i == 'itemid') then

itemid = v

end

end

doPlayerAddItem(cid, itemid, quantity)

 

end

end

-- end add items

 

-- add addons

if (configs.addon_looktype ~= 0) then

doPlayerAddOutfit(cid, configs.addon_looktype, configs.addon_number)

end

-- end add addons

 

-- add storage

setPlayerStorageValue(cid, configs.storageid, configs.mission+1)

-- end add storage

 

npcHandler:say(configs.thanks, cid)

else

npcHandler:say(error, cid)

end

 

npcHandler:resetNpc()

elseif (parameters.decline == true) then

npcHandler:say('Ok then.', cid)

npcHandler:resetNpc()

end

 

return true

end

 

 

 

 

 

local node1 = keywordHandler:addKeyword({'mission'}, askMission, {})

node1:addChildKeyword({'yes'}, askMission, {confirm = true})

node1:addChildKeyword({'no'}, askMission, {decline = true})

 

 

npcHandler:addModule(FocusModule:new())

 

Esta function/class em negrito, caso já exista no script, NÃO ADICIONE e coloque o script em cima desta tag.

Link para o comentário
Compartilhar em outros sites

REALMENTE MUITO BOM

 

 

@PERGUNTA

TEM CMOMO VC FAZE UM NPC TIPO Q ELE SO FALA COM O CARA SE ELE TIVER TAL ADDON FULL ?

 

E CMO COLOCA UM NPC P FAZE OUTIFIT TIPO GLOBAL Q JA N VENHA COM ASSASSIN E TALS

 

 

 

 

CYA//

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Opa surgiu uma duvida ae...

tipo se eu nao quero dar addon qndo completar a quest é só exclui a parte do addon?

 

 

opa aqui não tá dando exp quando completa a quest

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

  • 2 months later...
Este script, pode ser considerado como uma implementação no sistema Jiddo.

Você adiciona o script, como se fosse um script normal, e depois usa ele mesmo em vários arquivos XML, para fazer suas quests de NPC mais rapidamente e facilmente.

 

Screenshoots:

Primeira missão do NPC de Exemplo (Encontrado no final do tópico):

yuniesystemquestqa3.png

 

Segunda missão do NPC de Exemplo (Encontrado no final do tópico):

yuniesystemquest2ea2.png

 

Mensagem quando não tem mais missões:

yuniesystemquest3ox1.png

 

 

Adicionando o sistema no seu server:

Crie um arquivo chamado yuniesystemquest.lua em npc/scripts contendo:

 

 

O script poderia ser menor sim, mas eu fiquei com preguiça de pesquisar algumas functions que eu tinha esquecido :D

 

Pronto, você adicionou o sistema no seu server :)

 

Utilizando o sistema:

Irei fazer aqui um exemplo de NPC usando todos os parâmetros contidos nesta lib.

 

Crie um arquivo chamado Yunie System Quest.xml em data/npc contendo:

 

 

 

Em negrito, seria onde você adiciona a lib do NPC, para usar todos estes parameters, e fazer o NPC...

No próprio NPC tem algumas explicações do sistema.

 

Parameters Feitos:

Uma lista aqui, com as caractéristicas e descrições de cada parameter que pode ser adicionado no seu NPC.

 

  1. storageid (Obrigatório) - Armazena o storage value que será usado em toda a quest de um NPC, para determinar a missão em que você se encontra.
  2. finishedMissionsMsg (Obrigatório) - Mensagem que o NPC vai dizer quando não tiver mais missões.
  3. minimumlevel (Não obrigatório) - Level mínimo para fazer missões.
  4. missionMsg[mission_id] (Obrigatório) - Mensagem que o NPC diz, ao você pedir informações sobre 'mission'.
  5. missionThanks[missionid] (Obrigatório) - Mensagem de agradecimento do NPC, ao terminar uma missão.
  6. addon_looktype[missionid] (Não obrigatório) - Outfit looktype, caso você queira que o player ganhe um addon.
  7. addon_number[missionid] (Não obrigatório) - Addon ID, varia de 1 a 2, depende do addon que você quer.
  8. missionExperienceGain[missionid] (Não obrigatório) - Experiência ganha ao terminar a missão.
  9. missionItemGain[missionid] (Não obrigatório) - Items que ganha, ao terminar a missão (array).
  10. missionItems[missionid] (Não obrigatório) - Items necessários para terminar a missão (array).

 

Caso tenham dúvidas, quanto a parameters ou outros... podem postar, responderei assim que ver a dúvida.

 

//Yunie~

 

Brother, tipo, ótimo mesmo seu tutorial, mais se eu não quiser NPC de addon? Eu faço a mesma coisa, só mudo a parte de requerimento, e addon?

 

Valeu cara, muito bom mesmo :smile_positivo:

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 1 month later...
  • 4 weeks later...

Não sei se posso reviver esse topico, acredito que sim pq não tem muito tempo desde a ultima resposta dele, caso eu esteja fazendo algo errado. peço desculpas, mas preciso muito de ajuda com esse script.

Quero saber se alguem pode responder o motivo desse erro, caso alguem saiba, queria pedir ajuda, pois preciso muito desse script ou de algum parecido.

 

esse erro ai acontece quando eu falo "yes" pra aceitar a missão

 

errox.jpg

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

×
×
  • Criar Novo...