PDA

Просмотр полной версии : [Вопрос] fatal error 102: table overflow: "staging buffer"



Josan_Solomon
11.11.2018, 02:20
Hello, World! Распределил я, значит, в samp map construction кучу автомобилей (91, если быть точным), и теперь нужно скопировать в мод.
В глобальных переменных new cars[91];
В OnGameModeInit

cars = {
CreateDynamicVehicle (...) , //пробовал вместо запятой ";", не помогает
// тут еще 90 таких Create'ов
};

Выскакивает ошибка fatal error 102: table overflow: "staging buffer". Писать по одному cars[0], cars[1] и тд 91 раз ну сооовсем неохота. Не знаете, как можно это половче провернуть? У меня еще часто будут такие скопления машин, поэтому писать по одному - не вариант (не, вариант, конечно, но вы же понимаете, лень - двигатель прогресса). Читал похожие темы на этом и других форумах, решения не нашел, только компромисс

Josan_Solomon
11.11.2018, 03:13
решил добавлением переменной и копипастом cars[i++], но тоже не то

Daniel_Cortez
12.11.2018, 00:09
fatal error 102: table overflow: "staging buffer"
Эта ошибка возникает, когда в выражении слишком много кода (а инициализация массива как раз и является одним целым выражением). Обычно нужно здорово постараться, чтобы такую ошибку получить, и ваш случай - не исключение: можно было просто сохранить данные по созданию машин (координаты, поворот, цвет) в константном массиве и с помощью этих данных в цикле создать машины и проинициализировать массив cars.

enum eVehicleInfo
{
vModel, // ID модели
Float:vX, // X
Float:vY, // Y
Float:vZ, // Z
Float:vA, // угол поворота (Angle)
vColor1, // цвет #1
vColor2 // цвет #2
};

new const vehicle_info[91][eVehicleInfo] =
{
// ID модели, координаты спавна, угол поворота и цвета,
// указываемые в CreateDynamicVehicle()
{ 1000.0, 1000.0, 20.0, 0.0, 1, 1 },
// ...
};
new cars[sizeof(vehicle_info)];


for (new i = 0; i < sizeof(vehicle_info); ++i)
cars[i] = CreateDynamicVehicle(vehicle_info[i][vModel], /* ... */);

Josan_Solomon
12.11.2018, 20:18
Да, я стараюсь по мере возможности делать так, но беда в том что машины я расставлял в редакторе карт, который дал мне код из десятков строк CreateVehicle. Все-таки пришлось написать быдлокод из десятков присваиваний значений ячейкам массива :/ Большое спасибо за ответ, учту на будущее. Тему можно закрыть

Daniel_Cortez
12.11.2018, 22:15
Да, я стараюсь по мере возможности делать так, но беда в том что машины я расставлял в редакторе карт, который дал мне код из десятков строк CreateVehicle. Все-таки пришлось написать быдлокод из десятков присваиваний значений ячейкам массива :/ Большое спасибо за ответ, учту на будущее. Тему можно закрыть
Так можно же просто вставить кусок кода со всеми CreateDynamicVehicle в какой-нибудь текстовый редактор и пройтись автозаменой:
"CreateDynamicVehicle(" => "{ "
");" => " },"

Ок, закрываю тему.