Перейти к содержанию

Сообщения от Скрипты

В ответ пользователю Gerter
Аватар пользователя
2 года назад
Gerter

Естественно так же придётся переносить прокачку, спеллы и артефакты от умершего героя на героя из резерва(офк, если это нужно по логике). Здания, типа шахт имеют тип AdvMapBuilding, их создавать не получится.

А можно сделать, чтобы артефакты оставались на месте "смерти" персонажа? К сожалению скелет подписан как AdvMapBuilding, то есть заспавнить его на месте смерти героя чтобы он изображал его труп (и хранил его артефакты - сам опыт и заклинания, как нематериальные объекты, переносятся с героем) -  нельзя. А объект с меткой сокровище (сундук) может быть заспавнен? Чтобы скажем сундук хранил артефакты персонажа (и их можно было забрать).  Другой вариант, что приходит в голову - взять объект статик (например какой-то фиолетовый кристал и настроить ему особые свойства (чтоб при касании герой получал свои вещи обратно)) - но это конечно если выйдет и не будет много возни... 

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

ЗЫ: По ходу возни с тайлами и объектами появилась странная вмятина на карте (в форме перевернутой призмы). Никакими терраформингами типа плато или любыми другими она не убирается. Даже если сделать горку, то эта вмятина в горе остается. Ни перекраской, ничем ее не убрать. Кто-то сталкивался?
Аватар пользователя
2 года назад
Можно создать артефакты с помощью функции CreateArtefact. Можно создать сундук через CreateTreasure(но эта функция не описана в стандарт списке в игре), повесить на него триггер касания и выдавать арты через функцию этого триггера.
В ответ пользователю Gerter
Аватар пользователя
2 года назад
Gerter
Можно создать артефакты с помощью функции CreateArtefact. Можно создать сундук через CreateTreasure(но эта функция не описана в стандарт списке в игре), повесить на него триггер касания и выдавать арты через функцию этого триггера.
 
А эти скрытые функции,  как CreateTreasure, их нет только в официальных мануалах, или в фанатских тоже? У того же Novik её не нашел. Где можно найти доку по таким функциям, которые не попали в мануалы, в файлах игры или может ещё где-то?
В ответ пользователю IchGViji
Аватар пользователя
2 года назад
IchGViji, в редакторе скриптов есть. Ctrl+Пробел, вводишь Create и там будет список возможных Create
В ответ пользователю Азгалор
Аватар пользователя
2 года назад
Азгалор
IchGViji, в редакторе скриптов есть. Ctrl+Пробел, вводишь Create и там будет список возможных Create

Спасибо, попробую)
Аватар пользователя
2 года назад
Здравствуйте. Вопрос по Реализации и вопросов несколько. Можно ли так сделать и если можно то каким образом будет более логично(т.е. при нескольких вариантах, чтоб меньше возьни).
-----
1) Респавн Существ/Ресурсов и Наград(артефакты/сундуки на карте). Т.е. это должна быть многоразовая функция, для обновления тех Существ и Наград которые были подобраны/уничтожены. В нашем случае Раз в игровой месяц.
2) Возврат Героев "Домой". Чтоб в т.ч. не конфликтовать с ресетом локации, Герои в конце месяца возвращаются к себе "домой". База на данной карте неприступна. Но использование обычного "портала в город" не поможет думаю, т.к. если героев у игрока несколько, они не смогут переместится на один город. В игре вроде есть "Регионы" (области для скриптов), но я с ними еще не работал.
3)Появление или изменение объектов на карте в определеный месяц, с последующим обновлением из пункта "1". (здесь у меня больше к реализации вопрос)
4)Квесты - это более широкая тема. Во первых я до сих пор не разобрался как их в принципе настроить, например в той же самой "хижине".
4-1)Можно ли реализовать Рандомизатор Квеста(т.е чтоб генерировался и предлагался только один из возможных Квестов.)
4-2)Обновление/Ресет Квестов. Т.е. чтоб тот-же Объект/Хижина, раз в месяц мог заново предлагать квесты(при этом если старый не выполнен, он провален и создается новый из пункта "4-1")
4-3)Разные типы квестов. Обычные-одноразовые, которые может выполнить лишь один игрок и один раз за этот месяц. И Многоразовые - более простые квесты, по типу - "принеси N ресурса/существ" которые можно выполнять неограниченное количество раз, пока Квест не обновится.
4-4)Все это должно работать в Мультиплеере, а Квесты быть одинаковые для всех игроков. В случае с одноразовыми, будут провалены если его уже выполнил другой игрок.
5)О скриптах в бою. Во первых можно ли настроить само поле боя и как оно будет выглядеть, в бою с конкретным противником или в определенной локации. Второе, как много интерактивных событий можно добавить в такого рода бой? (ну думаю что появление новых противников или каст существующих Заклинаний это далеко не предел?)
---- --- --
*Заранее спасибо всем кто прочитает и поделится полезной информацией!
*Список возможно будет еще дополнен, но это уже потом..
В ответ пользователю Azmadon
Аватар пользователя
2 года назад

