[Ajuda] Vetores, onde estou errando?
#5

Colega tem vбrias formas de fazer um sistemas desse tipo.

A funзгo deve pegar o nome do local onde o Player dominou, segue o exemplo abaixo.
output:
pawn Код:
A Gang 'Los_Tetudos' dominaram o local ('Grove Street')!

Pra isso podemos criar uma funзгo, algo como abaixo.

Mйtodo 1:
pawn Код:
new gPlayerZone[MAX_PLAYERS];


GetZoneName(playerid){
    new _@String[64];

    if (IsPlayerInRangeOfPoint( playerid, 7.0, X, Y, Z)) // Grove Street
        gPlayerZone[playerid] = 0;

    else if (IsPlayerInRangeOfPoint( playerid, 7.0, X, Y, Z)) // Los Santos
        gPlayerZone[playerid] = 1;

    else if (IsPlayerInRangeOfPoint( playerid, 7.0, X, Y, Z)) // Area51
        gPlayerZone[playerid] = 2;

    switch(lPlayerZone[playerid]){
        case 0: format(_@String, sizeof(_@String), "Grove Street");
        case 1: format(_@String, sizeof(_@String), "Los Santos");
        case 2: format(_@String, sizeof(_@String), "Area51");
    }
    return _@String; // Retorna um array (Nome do local)
}


Mйtodo 2:
Tambйm podemos fazer com um simples array.
pawn Код:
#define MAX_GANG_ZONES (32)
#define MAX_GANG_ZONE_NAME (64)


new gGangZone_Name[MAX_GANG_ZONES][MAX_GANG_ZONE_NAME] = {
"Grove Street",
"Los Santos",
"San Fierro",
"Las Vegas DM",
"Favela"
    // Deve fazer atй o valor especificado em MAX_GANG_ZONES, caso nгo for especificado o valor mбximo do array, nгo vai acusar erros na declaraзгo..
};


// Entгo criamos um protуtipo pra nossa funзгo

#define GetZoneName(%0)\
    gGangZone_Name[%0]
Outra escolha e tambйm uma opзгo, podemos usar um vetor para sinalizar qual Local o Player dominou.
pawn Код:
// Definiзгo para od locais 'Zone-ID'
#define GROVE_STREET (0)
#define LOS_SANTOS (1)
#define SAN_FIERRO (2)

new pOwnerArea[MAX_PLAYERS]; // Criamos um vetor


// No evento que ocorre a dominaзгo do local(checkpoint)
OwnerArea[playerid] = GROVE_STREET; // O valor deve ser exatamente o mesmo ID usado ao Criar o CheckPoint, sendo assim eles trabalham associados.

/*
A ultima coisa que tem que fazer й usar este vetor que indica o ID de qual Checkpoint vc dominou, e fica fбcil acessar um array com os nomes de todos CheckPoints.
Podemos atй definir uma funзгo com macro
*/


// Exemplo
#define GetPlayerZoneOwner(%0)\
OwnerArea[%0]

format( string, sizeof(string), "%s Esta sendo dominada, ajudem a livrar seu territуrio desses babacas!", gGangZone_Name[GetPlayerZoneOwner(playerid)]);



Eu fiz tudo aqui pelo fуrum mesmo, entгo nгo tente copiar pode ter erros, apenas analise e estude a lуgica. Bem simples, e posso te afirmar que existe muitas outras formas.
Reply


Messages In This Thread
Vetores, onde estou errando? - by Spectral - 27.08.2014, 21:41
Re: Vetores, onde estou errando? - by sofina - 27.08.2014, 21:45
Re: Vetores, onde estou errando? - by Spectral - 27.08.2014, 21:52
Re: Vetores, onde estou errando? - by Spectral - 27.08.2014, 23:25
Re: Vetores, onde estou errando? - by Schocc - 27.08.2014, 23:36
Re: Vetores, onde estou errando? - by Spectral - 28.08.2014, 03:13

Forum Jump:


Users browsing this thread: 2 Guest(s)