sexta-feira, 15 de novembro de 2013

0 O Basico do para começar um projeto!

Bom, sou Antonio Rodrigues mais conhecido como Toni Santolia..

Eu irei dar dicas básicas e ensinar a base de alguns sistemas para começar seu gamemode..

• Sinopse:
-- Dicas iniciais.
-- Enumeradores e Variáveis.
-- Macros.
-- Cálculos.
-- Loop's.
-- Comandos (ZCMD - SSCANF2).


• Dicas Iniciais:

Bom, o interessante para se montar um projeto é planejar bem oque vai ter no servidor.. Como por exemplo, sistema de registro, sistema de administrador dinâmico, sistema para defecar (vai que..) e etc..

Então o legal era fazer uma lista como esta:

De que será o servidor:
Sistemas iniciais:
Sistemas complexos:
Novidades:
Organização Administrativa:

e oque vier na sua cabeça

• Enumeradores e Variáveis:

Bom, vamos começar falando sobre as variáveis..

Variáveis como o próprio nome já diz.. São simples símbolos que são criados para receber valores variados.

Exemplo:

Temos uma questão de matemática onde X = Y + 10 logo que Y = 10.. Como fazer para imprimir esses valores?


pawn Code:
X = Y + 10 Y = 10; X = 10 + 10 X = 20
Simples.. não?

Já na linguagem pawn as variaveis são acompanhadas de uma new (função que cria a variavel) e no final recebem ponto e virgula ( ; ) que faz o compilador entender que a linha terminou ali.

Exemplo:
pawn Code:
new Toni_Gostoso;

Já para setar um valor nessa variável eu poderia ir em qualquer comando ou callback e fazer da seguinte forma:
pawn Code:
public OnPlayerConnect(playerid) {     Toni_Gostoso = 1; // Logo a variável Toni_Gostoso irá receber o valor 1.     return true; }

Ai você pergunta.. Mais iai tiu? Como faço para setar esse valor para um jogador especifico?

Para setar um valor para um jogador especifico, você antes deve saber que a cada player que entra no seu servidor recebe um ID único para em quanto ele estiver conectado. Exemplo: 3 Jogadores entram no servidor na seguinte ordem.. João_Pedro , Clebinho_PauPreto e Ze_Bruno.

No servidor a ordem de ID seria:

João_Pedro ( 0 )
Clebinho_PauPreto ( 1 )
Ze_Bruno ( 2 )

Lembrando que a contagem se inicia de 0.. Exemplo: 0 1 2 3 4 5 6 7 8 9 [ ... ]

No SA:MP existe o MAX_PLAYERS no qual pode ser usado da seguinte forma:

pawn Code:
new Toni_Gostoso[MAX_PLAYERS];

ai quando o jogador conecta-se ele irá receber no seu ID próprio o valor 1.. Para isso teria que fazer da seguinte maneira:

pawn Code:
public OnPlayerConnect(playerid) {     Toni_Gostoso[playerid] = 1;     return 1; }
playerid é a função que irá getar o ID do player para que o valor da variável fique 1 para ele..

Bom, as variáveis são classificadas da seguinte forma:

Comum - Booleana - Float - String - Estática

Variavel Comum: A Variavel comum é como a que nós vimos acima..
pawn Code:
new Toni_Gostoso[MAX_PLAYERS];
Não tem muito oque explicar..

Variável Booleana: Para entender mais sobre ela pode ler o tutorial http://forum.sa-mp.com/showthread.php?t=292185 não sou muito bom para explicar

Variavel Float: A Variavel do tipo Float é ideal para receber dados como coordenadas.. Exemplo usando GetPlayerPos:
pawn Code:
new Float:PosicaoPlayerid[3]; GetPlayerPos(playerid, PosicaoPlayerid[0], PosicaoPlayerid[1], PosicaoPlayerid[2]);

Variável String: A Variável do tipo string é ideal para armazenar qualquer tipo de texto.. Um Exemplo para formatar uma mensagem usando string, float e a função GetPlayerPos:
pawn Code:
new     Float:PosicaoPlayerid[3],     String[128]; // 128 é a quantidade de caracteres que pode ser usado no maximo na sua mensagem.. GetPlayerPos(playerid, PosicaoPlayerid[0], PosicaoPlayerid[1], PosicaoPlayerid[2]); format(string, sizeof string, "Posição atual: %f.%f.%f", PosicaoPlayerid[0], PosicaoPlayerid[1], PosicaoPlayerid[2]); SendClientMessage(playerid, 0xFFFFFF, string);

Variável Estática: Não me aprofundei no assunto.. Então se alguem quiser colocar uma explicação deixe nos comentários

As Variáveis podem ser tanto Globais como Locais:

Variáveis Locais: Uma variável local só pode ser usada em um único lugar, por exemplo:
pawn Code:
CMD:teste(playerid) {     new teste;     if(teste==1) return SendClientMessage(playerid, 0xFFFFFF00, "Está variável só pode ser usada dentro deste comando.");     return true; }

Variaveis Globais: Elas podem ser usadas em qualquer parte do gamemode.. Exemplo:
pawn Code:
// Topo do Script: new VariavelGlobal; CMD:teste(playerid) {     if(VariavelGlobal==1) return SendClientMessage(playerid, 0xFFFFFF00, "Posso usar ela nesse comando");     return true; } CMD:teste1(playerid) {     if(VariavelGlobal==2) return SendClientMessage(playerid, 0xFFFFFF00, "Posso usar ela nesse comando também.");     return true; }

Bom galera, por em quanto é isso.. Vou ter que dar uma saída e quando voltar irei concluir o tutorial pois falta muita explicação sobre variáveis fora que há muitos outros assuntos para se tratar..

Então deixe suas dicas



By tonisantolia

0 comentários: