SA-MP Forums Archive
Очистка всего enum - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Очистка всего enum (/showthread.php?tid=482226)



Очистка всего enum - Urukhay - 20.12.2013

Каким образом можно очистить весь enim, который содержит также двухмерные массивы, не называя их?


Re: Очистка всего enum - Stepashka - 20.12.2013

pawn Код:
enum ePlayers {
    a,
    c,
    Float:d[3]
}
new playerData[MAX_PLAYERS][ePlayers];

new defaultPlayerInfo[ePlayers] = {
    0,
    0,
    {0.0, 0.0, 0.0},
};

//очистка
playerData[5] = defaultPlayerInfo;



Re: Очистка всего enum - Urukhay - 20.12.2013

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
pawn Код:
enum ePlayers {
    a,
    c,
    Float:d[3]
}
new playerData[MAX_PLAYERS][ePlayers];

new defaultPlayerInfo[ePlayers] = {
    0,
    0,
    {0.0, 0.0, 0.0},
};

//очистка
playerData[5] = defaultPlayerInfo;
Несколько не то, тут при добавлении новой переменной в enum, придется добавлять ее и в defaulPlayerInfo.
А мне нужно чтобы было одной функцией, что то вроде этого:
playerdata[5][ePlayers] = 0;

или:

playerdata[5][5] = 0; // на крайняк


Re: Очистка всего enum - Stepashka - 20.12.2013

Только так как я показал и никак иначе.
А пропустить изменение defaulPlayerInfo вы не сможете, при компиляции будет ошибка.
Да и вообще как-то странно, enum значит меняешь, пишешь код для новой ячейки, а добавить пару символов в массив для тебя тяжело?!


Re: Очистка всего enum - wh0am1 - 20.12.2013

PHP код:
stock memset aArray[], iValueiSize sizeof aArray ) )
{
    new 
iAddress
    
#emit LOAD.S.pri 12
    #emit STOR.S.pri iAddress 
    
iSize *= 4
    while ( 
iSize )
    {
        if (
iSize >= 4096)
        {
            
#emit LOAD.S.alt iAddress 
            #emit LOAD.S.pri iValue
            #emit FILL 4096
            
iSize -= 4096;
            
iAddress += 4096;
        }
        else if ( 
iSize >= 1024 )
        {
            
#emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 1024
            
iSize -= 1024;
            
iAddress += 1024;
        }
        else if ( 
iSize >= 256 )
        {
            
#emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 256
            
iSize -= 256;
            
iAddress += 256;
        }
        else if ( 
iSize >= 64 )
        {
            
#emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 64
            
iSize -= 64;
            
iAddress += 64;
        }
        else if ( 
iSize >= 16 )
        {
            
#emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 16
            
iSize -= 16;
            
iAddress += 16;
        }
        else
        {
            
#emit LOAD.S.alt iAddress
            #emit LOAD.S.pri iValue
            #emit FILL 4
            
iSize -= 4;
            
iAddress += 4;
        }
    }
    
#pragma unused aArray

Использование
PHP код:
enum _player {
         var
}
new 
PLAYER MAX_PLAYERS ] [ _player ] ;

//

memset PLAYER playerid ], 0_:_player ) ; 
Взята с этого форума, автор не помню кто.


Re: Очистка всего enum - Mutha_X - 20.12.2013

омайгод, с такими костылями и пожеланиями лучше в си* перейти.
Кстати, для "с этого форума, автор не помню кто" есть такая вещь как "Поиск", и автор там Oscar Broman (Slice).