Obrigado, Convidado!
Bem-vindo ao FMGARCIA - SAMP!
HuemersonFMG | ||||
CleidiSilva21 | ||||
barbfix | ||||
Tranks_NorT | ||||
RenatoFMG | ||||
William | ||||
Vinícius_ Kawasaki | ||||
scorpio | ||||
alfredw10 |
PAWN linguagem de programação - PAWNO
PAWN linguagem de programação - PAWNO
>>Pawn
PAWN é uma linguagem de programação não-oficial, criada em 1998 pela ITB CompuPhase, pawn é derivado da linguagem de programação chamada Small-C e que tem uma sintaxe parecida a C. Trata-se de uma linguagem muito simples de programar, após você aprender pawn, torna-se simples aprender as outras linguagens de programação. Ele é usado em jogos, como o SA-MP, Counter-Strike 1.6 AmxMod, Half-Life mod. Para quem não conhece o Pawn, poderá utilizar de GMs prontas encontradas na internet para estudar seus códigos e aprender, mas muitos desses gamemodes vem bugados, mal feitos, sem optimização, não utilizam coisas corretas, etc... porém vale a pena criar o seu gamemode do inicio, você conta com muitas coisas como optimização, sem bugs, estruturado, coisas exclusivas, entre outros. Quando editamos GMs ou FS de terceiros, convém deixar os devidos créditos do autor.
Pawn não é um quebra cabeças, muito pelo contrario, no inicio pode ser complicado, mas se nos dedicarmos ele torna-se fácil. se você quer mesmo programar pawn basta ter dedicação e com o tempo você aprende.
Sumário
>>Pawno: é o IDE(Integrated development environment) oficial da linguagem de programação pawn, ou seja, pawno é o editor da linguagem de programação.
>>Ppawncc: é o compilador, ele serve para compilar os nossos códigos, após serem compilados será criado um arquivo .amx .
>>GF: vem do prefixo GodFather, o GF foi um Gamemode muito famoso, é atualmente utilizado pela maioria dos servidores de RPG no Brasil e em Portugal.
Base de uma GM:
- Código:
#include <a_samp>
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
Termos do Pawn:
>>Variaveis
As variáveis são coisas muito importantes no nosso script, pois alem de serem dinâmicas, elas guardam dados temporários, ou seja, enquanto tivermos o servidor ligado e as variáveis não modificadas, sem valores alterados, os dados vão ser iguais.
Variáveis nada mais são doque "midia de armazenamento" ou seja, elas podem armazenar qualquer valor, des-de que os valores sejam maiores ou menores que 0, ao cria-las elas terão o valor 0 automaticamente. Uma variável só pode armazenar um valor, e também armazenar um id
>>Constantes
Constantes são valores fixos, ou seja ficam constantemente no mesmo valor, como se fosse uma definição. Constantes só podem armazenar valores inteiros, não podendo
Armazenar números flutuantes (floats).
>>Enumeradores
Enumeradores são um tipo de organização em array, nela são armazenados valores que podem ser chamados a qualquer instante. Ao usar uma tag inexistente no enumerador o PAWNO resultará a erro, então aconselho botar nome de tags fáceis de lembrar para não se esquecer rapidamente.
>>Enumeradores
As arrays são multi variáveis, com ela podem ser armazenados vários valores diferentes, similar a uma variável normal que só pode armazenar um valor simultaniamente. Sempre deverá contar células precisamente ou criar uma Variável Gobal, com uma pré-definição de string, normalemnte usando 128, pois este é o máximo de texto. Cada valor pode ser armazenado em uma célula, só lembrando que célula é oque está entre colchetes "[" & " ]". As arrays só são no máximo tridimensionais, ou seja 3 dimensões em uma array só.
Cuidado ao acessar uma dimensão que não existe, pois dará erro ou possíveis crashs.
- Exemplo de uma array normal(uma dimensão): new MinhaArray[100];
- Array Bidimencional: new MinhaArray[20][15];
- Array tridimencional: new MinhaArray[1][20][40];
>>Funções
As funções nativas são as que vem juntamente com a packpage do SA-MP,
nelas você pode encontrar funções que podem manipular o servidor totalmente,
sendo a maioria com parâmetros.
- Kick(playerid); // Expulsa o player do servidor
As funções não-nativas são as que não vem com a packpage do sa-mp,
então você tem que cria-las, pois elas são funções próprias, cálculos,
etc. Então as funções que não existem na biblioteca do sa-mp são denomiadas
de não-nativas, mas lembrando que se já existir uma função criada com
mesmo nome da outra com certeza resultara em erro.
- stock MinhaFuncao(numero, texto[], Float:NumerosFlutuantes)
{
printf("[%d]%s ele é %.1f", numero, texto, Float:NumerosFlutuantes);
}
>>Tabela de tags mais utilizadas para criar funções:
Float[/d] stock MinhaFuncao(Float: vida) Serve para números flutuantes
Text[/d] stock MinhaFuncao(Float: Text) Serve para manipular textdraws
Menu[/d] stock MinhaFuncao(Float: Menu) Serve para manipular menus
Text3D[/d] stock MinhaFuncao(Float: Text3D) Serve para manipular textos 3d
>>Callbacks:
Essa é a parte que meche na estrutura do script, ela é responsável por
manipular uma grande do servidor, são nelas que são chamados todos os eventos do servidor. As callbacks são chamadas quando ocorre algum evento no servidor, carregando as informações necessárias para o carregamento de uma determinada situação. Sua criação exige que seja declarada. É muito parecida com uma função com a diferença que não retorna strings.
- Código:
forward nome_callback(parametros);
public nome_callback(parametros)
{
return true;
}
Strings
Uma string, é uma Array1D, que permite armazenar caracteres, para quem não sabe, array's1D são aquelas arrays que contem apenas um [], ou seja, new arr[20]; , isto é uma array 1D, pelo que eu sei, o máximo que existe é ate 4D's, ou seja, new arr[20][20][20][20]; , então, digamos que a string é uma array 1D, lembrando que tambem é possivel criar uma string com apenas um caracter, cell, ou seja, new arr = '1'; , mas para ser considerada uma string é necessário ser no mínimo 1D, menos que isso, será considerada uma cell, ou seja, célula e lembrando que as cells só permitem apenas 1 carácter.
Looping
O Looping é uma repetição com condições diferentes (as vezes) mas na grande maioria ele serve para fazer repetições das quais não precisamos ficar chamando a mesma função várias vezes.
- Código:
for(new i; i != 10; ++i){
printf("HuemersonFMG");
}
caso for diferente de 10 ele vai adicionando +1( usando incrementação ++), e se a variável i chegar ao valor 10 o loop para automaticamente.
- Código:
new i; // criamos a variável i
while(i != 10){ // verificamos se i é diferente de 10
printf("HuemersonFMG");
i ++; // incremente a variável i + 1.
}
- Código:
new i; // criando a variável i.
do{
printf("HuemersonFMG");
i ++;
};
while(i != 10);
Floats
Uma float, é uma variavel decimal, ela contem um ponto (.) entre os dois numeros, para declararmos uma float, necessitamos de fazer, new Float:tempposx; , penso que o tamanho máximo da Float é entre 6000 e -6000, isto é o tamanho do mapa do [Somente moderadores podem ver esta link].
Ints
Uma int, é uma variavel base, os dados que armazenamos na int pode ser números, ou Hexadecimal, para criarmos uma int, basta escrever new arr = 1;
>>Funções
As funções podem ser funções nativas, como SendClientMessage , ou podem ser funções criadas por nós, as funções podem ser criadas de 5 formas, forward & public, stock, define, native ou digitando apenas o nome da função.
Chamando
Para chamarmos uma função podemos usar 3 formas, via timer, via Remote/Local Function ou via normal, para chamarmos via timer, usamos o SetTimer ou SetTimerEx.
Definindo
Como foi dito, existem 5 formas para definir uma função, então vamos rever.
public & forward Criarmos uma função com public & forward é mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), também é rápida.
stock Criarmos uma função com stock, são funções simples, como dar dinheiro do jogador e nível ao mesmo tempo, entre outras, veja um exemplo stock HelloWorld();
define Podemos criar uma pequena função com o define, porém na minha opinião e pelo que me disseram, usar define não vale muito a pena, porque o define ao ser executado ele vai ser criado varias vezes tornando o tamanho do amx maior.
native Isto é muito curiso, porque quando se cria uma include, podemos colocar /* native HelloWorld(); */ e ele vai mostrar a função na lista lateral direita, onde tem todas as includes, mas a native é usada para plugins, digamos que ela faz a conexão entre o script e o plugin.
Parâmetros
Os parâmetros de uma função são variáveis que nos permitem transferir dados, ou seja, em vez de usarmos variáveis globais, podemos usar variaveis locais e transferir os dados para essa mesma função.
Exemplos de funções
SayHello
Função criada a partir de stock e o seu objetivo é mandar uma mensagem personalizada para o servidor.
PawnLogin
Função criada sem stock, permito-nos avisar todos os jogadores quando algum jogador novo entra.
PawnPaycheck
Esta função é criada com public & forward, a função dela é dar dinheiro aos jogadores online.
Tipos de script
Existem muitos tipos de script, desde um código útil ate um gamemode, então vejamos quais são os tipos de script.
Código Útil Um código util, é um script muito pequeno, ele pode ser apenas uma função.
FilterScript Um filterscript, pelo nome diz, filtro de script, é um script pequeno, que contem algumas funções e sistemas.
GameMode Um GameMode, pelo nome diz modo de jogo, é um script grande, existem vários tipos de GameModes, desde RP,RPG,DM,TDM,DRIFT,STUNT entre outros.
Include Uma include é um script externo, ou seja, ele é um ficheiro gravado em .inc, assim facilita ao programador usar suas funções, para usar uma include basta colocar no seu script [Somente moderadores podem ver esta link] <nomedoficheiro>
Plugin Um plugin também é um script externo, mas ele usa a linguagem de programação C++, ou seja, com um plugin poderemos fazer coisas que no pawn não dá, por vezes devido ao seu tamanho o plugin usa uma include, como por exemplo o plugin sscanf.
Expressões matemáticas
++ Usado para incrementar que será sempre +1
-- Usado para decrementar que será sempre -1
* Usado para multiplicar
/ Usado para dividir
+= Adiciona um valor há sua variável
-= Retira um valor de sua variável
*= Multiplica um valor para sua variavel
/= Divide um valor para sua variável
>>Forma de uso:
Variavel ++; // Adiciona +1 há nossa variável;
Variavel --; // Remove -1 da nossa variável;
Variavel = (2 * 2); // Seta o valor da variavel para 4 (2*2);
Variavel = (2 / 1); // Seta o valor da variavel para 2 ( 2 / 1 = 1);
Variavel += 2 ;// Adiciona +2 em nossa variável;
Variavel -= 2; // Remove -2 de nossa variável;
Variavel *= 2; // Multiplica por 2 a nossa variável;
Variavel /= 2; // Divide por 2 a nossa variável;
Expressões de condições:
> Maior que
< Menor que
>= Maior ou igual que
<= Menor ou igual que
!= Diferente de
== Igual que
>>Forma de uso:
if(Variavel > 10)// Verifica se a Variavel é maiorque 10;
if(Variavel < 10)// Verifica se a Variavel é menor que 10;
if(Variavel >= 10)// Verifica se a Variável é maior ou igual há 10;
if(Variavel <= 10)// Verifica se a Variável é menor ou igual há 10;
if(Variável != 10)// Verifica se a Variável é diferente de 10;
if(Variável == 10)// Verifica se a variável é igual há 10.
Os operadores lógicos: || e &&
>>if(Variavel == 10 || Variavel == 20) / /Verifica se a Variavel é igual á 10 OU igual á 20
>>if(Variavel == 10 && Variavel < 20) //Verifica se a Variavel é igual há 10 e menor que 20, caso esta condição estiver verdadeira ele executa oque está abaixo.
HuemersonFMG- Fundador - ADM
- PublicaçõesPublicaçõesMembro VipMembro VipCriador de TópicosCriador de TópicosParticipação em tópicosParticipação em tópicosCriador de EventosCriador de EventosPopular no fórum - AmigosPopular no fórum - AmigosAvaliação de MSGAvaliação de MSGMelhores avaliações de AmigosMelhores avaliações de AmigosRei dos Grupos no FórumRei dos Grupos no FórumMelhor RPGRecebe este ao criar sua Ficha RPG no Perfil
- Mensagens : 506
Pontos : 26496
Reputação : 0
Data de inscrição : 11/06/2018
Idade : 51
Localização : Brasil
FMGRPG
FMG:
(200/100)
HuemersonFMG gosta desta mensagem
Qui 14 Mar 2024, 09:36 por HuemersonFMG
» Esqueceu o número do seu telefone?
Ter 05 Dez 2023, 12:51 por HuemersonFMG
» Scripts SQL - Oracle
Ter 05 Dez 2023, 11:56 por HuemersonFMG
» Dicas para Excel
Sex 27 Out 2023, 11:22 por HuemersonFMG
» Acentos e Caracteres Especiais em HTML
Sex 20 Out 2023, 13:17 por HuemersonFMG
» Dez motivos para consumir mais café...
Dom 27 Ago 2023, 05:09 por alfredw10
» Combinações de teclas do Windows
Dom 06 Ago 2023, 13:29 por HuemersonFMG
» PL/SQL - Extensão da linguagem SQL - Oracle
Qua 10 maio 2023, 10:16 por HuemersonFMG
» Node.js é uma tecnologia assíncrona
Ter 09 maio 2023, 11:21 por HuemersonFMG
» Pontos Cardeais
Seg 24 Abr 2023, 20:02 por HuemersonFMG
» 1º DE MAIO – DIA MUNDIAL DO TRABALHO
Seg 24 Abr 2023, 15:34 por HuemersonFMG
» ChatGPT - robô virtual (chatbot) que responde a perguntas variadas
Seg 20 Fev 2023, 11:23 por HuemersonFMG
» Simples Página de Login em HTML - Visual Studio Code
Seg 06 Fev 2023, 13:40 por HuemersonFMG
» HTML - Dicas interessantes
Qui 19 Jan 2023, 17:02 por HuemersonFMG
» https://phaser.io/ - para criar jogos HTML5
Ter 17 Jan 2023, 13:06 por HuemersonFMG