[Ajuda] Verificaзгo
#1

Bom alguйm pode me dar uma dica nesta verifiaзгo? Pois bem ela ficou um pouco extensa, vou resumir o que quero.

Serгo 3 times, entгo poderб acontecer a guerra se no minimo dois destes times tiverem com membros suficientes, 2+.
Caso Este numero vб aumentando existe uma margem que aumenta junto.
Ae depois compararei o numero de membros com esta margem de erros.
Cуdigo que estou usando para testes.

PHP код:
main()
{
    new 
        
AlqMembers 2,
        
IslanMembers 5,
        
FaMembers 4,
        
margem 1,
        
bool:Allowed[3] = {truetruetrue}
    ;
    new
        
bool:verificacao
    
;
    if(
Allowed[0] && Allowed[1])
    {
        print(
"Allowed[0] && Allowed[1]");
        
verificacao = ((AlqMembers <= 2) && (IslanMembers <= 2));
    }
    if(
Allowed[1] && Allowed[2])
    {
        print(
"Allowed[1] && Allowed[2]");
        
verificacao = ((AlqMembers <= 2) && (FaMembers <= 2));
    }
    if(
Allowed[0] && Allowed[2])
    {
        print(
"Allowed[0] && Allowed[2]");
        
verificacao = ((IslanMembers <= 2) && (FaMembers <= 2));
    }
    if(
Allowed[0] && Allowed[1] && Allowed[2])
    {
        print(
"Allowed[0] && Allowed[1] && Allowed[2]");
        
verificacao = ((IslanMembers <= 2) && (FaMembers <= 2) && (AlqMembers <= 2));
    }
    
    if(
verificacao)
        print(
"[1]verificacao == 1");
    
verificacao false;
    if(
Allowed[0] && Allowed[1])
    {
        print(
"Allowed[0] && Allowed[1]");
        if((
AlqMembers >= 7) && (IslanMembers >= 7))
            
margem 3;
        else if((
AlqMembers >= 5) && (IslanMembers >= 5))
            
margem 2;
    }
    if(
Allowed[0] && Allowed[2])
    {
        print(
"Allowed[0] && Allowed[2]");
        if((
FaMembers >= 7) && (IslanMembers >= 7))
            
margem 3;
        if((
FaMembers >= 5) && (IslanMembers >= 5))
            
margem 2;
    }
    if(
Allowed[1] && Allowed[2])
    {
        print(
"Allowed[1] && Allowed[2]");
        if((
FaMembers >= 7) && (AlqMembers >= 7))
            
margem 3;
        if((
FaMembers >= 5) && (AlqMembers >= 5))
            
margem 2;
    }
    if(
Allowed[0] && Allowed[1])
    {
        print(
"Allowed[0] && Allowed[1]");
        
verificacao = (((AlqMembers >= (IslanMembers margem)) && (AlqMembers <= (IslanMembers margem))));
    }
    if(
Allowed[0] && Allowed[2])
    {
        print(
"Allowed[0] && Allowed[2]");
        
verificacao = (((IslanMembers >= (FaMembers margem)) && (IslanMembers <= (FaMembers margem))));
    }
    if(
Allowed[1] && Allowed[2])
    {
        print(
"Allowed[1] && Allowed[2]");
        
verificacao = (((AlqMembers >= (FaMembers margem)) && (AlqMembers <= (FaMembers margem))));
    }
    if(
Allowed[0] && Allowed[1] && Allowed[2])
    {
        print(
"Allowed[0] && Allowed[1] && Allowed[2]");
        
verificacao =     (
            ((
AlqMembers >= (IslanMembers margem)) && (AlqMembers <= (IslanMembers margem))) &&
            ((
AlqMembers >= (FaMembers margem)) && (AlqMembers <= (FaMembers margem))) &&
            ((
IslanMembers >= (FaMembers margem)) && (IslanMembers <= (FaMembers margem)))
        );
    }
    if(
verificacao)
        print(
"[2]verificacao == 1");
    else
        print(
"[2]verificacao == 0");
    
printf("AlqMembers = %d"AlqMembers);
    
printf("IslanMembers = %d"IslanMembers);
    
printf("FaMembers = %d"FaMembers);
    
printf("margem = %d"margem);
    
printf("bool:Allowed[3] = {%s, %s, %s}", (Allowed[0] ? ("true") : ("false")), (Allowed[1] ? ("true") : ("false")), (Allowed[2] ? ("true") : ("false")));

Estб parte do cуdigo
PHP код:
    new 
        
AlqMembers 2,
        
IslanMembers 5,
        
FaMembers 4,
        
margem 1,
        
bool:Allowed[3] = {truetruetrue}
    ; 
Irб receber valores de outros lugares, serб dinвmica:
  • AlqMembers = Numero de membros alqaeda
  • IslanMembers = Numero de membros Islan
  • FaMembers = Numero de membros FA
    [*}bool:Allowed = FA, ALQ, ISLAN nesta ordem se a org esta apta a participar.
Reply
#2

Й muito difнcil interpretar seu cуdigo pela forma de manuseio das variбveis. Mas nгo precisa disso tudo nгo. Bastar usar um SetTimer de 1seg que repete. Verificar quantos membros online dessa "org" utilizando Loop+Condiзгo nesse determinado local e usar uma variбvel global que conte. Vocк pode usar como faz em coordenadas de GangZone.

E para 'essa margem aumentar junto'.

Basta usar um algoritmo simples quase igual a esse:
PHP код:
new _a;
new 
2*_a;
// b vai multiplicando por 1 a cada "_a' online. 
Nгo entendi o que vocк quis fazer e nem a finalidade. Se queres detectar todos online geral, ao invйs de sу um local, dar pra fazer um cуdigo ainda mais otimizado.
Reply
#3

Quote:
Originally Posted by JonathanFeitosa
Посмотреть сообщение
Sу usar o algoritmo de pegar players prуximos, verificar se й da mesma "org" e contar +1 variбvel. Usar um timer parecido com o OnPlayerUpdate, mas com verificaзгo em 1seg, e ir atualizando a quantidade de players dessa "org" dentro do local.
Nгo й bem isto rs, eu preciso que esta verificaзгo retorne:
PHP код:
 if(verificacao
        print(
"[2]verificacao == 1"); 
Sempre que duas orgs estejam com um numero similar de membros, por exemplo

Код:
AlqMembers = 2, 
IslanMembers = 5, 
FaMembers = 5,
Porйm sempre chego ao mesmo lugar, pois estб verificaзгo com um numero impar de times me bugou o celebro.
Reply
#4

Bom eu fiz este script agora nem testei, mas acho que й algo do tipo que vocк quer pelo oque eu entendi!
PHP код:
#include <a_samp>


enum tTimes {
    
LosSantos,
    
LosSantosMembros,
    
LasVegas,
    
LasVegasMembros,
    
SanFierro,
    
SanFierroMembros
}

new 
PlayerTime[MAX_PLAYERS][tTimes], Time[tTimes];

main()
{
    print(
"\n----------------------------------");
    print(
" Blank Gamemode by your name here");
    print(
"----------------------------------\n");
}

public 
OnGameModeInit()
{
    
// Don't use these lines if it's a filterscript
    
SetGameModeText("Blank Script");
    
SetTimer("AtualizarGuerra"5000true);
    
AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 
1;
}

public 
OnGameModeExit()
{
    return 
1;
}

public 
OnPlayerConnect(playerid)
{
    if(
PlayerTime[playerid][LosSantos] == 1Time[LosSantosMembros]++;
    if(
PlayerTime[playerid][LasVegas] == 1Time[LasVegasMembros]++;
    if(
PlayerTime[playerid][SanFierro] == 1Time[SanFierroMembros]++;
    return 
1;
}

public 
OnPlayerDisconnect(playeridreason)
{
    if(
PlayerTime[playerid][LosSantos] == 1Time[LosSantosMembros]--;
    if(
PlayerTime[playerid][LasVegas] == 1Time[LasVegasMembros]--;
    if(
PlayerTime[playerid][SanFierro] == 1Time[SanFierroMembros]--;
    return 
1;
}

stock AtualizarGuerra()
{
    if(
Time[LosSantosMembros] >= && Time[LasVegasMembros] >= || Time[LasVegasMembros] >= && Time[SanFierroMembros] >= || Time[LosSantosMembros] >= && Time[SanFierroMembros] >= 2)
    for(new 
0MAX_PLAYERSi++)
    {
        if(
IsPlayerConnected(i) && PlayerTime[playerid][LosSantos] == || IsPlayerConnected(i) && PlayerTime[playerid][SanFierro] == || IsPlayerConnected(i) && PlayerTime[playerid][LasVegas] == 1)
        {
            
SendClientMessage(playerid, -1Time[LosSantosMembros] >= && Time[LasVegasMembros] >= ? ("[>] Os times Los Santos e Las Vegas estгo com membros suficiente para iniciar uma guerra!") : Time[LasVegasMembros] >= && Time[SanFierroMembros] >= ? ("[>] Os times Las Vegas e San Fierro estгo com membros suficiente para iniciar uma guerra!") : Time[LosSantosMembros] >= && Time[SanFierroMembros] >= ? ("[>] Os times Los Santos e San Fierro estгo com membros suficiente para iniciar uma guerra!") : ("Erro na Contagem da Guerra!"));
        }
    }

Reply
#5

Ai voce disponibiliza seu tempo pra ajudar o cara e uma porra dessa nem pra responder se deu certo responde ! -.-‘
Reply
#6

Sinto muito por nгo responder, na verdade nгo funcionou, eu ja sei o que farei, logo mais edito aqui.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)