16.11.2011, 15:27
(
Последний раз редактировалось FireCat; 11.11.2012 в 17:57.
)
Introduзгo
Olб a todos, a razгo que estou a fazer este tutorial, й porque estou farto de newbs a perguntarem-me "Como й que se faz isto", "E aquilo?"... Irrita um pouco. Um bocado de atenзгo e ler este tutorial, iram conseguir chegar lб!
Includes
Necessario
Os includes necessarios, que sem eles o server nгo "funciona" sгo:Necessario
pawn Код:
#include <a_samp>
pawn Код:
#include <core>
#include <float>
#include <string>
#include <file>
#include <time>
#include <datagram>
#include <a_players>
#include <a_vehicles>
#include <a_objects>
- core: O core, simplificado, tem as funзхes basicas do C. Por exemplo o random.
- float: O float, tem as funзхes do float. Por exemlo, tem lб as funзхes do floatround. Tudo relacionado com float.
- string: O string, tem lб as funзхes todas que percisamos para string. Por exemplo o strcat, tudo relacionado com strings
- file: O file, sem ele nгo poderiamos escrever numa file, nem poderiamos eliminala, tudo relacionado com files.
- time: O time, й o que tem o tickcount, tudo relacionado com o tempo.
- datagram: Isto tem a ver com o "relacionamento" com os players e com o server. O que envia e o que recebe em "pacotes" de informaзгo.
- a_players: Tem tudo a ver com quando quiseremos setar/getar qualquer coisa de um player.
- a_vehicles: Tudo relacionado com vehiculos.
- a_objects: Tudo relacionado com os objects. Por exemplo, para criar um objecto.
Processador de comandos
Ok, agora umas boas includes para o desempenho do teu servidor.Por exemplo jб vi muitos de voces a usar strcmp + strtok para fazer retrieve de parametros.
Isso й... Digamos: PЙSSIMO
Porque, estamos em 2011 (quase 2012) e isso usava-se em 2006.
Porque ele tem que selecionar os params de comando, com outra funзгo. E com muitos comandos e muitos jogadores, isso й muito mau.
Aconselhovos a usar o ZCMD.
Download: [INC] zcmd 0.3.1 | Fast & Simple Command Processor (updated 30/10/2009)
E carreguar no "Download".
Para criar um comando (nгo podemos usar strcmp, por isso apaguem do vosso script) й de 2 maneiras:
Fazendo da maneira moderna:
pawn Код:
COMMAND:Comando(playerid,params[])
{
return 1;
}
pawn Код:
cmd(Comando,playerid,params[])
{
return 1;
}
Chama-se SCMD.
Download: SCMD 4.0
Escrevendo em arquivos
Agora vamos falar de "Como escrever em ficheiros".Muitos de voces ainda usam o escritor de ini's chamado "dini".
Isso й muito mau, porque nгo estб nada bem criado, foi em 2006. Quando foi uma boa coisa, escrever em files, simplificado. Nгo й baseado em cache (<-link), й escrito logo que usem "dini_write...", isso cria muito lag.
Uma das includes que vos aconcelho a usarem й o SII, porque й baseado em cache, nunca tive problemas de uso (experiencia propria) e acho muito facil de usar.
Download: [INC] SII 2.0.6 - Fast cache based INI Reader/Writer
Para abrirem um file, basta fazerem (exemplo
pawn Код:
INI_Open("Hello.ini");
pawn Код:
COMMAND: hello(playerid,params[])
{
new var;
INI_Open("Hello.ini");
var = INI_ReadInt("Numero1");
INI_Close();
return 1;
}
Se o ficheiro nгo estiver criado, basta sу usar INI_Open, que ele verifica se o ficheiro estб criado, se nгo estiver
O SII irб criar o ficheiro sozinho.
Agora se quiseremos escrever, temos que fazer "save" porque senao podera criar problemas no futuro.
Exemplo:
pawn Код:
COMMAND: hello(playerid,params[])
{
new var;
var = 5;
INI_Open("Hello.ini");
INI_WriteInt("Numero1",var);
INI_Save();
INI_Close();
return 1;
}
Diferenзa entre #define e new
Quando queremos que o nosso .amx do nosso script seja baixo, e que demore menos tempo a fazer compila, Й sempre melhor usarmos #defines, ou chamados macros.
TUTORIAL: PAWN Pre-Processor
Um exemplo do BlueX:
Quote:
Nome: Calculadora Virtual
Descriзгo: Funзгo que faz 4 tipos de contas (Divisгo, Multiplicaзгo, Soma, Subtraзгo) Como usar: Quando vocк quizer fazer um calculo basta colocar, "Soma(n1,n2)", ou seja, n1 й o numero 1 e o n2 й o numero 2, vejamos um exemplo. pawn Код:
pawn Код:
|
Eu fiz replie com isto:
pawn Код:
#define soma((%0),(%1)) (%0)+(%1)
#define divisao((%0),(%1)) (%0)/(%1)
#define subtracao((%0),(%1)) (%0)-(%1)
#define multiplicacao((%0),(%1)) (%0)*(%1)
Mas agora se fizermos grandes codigos, e que faзam return de qualquer coisa, й sempre melhor usar stocks/publics.
TUTORIAL DE 2D ARRAYS: Usando 2D arrays
Final
Se tiverem mais ideas/duvidas que queiram que eu explique, digam!Irei fazer update deste topico quando tiver mais ideias, porque de momento nгo sei o que explicar mais.