Ir para conteúdo
Entre para seguir isso  
imported_chunin_lee

[N:Médio] NPC Jiddo's advanced NpcSyst

Recommended Posts

imported_chunin_lee    0
imported_chunin_lee

Ps.: Npc's não morrem!!</span>[/i][/b]

 

<parameters>

<parameter key="module_shop" value="1" />

<parameter key="message_greet" value="Hello |PLAYERNAME|. I sell ham, meat, carrots, apples, brown breads, brown mushrooms and eggs (everything for 8 gold coins)!" />

<parameter key="shop_buyable" value="brown bread,2691,8;ham,2671,8;carrot,2684,8;meat,2666,8;apple,2674,8;brown mushroom,2789,8;egg,2695,8" />

</parameters>

 

Vamos entender:

 

<parameter key="module_shop" value="1" /> ==>> Todo NPC deve conter isso!!

<parameter key="message_greet" value="Hello |PLAYERNAME|. I sell ham, meat, carrots, apples, brown breads, brown mushrooms and eggs (everything for 8 gold coins)!" /> ==>> Essa é a mensagem quando o player diz "hi"!!.

<parameter key="shop_buyable" value="brown bread,2691,8;ham,2671,8;carrot,2684,8;meat,2666,8;apple,2674,8;brown mushroom,2789,8;egg,2695,8" />

 

Vou lhes dar um exemplo: brown bread,2691,8;

 

Esse "brown bread" é o que o player irá falar para recebr o item que o ID seja: 2691!! E aquele "8" é a quantidade. Os items seram sempre separados por um ";"[PONTO VÍRGULA]!!

 

Como esse NPC é totalmente configurado por seu arquivo .xml só acresentaremos isso em seu script:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

-- OTServ event handling functions start
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
-- OTServ event handling functions end

npcHandler:addModule(FocusModule:new())

 

Bom irei mostrar outro NPC desse system:

 

Irei mostrar um de barco pois possui uma grande diferença!!

 

O arquivo .xml dele é assim:

 

<npc name="Nimral" script="data/npc/scripts/boat_mystic.lua" autowalk="25" floorchange="0" access="5" level="1" maglevel="1">
    <health now="150" max="150"/>
    <look type="129" head="114" body="119" legs="114" feet="114" corpse="2212"/>
    <parameters>
        
    </parameters>
</npc>

 

Vocês irão ver que as falas desse NPC são configuradas no script:

 

 local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)



-- OTServ event handling functions start
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
-- OTServ event handling functions end


-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions!
local travelNode = keywordHandler:addKeyword({'enigma city'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you wish to travel to Enigma City for 50 gold coins?'})
[u]    travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 0, cost = 50, destination = {x=942, y=978, z=6} })
    travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'Too expensive, eh?'})[/u]

keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'Enigma City\' for just a small fee.'})

Makes sure the npc reacts when you say hi, bye etc.
npcHandler:addModule(FocusModule:new())

 

Tudo o que estava DESTA COR são funções básicas desse NPC!!

 

Vamos olhar isso:

 

local travelNode = keywordHandler:addKeyword({'enigma city'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you wish to travel to Enigma City for 50 gold coins?'})

 

Onde está de Negrito são as mensagens que o NPC irá captar para dizer o que está em Itálico. Bem irei explicar:

 

O que esta em Itálico diz respeito a reposta do NPC!! A resposta do que ele irá captar(ler a informação do que está em Negrito) Onde esta isso:

 

'Do you wish to travel to Enigma City for 50 gold coins?'}==>> [i]é o que le irá perguntar para o player!! Vamos para essa parte: [/i]

travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 0, cost = 50, destination = {x=942, y=978, z=6} })

travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'Too expensive, eh?'})

 

O que esta Sublinhado é se o player responder "yes" o NPC enviara o player para: x=942, y=987, z=6!! entenderam essa parte?! è uma das mais fácieis!! Olhamos isso:

 

keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'Enigma City\' for just a small fee.'})

 

Isso quer dizer que se o player perguntar "destination" o NPC dirá que ele o levará para Enigma City!!

 

Bom acabou esse tutorial feito 100%<span style="color:#2E8B57">Chunin_lee

 

Qualquer dúvida ou pergunta me mande um MP!!!

Compartilhar este post


Link para o post
ElfKiller    36
ElfKiller

Tutorial bem organizado, bem explicado, muito bom.

 

//Aprovado

Compartilhar este post


Link para o post
imported_chunin_lee    0
imported_chunin_lee

Pô galera!!! Comentem!!

Compartilhar este post


Link para o post
Ana Lúcia    0
Ana Lúcia

