Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Como funcionam os Scripts?

Você já deve ter se perguntado como os scripts funcionam ou não. Por exemplo: Como o servidor sabe que quando eu apertar com o botão direito em um Health Potion ele terá que healar o player alvo?

Em primeiro lugar devemos entender o que são callbacks. Do modo mais simples callback é algo que acontece devido a uma reação, é como a Terceira Lei de Newton que diz que toda ação gera uma reação, esse callback é a nossa reção, é uma função que vai ser executada assim que algo acontecer, no caso do Health Potion assim que ele for usado.

Quando um item é usado ele provoca a chamada de um callback dessa função:

function onUse(cid, item, fromPosition, itemEx, toPosition)

end

Max, que parâmetros são esses? :hum:– É simples.
  Citar
cid - É o CreatureID de quem usou o item. item - É uma tabela contendo as informações do item que foi usado, em servidores 8.60 essa tabela tem a seguinte estrutura(provavelmente em versões superiores a estrutura é a mesma):
700zUt.png
fromPosition - Essa é a posição que os Potions estavam quando eu usei eles. itemEx - Se o alvo for um item vai retornar uma tabela igual à item, mas com as informações do item-alvo. Se o alvo for uma criatura, o itemEx.uid, será o CreatureID do alvo. toPosition - Retorna uma tabela da posição do alvo(Do SQM que estava na mira do Crosshair).
O Script do Health Potion ficaria +/- assim:

local config = {

min_heal = 100, -- Minimo que vai healar

max_heal = 200, -- Máximo que vai healar

empty = 7636, -- Id do Potion vazio

}


function onUse(cid, item, fromPosition, itemEx, toPosition)

if isCreature(itemEx.uid) then

doCreatureSay(cid, "Aaaah...", 19)

doSendMagicEffect(toPosition, 12)

doCreatureAddHealth(itemEx.uid, math.random(config.min_heal, config.max_heal))

doTransformItem(item.uid, config.empty)

else

doPlayerSendCancel(cid, "You cannot use this object.")

end


return true

end

  Citar
Funções usadas: isCreature(uid) - Retorna um booleano, que indica se o parâmetro dado é uma criatura. doCreatureSay(uid, words, type) - Faz a criatura uid, falar as palavras que estiverem no parâmetro word, e type é o tipo da Talk. Esses são os types existentes: Types:
Mostrar conteúdo oculto
doSendMagicEffect(pos, id) - Manda um efeito de ID, id, na posição pos. Lista dos ids de efeito:
Mostrar conteúdo oculto
doCreatureAddHealth(uid, amount) - Adiciona amount de health à criatura uid. math.random(interval1, interval2) - Pega um número aleatório entre interval1 e interval2. doTransformItem(uid, newid) - Muda o id do item uid, para newid.
Bem, esse aí é o script, agora só é você salvar, colocar na sua pasta actions/scripts e pronto! – Max, se existem vários scripts na pasta actions/scripts, como meu OT sabe qual usar? – Por causa das chamadas TAGs. TAGs? – Sim, é uma linha que é colocada no .xml para dizer ao seu servido que o Callback para um item x será a função daquele script. As Tags das actions seguem esse modelo:
<action itemid = "7618" event = "script" value = "HealthPotion.lua" />

  Citar
itemid - É o id do item, que ao ser usado o callback dele vai ser o script que está em value, no caso HealthPotion.lua event - Indica o que vai acontecer quando usar o item, no caso vai ler o script. Não precisa se preocupar com isso por enquanto. value - É o nome do script que tem o callback que você quer usar no item 7618
Exercício: Crie uma Action que quando eu usar uma Warlord Sword em alguém essa pessoa diga "Aí, isso doi". Poste a TAG também! Resposta SÓ ABRA DEPOIS DE RESOLVER:

É isso aí pessoal, essa foi a primeira aula de Scriptwriting que eu escreví, espero que gostem :3

Mostrar conteúdo oculto
Tag:

  • Respostas 8
  • Visualizações 2.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Como funcionam os Scripts? Você já deve ter se perguntado como os scripts funcionam ou não. Por exemplo: Como o servidor sabe que quando eu apertar com o botão direito em um Health Potion

  • Muito boa a aula Max, meus parabéns! Tópico impecável na organização e conteúdo

  • Obrigado. Tô com vontade de fazer mais tutoriais, se alguém tiver alguma dúvida aí!

  • 1 month later...
Postado
  • Autor
  Em 27/10/2012 em 15:48, Augusto disse:

Muito boa a aula Max, meus parabéns!

Tópico impecável na organização e conteúdo :accept:

  Em 27/10/2012 em 15:54, AnneMotta disse:

perfeito max, muito bom mesmo!

Obrigado. Tô com vontade de fazer mais tutoriais, se alguém tiver alguma dúvida aí!

Postado

Opa... tenho uma dúvida...

Mas é bem especifica, na verdade é sobre o Tibiabot ng, tem algum modo de carregar os scripts todos de uma vez, ou até mesmo, juntar todos os scripts em um só arquivo???

Sei que não é o local ideal para essa pergunta, portanto, não precisa responder... quando chegar em casa vou testar alguma maneira para fazer isso...

é muito chat ochegar abrir o bot e ficar dando load/run em todos os scripts(por enquanto são 10)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo