×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Tutorial] Criando uma função.
1 / 2 › »
[Tutorial] Criando uma função.
Mescouleur
« Citoyen »
1477252380000
    • Mescouleur#0000
    • Profil
    • Derniers messages
#1
  0

function greetings()



Vamos mostrar como podemos usar as funções no código. No exemplo a seguir criei uma função chamada greetings()
greetings = saudações

Code Lua

1
2
3
4
function greetings()
print("Olá")
print("Prazer em conhecê-lo")
end

A palavra reservada function, diz que você está escrevendo uma função. Sempre que quiser escrever uma função, deve-se, primeiro, inserir function, seguida pelo nome da função. Nesse exemplo, greeting é o nome da função. Não se esqueça de adicionar os parênteses, ao terminar de escrever sua função, você deve adicionar end na última linha.
NOTA: end em português significa fim.
Uma função pode conter quantas declarações você quiser. Ela também pode incluir declarações if, loops, variáveis, condições, operadores matemáticos e assim por diante.
Você pode criar quantas funções quiser em um programa, desde que tenham nomes diferentes.

Chamando uma função:

Para usar ou chamar uma função, escrevemos o nome da função com os argumentos necessários em parênteses. Se a função não receber nenhum argumento, deve-se apenas inserir o nome dela e um par de parênteses vazios.
Para chamar a função greetings() definida anteriormente, deve-se usar o código a seguir:

Code Lua

1
greeting()

Você pode chamar a função quantas vezes quiser. Vamos chamar a função greetings() três vezes:

greeting()
greeting()
greeting()


http://img.atelier801.com/6ea4f1ee.png

Funções recebem argumentos

Em uma função, os parênteses contêm os argumentos, que são os valores usados pela função. Os valores são utilizados para variáveis específicas dentro da função quando esta é executada. Nem toda função precisa de argumentos. Por exemplo, a função greeting() não recebe argumentos.
Mas vamos supor que eu queria exibir um cumprimento a alguém usando o seu nome. Isso será escrito como uma função a fim de que eu possa reutilizar o código para cumprimentar outras pessoas:

Code Lua

1
2
3
4
5
function greeting(name)
print("Olá "..name.."")
end

greeting("Mescouleur")

Nesse exemplo, a função é chamada usando um argumento, no caso "Mescouleur". Ao executar, a saída de dados será assim:
http://img.atelier801.com/68a4f1ee.png

Dernière modification le 1481487300000
Hydroper
« Citoyen »
1477253160000
    • Hydroper#0528
    • Profil
    • Derniers messages
    • Tribu
#2
  0
Okay – e uma função também pode conter uma vararg.

(PS: nem sempre que você chama uma função precisa de parênteses em volta de um argumento contendo string ou tabela – :

a dit :
call {}; -- ou call({})
call "string" -- ou call("string")

)

Quando uma função não é declarada como expressão, ela requere um nome, e vai ser declarada no objeto/tabela global do Lua se não tiver a palavra-chave local antes de function (comentado abaixo). O nome da função não é apenas um nome, também pode ser o campo de uma tabela (não pode ser computado com '[...]', usa só o '.').

function table.property

Além disso, a última propriedade da tabela pode ser reproduzido com ':' em vez de '.', isso faz com que o primeiro parâmetro seja self:

function table:property

Chamando a propriedade de uma tabela (ou outro valor indexável) com ':' faz passar a tabela (ou outro valor indexável) como primeiro argumento da mesma função que está referida na tal propriedade:

table:property()

Agora, aqui vai um exemplo de como funcionam as varargs atuais para ver se ajuda:


local readArgs;

readArgs = function(...)
    -- ... a vararg é usada em expressões
    -- a vararg retorna os argumentos equivalentes à posição onde
    -- foi declarada nos parâmetros de sua função.
    -- os argumentos são retornados ao ar livre.

    -- usando table.pack
    -- você pode transformar o retorno em uma lista de argumentos (tabela)
    return table.pack(...);
end

print(readArgs("Hello", "etc.")[2]); -- "etc."

Dernière modification le 1480270980000
Mescouleur
« Citoyen »
1477254720000
    • Mescouleur#0000
    • Profil
    • Derniers messages
#3
  0
profiver a dit :
Okay – e uma função também pode conter uma vararg.

(PS: nem sempre que você chama uma função precisa de parênteses em volta de um argumento contendo string ou tabela – :

a dit :
call {}; -- ou call({})
call "string" -- ou call("string")

)

Quando uma função não é declarada como expressão, ela requere um nome, e vai ser declarada no objeto global do Lua. O nome da função não é apenas um nome, também pode ser o campo de uma tabela (não pode ser computado com '[...]', usa só o '.').

function table.property

Além disso, a última propriedade da tabela pode ser reproduzido com ':' em vez de '.', isso faz com que o primeiro parâmetro seja definido como 'self':

function table:property

Chamando a propriedade de uma tabela (ou outro valor indexável) com ':' faz passar a tabela (ou outro valor indexável) como primeiro argumento da mesma função que está referida na tal propriedade:

table:property()

Agora, aqui vai um exemplo de como funcionam as varargs atuais para ver se ajuda:


local readArgs;

readArgs = function(...)
    -- ... a vararg é usada em expressões
    -- a vararg retorna os argumentos equivalentes à posição onde
    -- foi declarada nos parâmetros de sua função.
    -- os argumentos são retornados ao ar livre.

    -- usando table.pack
    -- você pode transformar o retorno em uma lista de argumentos (tabela)
    return table.pack(...);
