Jack_Stone, если нужно перезагрузить все предметы после начала игры, то проще всего это делается таким образом:
1. Создаёшь новое свойство в CItem:
Код
50 BOOL m_bReloaded = FALSE,
2. Заходишь в процедуру ItemLoop этого класса и делаешь реинициализацию предмета после autowait(0.1f) строки:
Код
if (!m_bReloaded) {
m_bReloaded = TRUE;
Reinitialize();
return;
}
Это пересоздаст все предметы на месте после начала симуляции с новыми моделями и прочим.
Если не нужно это делать для каждого предмета, а только, например, для CWeaponItem, то можно перенести свойство непосредственно в этот класс (но необязательно), а реинициализацию проводить в функции AdjustDifficulty() (если её ещё нет в CWeaponItem, то нужно её добавить по аналогии с CAmmoItem):
Код
void AdjustDifficulty(void) {
if (!m_bReloaded) {
m_bReloaded = TRUE;
Reinitialize();
}
};
Так же, при желании, можно изменить тип оружия по загрузке уровня, изменив его тип перед вызовом Reinitialize(), например:
Код
m_EwitType = WIT_SNIPER; // Only sniper rifles
Или используя настройки в CSessionProperties для замены оружия по типу.