Начал вести список функций.
По первому вопросу - все в ваших руках, функции добавления предмета в сундук есть, удаления теперь тоже есть, а так же функция изменения комбинации, дело за малым. Хотя наверное будет какаянибудь простенькая функция которая будет сама рандомить все предметы/комбинации на сундуках
//-------------------Функции работы с предметами и инвентарем
//Возвращает ссылку на предмет, принадлежащему к типу instanceName.
func instance Hlp_GetItem(
var int instanceName);
//-------------------Функции работы с миром
//Запускает смену уровня(мира) из текущего в world на точку point (аналогичная триггеру смены уровня в спейсере)
func string Wld_ChangeLevel(
var string world,
var string point );
//Практически полный аналог функции Wld_PlayEffect, только воспроизводит эффект с любого визуального объекта в мире
func void Wld_PlayEffectVob(
var string nameVfx,
var string OriginVobName,
var string TargetVobName,
var int EffectLevel,
var int Damage,
var int DamageType,
var int IsProjectile);
//-------------------Функции работы с моделями
//Изменяет скорость (FPS) анимации NPC с именем aniName
func void Mdl_SetAniFps(
var c_npc npc,
var string aniName,
var float fps);
//Включить/выключить отображение модели NPC (1/0)
func void Mdl_ShowVisual(
var c_npc npc,
var int bShow);
//-------------------Функции работы с НПС
//Экипировать NPC предметом с ID itemInstance. Работает корректно, как во время загрузки мира, так и в процессе игры.
func void Ext_EquipItem(
var c_npc npc,
var int itemInstance);
//Возвращает ссылку на на NPC (если он есть) в фокусе self
func instance GetFocusNpc(
var c_npc self);
//Возвращает одну из строк режима ходьбы
func string GetWalkModestring(
var c_npc npc);
//Возвращает имя визуального объекта в фокусе
func string Npc_GetFocusVobName(
var c_npc npc);
//Объявить NPC игроком
func void Npc_SetAsPlayer(
var c_npc npc);
//Возвращает 1 если анимация aniName активна, 0 если нет
func int Npc_IsAnimationActive(
var c_npc npc,
var string aniName);
//-------------------Функции работы с объектами
//Возвращает количество символов в строке "кода" замка объекта mobName
func int Mob_GetNum(
var string mobName);
//Закрыть/открыть объект mobName (1/0)
func void Mob_SetLocked(
var string mobName,
var int bLock);
//Установить инстанцию ключа для замка mobName
func void Mob_SetKeyInstance(
var string mobName,
var string instancestring);
//Установить "код" вида LRLR на замок mobName
func void Mob_SetPickLockStr(
var string mobName,
var string str);
//Удалить предмет instanceName из контейнера mobName в количестве amount
func void Mob_RemoveItem(
var string mobName,
var int instanceName,
var int amount);
//Нанести урон (свойству tHitpoint s
объекту который использует ГГ
//В случае если урона нанесено больше или равно количеству "здоровья" объекта, объект разрушается проигрывая визуальный эффект PFX_MOBDESTROY, и визуализация меняется на visualDestroyed (также задается в спейсере)
//В случае если разрушен сундук, из него выпадут все предметы.
func void Mob_ApplyDamage (
var int hp);
Еще несколько функций, остальные будут выкладываться по мере тестов.
//Открывает инвертарь другого NPC для карманной кражи
//Шанс кражи обратно зависим от навыка NPC_TALENT_PICKPOCKET (номер навыка должен быть изменен с 12, на 6)
func void OpenSteal();
//Аналог функции PrintScreen(...), с одним изменением - можно менять цвет текста
//Цвет задается число от 0 до 40 (список цветов будет выложен позже)
func int PrintText(var string text, var int x, var int y, var string font, var int timeSec, var int color);
//NPC кастует заклинание с номером spellid
func int AI_CastSpell(var c_npc,var int spellid);
//Возвращает статус топика topicName
func int Log_GetTopicStatus(var string topicName);
По многочисленным просьбам добавил функцию рандоминга комбинаций сундуков
//Задает случайную комбинацию всех объектов класса oCMobContainer в мире
//Можно использовать как во время игры, так и во время загрузки (секция Init_XXX)
func void Mob_ScrambleContainers();
Добавлен новый функционал в игру, теперь при компиляции моделей игрой (.MRM/.MDL/.MDM/.MMC) на этапе сохранения модели, будут загружаться списки материалов из папки _work/tools/data (список берется из файла MatLib.ini) и проверятся на совпадение имени материала модели, и материала из списка, и если имена равны (==) то в модель будет загружен материал из внешнего списка