Готика 2: Другая история Gothic II: Other Story - Описание мода
  • 11.465
  • 54
Готика 2: Другая история / Other Story - это глобальная модификация для игры «Готика 2: Ночь Ворона». Её цель - сделать игру более нелинейной, с большим количеством вариантов выбора и...
Новости Старт 6го сезона Grim League
  • 2.296
  • 1
4 мая в 18-00 стартует шестой сезон Community лиги по одной из лучших игр в жанре arpg Grim Dawn. Сезон представляет собой глобальную модификацию игры, включающую в себя расширение мира, изменение...
Новости Дата релиза Baldur's Gate III
  • 21.379
  • 1
Наконец-то дождались - "Baldur's Gate III" покидает ранний доступ, и в августе 2023 выходит в полноценный релиз, о чём стало известно на церемонии "The Game Awards 2022". С момента выхода игры в...
Новости Итоги года от The Game Awards 2022
  • 15.114
  • 0
Вчера прошла ежегодная церемония награждения проектов в индустрии компьютерных игр и киберспорта. Самую главную награда - "Игра года" забрала игра "Elden Ring" от японских разработчиков...

Дискуссия Разработка AST (скриптового расширителя)

Автор
Автор
Saturas

Saturas

Наемник
Модостроитель
Участник форума
Регистрация
21 Апр 2011
Сообщения
817
Реакции
289
Баллы
195
Лучшие ответы
0
#51
Сложно сказать, код там не особо простой у меня уйдет несколько недель чтобы его прочитать/осознать, пока первостепенная задача и цель это V3.15 которая будет брать дополнительные функции из файла.
 

RainbowUnicorn

Рыцарь
Участник форума
Регистрация
12 Ноя 2013
Сообщения
2.271
Реакции
994
Баллы
346
Лучшие ответы
1
#52
Есть два вопроса:
1)Возможно ли сделать функцию, которая будет при старте каждой новой игры\загрузке рандомить все комбинации сундуков?(про опцию в инишнике знаю, но ее принудительно не поставить)
2)Можно ли кратко огласить список новых функций, чтобы можно было как-то уже идеи корректировать, исходя из возможностей? ce
 
Последнее редактирование модератором:
Автор
Автор
Saturas

Saturas

Наемник
Модостроитель
Участник форума
Регистрация
21 Апр 2011
Сообщения
817
Реакции
289
Баллы
195
Лучшие ответы
0
#53
Начал вести список функций.
По первому вопросу - все в ваших руках, функции добавления предмета в сундук есть, удаления теперь тоже есть, а так же функция изменения комбинации, дело за малым. Хотя наверное будет какаянибудь простенькая функция которая будет сама рандомить все предметы/комбинации на сундуках



//-------------------Функции работы с предметами и инвентарем

//Возвращает ссылку на предмет, принадлежащему к типу 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) и проверятся на совпадение имени материала модели, и материала из списка, и если имена равны (==) то в модель будет загружен материал из внешнего списка
 
Последнее редактирование модератором:

RainbowUnicorn

Рыцарь
Участник форума
Регистрация
12 Ноя 2013
Сообщения
2.271
Реакции
994
Баллы
346
Лучшие ответы
1
#54
В общем, такая идея: сделать аналог бартерной торговли.
В функцию вводится:
Валюта(те предметы, за которые у продавца покупаем предметы, если ничего не введено - используется золото)
Предметы, интересующие торговца(Только эти предметы будет брать торговец за 50% стоимости, платит введенной валютой)
Множитель цены

Пример:
Василий, в качестве валюты используем старинные монеты, множитель цены - 0.1, интересующие предметы - нет(ничего нельзя продать).
К примеру он продает книгу, цена которой 1000 золотых, множитель 0.1, цена будет 100 старинных монет.
На этой же функции можно сделать ручную продажу охотничьих трофеев, мечей гараду и т.п., ручная продажа тут более удобна как для игроков, так и для мододелов: игрокам не нужно нужные ему предметы скидывать на землю перед продажей, мододелам меньше писать и не возникнет таких моментов, когда будет давать деньги и не забирать предмет и т.п.

Насколько реально такое сделать и будет ли сделано? ce
 
Автор
Автор
Saturas

Saturas

Наемник
Модостроитель
Участник форума
Регистрация
21 Апр 2011
Сообщения
817
Реакции
289
Баллы
195
Лучшие ответы
0
#55
Приведи пример как оно должно выглядеть в коде.
 

Dimmell

Наемник
Модостроитель
Участник форума
Регистрация
8 Янв 2013
Сообщения
752
Реакции
398
Баллы
164
Лучшие ответы
0
#56
Расширитель еще дышит или уже остыл?
 

Yelawolf

Живая легенда
Модостроитель
Почётный пользователь
Участник форума
Регистрация
29 Янв 2012
Сообщения
6.785
Реакции
2.187
Баллы
661
Лучшие ответы
2
#57
Дышит и развивается qw
 

Ziptar

Наемник
Участник форума
Регистрация
19 Окт 2013
Сообщения
572
Реакции
81
Баллы
75
Лучшие ответы
0
#58
Последнее редактирование модератором:
Автор
Автор
Saturas

Saturas

Наемник
Модостроитель
Участник форума
Регистрация
21 Апр 2011
Сообщения
817
Реакции
289
Баллы
195
Лучшие ответы
0
#59
Расширитель еще дышит или уже остыл?
Ну, он мне интересен, по этому дышит, и еще как, надоест не ранее чем после 5-6 оф релиза, вобщем еще года 2 будет активное развитие.
 

Dimmell

Наемник
Модостроитель
Участник форума
Регистрация
8 Янв 2013
Сообщения
752
Реакции
398
Баллы
164
Лучшие ответы
0
#60
Сверху Снизу