Criando Funções
Diversão Simples
As funções mais simples são aquelas com poucos parâmetros (um parâmetro é tudo que se encontra dentro de um parênteses), e as vezes nenhuma e tem uma linguagem simples, como o nome diz. Na wiki tem um pequeno exemplo de uma função chamada quando o servidor inicia:
peão Код:- Código:
main ( )
{
return MinhaFunção ( ) ;
}
MinhaFunção ( )
{
print ( "Olá Mundo!" ) ;
retornar 1 ;
}
Nesse pequeno exemplo, está mostrando uma função hiper simples, que retorna 1 e mostra uma mensagem no console. Uma função pode estar no meio, no fim, ou no início de um GM/FS e pode ser chamada em qualquer lugar dele, não necessariamente DEPOIS de declarar a função. No exemplo, uma função não possui parâmetros, porque ela não precisa de informações adicionais para funcionar.
Declarando funções
Como eu disse, uma função pode ser declarada e usada em qualquer de um Gm/Fs, desde que ela não seja declarada dentro de chaves "{ }". Para declarar uma função, basta procurar o espaço que quiser fora de chaves e escrever o nome dela. Depois disse, abra as chaves normalmente e use sua imaginação.
peão Код:Declarando funções
Como eu disse, uma função pode ser declarada e usada em qualquer de um Gm/Fs, desde que ela não seja declarada dentro de chaves "{ }". Para declarar uma função, basta procurar o espaço que quiser fora de chaves e escrever o nome dela. Depois disse, abra as chaves normalmente e use sua imaginação.
- Código:
Função ( playerid ) //Esses parenteses são necessários, mesmo sem nenhum parâmetro
{ //Abre Chave
if ( vip [ playerid ] == 1 )
return 1 ; //retorna 1 caso ele for vip
} //Fecha Chave
Quando se fala em uma função ou stock, NÓ INTERESSA O NOME DO PARAMETRO, e sim o tipo. player Colocarid ou asdasd tera a mesma função, mesmo se for usado para um player. O que realmente conta é:
- Se é numérico
- Se é booleano ( bool )
- Se é Float
- Se é String.
Funções Avançadas
Se uma função simples é uma com pouco ou nenhum parâmetro e com uma linguagem mais simplificada, uma função avançada ou complexa é água com muitos parâmetros ou com uma complexibilidade maior. Por exemplo:
peão Код:- Se é numérico
- Se é booleano ( bool )
- Se é Float
- Se é String.
Funções Avançadas
Se uma função simples é uma com pouco ou nenhum parâmetro e com uma linguagem mais simplificada, uma função avançada ou complexa é água com muitos parâmetros ou com uma complexibilidade maior. Por exemplo:
- Código:
MensagemProxima ( playerid, cor, Float : distancia, texto [ ] )
{
static Float : Pos [ 3 ] ;
GetPlayerPos ( playerid, Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) ;
for ( new i; i < MAX_PLAYERS; i ++ )
if ( IsPlayerInRangeOfPoint ( i, distancia, Pos [ 0 ], Pos [ 1 ] , Pos [ 2 ] ) )
SendClientMessage ( i, cor, texto ) ;
retornar 1 ;
}
Vamos começar com os parâmetros. Como eu disse, não importa o nome do parâmetro, isso:
peão Код:- Código:
MensagemProxima ( playerid, cor, Float : distancia, texto [ ] )
É o mesmo que isso:
peão Код:MensagemProxima ( asdasd , vodka, Float : aguadecoco, colchetesXD [ ] )
Porém em uma função com parâmetros é bem mais fácil usar como nome algo relacionado, como na função Mensagem Próxima (Retirada do meu GM). O que realmente importa, é sé e do tipo bool, float, string ou numerico. Nessa função temos string, numerico e Float.
Declarando Parâmetros e seus tipos
Vamos trabalhar em cima dessa função:
peão Код:Declarando Parâmetros e seus tipos
Vamos trabalhar em cima dessa função:
- Código:
MensagemProxima ( playerid, cor, Float : distancia, texto [ ] )
{
static Float : Pos [ 3 ] ;
GetPlayerPos ( playerid, Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) ;
for ( new i; i < MAX_PLAYERS; i ++ )
if ( IsPlayerInRangeOfPoint ( i, distancia, Pos [ 0 ], Pos [ 1 ] , Pos [ 2 ] ) )
SendClientMessage ( playerid, cor, texto ) ;
retornar 1 ;
}
Como se pode ver, ela tem 4 parâmetros ( playerid, cor, Float:distancia, texto[]) sendo que playerid e cor sгo do tipo numйrico, distancia do tipo Float e texto do tipo string. Olhando apenas a declaração dela é possível identificar isso. Mas como informar que o parâmetro é de cada um desses tipos?
Nas funções, declaramos de forma idêntica a outros scripts, usando:
peão Код:Nas funções, declaramos de forma idêntica a outros scripts, usando:
- Código:
bool : TipoBoolean, Float : TipoFloat, string [ tamanho ]
Porém com uma pequena diferença nas strings , os colchetes são vazios.
Voltando para nossa função, participaram perceber o tipo de cada parâmetro que ela possui. Agora, precisamos usá-los dentro de nossa função.
peão Код:Voltando para nossa função, participaram perceber o tipo de cada parâmetro que ela possui. Agora, precisamos usá-los dentro de nossa função.
- Código:
Float estático : Pos [ 3 ] ;
GetPlayerPos ( playerid, Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) ;
for ( new i; i < MAX_PLAYERS; i ++ )
if ( IsPlayerInRangeOfPoint ( i, distancia, Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) )
SendClientMessage( i, cor, texto ) ;
retornar 1 ;
Como se pode ver, estamos usando todas as funções declaradas e ainda mais uma para no final retornar uma simples mensagem. Mas como isto funciona?
Todos os parâmetros são variáveis , ou seja, "são passados por referência", assim como GetPlayerName e etc. Quando formos usar uma função, não vamos usar esses parâmetros em si, mas sim de acordo com nossa necessidade. Essa função, por exemplo, usada como Chat Próximo, ficaria:
peão Код:Todos os parâmetros são variáveis , ou seja, "são passados por referência", assim como GetPlayerName e etc. Quando formos usar uma função, não vamos usar esses parâmetros em si, mas sim de acordo com nossa necessidade. Essa função, por exemplo, usada como Chat Próximo, ficaria:
- Código:
public OnPlayerText ( playerid, text [ ] ) //Os parâmetros de public funciona da mesma maneira
{
MensagemProxima ( playerid , GetPlayerColor ( playerid ) , 50.0 , text ) ;
retorna 0 ;
}
Como dÁ para perceber, só repetimos o playerid na função, o resto foi adaptado de acordo com nossa necessidade, usando os parâmetros declarados na pública, que funcionam de maneira semelhante nas funções.
Avaliem o tutorial e me ajudem com o que nгo ficou bom
Avaliem o tutorial e me ajudem com o que nгo ficou bom
Creditos: Juniiro3