Вот код с обычным перебором всё кашерно:
А с оптимизированным перебором вот такой шлак лезет:
Это что нужно инклуд под себя штопать или как поступать?PHP код:
[debug] Accessing element at index 2001 past array upper bound 2000
Вид для печати
Можно добавить подобную функцию для удаления транспорта внутри цикла.
PHP код:
stock DestroyVehicleSafe(&vehicleid)
{
Iter_SafeRemove(Vehicle, vehicleid, vehicleid);
return DestroyVehicle(vehicleid);
}
у меня почему-то не работает, подключил foreach, потом этот инклуд, создал 1 тс на сервере. попытался зареспавнить через форич, 0 эффекта
P.S. y_iterate не подключен. Подключен только форич от Y_Less
Сначала сам перехватил все функции связанные с тс и поработал с итераторами, мой код выглядело почти так же как ваш, но там тоже ничего не работало. Потом нашел ваш инклуд, но эффект тот же, может я что-то не так делаю?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
P.S. Исправил, перехватил все функции заново и добавил итераторы
Не очень правильно изменять параметры функции в перехвате. Но да, можно заменить стандартную DestroyVehicle при условии, что этот перехват будет первым. Тогда код будет выглядеть примерно так:
PHP код:
#if defined _ALS_DestroyVehicle
#error Include dc_foreach_veh.inc higher
#endif
stock dc_veh_iter__DestroyVehicle(&vehicleid)
{
Iter_SafeRemove(Vehicle, vehicleid, vehicleid);
return DestroyVehicle(vehicleid);
}
#if defined _ALS_DestroyVehicle
#undef DestroyVehicle
#else
#define _ALS_DestroyVehicle
#endif
#define DestroyVehicle(%0) dc_veh_iter__DestroyVehicle(%0)
да у меня так и есть, этот перехват идет первым, но чуть чуть по другому