Измаил,
1. Можно. Готовый спавнер существ есть в 3 миссии кампании за Фриду в аддона Владыки севера, называется CreateRebels(). Можешь её использовать, доработать под свои нужды. Я так уже сделал, совместно с Хоттабычем прописал спавнер существ по нужным мне точкам с их рандомным выбором и если они не заняты, так что думаю и у тебя получится сделать что-то такое же для переспавна существ, артефактов и ресурсов. Но вообще, для спавна существ разработчики уже реализовали рандомный генератор, который работает как недели существ, хотя как по мне лучше пользоваться таким "кастомным" спавнером чтобы была более гибкая настройка.

2. Делай рядом с городами какие-нибудь зоны на 8 клеток(или скок там максимум героев можно иметь у одного игрока?), накрывай их триггерами, ну скажем Player_1_save_zone, Player_2_save_zone и т.д., блокируй триггеры для всех игроков кроме тех для кого они предназначены, координаты всех этих 8-ми клеток из каждого триггера запиши в табличку, или через if/elseif. В том же скрипте который я упомянул в 1 ответе, в той же функции есть код с проверкой занята ли нужная нам клетка(ищи по упоминаниям badpos), можешь её использовать чтобы проверять на какую клетку ставить героев если одна из них уже занята(иначе героев может ставить друг на друга, а это не круто), ну или можно выбирать спавн в рандомной точке в области триггера, так же выставив условие что точка не должна быть уже занята. Ну а дальше по классике, пишем функцию которая будет их телепортить по этим точкам, проверяя заняты ли точки. Пропишем сразу условие что функция заработает только если наступил какой-то день, а потом внизу скрипта пропишем триггер NewDayTrigger, который и будет ежедневно пытаться запустить функцию. Если хочется, можно дописать рандомный выбор имеющихся координат, но как по мне в твоём случае это лишняя головная боль, пусть телепортятся на точки по списку. 

3. Насколько я помню, здания и баффы нельзя телепортировать, так что проще вешать SetObjectEnabled в false на нужные объекты до определенного срока, при касании вызывая сообщение типа "Мы закрыты до следующего месяца. Всего вам наихудшего, чтоб ваши легионы завалил 1 крестьянин!", а потом когда наступит нужное время, переключать на true и здание будет работать как обычно. Ну и так далее.

4. 
1) Да, конечно. Можно через if/elseif по условиям, или же путём рандома, но тогда лучше будет назвать квесты одинаково, просто пронумеровав их, например quest1, quest2 и т.д. Потом посчитать скок квестов, через рандом выдать один из них(поставив условие что квест не должен быть уже выдан или чет такое в этом духе) и всё.
2) В квестах строку CanUncomplete выставляешь в true и можешь их перевыдавать сколько влезет. Однако, проваленные квесты повторно выдать нельзя, так что если тебе нужно квест перевыдавать но фейлить, лучше его просто скрывать, выдавая сообщение со звуком проваленного задания что задание провалено.
3) Нуу, да. Такое можно делать, это базовая часть квестов. В пункте 2) я уже дал наводку на возможность выдавать квесты повторно сколько угодно раз, если только они не провалены.
4) Не знаю будет ли это работать в мультиплеере, я не пользуюсь мультиплеером и не знаю что там и как работает. Но опять же, проваленные квесты повторно выдать не получится, так что возможный вариант обхода этой системы я предложил в ранее упомянутом пункте 2)

5. Всё что видишь в пользовательских картах с боевыми скриптами - это максимум что там можно выжать. Боевые скрипты довольно кастрированная часть игры, тут особо не разгуляешься. Управлять существами, героями, заставлять их играть анимации, кастовать заклинания, проигрывать или побеждать, спавнить существ какой-то из сторон и выдавать сообщения - это всё что можно сделать в боевом скрипте.

2 года назад
Доброе утро. Добавил свою иконку в TalkBoxForPlayers(GetPlayerFilter(i), Icons.."Podkreplenie128x128.(Texture).xdb#xpointer(/Texture)"

Не отображается, просто белая. Не могу понять почему. В начале думал ошибся с путем файла, оказалось нет. Подумал, может, формат файла (xdb) не нужно развернуто писать как при добавлении подобной иконки с data, например sorrow. Попробовал просто xdb и xdb#xpointer. Не помогло. С настройками xdb файла тоже не ошибся. В чем же может быть проблема?
Вложения 2
2 файл(ов) • Общий размер: 21,3 KB
Аватар пользователя
2 года назад
Здравствуйте! Если отмести вариант сломанного файла окна Icon.xdb, то у вас всё-таки неправильный путь к текстуре. Можете написать, что выводит print(Icons.."Podkreplenie.(Texture).xdb#xpointer(/Texture)") и попробовать указать абсолютный путь?
В ответ пользователю }{0TT@6bI4
2 года назад
}{0TT@6bI4
Здравствуйте! Если отмести вариант сломанного файла окна Icon.xdb, то у вас всё-таки неправильный путь к текстуре. Можете написать, что выводит print(Icons.."Podkreplenie.(Texture).xdb#xpointer(/Texture)") и попробовать указать абсолютный путь?

Я же правильно понял, что вы имели ввиду, что мой файл с иконкой сломан, а не что-то другое?
Не знаю, насколько это доказательство несломанного файла, но после того, как я переписал путь пару раз, попробовал поместить файл как иконку персонажа. Как иконка 128х128 - работает. Насчет пути, пробовал просто написать полный путь, не получилось. "Maps/Multiplayer/JoyPatriot/Portret/Icons/Podkreplenie128x128.(Texture).xdb#xpointer(/Texture)"

А вот так у меня прописан путь в Icons = GetMapDataPath()..'Portret/Icons/';

print(Icons.."Podkreplenie.(Texture).xdb#xpointer(/Texture)") -- миниатюра = "Maps/Multiplayer/JoyPatriot/Portret/Icons/Podkreplenie128x128.(Texture).xdb#xpointer(/Texture)"

Вложения 1
1 файл • Общий размер: 4,7 KB
Аватар пользователя
2 года назад

Слеш в начале пробовали? "/Maps/Multiplayer/..."

Если и это не поможет, буду признателен, если отправите карту в личку, посмотрю.

В ответ пользователю }{0TT@6bI4
2 года назад
}{0TT@6bI4

Слеш в начале пробовали? "/Maps/Multiplayer/..."

Если и это не поможет, буду признателен, если отправите карту в личку, посмотрю.

Ваша правда, заработало. Я об этом даже не подумал.. почему именно с этим путем требуется дополнительный слеш?
В ответ пользователю Shiroyasha2910
Аватар пользователя
2 года назад
Shiroyasha2910
Ваша правда, заработало. Я об этом даже не подумал.. почему именно с этим путем требуется дополнительный слеш?

А он везде нужен. Во всех функциях где нужно указывать путь к какому-то файлу, требуется первым вписывать слеш:

"/Effects/_(Effect)..."
"/Characters/..."
"/Sounds/_(Sound)/..."
"/DialogScenes/..."
"/Maps/SingleMissions/..."

Везде, кроме GetMapDataPath()

Аватар пользователя
2 года назад
Без слеша — берётся относительный путь, а со слешом абсолютный

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 1 пользователей 1154 гостей