• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Как можно оптимизировать цикл?

Статус
В этой теме нельзя размещать новые ответы.

NeverBoring

Умник
Здравствуйте. Имеется код данный ниже:
PHP:
hook OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
{
    if( PRESSED( KEY_WALK ) )
    {
        if( GetPVarInt( playerid, !"Player:Freeze" ) )
            return 1;

        for( new i; i < sizeof EnterInfo; i++ ) {
            if( IsPlayerInRangeOfPoint( playerid, 2.0, EnterInfo[i][eP][0], EnterInfo[i][eP][1], EnterInfo[i][eP][2] ) ) {
                if( EnterInfo[i][eMember] != 0 && EnterInfo[i][eMember] != Player[playerid][uMember] )
                    continue;

                SetPlayerPos( playerid, EnterInfo[i][ePe][0], EnterInfo[i][ePe][1], EnterInfo[i][ePe][2] );
                SetPlayerInterior( playerid, EnterInfo[i][eInt][0] );
                SetPlayerVirtualWorld( playerid, EnterInfo[i][eInt][1] );

                SetPVarInt( playerid, !"Player:Freeze", 1 );
                TogglePlayerControllable( playerid, 0 );
                SetTimerEx( !"_fixControlable", 2000, 0, "i", playerid );
                break;
            }
            else if( IsPlayerInRangeOfPoint( playerid, 2.0, EnterInfo[i][ePe][0], EnterInfo[i][ePe][1], EnterInfo[i][ePe][2] ) && GetPlayerVirtualWorld( playerid ) == EnterInfo[i][eInt][1] ) {
                   
                if( EnterInfo[i][eMember] != 0 && EnterInfo[i][eMember] != Player[playerid][uMember] )
                    continue;

                SetPlayerPos( playerid, EnterInfo[i][eP][0], EnterInfo[i][eP][1], EnterInfo[i][eP][2] );
                SetPlayerInterior( playerid, EnterInfo[i][exInt][0] );
                SetPlayerVirtualWorld( playerid, EnterInfo[i][exInt][1] );

                SetPVarInt( playerid, !"Player:Freeze", 1 );
                TogglePlayerControllable( playerid, 0 );
                SetTimerEx( !"_fixControlable", 2000, 0, "i", playerid );
            }
        }
    }
    return true;
}
Где-то слышал что лучше не использовать цикл подобным образом. Хотел бы попросить совета, как можно оптимизировать этот код.
P.S. Это отрывок кода с системы динамических входов/выходов в интерьеры.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу