Comeзando (Iniciante) -
FireCat - 16.11.2011
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:
E que dentro desse estao os:
pawn Код:
#include <core>
#include <float>
#include <string>
#include <file>
#include <time>
#include <datagram>
#include <a_players>
#include <a_vehicles>
#include <a_objects>
Para que servem?
- 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;
}
Ou a maneira antiga:
pawn Код:
cmd(Comando,playerid,params[])
{
return 1;
}
Ou outro bom processador de comandos, й do nosso [S]trong.
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
Se sу lerem qualquer coisa basta sу fechalo (exemplo)
pawn Код:
COMMAND: hello(playerid,params[])
{
new var;
INI_Open("Hello.ini");
var = INI_ReadInt("Numero1");
INI_Close();
return 1;
}
Facil em?
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;
}
Й tгo facil de usar, nгo й?
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:
Originally Posted by BlueX
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 Код:
public OnFilterScriptInit() { printf("Resultado: %d",soma(1,2)); printf("Resultado: %d",divisao(1,2)); printf("Resultado: %d",subtracao(1,2)); printf("Resultado: %d",multiplicacao(1,2)); return 1; }
Codigo:
pawn Код:
stock soma(n1,n2) return n1+n2; stock divisao(n1,n2) return n1/n2; stock subtracao(n1,n2) return n1-n2; stock multiplicacao(n1,n2) return n1*n2;
|
O que ele fez, estб bem, mas demora um
pouqiiiinho mais tempo do que um macro.
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)
Й mais pratico e eficaz.
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.
Re: Comeзando (Iniciante) -
Dolby - 16.11.2011
й um Bom Tutorial,Parabйns...
Re: Comeзando (Iniciante) -
FireCat - 16.11.2011
Quote:
Originally Posted by Gustavo_Araujo
й um Bom Tutorial,Parabйns...
|
Lol obrigado. =)
Re: Comeзando (Iniciante) -
Miqueias Barros - 16.11.2011
Legal, ъtil para iniciantes..
#EDIT
Poderia ter explicado melhor ai
Re: Comeзando (Iniciante) -
ViniBorn - 16.11.2011
Bom tutorial. Parabйns.
; )
Re: Comeзando (Iniciante) -
FireCat - 16.11.2011
Quote:
Originally Posted by Viniborn
Bom tutorial. Parabйns.
; )
|
Obrigado (:
Re: Comeзando (Iniciante) -
[KoS]Izaac - 16.11.2011
Muito interessante ficou bom parabens
Re: Comeзando (Iniciante) -
FireCat - 16.11.2011
Quote:
Originally Posted by [KoS]Izaac
Muito interessante ficou bom parabens
|
Obrigado (:
Re: Comeзando (Iniciante) -
LeMoi - 16.11.2011
Bem feito, parabйns.
Re: Comeзando (Iniciante) - [S]trong - 16.11.2011
Bom tutorial.