Olá pessoal, hoje trago um tutorial para vocês, sobre uso e declaração de functions(funções).
Vamos lá
Sumário
[b]{
1 - Para que elas servem?[/b]
[b]2 - Tipos de declarações
3 - Explicação geral[/b]
}
1 Para que elas servem?
Functions servem para facilitar, a programação e organização do script.
2 - Tipos de declarações
Aqui estão os tipos, de declarações de funções:
Código:
public e forward
myfunc(de modo geral)
stock
3 - Explicação geral
MyFunc()
Essa é a declaração padrão de uma função, usada para declarar o início de uma função.
Parâmetros, Declaração e Exemplos:
Código:
MyFunc //Este é o nome da sua função, isso fica a seu critério. () // Aqui ficam os parênteses onde ficaram os parâmetros da sua função, se não houver nenhum deixe em branco
MyFunc(){
return 0; /*chave de retorno, o que a função irá retornar. Parametros: [
0 => false(sempre que chamada, a função retornará, falso),
1 => true(sempre que chamada, a função retornará, verdadeiro)
args(nome da variável) => variável(sempre que chamada, a função retornará, uma variável dentro da função)
]*/
// OBS: caso não insira uma chave de retorno na sua function, ela retornará true(verdadeiro)
}
main(){
MyFunc(); // chamamos a minha function, quando eu rodar o meu script
}
//Manuseando Parâmetros
//Aviso sobre os parâmetros: Existe uma explicação bem profunda sobre como utiliza-los, mas irei somente explicar o básico!
MyFunc(var1, var2, message[20]) //parâmetros criados: var1 e var2(variável 1, variável 2) {
printf(var1 + var2); //imprimimos no console a soma dos dois valores!
printf(message);
}
main(){
MyFunc(10, 20); //soma 10 mais 20, resultado: 30
}
forward
forward informa ao compilador que uma função virá mais tarde. É necessário para todas as funções públicas, mas pode ser usado em outros lugares. Seu uso é "encaminhar" seguido do nome completo e dos parâmetros da função que você deseja encaminhar, seguido por um ponto e vírgula:
Código:
forward myfunc();
public myfunc()
public
public é usado para tornar uma função visível para a Máquina Virtual, ou seja, permite que o servidor chame a função diretamente, em vez de apenas permitir que a função seja chamada de dentro do script.
(créditos: wiki-samp) Uma função public tem seu nome textual armazenado no arquivo amx, ao contrário das funções normais que têm seu endereço armazenado apenas para saltos, o que é outra desvantagem da descompilação. Isso permite que você chame a função por nome de fora do script e também permite que você chame funções por nome de dentro do script, saindo e inserindo-o novamente.
Parâmetros, Declaração e Exemplos:
Código:
forward myfunc();
public myfunc(){
return 1;
}
main(){
MyFunc();
}
// seu uso não muda da declaração geral: MyFunc().
stock
stock é usado para declarar variáveis e funções que não podem ser usadas, mas para as quais você não deseja gerar avisos não usados. Com as variáveis stock é como const no sentido de que é um modificador, não uma declaração completa.
Se a variável ou função for usada, o compilador irá incluí-la; se não for usada, irá excluí-la. Isso é diferente de usar #pragma unused <symbol>, pois isso simplesmente suprimirá (ou seja, ocultará) o aviso e incluirá as informações de qualquer maneira, o stock ignorará totalmente os dados não utilizados.
(créditos: wiki-samp)o stock é mais comumente usado para bibliotecas personalizadas. Se você escreve uma biblioteca, fornece um monte de funções para outras pessoas usarem, mas não tem ideia se elas as usarão ou não. Se o seu código dá muitos avisos para cada função que uma pessoa não usa, as pessoas reclamarão (a menos que seja propositalmente, pois eles TÊM de usar essa função (por exemplo, para inicializar variáveis). Dito isso, no entanto, partindo da experiência pessoal com o pessoal da YSI reclamará de qualquer maneira.
Parâmetros, Declaração e Exemplos:
Código:
stock MyFunc(){
return 0;
} // seu uso não muda da declaração geral: MyFunc().
main(){
MyFunc();
}
Isso é tudo pessoal
Espero ter ajudado!
Até a próxima
Qualquer sugestão será muito bem vinda
(Se estiver faltando algo informe no tópico que eu irei editar, espero não ter esquecido nada)
Pessoal, estou procurando essa função mas não encontrei, estou com receio de criar e descobri-la depois.
Alguém conhece ou sabe dessa função?
OBS: Serve para setar uma cor a caixa de um textdraw, assim como PlayerTextDrawSetString.
Galera, é possivel causar danos com alguma arma em um player que está ausente? sei que o weapon config e possivel fazer isso, porem não sei configurar ele muito bem
Nome do servidor: [BRASIL]MUNDO LOUCO @ HeavyHost.com.br IP: 149.56.41.54:7782 Slots: 500 Idioma: Português
O servidor [BRASIL] MATA MATA | MUNDO LOUCO | 2021 está de volta com muitas novidades!
O antigo dono do servidor ficou sem PC e então eu (Cesar_PT) e outros Administradores começamos a fazer um servidor quase idêntico ao original mas ainda melhor!!
**************************************************************
-> Novo sistema de corridas.
-> Novo sistema de eventos.
-> Objetos texturizados e stunts novos.
-> Diversão garantida com diversidade de comandos para usar no servidor.
-> Arenas para competir com jogadores.
-> Sistema VIP com base VIP, portões inteligentes e comandos!
-> Todos os dias com atualizações e correção de bugs.
-> Variedade de redes sociais: Facebook, Instagram, TikTok e Discord.
-> Servidor com mais de 5 anos.
O resto descubram vocês mesmo ***************************************************************
a um tempo vi uma função na wiki antiga do samp que colocava esses textos na tela (RETURN use ATM), igual os textos do gta offline. Alguem sabe que função é essa?
Queria saber como resolver esse problema, porque quando o player troca o nick ele e automaticamente banido.
if(MudarNickAceito[playerid] == 0)
Código:
if(MudarNickAceito[playerid] == 0)
{
format(string, sizeof(string), "* Voce Esta trocando seu nick por %s Cash.", ConvertCash(Valorpago));
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
ShowPlayerDialog(playerid,menuvip2, DIALOG_STYLE_INPUT, "Troca de Nick","Digite corretamente seu Nick\nATENÇÃO:\nCaso erre seu Nick não Poderá ser\nReposto!","Confirmar","Cancelar");
MudarNickAceito[playerid] = 1;
return 1;
}
MudarNickAceito[playerid] = 0;
EscolhaV[playerid] = 0;
if(!strlen(inputtext)) return SendClientMessage(playerid, -1, "ERRO: Campo Vazio.");
if(strlen(inputtext) < 5 || strlen(inputtext) > 23)return SendClientMessage(playerid, COLOR_GRAD2, "O Nick do jogador deve ter mais de 5 caracteres e ser Válido.");
new oldname[100], newname[100], velho[100], novo[100];
if(DOF2_FileExists(newname))return SendClientMessage(playerid, COLOR_GRAD2, "Este nick já existe no servidor.");
DOF2_RenameFile(oldname, newname);
TrocarBeneficios(playerid,velho,novo);
SetPlayerName(playerid, inputtext);
new str[1500];
format(str, 300,
"{FFFFFF}» {00FF08}CASH » {FFFFFF}Você comprou o item: {00FF08}Troca de Nick \n\n\
{F5DEB3}Valor do item: {00FF08}€{FFFFFF}%s\n\
{F5DEB3}Moedas Vips restante: {00FF08}€{FFFFFF}%s\n\n\
{FF6347}OBS: {BFC0C2}O item que você acaba de comprar não é reembolsável", ConvertCash(Valorpago), ConvertCash(PlayerInfo[playerid][pCasher]));
ShowPlayerDialog(playerid, 5471, DIALOG_STYLE_MSGBOX, "{FFFFFF}»{00FFFF} CASH »{FFFFFF} Compra concluída !", str, "Fechar", "");
format(string, sizeof(string), "*ATENÇÃO: %s Trocou Seu nick para %s por %d Cash.", velho,novo, Valorpago);
ABroadCast(COLOR_LIGHTRED, string, 1);
format(string, sizeof(string), "{00FF08}• (CASH) {FFFFFF}O Jogador {01DFD7}%s{FFFFFF}, Comprou uma Troca de Nick por {00FF08}€: {FFFFFF}%s {01DFD7}CASH.", PlayerName(playerid), ConvertCash(Valorpago));
SendClientMessageToAll(0x00FF08AA, string);
BPFLogs("Cash", string);
TakeCash(playerid,Valorpago);
SendClientMessage(playerid, COLOR_LIGHTRED, " Não se Esqueça de Relogar com o Novo Nick!");
TextDrawShowForPlayer(playerid, TextKick);
Kick(playerid);
EscolhaV[playerid] = 0;
}
else{
SendClientMessage(playerid, COLOR_LIGHTRED, "Você não escreveu ''CONFIRMAR'' e a compra foi cancelada !");
EscolhaV[playerid] = 0;
}
}
else{
SendClientMessage(playerid, COLOR_LIGHTRED, "Você não escreveu ''CONFIRMAR'' e a compra foi cancelada !");
EscolhaV[playerid] = 0;
}
return 1;
}
Então galera eu queria saber se é possível ou se tem, uma função, que faz o player ser desconectado automaticamente, sem dar /q ou /quit ou pelo menu do GTA.