[Ajuda] Comando de organizaзгo causando Lag
#1

Resolvido!
Reply
#2

Bom, o exagero de cйlulas tambйm, tem vбrias coisas a ser optimizadas como por exemplo:

pawn Код:
if(adminstatus[playerid] != 0)
                {
                    SendClientMessage(playerid,COLOR_GRAD1,"ERRO: Vocк nгo estб do modo admin! (/trabalhar)");
                    return true;
                }

//Para
if(adminstatus[playerid] > 1) return SendClientMessage(playerid,COLOR_GRAD1,"ERRO: Vocк nгo estб do modo admin! (/trabalhar)");
E vбrias outras, seu cуdigo estб muito ruim.
Reply
#3

Resolvido!
Reply
#4

Bom jб tentou colocar return? como por exemplo:

pawn Код:
if (IsPlayerOnline(InfoOrg[org][LiderInfo])) return DemitirLider(id0);
Reply
#5

Quote:
Originally Posted by PedexM
Посмотреть сообщение
tem vбrias coisas a ser optimizadas como por exemplo:
pawn Код:
if(adminstatus[playerid] != 0)
                {
                    SendClientMessage(playerid,COLOR_GRAD1,"ERRO: Vocк nгo estб do modo admin! (/trabalhar)");
                    return true;
                }
//Para
if(adminstatus[playerid] > 1) return SendClientMessage(playerid,COLOR_GRAD1,"ERRO: Vocк nгo estб do modo admin! (/trabalhar)");
Isso nгo otimiza nada, realmente do jeito dele fica mais feio e gasta mais linha.

Pelo que entendi, IsPlayerOnline deve ser o mesmo que IsPlayerConnected. Acho que o erro consiste em suas variбveis abrigarem o valor 0, e como vocк provavelmente й o id 0, flooda. Vocк pode corrigir isto fazendo como PedexM sugeriu, utilizando o return
Mas ainda assim seu mйtodo ainda nгo й muito confiбvel, nгo posso fazer de outro modo pois nгo tenho acesso ao seu sistema. Sobre a parte da otimizaзгo, comece optando por usar melhor os recursos a sua volta.

Ex:
pawn Код:
forward DemitirLider(playerid);
public DemitirLider(playerid)
{
    new string[70]="* Vocк nгo esta mais em sua .";
    strins(string, Org(playerid), 28);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    gTeam[playerid] = 3;
    PlayerInfo[playerid][pTeam] = 3;
    PlayerInfo[playerid][pLider] = 0;
    PlayerInfo[playerid][pCargo] = 0;
    PlayerInfo[playerid][pMembro] = 0;
   
    PlayerInfo[playerid][pChar] = PlayerInfo[playerid][pSex] == 1 ? (7) : (226);
    PlayerInfo[playerid][pEquipSkin] = PlayerInfo[playerid][pSex] == 1 ? (7) : (226);
    SetPlayerSkin(playerid, PlayerInfo[playerid][pSex] == 1 ? (7) : (226));
}
Reply
#6

Quote:
Originally Posted by Artista
Посмотреть сообщение
Isso nгo otimiza nada, realmente do jeito dele fica mais feio e gasta mais linha.

Pelo que entendi, IsPlayerOnline deve ser o mesmo que IsPlayerConnected. Acho que o erro consiste em suas variбveis abrigarem o valor 0, e como vocк provavelmente й o id 0, flooda. Vocк pode corrigir isto fazendo como PedexM sugeriu, utilizando o return
Mas ainda assim seu mйtodo ainda nгo й muito confiбvel, nгo posso fazer de outro modo pois nгo tenho acesso ao seu sistema. Sobre a parte da otimizaзгo, comece optando por usar melhor os recursos a sua volta.

Ex:
pawn Код:
forward DemitirLider(playerid);
public DemitirLider(playerid)
{
    new string[70]="* Vocк nгo esta mais em sua .";
    strins(string, Org(playerid), 28);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    gTeam[playerid] = 3;
    PlayerInfo[playerid][pTeam] = 3;
    PlayerInfo[playerid][pLider] = 0;
    PlayerInfo[playerid][pCargo] = 0;
    PlayerInfo[playerid][pMembro] = 0;
   
    PlayerInfo[playerid][pChar] = PlayerInfo[playerid][pSex] == 1 ? (7) : (226);
    PlayerInfo[playerid][pEquipSkin] = PlayerInfo[playerid][pSex] == 1 ? (7) : (226);
    SetPlayerSkin(playerid, PlayerInfo[playerid][pSex] == 1 ? (7) : (226));
}
Amigo, Tem certeza ? Que nгo?

Pois eu tenho, melhorei muito depois de vбrias dicas me dadas, e com certeza й mais eficiente, Isso economizarб Muitas linhas do GM, nгo sei se importa, mas prefiro um GM com pouca linhas e rбpido, do que muito e bem lento.
Reply
#7

Resolvido!
Reply
#8

Seu comando й extremamente extenso sem necessidade, programadores mais aprofundado no assunto nгo querem expor o cуdigo por preguiзa!
Reply
#9

Quote:
Originally Posted by PedexM
Посмотреть сообщение
Amigo, Tem certeza ? Que nгo?

Pois eu tenho, melhorei muito depois de vбrias dicas me dadas, e com certeza й mais eficiente, Isso economizarб Muitas linhas do GM, nгo sei se importa, mas prefiro um GM com pouca linhas e rбpido, do que muito e bem lento.
Sim, retornar com a funзгo й a mesma coisa que usar o return true/return 1;
E o seu modo estava com um errinho, sу ia contar como modo admin a partir do valor 2 pra cima.
De fato vocк melhorou muito, apenas dei um toque. Ah, tambйm prefiro fazer assim. Como falei, o primeiro modo deixa o cуdigo muito feito e extenso

@Topic
Sabe porque seu comando nгo funciona como deveria? Pelo motivo que falei acima. Suas variбveis tem o valor 0 e vocк й o id 0. Quando vocк usa o comando, ele vai checar se os lнderes estгo online, mas nгo apenas de uma org especнfica, vai checar de TODAS as orgs e isso inclui a orgs sem lнderes!
O que vai acontecer й que com return ou sem return, o seu comando pararб na primeira verificaзгo e irб bugar. Caso o id 0 esteja conectado.

Veja o seu cуdigo:
pawn Код:
if(IsPlayerOnline(InfoOrg[org][LiderInfo])) DemitirLider(id0);
Isto traduzido na nossa linguagem lк-se assim:
pawn Код:
O id 0 ta conectado? Ta sim, tira o lнder dele!
entendeu?
O seu comando inteiro tem que ser refeito.
Reply
#10

Ser refeito de novo? '-', Jб fiz um do zero para ele.

Quote:
Originally Posted by Artista
Посмотреть сообщение
entendeu?
O seu comando inteiro tem que ser refeito.
Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Pronto comando feito abaixo por mim, se ajudei responda no tуpico. Espero ter ajudado!

Ajudei? +Rep

° Comando para salvamento em dini:
PHP код:
    if(strcmp(cmd"/resetarorg"true) == 0)
    {
        if(
PlayerInfo[playerid][pAdmin] >= 3000 || PlayerInfo[playerid][pAdmin] == 5)
        {
            if(!
IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1,"[ ERRO ] {FF0000}Vocк nгo estб conectado no servidor!");
            if(
adminstatus[playerid] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"ERRO: Vocк nгo estб do modo admin! (/trabalhar)");
            new 
org,tmp[255], file[255], aname[MAX_PLAYER_NAME];
            
tmp strtok(cmdtext,idx);
            
org strval(tmp);
            if(!
strlen(tmp)) return SendClientMessage(playerid,COLOR_WHITE,"USE: /resetarorg [ID da Organizaзгo]");
            if(
org 17 || org 1) return SendClientMessage(playerid,-1,"ERRO: Escolha nъmero minimo 1 e nъmero maximo 17.");
            
GetPlayerName(playeridaname,sizeof(aname));
            
format(filesizeof(file),"/InfoOrg/Org%d.ini"org);
            if(
dini_Exists(file))
            {
                
dini_Set(file"Lider""Ninguem");
                
dini_Set(file"SubLider1""Ninguem");
                
dini_Set(file"SubLider2""Ninguem");
                
dini_Set(file"Membro1""Ninguem");
                
dini_Set(file"Membro2""Ninguem");
                
dini_Set(file"Membro3""Ninguem");
                
dini_Set(file"Membro4""Ninguem");
                
dini_Set(file"Membro5""Ninguem");
                
dini_Set(file"Membro6""Ninguem");
                
dini_Set(file"Membro7""Ninguem");
                
dini_Set(file"Membro8""Ninguem");
                
dini_Set(file"Membro9""Ninguem");
                
dini_Set(file"Membro10""Ninguem");
                
dini_Set(file"Membro11""Ninguem");
                
dini_Set(file"Membro12""Ninguem");
                
dini_Set(file"Membro13""Ninguem");
                
dini_Set(file"Membro14""Ninguem");
                
dini_Set(file"Membro15""Ninguem");
                
dini_Set(file"Membro16""Ninguem");
                
dini_Set(file"Membro17""Ninguem");
                
dini_Set(file"Membro18""Ninguem");
                
dini_Set(file"Membro19""Ninguem");
                
dini_Set(file"Membro20""Ninguem");
                
SendClientMessage(playerid, -1,"* A organizaзгo foi reiniciada com sucesso.");
                
printf("AdmCmd: %s resetou a organizaзгo nъmero %d."anameorg);
                return 
1;
            }
            else
            {
                
SendClientMessage(playerid,-1"[ ERRO ] {FF0000}Estб organizaзгo nгo existe!");
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Vocк nгo tem acesso a este comando!");
        }
        return 
true;
    } 
° Comando para salvamento em DOF2:
PHP код:
    if(strcmp(cmd"/resetarorg"true) == 0)
    {
        if(
PlayerInfo[playerid][pAdmin] >= 3000 || PlayerInfo[playerid][pAdmin] == 5)
        {
            if(!
IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1,"[ ERRO ] {FF0000}Vocк nгo estб conectado no servidor!");
            if(
adminstatus[playerid] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"ERRO: Vocк nгo estб do modo admin! (/trabalhar)");
            new 
org,tmp[255], file[255], aname[MAX_PLAYER_NAME];
            
tmp strtok(cmdtext,idx);
            
org strval(tmp);
            if(!
strlen(tmp)) return SendClientMessage(playerid,COLOR_WHITE,"USE: /resetarorg [ID da Organizaзгo]");
            if(
org 17 || org 1) return SendClientMessage(playerid,-1,"ERRO: Escolha nъmero minimo 1 e nъmero maximo 17.");
            
GetPlayerName(playeridaname,sizeof(aname));
            
format(filesizeof(file),"/InfoOrg/Org%d.ini"org);
            if(
DOF2_FileExists(file))
            {
                
DOF2_SetString(file"Lider""Ninguem");
                
DOF2_SetString(file"SubLider1""Ninguem");
                
DOF2_SetString(file"SubLider2""Ninguem");
                
DOF2_SetString(file"Membro1""Ninguem");
                
DOF2_SetString(file"Membro2""Ninguem");
                
DOF2_SetString(file"Membro3""Ninguem");
                
DOF2_SetString(file"Membro4""Ninguem");
                
DOF2_SetString(file"Membro5""Ninguem");
                
DOF2_SetString(file"Membro6""Ninguem");
                
DOF2_SetString(file"Membro7""Ninguem");
                
DOF2_SetString(file"Membro8""Ninguem");
                
DOF2_SetString(file"Membro9""Ninguem");
                
DOF2_SetString(file"Membro10""Ninguem");
                
DOF2_SetString(file"Membro11""Ninguem");
                
DOF2_SetString(file"Membro12""Ninguem");
                
DOF2_SetString(file"Membro13""Ninguem");
                
DOF2_SetString(file"Membro14""Ninguem");
                
DOF2_SetString(file"Membro15""Ninguem");
                
DOF2_SetString(file"Membro16""Ninguem");
                
DOF2_SetString(file"Membro17""Ninguem");
                
DOF2_SetString(file"Membro18""Ninguem");
                
DOF2_SetString(file"Membro19""Ninguem");
                
DOF2_SetString(file"Membro20""Ninguem");
                
SendClientMessage(playerid, -1,"* A organizaзгo foi reiniciada com sucesso.");
                
printf("AdmCmd: %s resetou a organizaзгo nъmero %d."anameorg);
                return 
1;
            }
            else
            {
                
SendClientMessage(playerid,-1"[ ERRO ] {FF0000}Estб organizaзгo nгo existe!");
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Vocк nгo tem acesso a este comando!");
        }
        return 
true;
    } 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)