[NPC] Missão!
5 participantes
Página 1 de 1
[NPC] Missão!
[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
data/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](https://2img.net/i/fa/i/smiles/icon_razz.gif)
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](https://2img.net/i/fa/i/smiles/icon_razz.gif)
Re: [NPC] Missão!
ROXXXX
Avada Kedavra SOD- Chunin
- Mensagens : 80
Ryou : 5414
Reputação : 1
Data de inscrição : 16/01/2010
mortet- Chunin
- Mensagens : 80
Ryou : 5392
Reputação : 0
Data de inscrição : 16/01/2010
Re: [NPC] Missão!
Vlws PEla Contribuiçao !!!
Avada Kedavra SOD- Chunin
- Mensagens : 80
Ryou : 5414
Reputação : 1
Data de inscrição : 16/01/2010
Re: [NPC] Missão!
Vlws PEla Contribuiçao !!!!
mortet- Chunin
- Mensagens : 80
Ryou : 5392
Reputação : 0
Data de inscrição : 16/01/2010
Re: [NPC] Missão!
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*** ¬¬
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*** ¬¬
Re: [NPC] Missão!
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- Chunin
- Mensagens : 80
Ryou : 5392
Reputação : 0
Data de inscrição : 16/01/2010
Re: [NPC] Missão!
Velho vcs postao coisas inuteis --' só da flooder assim que eu partiçipa da moderação do forum geral vai roda --'
jack storm- Genin
- Mensagens : 46
Ryou : 5331
Reputação : 1
Data de inscrição : 16/01/2010
Idade : 32
Localização : Paranagua
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|