Ir para conteúdo

Posts Recomendados

Bom, gostaria de saber se tem como criar um npc que só fale com uma certa vocação, minha idéia seria um npc que teleportaria um knight para algum lugar, mas não teleportaria um player que não fosse knight.

Se tiver como alguem me responde e me mostra como por favor. =]

Link para o comentário
https://xtibia.com/forum/topic/110003-npc/
Compartilhar em outros sites

Bom, gostaria de saber se tem como criar um npc que só fale com uma certa vocação, minha idéia seria um npc que teleportaria um knight para algum lugar, mas não teleportaria um player que não fosse knight.

Se tiver como alguem me responde e me mostra como por favor. =]

---

Entre na pasta data/npc/scripts. Copie qualquer .lua, renomeie-o para kina_teleport (é como exemplo, coloque o nome que quiser) e substitua todo o seu conteúdo por essa zona ake:

cidade = {x=00, y=00, z=0}

knight = 4

elite_knight = 8

 

local focus = 0

local talk_start = 0

local target = 0

local following = false

local attacking = false

 

function onThingMove(creature, thing, oldpos, oldstackpos, cid, item, frompos, item2, topos)

 

end

 

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Adeus entao.')

focus = 0

talk_start = 0

end

end

 

 

function onCreatureTurn(creature)

 

end

 

 

function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

 

 

function onCreatureSay(cid, type, msg)

msg = string.lower(msg)

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 and getPlayerVocation(cid) == knight or getPlayerVocation(cid) == elite_knight then

selfSay('Ola ' .. getCreatureName(cid) .. '!')

focus = cid

talk_start = os.clock()

 

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 and getPlayerVocation(cid) == knight or getPlayerVocation(cid) == elite_knight then

selfSay('Desculpe, ' .. getCreatureName(cid) .. '! Falo com voce em um minuto.')

 

elseif focus == cid then

talk_start = os.clock()

 

if msgcontains(msg, 'teleport') then

doTeleportThing(cid,cidade)

selfSay("Tcharan!")

focus = 0

talk_start = 0

end

 

elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then

selfSay('Adeus ' .. creatureGetName(cid) .. '!')

focus = 0

talk_start = 0

 

elseif msg ~= "" then

selfSay('Eu nao entendi oO')

talk_state = 0

end

end

end

 

function onCreatureChangeOutfit(creature)

end

 

function onThink()

doNpcSetCreatureFocus(focus)

if (os.clock() - talk_start) > 30 then

if focus > 0 then

selfSay('Proximo...')

end

focus = 0

talk_start = 0

end

if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Adeus')

focus = 0

talk_start = 0

end

end

end

Explicando:

  • em cidade vc substitui, se desejar, o nome pra onde o kina vai ser teleportado;
  • em 00 vc coloca a posição X de onde o kina vai aparecer;
  • em 00 vc coloca a posição Y de onde o kina vai aparecer;
  • em 0 vc coloca a posição Z de onde o kina vai aparecer;

--

Agora copie qualquer arquivo .xml da pasta data/npc, renomeie-o para Kina, como exemplo, e substitua todo o seu conteúdo por isto aqui:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Kina" script="data/npc/scripts/kina_teleport.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="139" head="20" body="39" legs="45" feet="7" addons="0"/>

</npc>

Explicando:

  • substitua Kina pelo nome do NPC;
  • substitua kina_teleport.lua pelo nome do script que vc colocou acima;

--

Ele funciona - ou deveria funcionar - assim:

Knight say: hi

NPC say: Ola Knight!

Knight say: teleport

<agora o npc teleporta o knight>

se o Player não for knight ou elite knight ele não será teleportado e o NPC nem vai responder o hi dele!

 

Eu não testei esse NPC então não sei se funciona ._.

se tiver bug postem ae, faz tempo q não programo npc :~

Link para o comentário
https://xtibia.com/forum/topic/110003-npc/#findComment-714409
Compartilhar em outros sites

Cara no começo o o npc tava dando erro e não dava respawn, mas dai eu retirei 1 dos "end" dessa parte e ele nasceu normal =]

 

elseif msg ~= "" then

selfSay('Eu nao entendi oO')

talk_state = 0

end

end

end

 

Mas não tem como eu testar a parte do teleporte, porém parece ter dado certo, pq eu tentei usar ele com o gm e não deu porque o gm n é kina.

O motivo de n dar pra mim testar com um kina é q o ot q eu peguei n tem a pasta players, isso é normal? Pq eu mexia com ot antigamente e a pasta existia, e agora todo ot q eu pego vem sem a pasta, mas da pra logar com o gm, porém n encontro o bloco de notas do gm =S

sabe onde fica?

 

e vlw pelo npc acho q funciona sim =D

Link para o comentário
https://xtibia.com/forum/topic/110003-npc/#findComment-714712
Compartilhar em outros sites

Cara no começo o o npc tava dando erro e não dava respawn, mas dai eu retirei 1 dos "end" dessa parte e ele nasceu normal =]

 

 

 

Mas não tem como eu testar a parte do teleporte, porém parece ter dado certo, pq eu tentei usar ele com o gm e não deu porque o gm n é kina.

O motivo de n dar pra mim testar com um kina é q o ot q eu peguei n tem a pasta players, isso é normal? Pq eu mexia com ot antigamente e a pasta existia, e agora todo ot q eu pego vem sem a pasta, mas da pra logar com o gm, porém n encontro o bloco de notas do gm =S

sabe onde fica?

 

e vlw pelo npc acho q funciona sim =D

 

heaouheaaou é q antigamente os servers gerenciavam suas accounts, players, houses e etc, através de arquivos .xml, que ficavam nessas pastas ae dentro da pasta 'data' do server.

Atualmente essas pastas foram removidas e implementadas em um banco de dados(mysql), assim o server possui maior sergurança e estabilidade (não tem mais aqueles problemas de players resetarem do nada, perderem itens e talz).

clica aqui para saber mais sobre servers com banco de dados :D

e lá, vc pode gerenciar todos os seus players de uma forma beeeeeeeem mais simples, prática e segura

(:

Link para o comentário
https://xtibia.com/forum/topic/110003-npc/#findComment-714911
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...