[Tutorial] Comeзando (Iniciante)
#1

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:
pawn Код:
#include <a_samp>
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
pawn Код:
INI_Open("Hello.ini");
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.
Reply
#2

й um Bom Tutorial,Parabйns...
Reply
#3

Quote:
Originally Posted by Gustavo_Araujo
Посмотреть сообщение
й um Bom Tutorial,Parabйns...
Lol obrigado. =)
Reply
#4

Legal, ъtil para iniciantes..

#EDIT
Poderia ter explicado melhor ai
Reply
#5

Bom tutorial. Parabйns.

; )
Reply
#6

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Bom tutorial. Parabйns.

; )
Obrigado (:
Reply
#7

Muito interessante ficou bom parabens
Reply
#8

Quote:
Originally Posted by [KoS]Izaac
Посмотреть сообщение
Muito interessante ficou bom parabens
Obrigado (:
Reply
#9

Bem feito, parabйns.
Reply
#10

Bom tutorial.
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)