end

print(readArgs("Hello", "etc.")[2]); -- "etc."


Espero que tenha sido útil ;)

Muito útil.
Esse personagem é o Dennis? ( acho que é assim ), que saudades desse jogo mano.
Jow
« Consul »
1477260060000
    • Jow#4884
    • Profil
    • Derniers messages
#4
  0
Ótimo tópico <3
Hydroper
« Citoyen »
1478688960000
    • Hydroper#0528
    • Profil
    • Derniers messages
    • Tribu
#5
  0
mescouleur a dit :
Esse personagem é o Dennis? ( acho que é assim ), que saudades desse jogo mano.

O personagem do meu avatar de antes era o Davis...

Achei uma síntaxe especial para funções declaradas no estilo:

a dit :
function name()
end

Se você quiser que essa função seja local, é só declarar "local" na frente...

a dit :
local function name()
end

equivalente à:

a dit :
local name = function()
end;

Dernière modification le 1478689980000
Bigbryanbig
« Citoyen »
1480265040000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#6
  0
posso criar scripts aki?
Hydroper
« Citoyen »
1480269060000
    • Hydroper#0528
    • Profil
    • Derniers messages
    • Tribu
#7
  0
Bigbryanbig a dit :
posso criar scripts aki?

Trollando?
Waaalaceee
« Citoyen »
1480274160000
    • Waaalaceee#0000
    • Profil
    • Derniers messages
    • Tribu
#8
  0
otimo tpc
Bigbryanbig
« Citoyen »
1480535820000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#9
  0
eu posso dar pedidos de scripts aki como TFM.BlaBlaBla?
Bigbryanbig
« Citoyen »
1480537380000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#10
  0
function push()
tfm.exec.disableAutoShaman(true)
tfm.exec.disableAutoScore(true)
for name,player in pairs(tfm.get.room.playerList) do
tfm.exec.giveMeep(name)
end
end





Isso aki ta certo?
Sebafrancuz
« Consul »
1480604940000
    • Sebafrancuz#0000
    • Profil
    • Derniers messages
    • Tribu
#11
  0
Bigbryanbig a dit :
function push()
tfm.exec.disableAutoShaman(true)
tfm.exec.disableAutoScore(true)
for name,player in pairs(tfm.get.room.playerList) do
tfm.exec.giveMeep(name)
end
end





Isso aki ta certo?

function push()
tfm.exec.disableAutoShaman(true)
tfm.exec.disableAutoScore(true)
for name,player in pairs(tfm.get.room.playerList) do
tfm.exec.giveMeep(name)
end
end

push()
Impressorahp
« Citoyen »
1480621920000
    • Impressorahp#2775
    • Profil
    • Derniers messages
    • Tribu
#12
  0
sebafrancuz a dit :
Bigbryanbig a dit :
function push()
tfm.exec.disableAutoShaman(true)
tfm.exec.disableAutoScore(true)
for name,player in pairs(tfm.get.room.playerList) do
tfm.exec.giveMeep(name)
end
end





Isso aki ta certo?

function push()
tfm.exec.disableAutoShaman(true)
tfm.exec.disableAutoScore(true)
for name,player in pairs(tfm.get.room.playerList) do
tfm.exec.giveMeep(name)
end
end

push()

Sim, mas não é necessário o "true".
Bigbryanbig
« Citoyen »
1480628280000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#13
  0
function punch()
Print(*Soco*)
TMF.AçãoDeTiraHp.RatoMouse()
End
End




ISso ta certo? ou Errado?
Fofinhoppp
« Consul »
1480636020000
    • Fofinhoppp#0000
    • Profil
    • Derniers messages
    • Tribu
#14
  0
Bigbryanbig a dit :
function punch()
Print(*Soco*)
TMF.AçãoDeTiraHp.RatoMouse()
End
End




ISso ta certo? ou Errado?

errado,
você deve inserir um argumento para identificar o jogador, vincule a um keyboard ou outra função que desejar,

function punch(player)
print('*Soco*')
tfm.exec.killPlayer(player)
end

Note que nesse caso, o print (não use com o 'P' maiúsculo, pois dá erro) irá retornar somente para você, e não aos jogadores da sala, sugiro que use uma textArea ou uma popup
Bigbryanbig
« Citoyen »
1480711260000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#15
  0
Oque presciso aprender a mecher para criar uma loja?
Bigbryanbig
« Citoyen »
1481032740000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#16
  0
function punch()
Dano:2 a 3
Critical dano:4 a 5
print(*Soco*)
particulas que sai da cabeça do rato:particula(Id 2)
particulas que sai do *Soco* do rato:particula(Id 12)

Errado ou Certo?
Bigbryanbig
1481121480000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#17
[Modéré par Excasr, raison : Não faça triple+ posts]
Bigbryanbig
1481134860000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#18
[Modéré par Omitotowch]
Peanutbutter
« Citoyen »
1481139600000
    • Peanutbutter#7887
    • Profil
    • Derniers messages
    • Tribu
#19
  0
Bigbryanbig a dit :
Nao entendi pq fui moderado

[Moderado por Excasr, motivo: Não faça triple+ posts]
Bigbryanbig
« Citoyen »
1481139780000
    • Bigbryanbig#0000
    • Profil
    • Derniers messages
    • Tribu
#20
  0
isso significa que nao posso ver se as funções tao certas?
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Tutorial] Criando uma função.
1 / 2 › »
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27