По битовому сдвигу
#1

Добрый день, уважаемые посетители sa-mp.com!
PHP код:
enum
{
    
GANG_ID_BALLAS// = 0
    
GANG_ID_VAGOS,
    
GANG_ID_GROVE,    
    
GANG_ID_AZTECAS,
    
GANG_ID_RIFA,
    
__LAST_GANG_ID // = 5, значение будет использовано далее
}
enum(+=2)
{
    
REL_SHIFT_BALLAS,    // биты 0-1
    
REL_SHIFT_VAGOS,    // = 2, биты 2-3
    
REL_SHIFT_GROVE,    // = 4, биты 4-5
    
REL_SHIFT_AZTECAS,    // ...
    
REL_SHIFT_RIFA        // ... 8-9
};
enum
{
    
GANG_REL_NEGATIVE,
    
GANG_REL_NEUTRAL,
    
GANG_REL_POSITIVE
}; 
PHP код:
new gang_relationships[__LAST_GANG_ID]; 
PHP код:
const GANG_REL_MASK 0b11111111_11111111_11111111_11111100
PHP код:
case 11103:                               //Rifa
{
    if(!
response) return 0;                                 //Ballas
    
if(PlayerInfo[playerid][p_leaders] == 12)
    {
        if(
ismysqlnull(inputtext))
            return 
SPD(playerid11103DIALOG_STYLE_INPUT"   ","С какой бандой вы желаете заключить союз\n\nRifa\n\
                                                                                                    Grove\n\
                                                                                                    Aztec\n\
                                                                                                    Vagos"
"Ок""Отмена");
    }
    if(
PlayerInfo[playerid][p_leaders] == 13)
    {
        if(
ismysqlnull(inputtext))
            return 
SPD(playerid11103DIALOG_STYLE_INPUT"   ","С какой бандой вы желаете заключить союз\n\nRifa\n\
                                                                                                    Grove\n\
                                                                                                    Ballas\n\
                                                                                                    Aztec"
"Ок""Отмена");
    }
                                      
//Grove
    
if(PlayerInfo[playerid][p_leaders] == 15)
    {
        if(
ismysqlnull(inputtext))
            return 
SPD(playerid11103DIALOG_STYLE_INPUT"   ","С какой бандой вы желаете заключить союз\n\nRifa\n\
                                                                                                    Aztec\n\
                                                                                                    Ballas\n\
                                                                                                    Vagos"
"Ок""Отмена");
    }
                                      
//Aztec
    
if(PlayerInfo[playerid][p_leaders] == 17)
    {
        if(
ismysqlnull(inputtext))
            return 
SPD(playerid11103DIALOG_STYLE_INPUT"   ","С какой бандой вы желаете заключить союз\n\nRifa\n\
                                                                                                    Grove\n\
                                                                                                    Ballas\n\
                                                                                                    Vagos"
"Ок""Отмена");
    }
                                      
//Rifa
    
if(PlayerInfo[playerid][p_leaders] == 18)
    {
        if(
ismysqlnull(inputtext))
            return 
SPD(playerid11103DIALOG_STYLE_INPUT"   ","С какой бандой вы желаете заключить союз\n\nAztec\n\
                                                                                                    Grove\n\
                                                                                                    Ballas\n\
                                                                                                    Vagos"
"Ок""Отмена");
    }
    if( 
PlayerInfo[playerid][p_leaders] == 12 ||
        
PlayerInfo[playerid][p_leaders] == 13 ||
        
PlayerInfo[playerid][p_leaders] == 15 ||
        
PlayerInfo[playerid][p_leaders] == 17 ||
        
PlayerInfo[playerid][p_leaders] == 18)
    {
        new
            
string_band_union[46],
            
my_orgazantion[8];
        switch(
PlayerInfo[playerid][p_members])
        {
            case 
12my_orgazantion "ballas";
            case 
13my_orgazantion "vagos";
            case 
15my_orgazantion "grove";
            case 
17my_orgazantion "aztecas";
            case 
18my_orgazantion "rifa";
        }
        for(new 
interator_name_bandinterator_name_band sizeof(name_diplamation); interator_name_band ++)
        {
            
printf("inputtext: %s | name_diplamation[interator_name_band][e_Name]: %s"inputtextname_diplamation[interator_name_band][e_Name]);
            if(
strcmp(inputtextname_diplamation[interator_name_band][e_Name], false) != 0)
            {
                print(
"1) Работает");
                continue;
            }
            print(
"2) Работает");
            new 
i_gang_id GetGangID(name_diplamation[interator_name_band][e_Value]);
            new 
player_gang_id GetGangID(PlayerInfo[playerid][p_members]);
            
// ID другой банды  - в переменной i
            
new shift_val i_gang_id i_gang_id;
            
gang_relationships[player_gang_id] &= GANG_REL_MASK << shift_val;
            
gang_relationships[player_gang_id] |= GANG_REL_POSITIVE << shift_val;
            
shift_val player_gang_id player_gang_id;
            
gang_relationships[i_gang_id] &= GANG_REL_MASK << shift_val;
            
gang_relationships[i_gang_id] |= GANG_REL_POSITIVE << shift_val;
            print(
"3) Работает");
            
//sting_debbag[0] = EOS;
            
//                      strcat(save_union_band_one_to_array[playerid], name_band_for_diplamation[interator_name_band]);
//                    strcat(save_union_band_two_to_array[playerid], my_orgazantion);
            
//                    format(sting_debbag, sizeof(sting_debbag), "Cоюз | После | SetPVarString | name_band_one: %s | name_band_two: %s", save_union_band_one_to_array[playerid], save_union_band_two_to_array[playerid]);
            //SendClientMessageToAll(-1, sting_debbag);
            
SPD(playerid,22201,DIALOG_STYLE_INPUT,"   ","Введите в поле ID Лидера Банды","Ок","Отмена");
            
format(string_band_unionsizeof(string_band_union), "Вы предложили союз банде %s"name_diplamation[interator_name_band][e_Name]);
            
SendClientMessage(playeridCOLOR_NEWSstring_band_union);
            print(
"4) Работает");
        }
    }

PHP код:
GetGangID(family_id)
{
    switch(
family_id)
    {
        case 
12:
            return 
GANG_ID_BALLAS;
        case 
13:
            return 
GANG_ID_VAGOS;
        case 
17:
            return 
GANG_ID_AZTECAS;
        case 
18:
            return 
GANG_ID_RIFA;
    }
    return -
1;

PHP код:
if(strcmp(cmd"/debbuging"true) == 0)
{
    new 
string_debbag[30];
    
format(string_debbagsizeof(string_debbag), "%d | %d | %d | %d"gang_relationships[GANG_ID_AZTECAS],
                                                                 
gang_relationships[GANG_ID_VAGOS],
                                                                 
PlayerInfo[playerid][p_members],
                                                                 
PlayerInfo[playerid][p_leaders]);
    
SendClientMessageToAll(-1string_debbag);

Логи:
PHP код:
[17:20:50128 13 13 
И собственно сам вопрос: 8 и 128 бита это нормально?
Заранее спасибо!
Reply


Messages In This Thread
По битовому сдвигу - by kennydalglish - 03.07.2015, 22:27
Re: По битовому сдвигу - by po61 - 03.07.2015, 23:22
Re: По битовому сдвигу - by kennydalglish - 04.07.2015, 10:53
Re: По битовому сдвигу - by po61 - 04.07.2015, 12:35
Re: По битовому сдвигу - by kennydalglish - 04.07.2015, 12:56
Re: По битовому сдвигу - by kennydalglish - 09.07.2015, 19:12
Re: По битовому сдвигу - by kennydalglish - 23.07.2015, 22:06
Re: По битовому сдвигу - by kennydalglish - 27.07.2015, 18:20
Re: По битовому сдвигу - by kennydalglish - 06.08.2015, 20:50
Re: По битовому сдвигу - by Logofero - 06.08.2015, 22:21

Forum Jump:


Users browsing this thread: 1 Guest(s)