Parabéns pelo Tuto !!!!

Isso irá ajudqar muita gente, inclusive eu !!! (Hehehehe)

Vou testar, depois posto para dizer se funcionou !!!

Vlw mesmo !!!!

Abraços

Ana

Compartilhar este post


Link para o post
123321123321    0
123321123321

É...

muito bom tutorial..

quando eu baixei o OTServ com esse novo sistema de Npcs não entendi nada...

mas agora já ta explicado wink.gif

vlws

Compartilhar este post


Link para o post
Marcin    1
Marcin

Muito rOx, ainda mais agora que estou voltando a mexer com ots smile.gif

 

~ cya ~

Compartilhar este post


Link para o post
LMS    0
LMS

Tá até legal, mas os exemplos estão muito simples....

To tentando colocar um de premium, sabe como é ?

Compartilhar este post


Link para o post
hszinhu    0
hszinhu

nossa foi o meu caso

akeopaka

n intendia nd

agr com esse tuto

soh fica olhando..tuto..mpa...tuto..mapa e assim vai

 

vlww

Compartilhar este post


Link para o post
knightxd    0
knightxd

ou.. npcs morrem SIM!

 

eles nao morrem pq estao com acess de gm.. c vc mudar o acess de 1 npc para 0 (player acess) ele morre ¬¬ ja fiz npc traner ;P

 

abraço

 

otra coisa!!

 

as falas podem ser configuradas no script dele SIM!

 

 

basta v6 abrirem a porra do codigo oncreaturesay.. que está assim

 

function onCreatureSay(cid, type, msg)     
npcHandler:onCreatureSay(cid, type, msg) 
end

 

adicionem a função aki..

 

 

function onCreatureSay(cid, type, msg)

npcHandler:onCreatureSay(cid, type, msg)

 

if msgcontains(msg, 'job') then

selfSay('MSG..')

 

elseif msgcontains(msg, 'offer') then

selfSay('MSG')

end

end[/b]

 

virao? nao é tao dificil a configuração.. é so pensar 1 pouco!

 

-.-" e o otro dizendo q nao da...

Compartilhar este post


Link para o post
Nofox    0
Nofox

Muito bom, eu ja tive essa duvida tambem!

Valeu

Compartilhar este post


Link para o post
Horus    0
Horus

mto bom o tutorial... ajuda mta gente iniciante que precisa saber ajustar os NPCs...

isso conta comigo... hehehe

Compartilhar este post


Link para o post
God_BoladAUm    0
God_BoladAUm

ui blink.gif

 

tuto muito bom , ainda mais pra mim q nao sei mexe muito bem com npc ...

concertesa vai ajuda eu e varias pessoas d +

 

 

vlw,aprovado xD

 

 

fui...

Compartilhar este post


Link para o post
Brunou    0
Brunou
Vou lhes dar um exemplo: brown bread,2691,8;

 

Esse "brown bread" é o que o player irá falar para recebr o item que o ID seja: 2691!! E aquele "8" é a quantidade. Os items seram sempre separados por um ";"[PONTO VÍRGULA]!![/b]

 

 

E aquele "8" é a quantidade = esse 8 não é a quantidade é o preço nesse exemplo vai custa 8 gold o brown bread.

 

Sobre o tuto ta bom mais ta muito simples.

abraços

 

Compartilhar este post


Link para o post
Ted Justin    0
Ted Justin

Excelente esse tópico.

 

Nos primeiros momentos depois que comecei a mexer com esse novo sistema de NPC fiquei tontinho, mas depois de tanto mexer acabei aprendendo, agora com esse tópico vai melhora bem, vo explora mais.

 

Parabéns pela iniciativa.

 

Just

Compartilhar este post


Link para o post
eitor    0
eitor

exelente trabalho cara

parabens...

muito bem feito

Compartilhar este post


Link para o post
Loopback    0
Loopback

Boa Mnw PARABENS xD vai ajuda muitos iniciantes ^^

Compartilhar este post


Link para o post
Loopback    0
Loopback

Boa Mnw PARABENS xD vai ajuda muitos iniciantes ^^

Compartilhar este post


Link para o post
Loopback    0
Loopback

Boa Mnw PARABENS xD vai ajuda muitos iniciantes ^^

Compartilhar este post


Link para o post
[D] uFF    0
[D] uFF

isso só encina o básico mas pelo menos muitos itenderam e poderam modificar algumas coisas

Compartilhar este post


Link para o post
[D] uFF    0
[D] uFF

isso só encina o básico mas pelo menos muitos itenderam e poderam modificar algumas coisas

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×