[Tutorial] Usando e Manipulando Arrays
#1

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;
Nas definiзхes de uma array sempre colocamos a quntidade de cйlulas mбxima que ela poderб utilizar, sempre comeзando do 0 quando formos alterar o valor de cada possibilidade. Sim, possibilidade. No primeiro exemplo, temos 10 cйlulas de informaзгo.


Б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];
No exemplo acima, podemos usar na segunda "casa" da array palavras, que de acordo com as palavras dб uma leitura melhor. Esse tipo de array tem um leque de possibilidades bem maior. Usando nъmeros teriamos uma бrvore assim:



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;
}
Claro que isso tambйm pode ocorrer com booleanas, strings e float:

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: Esse tutorial й voltado para iniciantes em PAWN, jб que pessoas com algum conhecimento devem saber como utilizar esse tipo de variбvel.
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.
Reply
#2

Opa boa tarde :3 vim aqui apenas te dar a minha opiniгo, se for o seu primeiro tutorial parabйns primeiramente, mas ele ficou meio vago.

OBS: Existe uma diferenзa entre vocк pensar e entender, e entre vocк compartilhar com os outros e fazer com que eles entendam. No seu tutorial vocк explicou algo que vocк talvez jб entenda, mas nгo explicou tгo bem o funcionamento e a forma de utilizaзгo, isso pode gerar dъvidas em algumas pessoas que nгo saibam trabalhar com indexes, sem tirar que vocк citou vetores e jб pulou pra arrays 2D, se esse tutorial й voltado para iniciantes em PAWN eu acho que vocк poderia trabalhar mais uma forma de como explicar direito a respeito de como trabalhar com 'arrays', pois assim do jeito que tб, nгo й um cуdigo ъtil para vocк, mas й um cуdigo ъtil para quem vai tentar entender, pois vгo copiar e usar sem nem saber como funciona.

Parabйns novamente, abraзos.

+2 rep para motivar.
Reply
#3

Foi boa a intencao, ate explica mais ou menos

Bom trabalho

@ + REP
Reply
#4

Obrigado PT.


Willian, sim, й meu primeiro tutorial. Nгo v i nada parecido com isso aqui na board PT/BR e tambpйm vejo muitos tуpicos que pedem ajuda e uma simples array poderia resolver o problema. Vou melhorar o tutorial enгo, explicando melhor as arrays de "um parвmetro" e melhorando talvez a linguagem.
Reply
#5

Como o Willian disse , mais ficou уtimo o tutorial , tem meu respeito .

Mais para iniciantes ficou um tanto complicado rsrsrs...
Reply
#6

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Obrigado PT.


Willian, sim, й meu primeiro tutorial. Nгo v i nada parecido com isso aqui na board PT/BR e tambpйm vejo muitos tуpicos que pedem ajuda e uma simples array poderia resolver o problema. Vou melhorar o tutorial enгo, explicando melhor as arrays de "um parвmetro" e melhorando talvez a linguagem.
Nгo me leve a mal, eu quis te motivar e lhe elogiar pelo trabalho.

Mas existem dъvidas que vocк mesmo pode prever se olhar o tutorial novamente apуs ler aqui abaixo:

P: Por que nesse cуdigo aqui:
pawn Код:
new Array[20][10];
new Array[30];
vocк botou os valores 20/10/30 ? Em que isso influкncia ?

P: Como eu vou saber qual й o valor que eu quero ?

P: Nesse cуdigo aqui:
pawn Код:
Array[0][0] = 106;
Array[5][8] = 3;
Array[19][9] = 47;
Vocк usou valores diferentes dos quais vocк havia metido lб em cima, por quк ? e qual a diferenзa ?


Dъvidas bestas nй, mas por incrнvel que pareзa acontece.
Reply
#7

Sim, eu entendi que vocк quis ajudar. Crнticas construtivas sгo sempre bem-vindas.

De fato, para mim essas perguntas parecem "bestas", mas vou usar elas como base pra explicar no comeзo do tutorial, ja que esse й um tutorial voltado para iniciantes.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)