narutoonlineproject
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[NPC] Missão!

5 participantes

Ir para baixo

[NPC] Missão! Empty [NPC] Missão!

Mensagem  Wonda Sáb Jan 16, 2010 10:40 pm

[center][b][u]
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.

Vamos fazer!!
npc/scripts

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


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())



data/npc


<?xml version="1.0" encoding="UTF-8"?>
<npc name="Yunie System Quest" script="data/npc/scripts/qualquernome.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="130" head="39" body="122" legs="125" feet="57" addons="0"/>
<parameters>
<!-- Main Configs -->
<parameter key="storageid" value="26015"/> <!-- Must have -->
<parameter key="finishedMissionsMsg" value="Sorry, I have no missions to you now."/> <!-- Must have -->
<parameter key="minimumlevel" value="8" /> <!-- Not necessary -->


<!-- Begin first mission -->
<!-- First missions messages -->
<parameter key="missionMsg[1]" value="Hello, |PLAYERNAME|. Do you want a mission, ye? I have one... I need some items (100 green dragon leathers, 100 red dragon leathers). Can you help me?"/> <!-- Must have -->
<parameter key="missionThanks[1]" value="Thank you for helping..."/> <!-- Must have -->


<!-- Addon configurations for first mission -->
<parameter key="addon_looktype[1]" value="136" /> <!-- Not necessary -->
<parameter key="addon_number[1]" value="1" /> <!-- Not necessary -->

<!-- Experience you win when completing the mission -->
<parameter key="missionExperienceGain[1]" value="2000"/> <!-- Not necessary -->

<!-- Items that you obtain, completing the quest -->
<parameter key="missionItemGain[1]" value="5908,1"/> <!-- Not necessary -->

<!-- Items needed to complete the mission -->
<parameter key="missionItems[1]" value="5877,100;5948,100"/> <!-- Not necessary -->


<!-- Begin second mission -->
<!-- second missions messages -->
<parameter key="missionMsg[2]" value="Right, you already did a mission. Now I want more 30 green dragon leathers, and you will have your shaman addon full. Ok?"/> <!-- Must have -->
<parameter key="missionThanks[2]" value="Ok, thanks again."/> <!-- Must have -->


<!-- Addon configurations for second mission -->
<parameter key="addon_looktype[2]" value="136" /> <!-- Not necessary -->
<parameter key="addon_number[2]" value="2" /> <!-- Not necessary -->

<!-- Experience you win when completing the mission -->
<parameter key="missionExperienceGain[2]" value="500"/> <!-- Not necessary -->

<!-- Items that you obtain, completing the quest -->
<parameter key="missionItemGain[2]" value="2472,1"/> <!-- Not necessary -->

<!-- Items needed to complete the mission -->
<parameter key="missionItems[2]" value="5877,30"/> <!-- Not necessary -->

</parameters>
</npc>


* 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.
* finishedMissionsMsg (Obrigatório) - Mensagem que o NPC vai dizer quando não tiver mais missões.
* minimumlevel (Não obrigatório) - Level mínimo para fazer missões.
* missionMsg[mission_id] (Obrigatório) - Mensagem que o NPC diz, ao você pedir informações sobre 'mission'.
* missionThanks[missionid] (Obrigatório) - Mensagem de agradecimento do NPC, ao terminar uma missão.
* addon_looktype[missionid] (Não obrigatório) - Outfit looktype, caso você queira que o player ganhe um addon.
* addon_number[missionid] (Não obrigatório) - Addon ID, varia de 1 a 2, depende do addon que você quer.
* missionExperienceGain[missionid] (Não obrigatório) - Experiência ganha ao terminar a missão.
* missionItemGain[missionid] (Não obrigatório) - Items que ganha, ao terminar a missão (array).
* missionItems[missionid] (Não obrigatório) - Items necessários para terminar a missão (array).

Soh chegar no npc.. flar hi..mission.. e dai ele vai t dize qq tu tenke levar pra ele.. bom tu pode ganhar itens,xp,addon..
aih tudu tu pode modifica

Criando Missões xD
dando addon.. assim tudu que tu quer.. se alguem quiser usar.. avontade..

duvidas?acha que expliquei mal?criticas(somente construtivas) Poste Razz
Wonda
Wonda
Chunin
Chunin

Mensagens : 119
Ryou : 5456
Reputação : 1
Data de inscrição : 16/01/2010
Localização : Novo Hamburgo / RS

http://oicaadisa.com

Ir para o topo Ir para baixo

[NPC] Missão! Empty Ótimo script

Mensagem  Gutow Sáb Jan 16, 2010 10:44 pm

o sistema de Npcs ja foi implementado mas vlw boa memo
Gutow
Gutow
Sennin
Sennin

Mensagens : 45
Ryou : 5396
Reputação : 0
Data de inscrição : 16/01/2010

http://narutoonlineproject.webmmorpg.net

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  Avada Kedavra SOD Sáb Jan 16, 2010 10:59 pm

ROXXXX
Avada Kedavra SOD
Avada Kedavra SOD
Chunin
Chunin

Mensagens : 80
Ryou : 5414
Reputação : 1
Data de inscrição : 16/01/2010

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  mortet Sáb Jan 16, 2010 11:22 pm

lgl
mortet
mortet
Chunin
Chunin

Mensagens : 80
Ryou : 5392
Reputação : 0
Data de inscrição : 16/01/2010

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  Avada Kedavra SOD Dom Jan 17, 2010 9:37 am

Vlws PEla Contribuiçao !!!
Avada Kedavra SOD
Avada Kedavra SOD
Chunin
Chunin

Mensagens : 80
Ryou : 5414
Reputação : 1
Data de inscrição : 16/01/2010

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  mortet Dom Jan 17, 2010 12:02 pm

Vlws PEla Contribuiçao !!!!
mortet
mortet
Chunin
Chunin

Mensagens : 80
Ryou : 5392
Reputação : 0
Data de inscrição : 16/01/2010

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  Wonda Dom Jan 17, 2010 12:05 pm

PAREM DE DIZER "VLW PELA CONTRIBUIÇAO'
POR** DAO UMA NOTA MEO!!
SE TA LEGAL OU NAO!
SE VCS SOH KEREM ALMENTAR O Nº D POSTS D VCS VAO PARA OUTRO LUGAR CAC*** ¬¬
Wonda
Wonda
Chunin
Chunin

Mensagens : 119
Ryou : 5456
Reputação : 1
Data de inscrição : 16/01/2010
Localização : Novo Hamburgo / RS

http://oicaadisa.com

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  mortet Dom Jan 17, 2010 12:07 pm

blz 8 nota por eu n entender nada e ja existir npc de missão


Última edição por mortet em Seg Jan 18, 2010 8:31 pm, editado 1 vez(es)
mortet
mortet
Chunin
Chunin

Mensagens : 80
Ryou : 5392
Reputação : 0
Data de inscrição : 16/01/2010

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  jack storm Dom Jan 17, 2010 3:25 pm

Velho vcs postao coisas inuteis --' só da flooder assim que eu partiçipa da moderação do forum geral vai roda --'
jack storm
jack storm
Genin
Genin

Mensagens : 46
Ryou : 5331
Reputação : 1
Data de inscrição : 16/01/2010
Idade : 32
Localização : Paranagua

Ir para o topo Ir para baixo

[NPC] Missão! Empty Re: [NPC] Missão!

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos