Ir para conteúdo

Tutorial Talkactions


frerety

Posts Recomendados

HiHo!

 

Se você não souber programar em lua ou não conhecer direito as funções do SVN(ainda conhecida por muitos como CVS) dê uma olhadinha no tutorial de actions do colex primeiro

 

PS .: Faço apenas um pedido, se você for postar esse tutorial em outro lugar me mande uma pm me contando onde plz que eu mando o tópico até com o BBC pra não precisar reformatar tudo =)

 

Pergunta ~> Tá... Vou ler um tutorial de talkactions, mais o que isso faz?!?

Resposta ~> Simples =) Quando o player falar as palavras mágicas vai acontecer alguma coisa.

 

Começaremos analizando o talkactions.xml (data/talkactions/)

Abra e vai ter alguma coisa parecida com isso:

<?xml version="1.0"?>

<talkactions>

<talkaction words="open sesame" script="example.lua" />

</talkactions>

A parte que nos interessa agora é essa destacada.

Vamos analizá-la:

<talkaction words="open sesame" script="example.lua" />

words(vermelho) .: O que o player deve falar para acontecer alguma coisa

script(verde) .: o arquivo.lua das coisas que irão acontecer qndo o player falar as palavras

 

Até aqui não temos dúvidas... vamos agora aprender a programar uma talkaction...

Abra a pasta data/talkactions/scripts e crie lá dentro um arquivo chamado base_talkactions.lua...

Cole isso:

function onSay(cid, words, param)

return 1
end

Essa é a base de toda talkaction, tudo o que você precisar fazer terá que ter isso =)

Vamos "dissecar" essa função onSay...

function onSay(cid, words, param)

cid(vermelho) .: o famoso cid das actions... é o "UID" do player que disse a palavra mágica, para você usar nas funções

words(verde) .: A palavra mágica =)

param(azul) .: é tudo o que vem depois de "...

Exemplo:

exiva "frerety

Nesse caso exiva é a words e frerety é param =) Simples assim =)

 

TalkActions, assim como actions, podem ser recarregadas (qndo vc altera actions vc não precisa resetar o server para a alteração ter efeito, apenas recarregue elas) com o comando /reload... Apenas use /reload talk e não precisaremos ficar resetando o server toda hora =)

 

Muito fácil, não? Agora só para vocês irem se acostumando, aqui vai alguns exemplos de como usar:

 

Exemplo 01 .: Criar uma palavra mágica que remova uma pedra

RemPedra.lua

function onSay(cid, words, param)

pos = { x=1000, y=1000, z=7, stackpos=1 }
pedra = getThingfromPos(pos)
doRemoveItem(pedra.uid,1)

return 1
end

talkactions.xml

<talkaction words="open" script="RemPedra.lua" />

Palavra Mágica: open

Exemplo 02 .: Criar uma palavra mágica que mostre o Ml de um player

ShowMl.lua

function onSay(cid, words, param)

player = getPlayerByName(param)

if player > 0 then
 ml = getPlayerMagLevel(player)
 doPlayerSendCancel(cid,param .. "'s ML: " .. ml)
else
 doPlayerSendCancel(cid,"Please, type a valid player name.")
end

return 1
end

talkactions.xml

<talkaction words="getml" script="ShowML.lua" />

Palavra Mágica: getml "player

Exemplo 03 .: Remover uma parede com limite de distância
RemParDis.lua

function onSay(cid, words, param)

paredepos = { x=1000, y=1000, z=7, stackpos=1 } -- pos da parede
maxdist = 3 -- qntos SQM de distância o player tem que ficar lonje da parede
playerpos = getPlayerPosition(cid)
if math.max(math.abs(playerpos.x-paredepos.x), math.abs(playerpos.y-paredepos.y)) < maxdist then
 parede = getThingfromPos(paredepos)
 doRemoveItem(parede.uid,1)
 doSendAnimatedText(playerpos, "OPEN!", 120)
 return 0
else
 doPlayerSendCancel(cid,"Fique mais perto")
end
return 1
end

talkactions.xml

<talkaction words="abrate cesamo" script="RemParDis.lua" />

Palavra Mágica: abrate cesamo

Bom, termina aqui o tutorial... Espero que vocês tenham gostado e... sejam bem vindos à nova geração de OtServers =)

 

FlW

CyA!

Link para o comentário
Compartilhar em outros sites

  • Respostas 32
  • Created
  • Última resposta

Top Posters In This Topic

Hiho"

 

BOAAA frerety ;]

voltando a ativa em? ^^

bom tutorial, gostei x]

espero que continue demonstrando seus talentos aki ;]

 

aaah, seria bom vc dar uns exemplos utilizando isso:

if math.max(math.abs(playerpos.x-23), math.abs(playerpos.y-30)) < 3 then

^^ tem que ficar perto de uma certa posiçao para se falar =]

 

ah mais uma coisa: moderadores, FIXEM esse topico, esta muito bem explicado e ajudara muitas pessoas ^^

cya... :hi:

Link para o comentário
Compartilhar em outros sites

Ficou muito bom o tutorial

voce sabe explicar bem, acho que qualquer um vai entender

 

bom trabalho Frerety

 

 

vou fixar ele, realmente ajuda muito

se algum outro membro da moderação achar que não merece avise.

 

Abraços,

Colex

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • 2 months later...
  • 1 month later...
  • 2 weeks later...
  • 5 months later...
  • 2 weeks later...
  • 1 month later...

×
×
  • Criar Novo...