Ir para conteúdo
  • Cadastre-se

[Resolvido] [NPC] Rescrever Script


Posts Recomendados

Olá galera do TK, estou com este script de NPC, e de viagem fica no barco, mas para viajar nele e preciso um passaporte. tenho o script aqui só que o player compra qualquer passaporte e vai para qualquer city e eu não quero assim...se alguém puder me ajudar.. queria que rescrevesse esse script da seguinte forma o passaport ja vem com o nome da cidade tipo passaporte [nome da city] e só deve viajar par city que tiver o nome no passaporte.

NPC de Viajem



local focus = 0

local talk_start = 0

local target = 0

local following = false

local attacking = false[/size][/i]

[i][size=5]function onThingMove(creature, thing, oldpos, oldstackpos)end

function onCreatureAppear(creature)end[/size][/i]

[i][size=5]function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Good bye then.', cid)

focus = 0

talk_start = 0

end

end[/size][/i]

[i][size=5]function onCreatureTurn(creature)end[/size][/i]

[i][size=5]function msgcontains(txt, str)

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

end[/size][/i]

[i][size=5]function onCreatureSay(cid, type, msg)

msg = string.lower(msg)

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

selfSay('Ola ' .. getCreatureName(cid) .. '! Qual {city} você deseja ir?', cid)

focus = cid

talk_start = os.clock()[/size][/i]

[i][size=5]elseif msgcontains(msg, 'artemisias') or msgcontains(msg, 'arte') then

selfSay('Voce deseja ir para {Artemisias}?', cid)

talk_state = 1

talk_start = os.clock()

elseif talk_state == 1 and msgcontains(msg, 'yes') then

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

selfSay('Boa Viagem aventureiro!', cid)

doTeleportThing(cid,{x=1010, y=1198, z=6})

else

selfSay('Desculpe, voce nao tem os itens necessarios!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'nissea') or msgcontains(msg, 'city 2') then

selfSay('Voce deseja ir para {Nissea}?', cid)

talk_state = 2

talk_start = os.clock()

elseif talk_state == 2 and msgcontains(msg, 'yes') then

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

selfSay('Boa Viagem aventureiro!', cid)

doTeleportThing(cid,{x=532, y=757, z=6})

else

selfSay('Desculpe, voce nao tem os itens necessarios!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'valentia') or msgcontains(msg, 'city 3') then

selfSay('Voce deseja ir para {Valentia}?', cid)

talk_state = 3

talk_start = os.clock()

elseif talk_state == 3 and msgcontains(msg, 'yes') then

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

selfSay('Boa Viagem aventureiro!', cid)

doTeleportThing(cid,{x=398, y=990, z=6})

else

selfSay('Desculpe, voce nao tem os itens necessarios!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'styge') or msgcontains(msg, 'city 4') then

selfSay('Voce deseja ir para {Styge}?', cid)

talk_state = 4

talk_start = os.clock()

elseif talk_state == 4 and msgcontains(msg, 'yes') then

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

selfSay('Boa Viagem aventureiro!', cid)

doTeleportThing(cid,{x=595, y=1620, z=6})

else

selfSay('Desculpe, voce nao tem os itens necessarios!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'horpus') or msgcontains(msg, 'city 5') then

selfSay('Voce deseja ir para {Horpus}?', cid)

talk_state = 5

talk_start = os.clock()

elseif talk_state == 5 and msgcontains(msg, 'yes') then

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

selfSay('Boa Viagem aventureiro!', cid)

doTeleportThing(cid,{x=1054, y=428, z=6})

else

selfSay('Desculpe, voce nao tem os itens necessarios!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'kypros') or msgcontains(msg, 'egeu') then

selfSay('Voce deseja ir para {Kypros}?', cid)

talk_state = 6

talk_start = os.clock()

elseif talk_state == 6 and msgcontains(msg, 'yes') then

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

selfSay('Boa Viagem aventureiro!', cid)

doTeleportThing(cid,{x=1383, y=527, z=6})

else

selfSay('Desculpe, voce nao tem os itens necessarios!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'helmet of the deep') or msgcontains(msg, 'trade') then

selfSay('Voce tem os 5000 gold coin para comprar 1 Helmet of the Deep?', cid)

talk_state = 7

talk_start = os.clock()

elseif talk_state == 7 and msgcontains(msg, 'yes') then[/size][/i]

[i][size=5]if doPlayerRemoveMoney(cid, 5000) == TRUE then

selfSay('Parabens! Voce adquiriu um item!', cid)

doPlayerAddItem(cid,5461,1)

else

selfSay('Desculpe, voce nao tem dinheiro suficiente!', cid)

end[/size][/i]

[i][size=5]elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then

selfSay('Bye ' .. getCreatureName(cid) .. ', Come back.', cid)

focus = 0

talk_start = 0

elseif msgcontains(msg, 'me xupa') then

selfSay('What?', cid)

talk_state = 0

end

end[/size][/i]

[i][size=5]function onCreatureChangeOutfit(creature)end

function onThink()

doNpcSetCreatureFocus(focus)

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

if focus > 0 then

selfSay('Next...', cid)

end

focus = 0

talk_start = 0

end[/size][/i]

[i][size=5]if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Good Bye', cid)

focus = 0

talk_start = 0

end

end

end

Editado por Rogeriok (veja o histórico de edições)

Assinatura retirada pela direção!

Link para o post
Compartilhar em outros sites

Creio que isso não seja muito dificil.

Tendo um pouco de conhecimento em script você faz.

No caso, você pega a parte em que o player fala o nome da cidade aí no Script, e logo abaixo vai ter o custo da viagem.

Como o exemplo abaixo:

if getPlayerItemCount(cid,1954) >= 1 then

doPlayerRemoveItem(cid,1954,1)

Aí basta vc mudar o "getPlayerItemCount(cid,1954)" para a ID do item que deseja que seja cobrado.

e na linha abaixo, faça o mesmo. com (doPlayerRemoveItem(cid,1954,1))

E depois muda a posição para onde o player será teletransportado.

Boa sorte.

Estou saindo agora, se não te ajudava melhor.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

não é a quantidade...e sim o passaporte... exemplo o passaporte de artemisias possui este atributos


doItemSetAttribute(item1,"text","[pbOT Air Ticket]: Passaport\nDestination: Artemisias.")

doItemSetAttribute(item1,"name","Artemisias Passaport")

queria que o npc verifica-se isso.

Se não tiver com fazer isso no script, vou criar no itens.obm do meu server outros passaportes então é umas das opções que tenho,só queria ver aki antes.

Editado por Rogeriok (veja o histórico de edições)

Assinatura retirada pela direção!

Link para o post
Compartilhar em outros sites

No caso todos os passaportes são o mesmo item com a mesma ID?

Só muda o atributos?

Porque no caso, se fosse Items diferentes, era só por a ID do item no código que citei e o 1, que seria a quantidade, conforme expliquei acima.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

sim...todos são a msm ID...se nao tiver como mudar no script....estarei adicionando no otbm msm

vlw...mano resolvido já...criei novos itens de passaporte no otbm...agr ta de boa...vlm msm por tentah me ajudar

Assinatura retirada pela direção!

Link para o post
Compartilhar em outros sites

Sem problemas.

Que bom que resolveu.

Boa sorte com seu Projeto

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Duvida sanada

movido.

Att,

Skyligh

Entrada Como Membro 14 / 08 / 2012

Entrada Como Suporte 05 / 12 / 2012

Saída Como Suporte 06 / 01 / 2013

sem_ta28.png

Contato : [email protected] / [email protected]

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo