SA-MP Forums Archive
[Tutorial] Comeзando (Iniciante) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Comeзando (Iniciante) (/showthread.php?tid=297546)



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:
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?
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.


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.