Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Criando funções

Nesse breve tutorial vou tentar explicar da forma mais simples possível como criar funções, principalmente para pessoas que entraram recentemente no universo de Lua.

Como fazer funções?

Quando você cria um script para otserver, uma action por exemplo,geralmente se inicia com uma function onUse(...).

Quando se faz isso, você está simplesmente criando uma função em Lua, que será executada pelo software em C++ que roda o servidor, assim executando o script.

Na declaração de uma função, usamos a seguinte sintaxe:


function nomeDaFunção()

corpoDaFunção

end

Ou a seguinte:

nomeDaFunção = function()

corpoDaFunção

end

Em nomeDaFunção, você definirá um nome para ser usado, no corpo da função você colocará tudo que quiser que ela execute, lembrando que para ela retornar alguma coisa terá que ser usado o comando return. Parâmetros São como variáveis,que ao ser executada a função é atribuido um valor e eles, exemplo:

function somar(p1,p2)

  return p1+p2

end

Ele irá retornar a soma dos dois parâmetros aos quais será atribuído um valor quando é executada a função, exemplo:

somar(1,2)

Nesse exemplo, será atribuído o valor 1 e 2 a p1 e p2, respectivamente, se não declararmos esses argumentos ao executar a função, p1 e p2 se tornarão nulos. Vamos voltar ao exemplo da function onUse(cid,item,topos,item2,frompos).Se quando ela é executada pelo servidor, por exemplo, sejam dados os seguintes valores:

onUse(10,{itemid = 1,actionid = 0,uid = 0},{x,y,z},{itemid = 2,actionid = 0,uid = 0},{x,y,z})

Nesse exemplo, os valores cid,item,topos,item2,frompos valerão 10,{itemid = 1,actionid = 0,uid = 0},{x,y,z},{itemid = 2,actionid = 0,uid = 0},{x,y,z}. Outro exemplo, você quer fazer uma função que consiga o nome do player, você fará assim:

function getName(cid)

  return getPlayerName(cid)

end

Creditos :

Dean

Contato;

6yonKDJ.png god.marinii

TaxNfhb.png

Link para o post
Compartilhar em outros sites

Sou novata em programação e tenho a seguinte duvida: Quando devo usar o return, oque ele retorna, pra onde/quem ele retorna, ele é obrigatorio em uma função, oque pode ser um return true e um return false ? se puder me ajudar ficarei muito grata ;D

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

Sdds old times!  :starblack: 


70a06222.gif?6e08eb47

[show Off] Vampira
Bt79gzJ.png

Link para o post
Compartilhar em outros sites

Um Return True Pro False e o seguinte

O Return True o script poderá ser retornardo

já o Return False não poderá ser retornado

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

Ainda não entendi oque ele faz quando retorna... ele retorna pra onde, e oque ele faz quando retorna ? -.-

Sdds old times!  :starblack: 


70a06222.gif?6e08eb47

[show Off] Vampira
Bt79gzJ.png

Link para o post
Compartilhar em outros sites

Sou novata em programação e tenho a seguinte duvida: Quando devo usar o return, oque ele retorna, pra onde/quem ele retorna, ele é obrigatorio em uma função, oque pode ser um return true e um return false ? se puder me ajudar ficarei muito grata ;D

O return é literalmente RETORNAR. Vamos ver uma função simples:


function mostrar_oi()

      print("oi")

end

Essa função não retorna nada, ela simplesmente faz imprimir na tela "oi". Agora vamos pensar no seguinte caso: Eu quero uma função que me dê o valor da soma de dois números, como ficaria?

function somar(numero1, numero2)

       return numero1 + numero2

end

Bem, essa função vai somar os dois parâmetros(numero1, numero2) e retorná-los, mas você pensa: Como assim retorná-los? Seguinte:

local ummaisdois = somar(1, 2)

print(ummaisdois)

O que aconteceria nesse caso aí seria: A função somar, iria somar o número 1 com o número 2, e guardaria o valor na variável ummaisdois.

Sobre return true e false:

Olha, o return vai retornar um valor como mostrado anteriormente. Então se eu colocar return true ele vai retornar verdadeiro, e se eu colocar return false ele vai retornar falso. O return true nas funções "callback" do Open Tibia, como na function onSay(cid, words, param) serve "para indicar se ocorreu tudo bem na execução da função". Se eu coloco um return true em uma function onSay, quando o personagem falar as palavras configuradas no talkaction.xml, o servidor vai executar o script, mas não vai fazer o player "falar". Quando você coloca um return false ele executa o script, só que o player "fala" as words que estavam no talkaction.xml.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Link para o post
Compartilhar em outros sites

O return é literalmente RETORNAR. Vamos ver uma função simples:


function mostrar_oi()

print("oi")

end

Essa função não retorna nada, ela simplesmente faz imprimir na tela "oi". Agora vamos pensar no seguinte caso: Eu quero uma função que me dê o valor da soma de dois números, como ficaria?

function somar(numero1, numero2)

return numero1 + numero2

end

Bem, essa função vai somar os dois parâmetros(numero1, numero2) e retorná-los, mas você pensa: Como assim retorná-los? Seguinte:

local ummaisdois = somar(1, 2)

print(ummaisdois)

O que aconteceria nesse caso aí seria: A função somar, iria somar o número 1 com o número 2, e guardaria o valor na variável ummaisdois.

Sobre return true e false:

Olha, o return vai retornar um valor como mostrado anteriormente. Então se eu colocar return true ele vai retornar verdadeiro, e se eu colocar return false ele vai retornar falso. O return true nas funções "callback" do Open Tibia, como na function onSay(cid, words, param) serve "para indicar se ocorreu tudo bem na execução da função". Se eu coloco um return true em uma function onSay, quando o personagem falar as palavras configuradas no talkaction.xml, o servidor vai executar o script, mas não vai fazer o player "falar". Quando você coloca um return false ele executa o script, só que o player "fala" as words que estavam no talkaction.xml.

Muito Obrigada Max você salvou minha vida! Agora entendo perfeitamente o return :wow:

Sdds old times!  :starblack: 


70a06222.gif?6e08eb47

[show Off] Vampira
Bt79gzJ.png

Link para o post
Compartilhar em outros sites
  • 4 weeks later...

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