Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Introdução (Definição a Linguagem)
- Pawn é uma linguagem de programação de código aberto e de terceira geração, criada em 1998 pela empresa CompuPhase
- Pawn é uma linguagem de programação compilável, ou seja, o seu código é transformado para linguagem de computador, que somente o intérprete da linguagem consegue entender. O intérprete da linguagem, é a máquina virtual, onde o código passa a ser chamado de AMX. AMX é interpretado como na linguagem de programação Assembly, assim, podendo ser interpretado com outras linguagens de programação de terceira geração, como por exemplo, C++.
- Fonte: Wikipédia
- Diretivas
- * [size=11pt]Includes e Defines
- O Que São Includes?
- Bom Includes São arquivo *INC no quais são colocados para ocupar menos espaço ao GM e não declarar novas variaveis.
- Como Adicionar uma Includes?
- Bom Basta ao Topo do GM Adicionar:
- pawn Code:
- #include <NOMEDAINCLUDE>
- Ex:
- pawn Code:
- #include <Dini>
- Todo GM Deve Conter a Include "a_samp" pelo fato de ser a includes padrão que contém a básicas e principais funções
- Aqui as Funções da mesma:
- Quote:
- http://stephantom2.st.funpic.de/expe..._samp-inc.html
- * Defines
- São Usadas para Definir algo a um código muito usado em cores etc..
- Exemplo:
- pawn Code:
- #define COR_GAY 0x0000CDFF
- Então Ira Definir a Cor Então ao Código Ficando:
- pawn Code:
- SendClientMessage(playerid, COR_GAY, "Este é um Exemplo de mensagem");
- * News/Arrrays
- :
- New como próprio nome já diz server para adicionar novas funções ao GM/FS exemplo:
- pawn Code:
- new string[128];
- Arrays também podem ser declaradas com grupos de dados padrão, tais como:
- pawn Code:
- new numeros[4]= ( 0,1,2,3)
- * Boleans/Boleana
- :
- O último tipo é variável "boolean". É muito simples - ou é "true", ou "falso". Tanto "1" e "0" são estruturas de dados pré-definidos.
- pawn Code:
- new bool : xyz = true / / Declara uma nova variável xyz "definido como verdadeiro
- Exemplo em um SetTimer:
- pawn Code:
- SetTimer("PUBLICADICIONAL",1000,false); //FALSE = FALSO ou Seja Não ira Repetir o SetTimer e TRUE = Verdadeiro Irá Repetir
- * CallBacks
- :
- São as Chamadas Publics Cada uma tem uma função, Tais Como
- OnPlayerCommandText -> Ao Player Digitar Comando
- OnPlayerText -> Ao Player Digitar
- Todas CallBacks Deve Seguir o Modelo:
- pawn Code:
- public OnGameModeInit
- {//DEVERÁ SER ABERTO
- //CÓDIGOS E FUNÇÕES QUE IRÁ ADICIONAR
- return 1;//RETORNA A UMA FUNÇÃO ESPECIFICA true/false/1/0
- }//SE FOI ABERTO DEVE SER FECHADO
- * Alguma Funções do a_samp
- :
- pawn Code:
- Print Escrever Texto ao Console
- printf Escrever uam string ao console (tela preta)
- SendClientMessage Envia Mensagem ao Player
- SendClientMessageToAll Envia Mensagem a Todo players Spawneados
- GameTextForAll Envia Mensagem ao centro da tela a Todos players Spawneados
- GameTextForPlayer Envia Mensagem ao centro da tela apenas a 1 player
- SetTimer Iniciar um Temporarizado que chama um public a numero de segundos...
- KillTimer Parara o Temporazidaor
- GetTickCount Retorna o número de milissegundos desde a OS foi iniciado.
- SetGameModeText Mudará o Nome de GameMode
- SetTeamCount Define o número de equipes permitido.
- AddPlayerClass Adicionara um Class ao player Onde Spawnara por padrão Incluindo armas
- AddStaticVehicle Adicionar um Veiculo estaticos Definindo as Cores
- AddStaticPickup Adicionar um Pikcup estaticos Definindo os Medelos
- ShowNameTags Define se será mostrado o nome do player encima
- ShowPlayerMarkers Definir se os jogadores marcadores (no mapa/radar) deve ser mostrado ou não.
- GameModeExit Sair do modo de jogo
- SetWorldTime Acerte o relógio do jogo a um certo tempo e congelá-lo.
- GetWeaponName Pegar Nomes
- IsPlayerAdmin Define se admin ou nao
- Kick Kickar Player
- Ban Banir player
- SetSpawnInfo
- SpawnPlayer Define alguns parâmetros spawn (incluindo a equipe, a pele, gerando posição, armas e munições)
- SetPlayerTeam Define a Equipe do Player
- GetPlayerTeam Geta/Pega a equipe do Player
- SetPlayerSkin Muda Skin do player
- SetPlayerScore Muda Scoredo player
- GetPlayerScore Geta Score do Player
- GetPlayerPos Geta Posição do Playe
- SetPlayerPos Muda Posição do Player do player
- GetPlayerHealth Geta Vida do Player
- SetPlayerHealth Muda Vida do player
- PutPlayerInVehicle Coloque Player no Veiculo
- RemovePlayerFromVehicle Remove Player do Veiculo
- IsPlayerInVehicle Determina se um jogador está em um determinado veículo.
- IsPlayerInAnyVehicle Determina se um jogador está em qualquer veículo.
- GetPlayerName Obter o nome de um jogador do seu ID e armazená-lo em nome de [].
- SetPlayerColor Muda Cor do Player
- GetPlayerColor geta cor do player
- SetPlayerCheckpoint Seta um Check Point a Player
- DisablePlayerCheckpoint Disbilita o Check Point ao player
- IsPlayerInCheckpoint Define se o player esta em um checkpoint
- SetPlayerInterior Muda Player para um interior
- SetPlayerCameraPos muda camera do player
- SetPlayerCameraLookAt muda visão da camera ao player
- TogglePlayerControllable Define se o player pode se mecher
- PlayerPlaySound Toca um som ao player
- SetPlayerWorldBounds Muda Player a um Virtual Word
- GivePlayerMoney dá dinheiro ao player
- SetPlayerFacingAngle Set o Angula da Face do player
- GetPlayerMoney getar Dinheiro do player
- ResetPlayerMoney Reseta Dinheiro do playera 0
- IsPlayerConnected Define se o player esta conectado
- GetPlayerState Geta Estado do Player
- ResetPlayerWeapons Reseta Armas do player
- GivePlayerWeapon dar arma ao player
- CreateVehicle criar um veiculo nao estatico
- GetVehiclePos geta pos do veiculo
- SetVehiclePos seta pos do veiculos
- SetVehicleZAngle seta angulo do veiculos
- SetVehicleParamsForPlayer seta parametros ao player do veiculos
- SetVehicleToRespawn respawn o veiculos
- AddVehicleComponent adiciona componentes ao veiculos
- ChangeVehicleColor mudar cor do veiculo
- ChangeVehiclePaintjob Alterar o paintjob sobre um determinado veículo.
- Forwards Declarar CallBacks (publics) Adicionais
- OnGameModeInit ao gamemode iniciar
- OnGameModeExit ao gamemode desligar
- OnFilterScriptInit ao fs iniciar
- OnPlayerConnect ao player conectar
- OnPlayerDisconnect ao player desconectar
- OnPlayerSpawn ao player spawnar
- OnPlayerDeath ao player morrer
- OnVehicleSpawn ao player spawnar
- OnPlayerText ao player digitar
- OnPlayerCommandText ao player digitar comando
- OnPlayerEnterVehicle ao player entrar no veiculo
- OnPlayerExitVehicle ao player sair do veiculo
- OnPlayerStateChange ao player mudar de estado
- OnPlayerEnterCheckpoint ao player entrar ao check point
- OnPlayerLeaveCheckpoint
- * Comparadores
- :
- Quote:
- + > Executa como Adição.
- - > Executa como Subtração.
- * -- > Executa como Multiplicação.
- / -- > Executa como Divisão.
- > -- > Executa como Maior que.
- < -- > Executa como Menor que.
- = --> Executa como Igual.
- != -- > Executa como Diferente.
- Parte 2
- Bom, qualquer um que possui um conhecimento um pouco superior, sabe que é fundamental conhecer os algorítimos da linguagem com qual trabalha para que o seu conhecimento vá além e evolua cada dia mais. Abaixo vou deichar os algorítimos que são utilizados em quase 100% das linguagens derivadas de C/C++ e que irá ajudar bastante a galerinha iniciante aí :P
- + > Executa como Adição.
- - > Executa como Subtração.
- * > Executa como Multiplicação.
- / > Executa como Divisão.
- > > Executa como Maior que.
- < > Executa como Menor que.
- = > Executa como Igual.
- != > Executa como Diferente.
- Listei aqui os principais utilizados no Pawn. Os demais existentes não são necessários, já que são para funções realmente complexas, o que praticamente não é utilizado no SAMP.
- TUTORIAL
- Como eu somo 2 valores?
- pawn Code:
- format(string, 128, "Esse jogador executou o OnPlayerDeath %d vezes.", (Kills[playerid] + Deaths[playerid]));
- SendClientMessage(playerid, 0xFFFFFFFF, string);
- Como eu subtraio 2 valores?
- pawn Code:
- format(string, 128, "Esse jogador tem uma relação de %d Kills/Deaths.", (Kills[playerid] - Deaths[playerid]));
- SendClientMessage(playerid, 0xFFFFFFFF, string);
- Como eu multiplico 2 valores?
- pawn Code:
- format(string, 128, "Esse jogador gastou $%d comprando Tickts.", (TicktsPrice * Tickts[playerid]));
- SendClientMessage(playerid, 0xFFFFFFFF, string);
- Como eu divido 2 valores?
- pawn Code:
- format(string, 128, "Com o dinheiro que tem em mãos, você pode comprar %d Tickts.", (Money[playerid] / TicktsPrice));
- SendClientMessage(playerid, 0xFFFFFFFF, string);
- Como eu verifico se um valor é maior que o outro?
- pawn Code:
- if(TicktPrice > Grana[playerid])
- {
- SendClientMessage(playerid, 0xFFFFFFFF, "Você não possui dinheiro suficiente.");
- return 1;
- }
- Como eu verifico se um valor é menor que o outro?
- pawn Code:
- if(TicktPrice < Grana[playerid])
- {
- SendClientMessage(playerid, 0xFFFFFFFF, "Você tem dinheiro para comprar e ainda sobra um trocado para um doce ^^");
- return 1;
- }
- // Entendendo:
- Quando feito a checagem TicktPrice < Grana[playerid] você está verificando se o valor do Tickt é inferior ao dinheiro atual do jogador, que em nosso caso consideramos como 1000. Então se considerarmos que o dinheiro do jogador é 1000 e o valor do Ticket é 500, no script o If terá concordância e a execução seguirá em frente. Caso contrário ele irá continuar a execução depois da chave ( } ) onde o If é finalizado.
- Agora vamos imaginar que a função está assim:
- pawn Code:
- if(TicktPrice <= Grana[playerid])
- {
- SendClientMessage(playerid, 0xFFFFFFFF, "Você tem dinheiro para comprar e ainda sobra um trocado para um doce ^^");
- return 1;
- }
- Consideramos agora que o preço do Ticket é de $1000 e o dinheiro que o jogador pussui em mãos é $999. O If será executado mas não obterá concordância, pois está sendo verificado se o preço do Ticket (1000) é menor ou igual que a quantia em dinheiro que o jogador tem. Como ele possui $999 não há sucesso na concordância. Para que haja, é necessário que o jogador tenha em mãos uma quantia equivalente a $1000 ou mais (daí vem o "menor ou igual").
- Como eu igualo duas variáveis?
- pawn Code:
- new MinhaIdade;
- MinhaIdade = SuaIdade;
- // Entendendo:
- Acabamos de criar a variável simples chamada MinhaIdade. Depois disso ela foi igualada com a outra variável simples já criada chamada SuaIdade. Sendo assim, considerando que a variável MinhaIdade tivesse valor 0 e a SuaIdade tivesse valor de 5, ambas variáveis teriam o mesmo valor depois da igualação (5).
- >> Em caso de Ifs:
- Para utilizar a igualação em um If, ou melhor, a checagem de igualação, usa-se 2 símbolos, assim:
- pawn Code:
- if(MinhaIdade == SuaIdade)
- {
- printf("Somos da mesma idade ^^");
- }
- Como verifico a diferença entre 2 valores?
- pawn Code:
- new MinhaIdade;
- if(MinhaIdade != SuaIdade)
- {
- printf("Sua idade é diferente da minha ^^");
- }
- // Entendendo:
- Acabamos de criar a variável simples chamada MinhaIdade. Depois disso verifiquemos através de um If a outra variável simples já criada chamada SuaIdade. Sendo assim, considerando que a variável MinhaIdade tivesse valor 0 e a SuaIdade tivesse valor de 5, as mesmas não teriam o mesmo valor, o If nao obteria concordância e a execução do código continuaria depois da chave ({) onde ele é finalizado.
- SESSÃO 02
- Agora vou ensinar algo um pouco mais complicado, um Loop:
- pawn Code:
- for(new Lp = 0; Lp < 100; Lp ++)
- {
- }
- Criamos aqui o nosso Loop. Na primeira parte (new Lp = 0;) definimos a nossa variável que será utilizada no Loop e setamos o seu valor para 0, para evitar futuros bugs (as variáveis por padrão quando criadas são automaticamente definidas para valor 0 (nulo), mas como eu disse: "para evitar futuros bugs" estaremos setando-a para 0 novamente).
- Na segunda parte (Lp < 100;) estamos definindo que o Loop será executado até que a variável Lp tenha valor 99, ou seja: menor que 100.
- E na terceira parte, por fim, estamos definindo que a variável Lp terá seu valor adicionado de 1 (uma) unidade de valor, cada vez que o Loop for executado (e assim ter seu valor aumentando até que chegue em 99, aonde a função "Lp < 100;" coordena).
- Agora vamos embutir esse Loop em uma função simples, que tem como objetivo verificar por intermédio de uma array (array é qualquer variável que possua 2 ou mais valores ao mesmo tempo) se a arma que um jogador tem em mãos, caso ela seja definida como "proibida" ele será Kickado:
- pawn Code:
- new ArmasProibidas[2] = {
- 36,
- 38
- };
- for(new Lp = 0; Lp < sizeof(ArmasProibidas); Lp ++)
- {
- if(GetPlayerWeapon(playerid) == ArmasProibidas[Lp])
- {
- Kick(playerid);
- }
- }
- // Entendendo:
- Utilizamos o Loop para verificar todas as armas listadas na array ArmasProibidas. Na definição onde define-se o tamanho do Loop, isto é, quantas vezes ele será executada coloquemos sizeof(ArmasProibidas) para que assim o compilador substitua isso pelo tamanho da array, neste caso, 2.
- Depois disso utilizemos a função GetPlayerWeapon para verificar se a arma que aquele jogador tinha em mãos era um das quais estavam presentes na array. Caso esse If obtenha concordância o jogador será automaticamente Kickado.
- Dúvidas e Comentários são bem vindos Tutoriais BY:ZeuS
- Assecem http://lidersamp.blogspot.com/ para aprenderem mais e terem ajuda online...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement