Просмотр полной версии : [Вопрос] Ругается на массив..
Доброго времени суток всем. Делаю система тюнинга (загрузку при входе), и тут возникла нейкая ошибка:
(113) : error 001: expected token: "}", but found "["
(5809) : error 001: expected token: ")", but found "["
(5809) : error 029: invalid expression, assumed zero
(5809) : warning 215: expression has no effect
(5809) : error 001: expected token: ";", but found "]"
(5809) : fatal error 107: too many error messages on one line
Код:
enum playercar
{
carModel[5],
carPercent[5],
carColor1[5],
carColor2[5],
carComponent[5][14] // 113
}
new CarPlayerInfo[MAX_PLAYERS][playercar];
Там где [5] это слоты для машин (0 - первая машина ... 4 - пятая машина)
Там где [14] в carComponent, это слоты для тюнинга
stock LoadTuning(playerid, vehicleid, slotcar)
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][slotcar][i] != 0) // 5809
AddVehicleComponent(vehicleid, CarPlayerInfo[playerid][carComponent][slotcar][i]);
}
}
vasyok28
22.04.2017, 15:55
В энум нельзя засунуть двумерный массив
В энум нельзя засунуть двумерный массив
Да, спасибо уже нашел на другом портале). Ладно, распишу так..
Да, спасибо уже нашел на другом портале). Ладно, распишу так..
Лучше создать отдельный массив с компонентами, чем в одном enum писать carComponent1, carComponent2 и т.д..
Можно ещё создать Франкенштейна из двух enum
enum e_VEHICLE_COMPONENTS
{
Component_1[14],
Component_2[14],
Component_3[14],
Component_4[14],
Component_5[14]
};
enum playercar
{
carModel[5],
carPercent[5],
carColor1[5],
carColor2[5],
carComponent[e_VEHICLE_COMPONENTS] // 113
};
new CarPlayerInfo[MAX_PLAYERS][playercar];
И использовать так
CarPlayerInfo[0][carComponent][Component_1][1] = 5;
Но ко второму enum не получится обращаться через параметр функции. Придётся делать вот так:
stock LoadTuning(playerid, vehicleid, e_VEHICLE_COMPONENTS:slotcar)
{
switch(slotcar)
{
case Component_1:
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][Component_1][i] != 0) // 5809
{}
}
}
case Component_2:
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][Component_2][i] != 0) // 5809
{}
}
}
//...
}
}
Можно ещё создать Франкенштейна из двух enum
enum e_VEHICLE_COMPONENTS
{
Component_1[14],
Component_2[14],
Component_3[14],
Component_4[14],
Component_5[14]
};
enum playercar
{
carModel[5],
carPercent[5],
carColor1[5],
carColor2[5],
carComponent[e_VEHICLE_COMPONENTS] // 113
};
new CarPlayerInfo[MAX_PLAYERS][playercar];
И использовать так
CarPlayerInfo[0][carComponent][Component_1][1] = 5;
Но ко второму enum не получится обращаться через параметр функции. Придётся делать вот так:
stock LoadTuning(playerid, vehicleid, e_VEHICLE_COMPONENTS:slotcar)
{
switch(slotcar)
{
case Component_1:
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][Component_1][i] != 0) // 5809
{}
}
}
case Component_2:
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][Component_2][i] != 0) // 5809
{}
}
}
//...
}
}
Спасибо за совет, так и сделал, но когда в LoadTuning передаю слот, ругается.. Делаю так:
LoadTuning(playerid, house_car[playerid][slotcar], slotcar);
Кидает ошибку:
warning 213: tag mismatch
Так вот я же писал про это, ну...
Но ко второму enum не получится обращаться через параметр функции. Придётся делать вот так:
stock LoadTuning(playerid, vehicleid, e_VEHICLE_COMPONENTS:slotcar)
{
switch(slotcar)
{
case Component_1:
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][Component_1][i] != 0) // 5809
{}
}
}
case Component_2:
{
for(new i; i < 14; i++)
{
if(CarPlayerInfo[playerid][carComponent][Component_2][i] != 0) // 5809
{}
}
}
//...
}
}
Не получится обращаться к второму enum как-то, кроме имён констант из этого enum. Ну или я чего-то не знаю
Так вот я же писал про это, ну...
Не получится обращаться к второму enum как-то, кроме имён констант из этого enum. Ну или я чего-то не знаю
Да, ты прав. Спасибо вдвойне. Заюзал твой вариант, проверил уже на сервере, все работает. Как минимум сократил этот "быдло" код:
enum player_car
{
...,
carComponent1[5],
carComponent2[5],
carComponent3[5],
carComponent4[5],
carComponent5[5],
carComponent6[5],
carComponent7[5],
carComponent8[5],
carComponent9[5],
carComponent10[5],
carComponent11[5],
carComponent12[5],
carComponent13[5],
carComponent14[5]
}
- - - Добавлено - - -
Тему можно закрыть
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot