[Ajuda] Vetores, onde estou errando?
#1

Podem me ajudar em uma coisa?
Creio que й simples, mas nгo estou conseguindo.
Estou usando esse tutorial para criar Gzs dominaveis por CP.
Atй aн tudo certo.

Mas quero que quando o player dominar aparecer uma SmToAll assim:
pawn Код:
*>> [GANGZONES]: A gang 'TAL' dominou mais um territorio %s !
Estб getando o nome da Gang, tudo certo.
Mas nгo consigo colocar para getar o nome do territуrio.
Quero colocar os nomes dos territorios nos Checkpoints.

Eu tentei assim:
pawn Код:
//No topo
new CheckPoints[3][] = {
"Area 01",
"Area 02",
"Area 03"
};

//Em OnGamemodeInit
for(new i; i != MAX_PLAYERS; ++i)
{
CheckPoints[i][0] = CPS_AddCheckpoint(2495.0383,-1686.9420,13.5140,2.0,80);
CheckPoints[i][1] = CPS_AddCheckpoint(1722.3857,-1607.7697,13.5469,2.0,80);
CheckPoints[i][2] = CPS_AddCheckpoint(1976.1494,-1234.6455,20.0469,2.0,80);
}

//Na public ZoneCheckpointChecker
//Na parte do SmToAll
format(string, sizeof(string), "[GANGZONES]: A gang '%s' dominou mais um territorio '%s'!",GangNames[GetPlayerTeam(i)][0], CheckPoints[i]);
SendClientMessageToAll(0xFFFF00AA, string);
Mas nгo ta getando o nome a бrea quando domina o Checkpoint.
Aparece Assim:


Fica sem nada. Nгo aparece o nome do territуrio.

Onde estou errando??
Reply
#2

Vocк nгo teria que verificar o nome do local dominado e imprimir ali? Nгo sei explicar direito, mas vocк teria que pegar as coordenadas do local dominado, o nome e depois setar ali, nгo?

#EDIT: O que eu vi ali, vocк tб querendo setar o checkpoint, nгo o nome do local no qual vocк dominou.
Reply
#3

Quote:
Originally Posted by sofina
Посмотреть сообщение
Vocк nгo teria que verificar o nome do local dominado e imprimir ali? Nгo sei explicar direito, mas vocк teria que pegar as coordenadas do local dominado, o nome e depois setar ali, nгo?

#EDIT: O que eu vi ali, vocк tб querendo setar o checkpoint, nгo o nome do local no qual vocк dominou.
Quero colocar o nome do local dominado no checkpoint, ao invйs de colocar em uma бrea toda. Meu sistema nгo й /Do(minar), que precisa setar a бrea toda.
Entendeu?
Tipo dar um nome ao checkpoint.
Na minha opiniгo й mais simples e atende а minha necessidade.
Reply
#4

Desculpa o Double, mas preciso realmente de ajuda
Reply
#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
#6

Valeu iShocc.
Consegui usando suas dicas aн e essas aqui.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)