FR

Tutorial Talkactions

Por frerety, 27 de dez. de 2006 em Tutoriais de Scripting

script
otserv
5.0 (1)
33
10.6k
freretyF
27 de dezembro de 2006 às 19:16

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!

Editado Janeiro 12 por frerety

soulblasterS
27 de dezembro de 2006 às 19:24

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:

Editado Dezembro 27 por soulblaster

freretyF
27 de dezembro de 2006 às 19:28

HiHo!

 

@soulblaster

3º exemplo adicionado ^^

vlw pla sugestão =)

 

FlW

CyA!

Editado Dezembro 27 por frerety

colexC
27 de dezembro de 2006 às 19:38

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

Editado Dezembro 27 por colex

tibiaa4eT
27 de dezembro de 2006 às 20:18

mto bom

mto bom msm

Dai só num sabia o 3º exemplo

apesar q eu nunca ter feito isso

 

flws :hi:

ChakauC
28 de dezembro de 2006 às 01:24

Simplesmente magnifico

vlws bro

buster287B
28 de dezembro de 2006 às 14:09

Seus tutoriais são muito cara!

 

Esse fico muito bom e útil.

 

vlw! :hi:

3 meses depois...
LoscarL
24 de março de 2007 às 12:43

o.O num entendi muita coisa.. mas deu pra aprend algo heheeh.. vlw.

3 meses depois...
hopugopH
03 de junho de 2007 às 20:42

Simplesmente PERFEITA!! Genial!

 

Será que é possível fazer um 'The Oracle' de Rook sem usar NPCs?

 

Que ótimo!!

1 mês depois...
ExordiumE
09 de julho de 2007 às 11:21

Não entendo muita coisa, mas deu pra ver que ficou simples e bem explicado

valeu :D

 

flw.

2 semanas depois...
GM MatthorG
19 de julho de 2007 às 11:53

Cara ótimo tutorial, me ajudo muito!!!

Eu nem tinha ideia do q era issu....xD

Vlw Veiu

[]s

 

//GM Matthor

GOD ZéG
19 de julho de 2007 às 12:26

Muito util muito bem explicado merecedor de fixo otimo tutorial parabéns

~*~Cya~*~

5 meses depois...
masstermixM
30 de dezembro de 2007 às 01:34

aeee, bem explicadinhu

 

 

bem util tambem

 

 

parabens..

1 mês depois...
KimeraDelfK
08 de janeiro de 2008 às 19:40

Ow cara tava querendo fazer uma talkaction q compre bless...faz um tuto ai plz...q nem !buyhouse so q !buybless

1 mês depois...
pedr0P
15 de fevereiro de 2008 às 18:50

otemo