Оптимизация
#1

Здравствуйте! решил немного оптимизировать игровой мод,к примеру транспорт

какой метод лучше всего выбрать?


первый
PHP код:
new mashina[10];
if(
newcar >= mashina[0] && newcar <= mashina[9])
{
    if(
blabla(playerid)) return SCM(playeridCOLOR_GREY"error");
    
RemovePlayerFromVehicleAc(playerid);
}
mashina[0] = AddStaticVehicleEx(--------); 
mashina[1] = AddStaticVehicleEx(--------); 
mashina[2] = AddStaticVehicleEx(--------);
mashina[3] = AddStaticVehicleEx(--------);
mashina[4] = AddStaticVehicleEx(--------);
mashina[5] = AddStaticVehicleEx(--------);
mashina[6] = AddStaticVehicleEx(--------);
mashina[7] = AddStaticVehicleEx(--------);
mashina[8] = AddStaticVehicleEx(--------);
mashina[9] = AddStaticVehicleEx(--------); 
второй
PHP код:
new mashina[2];
if(
newcar >= mashina[0] && newcar <= mashina[1])
{
    if(
blabla(playerid)) return SCM(playeridCOLOR_GREY"error");
    
RemovePlayerFromVehicleAc(playerid);
}
mashina[0] = AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
AddStaticVehicleEx(--------);
mashina[1] = AddStaticVehicleEx(--------); 
Экономим ячейки,что происходит можете описать?
Reply
#2

А оптимизация где? Вы сэкономили аж целых 8 байт оперативной памяти. Зачем?
Reply
#3

Quote:
Originally Posted by eakwarp
Посмотреть сообщение
А оптимизация где? Вы сэкономили аж целых 8 байт оперативной памяти. Зачем?
Не 8 байт, а 8 ячеек, что равно 64 байтам, но суть не в этом.

Оба способа плохие, ибо ID транспорта не обязательно идут по порядку. Лучше это реализовать как-то так:
PHP код:
enum e_MASHINA_INFO {
    
e_mModel,
    
Float:e_mCoordX,
    
Float:e_mCoordY,
    
Float:e_mCoordZ,
    
e_mColor1,
    
e_mColor2,
    
e_mTime,
    
e_mID,
}
new 
gMashinas[][e_MASHINA_INFO] = {
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------},
    {--------}
};
stock IsPlayerInMashina(playerid)
{
    new 
vehicleid GetPlayerVehicleID(playerid);
    for (new 
isizeof(gCars); i++) {
        if (
vehicleid == gMashinas[i][e_mID]) {
            return 
1;
        }
    }
    return 
0;
}
for (new 
isizeof(gCars); i++) {
    
gMashinas[i][e_mID] = AddStaticVehicleEx(gMashinas[i][e_mModel],
                                             
gMashinas[i][e_mCoordX],
                                             
gMashinas[i][e_mCoordY],
                                             
gMashinas[i][e_mCoordZ],
                                             
gMashinas[i][e_mColor1],
                                             
gMashinas[i][e_mColor2],
                                             
gMashinas[i][e_mTime]);

Этот способ гарантирует то, что в обработку не попадёт лишний транспорт.
Reply
#4

Quote:
Originally Posted by eakwarp
Посмотреть сообщение
А оптимизация где? Вы сэкономили аж целых 8 байт оперативной памяти. Зачем?
Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Не 8 байт, а 8 ячеек, что равно 64 байтам, но суть не в этом.

Этот способ гарантирует то, что в обработку не попадёт лишний транспорт.
Спасибо за советы
Reply
#5

Первый годный вариант, но при увеличении машин нужно увеличивать переменную, второй вариант лишён этой проблемы, но бывают "проскакивания", поэтому вариант Зиги вполне себе. Ах да, в этом варианте ещё можно сделать получение цвета тачек, что нельзя сделать в других.
Reply
#6

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Первый годный вариант, но при увеличении машин нужно увеличивать переменную, второй вариант лишён этой проблемы, но бывают "проскакивания", поэтому вариант Зиги вполне себе. Ах да, в этом варианте ещё можно сделать получение цвета тачек, что нельзя сделать в других.
спасибо за совет
Reply


Forum Jump:


Users browsing this thread: