16.08.2013, 19:50
(
Последний раз редактировалось Juniiro3; 17.08.2013 в 18:27.
Причина: Melhorando o Tutorial
)
Usando Arrays
Arrays Simples
Uma array й uma variбvel que possui "parвmetros" que ficam entre colchetes []. Й muito ъtil e fundamental em qualquer servidor, sem elas fica impossнvel organizar as variбveis para cada player, por exemplo, o dinheiro de cada um, sem arrays, й impossнvel imaginar e codar algo assim. Um exemplo de array e como ela pode ser utilizada usando apenas valores numйricos:
pawn Код:
new Array[10];
Array[0] = 106;
Array[7] = 54;

Бrvore representando as possibilidades de uma array simples com 10 cйlulas Essa бrvore aumenta conforme o nъmero de cйlulas da array. NUNCA uma Array com 10 cйlulas terб a бrvore Array[10], porque essa seria a 11Є cйlula, e nosso espaзo й apenas 10.
Arrays 2D (Duas Dimensхes)
Pode se usar palavras para facilitar o uso. Nesse exemplo abaixo, vamos usar um enum juntamente com MAX_PLAYERS, que й uma variбvel global do SAMP para definir a capacidade mбxima de um servidor. A partir dela podemos usar [playerid] nas Arrays.
pawn Код:
enum Array2
{
Dinheiro,
Nick[100], // Sim, й possнvel criar uma Array dentro de uma Array
Float:PosX,
bool:Admin
}
new Array[MAX_PLAYERS][Array2];

pawn Код:
public OnPlayerConnect(playerid)
{
if (playerid == 1) //Esse if й so para poder fazer com que as arrays tenham a mesma funcao.
{
Array[playerid][Dinheiro] = 20000;
Array[1] = 20000;
return 1;
}
}
CMD:dargrana(playerid, params[])
{
new Outro[MAX_PLAYER_NAME], Quania;
if (sscanf(params, "ud", Outro, Quantia))
return SendClientMessage(playerid, 0xFF0000FF, "Uso correto /dargrana [ID/Nick] [Quantia]");
if (!IsPlayerConnected(Outro))
return SendClientMessage(playerid, 0xFF0000FF, "ID/Nome nгo estб conectado");
Array[Outro][Dinheiro] += Quantia;
return 1;
}
pawn Код:
CMD:tiraradmin(playerid, params[])
{
new Outro[MAX_PLAYER_NAME];
if (sscanf(params, "u", Outro))
return SendClientMessage(playerid, 0xFF0000FF, "Uso correto /tiraradmin [ID/Nome]");
if (!IsPlayerConnected(Outro))
return SendClientMessage(playerid, 0xFF0000FF, "O ID/Nome nгo estб conectado!");
Array[Outro][Admin] = false;
return 1;
}
CMD:meux(playerid, params[])
{
SetPlayerPos(playerid, Array[playerid][PosX], 0.0, 5.0);
return 1;
}
public OnPlayerConnect(playerid)
{
new nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof Nome);
format(Array[playerid][Nick], MAX_PLAYER_NAME, "%s", nome);
return 1;
}
OBS: Os comandos nгo sгo cуdigo ъtil, tanto й que nгo apresentam restriзaгo nem nada, servem apenas para mostrar uma array em funcionamento.