[Ajuda] Й Possнvel Otimizar ainda mais este comando /membros ?
#1

Primeiramente boa tarde a todos, seguinte eu estava ajudando o membro brunogusava aqui do fуrum com um comando /membros

Este comando abaixo й o feito por ele, porйm ele utiliza o processador de comandos zcmd e nгo quer mudar.

Eu queria saber se й possнvel deixar mais Otimizado do que o Comando 2 que foi o que eu criei.

• COMANDO 1 - Criado pelo brunogusava
PHP код:
CMD:membros(playeridparams[])
{
    if(
Player[playerid][Organizacao] == 0)
    {
        
SendClientMessage(playerid0xFF0000FF"[BLC] |Erro| Vocк nгo й de uma organizaзгo.");
    }
    else
    {
        for(new 
0MAX_PLAYERSi++)
        {
            if(
Player[i][Organizacao] == Player[playerid][Organizacao])
            {
                
SendClientMessage(playerid, -1"/-----Membros Online-----/\n");
                new 
nome[MAX_PLAYER_NAME], string[MAX_PLAYER_NAME];
                
GetPlayerName(inomesizeof(nome));
                
format(stringsizeof(string), "%s"nome);
                
SendClientMessage(playerid, -1string);
                
SendClientMessage(playerid, -1"\n/-----Membros Online-----/");
            }
        }
    }

• COMANDO 2 - Criado por mim (Leonardo Bradoks)
PHP код:
CMD:membros(playerid) {
    if(!
Player[playerid][Organizacao]) return SendClientMessage(playerid0xFF0000FF"[BLC] Vocк nгo й de uma organizaзгo.");
    new 
CountMembersnome[MAX_PLAYER_NAME];
    foreach(
Playeri) {
        if(
Player[i][Organizacao] == Player[playerid][Organizacao] && != playerid) {
            if(!
CountMembersSendClientMessage(playerid, -1"/----- Membros da Organizaзгo Online -----/");
            
GetPlayerName(inomesizeof(nome));
            
SendClientMessage(playerid, -1nome);
            
CountMembers++;
        }
    }
    
SendClientMessage(playeridCountMembers >= ? (-1) : (0xFF0000FF), CountMembers >= ? ("/----- Membros da Organizaзгo Online -----/") : ("[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online."));
    return 
true;

Lembrando a todos que toda critica construtiva й bem vinda TMJ!
Reply
#2

Acho que nгo da pra otimizar mais que isso. Sу mudei o return true pra return 1. E CountMembers = 0 pra CountMembers.

Код:
CMD:membros(playerid) {
    if(!Player[playerid][Organizacao]) return SendClientMessage(playerid, 0xFF0000FF, "[BLC] Vocк nгo й de uma organizaзгo.");
    static CountMembers, nome[MAX_PLAYER_NAME], string[MAX_PLAYER_NAME];
    foreach(Player, i) {
        if(Player[i][Organizacao] == Player[playerid][Organizacao] && i != playerid) {
            if(!CountMembers) SendClientMessage(playerid, -1, "/-----Membros da Organizaзгo Online -----/");
            GetPlayerName(i, nome, sizeof(nome));
            format(string, sizeof(string), "%s", nome);
            SendClientMessage(playerid, -1, string);
            CountMembers++;
        }
    }
    SendClientMessage(playerid, CountMembers >= 1 ? (-1) : (0xFF0000FF), CountMembers >= 1 ? ("/----- Membros da Organizaзгo Online -----/") : ("[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online."));
    return 1;
}
Reply
#3

Quote:
Originally Posted by KoloradO
Посмотреть сообщение
Acho que nгo da pra otimizar mais que isso. Sу mudei o return true pra return 1. E CountMembers = 0 pra CountMembers.

Код:
CMD:membros(playerid) {
    if(!Player[playerid][Organizacao]) return SendClientMessage(playerid, 0xFF0000FF, "[BLC] Vocк nгo й de uma organizaзгo.");
    static CountMembers, nome[MAX_PLAYER_NAME], string[MAX_PLAYER_NAME];
    foreach(Player, i) {
        if(Player[i][Organizacao] == Player[playerid][Organizacao] && i != playerid) {
            if(!CountMembers) SendClientMessage(playerid, -1, "/-----Membros da Organizaзгo Online -----/");
            GetPlayerName(i, nome, sizeof(nome));
            format(string, sizeof(string), "%s", nome);
            SendClientMessage(playerid, -1, string);
            CountMembers++;
        }
    }
    SendClientMessage(playerid, CountMembers >= 1 ? (-1) : (0xFF0000FF), CountMembers >= 1 ? ("/----- Membros da Organizaзгo Online -----/") : ("[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online."));
    return 1;
}
Certo porйm a finalidade de trocar o true por 1 й meio que nula pois de qualquer forma true retorna 1
Reply
#4

Sу removendo a operaзгo ternбria no SendClientMessage.

Menos linhas nгo quer dizer que estб mais otimizado.
"Medir o progresso de um programa por linhas de cуdigo й como medir o processo de montagem de um aviгo pelo peso." - Bill Gates
Reply
#5

No seu cуdigo de comando, troque static por new para que a variбvel CountMembers sempre comece zerada em execuзхes sucessivas do mesmo .



Opcionalmente, vocк pode manter o static e apenas zerar essa variбvel logo abaixo de sua declaraзгo.



Espero ter ajudado .
Reply
#6

Quote:
Originally Posted by Dayvison_
Посмотреть сообщение
Sу removendo a operaзгo ternбria no SendClientMessage.

Menos linhas nгo quer dizer que estб mais otimizado.
"Medir o progresso de um programa por linhas de cуdigo й como medir o processo de montagem de um aviгo pelo peso." - Bill Gates
Nгo vejo necessidade de retirar a operaзгo ternбria.

Quote:
Originally Posted by rjjj
Посмотреть сообщение
No seu cуdigo de comando, troque static por new para que a variбvel CountMembers sempre comece zerada em execuзхes sucessivas do mesmo .



Opcionalmente, vocк pode manter o static e apenas zerar essa variбvel logo abaixo de sua declaraзгo.



Espero ter ajudado .
Certo anteriormente eu tinha utilizado como new porйm havia trocado para static mas vocк me fez lembrar de algo que eu havia esquecido, voltei para new novamente obrigado
Reply
#7

Explique a sua lуgica de raciocнnio em utilizar a operaзгo ternбria. Lembrando que o "?" tem som de "й" e ":" tem som de "ou".

Ъnica coisa que vocк fez foi encher linguiзa na sua "otimizaзгo", e tornar seu cуdigo com uma pйssima legibilidade.
Reply
#8

Com operaзгo ternбria vocк faz duas verificaзхes enquanto usando if seria apenas uma
Reply
#9

Operaзгo Ternбria foi feita para ser utilizada encher de linguiзa й oque vocк estб fazendo aqui na sua publicaзгo nгo ajudando em nada no tуpico TKS e dispensбvel seu comentбrio
Quote:
Originally Posted by Gguiz
Посмотреть сообщение
Explique a sua lуgica de raciocнnio em utilizar a operaзгo ternбria. Lembrando que o "?" tem som de "й" e ":" tem som de "ou".

Ъnica coisa que vocк fez foi encher linguiзa na sua "otimizaзгo", e tornar seu cуdigo com uma pйssima legibilidade.
Certo porйm com if seria duas linhas para fazer a mesma coisa correto ? Mostre-me uma outra forma melhor utilizando if
Quote:
Originally Posted by Dayvison_
Посмотреть сообщение
Com operaзгo ternбria vocк faz duas verificaзхes enquanto usando if seria apenas uma
Reply
#10

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Certo porйm com if seria duas linhas para fazer a mesma coisa correto ? Mostre-me uma outra forma melhor utilizando if
Otimizaзгo != nъmero de linhas
Reply
#11

Agora atй me senti importante kkkkkk, faz tempo que estou sem PC, nem vejo a hora de voltar para continuar meus aprendizados em PAWN.
Reply
#12

Aproveitando que estou no celular do meu tio, gostaria de mandar um salve ao meu mestre, @RazorGuigo, futuramente estarei voltando, sу esperando meu PC novo chegar.
Reply
#13

Alйm da recomendaзгo do Dayvison, eu tambйm modificaria a parte em que hб
Код:
if(... && i != playerid)
para
Код:
if(...) { if(i != playerid)
Com todas as adaptaзхes, claramente.
Reply
#14

Acredito que nesse caso operaзгo ternбria perder tanto para switch quanto para if, nesse caso if ganha em velocidade:

PHP код:
switch(CountMembers)
{
    case 
0SendClientMessage(0, -1"[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online.");
    default: 
SendClientMessage(0, -1"/----- Membros da Organizaзгo Online -----/");
}
if(
CountMembers != 0SendClientMessage(0, -1"/----- Membros da Organizaзгo Online -----/");
else 
SendClientMessage(0, -1"[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online."); 
Reply
#15

Код:
(CountMembers != 0) && SendClientMessage(0, -1, "/----- Membros da Organizaзгo Online -----/") || SendClientMessage(0, -1, "[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online.");
Pra quem tб preocupado com a quantidade de linha, ai esta outra maneira de fazer a mesma merda. Й engraзado nego querendo corrigir o outro e nem saber programar direito. Como dito no discord: й o famoso professor que nгo entende do assunto UHAUHAU.
Reply
#16

Certo entгo de fato era do jeito que eu tinha colocado anteriormente no tуpico dele, obrigado pela dica tmj
Quote:
Originally Posted by Whoo
Посмотреть сообщение
Acredito que nesse caso operaзгo ternбria perder tanto para switch quanto para if, nesse caso if ganha em velocidade:

PHP код:
switch(CountMembers)
{
    case 
0SendClientMessage(0, -1"[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online.");
    default: 
SendClientMessage(0, -1"/----- Membros da Organizaзгo Online -----/");
}
if(
CountMembers != 0SendClientMessage(0, -1"/----- Membros da Organizaзгo Online -----/");
else 
SendClientMessage(0, -1"[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online."); 
Editei pois nгo vou dar ibope para vocк e nгo vou relacionar coisas da minha vida pessoal com pessoas do seu tipo, vai que rola macumba

Quote:
Originally Posted by RogerCosta
Посмотреть сообщение
Код:
(CountMembers != 0) && SendClientMessage(0, -1, "/----- Membros da Organizaзгo Online -----/") || SendClientMessage(0, -1, "[BLC] Fora vocк nгo hб nenhum(a) outro(a) membro(a) da sua organizaзгo estб online.");
Pra quem tб preocupado com a quantidade de linha, ai esta outra maneira de fazer a mesma merda. Й engraзado nego querendo corrigir o outro e nem saber programar direito. Como dito no discord: й o famoso professor que nгo entende do assunto UHAUHAU.
Reply
#17

O primeiro erro aн й usar uma sintaxe de foreach deprecated hб anos. A "nova" sintaxe й foreach (new i : Player)
Reply
#18

Quote:
Originally Posted by brunogusava
Посмотреть сообщение
Aproveitando que estou no celular do meu tio, gostaria de mandar um salve ao meu mestre, @RazorGuigo, futuramente estarei voltando, sу esperando meu PC novo chegar.
Jб agora, aproveita e vai ler as regras.
Код:
Nгo й permitido "Double Post" (Postagem dupla) antes de 24 horas. Existe um botгo chamado "Editar" .
Regras
Reply
#19

Como falei no meu tуpico e volto a falar aqui. Otimizaзгo != Organizaзгo. Isso й uma diminuiзгo de linhas e nгo otimizaзгo
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)