Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bem amigos da rede globo, estou aqui para dar continuidade as aulas. E a aula de hoje é sobre Funções, suas utilizações e como criar.

O que são?

Bom, você jovem padawan já deve ter se deparado com algo assim em algum script:


function doPlayerAddAddons(cid, addon)

for i = 0, table.maxn(maleOutfits) do

  doPlayerAddOutfit(cid, maleOutfits[i], addon)

end

for i = 0, table.maxn(femaleOutfits) do

  doPlayerAddOutfit(cid, femaleOutfits[i], addon)

end

end

Peguei essa função no arquivo lib/functions.lua Isso é uma função (dãa). As funções são blocos de instruções (comandos) que o servidor lê e executa. Você tem a liberdade de criar elas na pasta lib e usar em todos os seus scripts ou apenas criar e usar em um unico script. Elas tambem podem ser criadas no próprio distro (sources) e compiladas, se tornando assim uma função própria do teu servidor.

local items = {} for i=1,10 do if isPlayer(cid) and getPlayerSlotItem(cid, i).uid ~= (nil or 0) then table.insert(items, getPlayerSlotItem(cid, i).itemid) end end
Isso retornaria os ids dos items do corpo do player. Mas agora suponhamos que você precisa usar isso umas 3x. Você teria que ficar repetindo isso pelas 3x. Então seria bem mais pratico criar um "atalho" para isso. E é ai que entra a parte das funções, tu cria uma função que irá executar esse bloco de ações toda vez que você chama-la. Exemplo:

unction getPlayerItemsOnBody(cid) local items = {} for i=1,10 do if isPlayer(cid) and getPlayerSlotItem(cid, i).uid ~= (nil or 0) then table.insert(items, getPlayerSlotItem(cid, i)) end end return items end
Agora, sempre que você precisar pegar todos os items do player, você apenas usa a função getPlayerItemsOnBody (Função criada pelo dalvorsn).
function getPlayerItemsOnBody(cid)
function
- Nessa parte, estou declarando a função (tal como declarar uma variável)
getPlayerItemsOnBody
- Aqui estou declarando o nome da função (geralmente a primeira letra da primeira palavra é minuscula e o resto das primeiras letras das outras palavras são maiúsculas, mas isso é só frescura, nada obrigatório)
(cid)
- Aqui, eu estou declarando os parâmetros para a função. No caso só vou usar a cid. Mas você pode colocar os parâmetros que for precisar.
2º Parte: Escopo.

local items = {} for i=1,10 do if isPlayer(cid) and getPlayerSlotItem(cid, i).uid ~= (nil or 0) then table.insert(items, getPlayerSlotItem(cid, i)) end end
Esse é o escopo da função, onde você cria o corpo da função. Pode botar outras funções, variáveis, tabelas e estruturas de controle/repetição.
3º Parte: Return.
return items
Nessa linha, você especifica o que você quer que a função retorne. No meu caso, eu botei para retornar a tabela items. Tu pode botar valores booleanos, variáveis, tabelas e até outras funções.
4º Parte: Fechamento.
end

Bem, logicamente é nessa parte que você especifica o fim da função.

Onde cria-las?

Bom, existem duas maneiras de criar uma função:

  • Função local.

    Criando uma função local no script, você poderá usa-la inúmeras vezes dentro do script. Porem, ela só poderá ser usada só nesse script.
  • Função global (libs).

    Criando a função dentro de um arquivo .lua dentro da pasta libs do teu server, tu criará uma função global. Elas podem ser usadas em todos os seus scripts, sem restrições.

Exercícios de fixação.

Tu deverá criar uma função que mudará a town do personagem para a town escolhida e teleportará o player para tal town.

Funções necessárias:

  • getTownTemplePosition(townId)
  • doPlayerSetTown(cid, townid)
  • doTeleportThing(cid,pos)

Funções Opcionais:

  • doSendMagicEffect(pos, type)

Resposta

function doChangePlayerTown(cid,town)

doPlayerSetTown(cid,town)

doTeleportThing(cid,getTownTemplePosition(town))

doSendMagicEffect(getTownTemplePosition(town),23)

return true

end

Creditos:

99% iuniX

1% Vittu

Quais são suas utilidades?
Vamos lá, suponhamos que você tenha que pegar todos os items do corpo de um player várias vezes. Tu teria que usar toda vez algo mais ou menos assim:
Como fazer?
Agora vamos começar criar nossas próprias funções. Vou explicar linha por linha.
1º Parte: Declaração da função, nome da função e parâmetros.
Editado por Vittu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 years 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