Portal SAMP
[Ajuda] Como fazer isso? - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Como fazer isso? (/showthread.php?tid=3036)



Como fazer isso? - Rev - 30/11/2022

Olá, estou criando um sistema de evento, nesse sistema conterá 2 equipes, uma vermelha e outra azul.
Consegui iniciar o evento, mas agora estou na parte que o player usa o comando pra ir ao evento, e eu não sei como fazer a divisão de equipes.
Alguém poderia me dar uma ideia de como fazer? pra um jogador ir a um time e o outro ir ao outro?


RE: Como fazer isso? - Carlos Victor - 30/11/2022

Só verificar a quantidade de jogadores em um time, fácil

Código:
if(blueTeam > redTeam) {        
    SetPlayerTeam(playerid, redTeam);
}
else {        
    SetPlayerTeam(playerid, blueTeam);
}



RE: Como fazer isso? - Vel - 30/11/2022

(30/11/2022 21:24)Carlos Victor Escreveu: Só verificar a quantidade de jogadores em um time, fácil

Código:
if(blueTeam > redTeam) {    
  SetPlayerTeam(playerid, redTeam);
}
else {    
  SetPlayerTeam(playerid, blueTeam);
}
Não é tão fácil... ele quer distribuir o número de jogadores igualmente.

https://github.com/pawn-lang/YSI-Includes/blob/5.x/YSI_Players/y_groups.md
Código:
static Group: gEventGroup[2];

main() {
  for (new i; i < sizeof(gEventGroup); i++) {
    gEventGroup[i] = Group_Create();
  }
}

Event_AddPlayer(playerid) {
  Group_SetBalancedArray(playerid, gEventGroup);
}

Event_RemovePlayer(playerid) {
  for (new i; i < sizeof(gEventGroup); i++) {
    if (Group_GetPlayer(gEventGroup[i], playerid)) {
      Group_SetPlayer(gEventGroup[i], playerid, false);
    }
  }
}



RE: Como fazer isso? - Dr Editor - 01/12/2022

Aqui ao usar a função SpawnJogadorEvento vai fazer o balanceamento. Basta definir da localização para spawn (SetPlayerPos).

Código:
new timeVermelho;
new timeAzul;

stock SpawnJogadorEvento(playerid)
{
    if(timeVermelho > timeAzul)
    {
        timeAzul ++;
        SetPlayerTeam(playerid, 1);
    }
    else
    {
        timeVermelho ++;
        SetPlayerTeam(playerid, 2);
    }
}



RE: Como fazer isso? - Carlos Victor - 01/12/2022

(30/11/2022 22:23)Vel Escreveu:
(30/11/2022 21:24)Carlos Victor Escreveu: Só verificar a quantidade de jogadores em um time, fácil

Código:
if(blueTeam > redTeam) {   
  SetPlayerTeam(playerid, redTeam);
}
else {   
  SetPlayerTeam(playerid, blueTeam);
}
Não é tão fácil... ele quer distribuir o número de jogadores igualmente.

https://github.com/pawn-lang/YSI-Includes/blob/5.x/YSI_Players/y_groups.md
Código:
static Group: gEventGroup[2];

main() {
  for (new i; i < sizeof(gEventGroup); i++) {
    gEventGroup[i] = Group_Create();
  }
}

Event_AddPlayer(playerid) {
  Group_SetBalancedArray(playerid, gEventGroup);
}

Event_RemovePlayer(playerid) {
  for (new i; i < sizeof(gEventGroup); i++) {
    if (Group_GetPlayer(gEventGroup[i], playerid)) {
      Group_SetPlayer(gEventGroup[i], playerid, false);
    }
  }
}

É literalmente fácil, a verificação que eu enviei, faz literalmente isso, destribui de forma "igual" nos grupos blue e red.

É literalmente a mesma coisa que o Dr. mandou acima.


RE: Como fazer isso? - Vel - 01/12/2022

(01/12/2022 10:33)Carlos Victor Escreveu:
(30/11/2022 22:23)Vel Escreveu:
(30/11/2022 21:24)Carlos Victor Escreveu: Só verificar a quantidade de jogadores em um time, fácil

Código:
if(blueTeam > redTeam) {   
  SetPlayerTeam(playerid, redTeam);
}
else {   
  SetPlayerTeam(playerid, blueTeam);
}
Não é tão fácil... ele quer distribuir o número de jogadores igualmente.

https://github.com/pawn-lang/YSI-Includes/blob/5.x/YSI_Players/y_groups.md
Código:
static Group: gEventGroup[2];

main() {
  for (new i; i < sizeof(gEventGroup); i++) {
    gEventGroup[i] = Group_Create();
  }
}

Event_AddPlayer(playerid) {
  Group_SetBalancedArray(playerid, gEventGroup);
}

Event_RemovePlayer(playerid) {
  for (new i; i < sizeof(gEventGroup); i++) {
    if (Group_GetPlayer(gEventGroup[i], playerid)) {
      Group_SetPlayer(gEventGroup[i], playerid, false);
    }
  }
}

É literalmente fácil, a verificação que eu enviei, faz literalmente isso, destribui de forma "igual" nos grupos blue e red.

É literalmente a mesma coisa que o Dr. mandou acima.

Eu tava considerando um cenário onde ele poderia adicionar mais de duas equipes, mas como não é o caso...


RE: Como fazer isso? - Carlos Victor - 01/12/2022

(01/12/2022 11:15)Vel Escreveu: Eu tava considerando um cenário onde ele poderia adicionar mais de duas equipes, mas como não é o caso...

Eu também imaginei esse cenário, se for +2 equipes, é recomendado que aumente a verificação ou use a include que você mandou, mas como ele não especificou, eu apenas disse a forma mais fácil de fazer esse equilibrio.