NeverBoring
Умник
Здравствуйте. Имеется код данный ниже:
Где-то слышал что лучше не использовать цикл подобным образом. Хотел бы попросить совета, как можно оптимизировать этот код.
P.S. Это отрывок кода с системы динамических входов/выходов в интерьеры.
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. Это отрывок кода с системы динамических входов/выходов в интерьеры.
