• Страница 81 из 81
  • «
  • 1
  • 2
  • 79
  • 80
  • 81
Модератор форума: Влесам, Врыл, Detect_Life, Монгольчик  
Форум » Форум Honest'ов » Проклятые Земли » Помощь по ПЗ (Чем смогу помогу.)
Помощь по ПЗ
ВлесамДата: Понедельник, 2017.12.04, 12:57 | Сообщение # 1601
Влесам
Евангелист ХГ4
Группа: Администраторы
Сообщений: 7381
Репутация: 38
Статус: Временно отсутствует
Invizz, У тебя это воспроизводится и у себя, и на чужих сервах? Какой тип паузы в плагине стоит? Тупит ли при сообщениях в чат от тебя или других игроков?
Если тупит только от пауз и не лечится банальным перебором совместимостей, то скорее всего к Демошу, чтобы плагин чуток доделал.


Разделяй и Влесамаствуй.
 
InvizzДата: Понедельник, 2017.12.11, 20:47 | Сообщение # 1602
Invizz
Ранг 5
Группа: Пользователи
Сообщений: 469
Репутация: 31
Статус: Временно отсутствует
Влесам, Замена в стартере addon.dll помог решить проблему.

Добавлено (2017.12.11, 20:47)
---------------------------------------------
Возникла еще проблемка на винде 8.1
Игра без модов на внутриигровом лаунчере запускается без всяких проблем. А вот с дополнения(независимо от мода или безмода).
Совместимости или замена аддона не помогала.
А про переустановки вообще молчу.=))


 
FairahДата: Воскресенье, 2018.01.07, 08:00 | Сообщение # 1603
Ранг 1
Группа: Новички
Сообщений: 1
Репутация: 0
Статус: Временно отсутствует
Подскажите сколько нужно ЛС чтобы когда замерзло озеро и открыл
сундук с молнией можно было открыть дверь в обход элементаля?
 
Lentyn_TotalisДата: Понедельник, 2018.01.08, 17:34 | Сообщение # 1604
Ранг 1
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Временно отсутствует
Доброго времени суток. Решился немного поковырять сингл для его адаптации для прохождения с напарниками. Имеющиеся моды, требующие ввода консольных команд, впечатлили не очень сильно, поэтому захотелось модифицировать исходники самостоятельно.

В ходе работы возникли несколько вопросов. Понимаю, что людей, продолжающих заниматься моддингом ПЗ в настоящее время не слишком много, но возможно, мне повезёт, у некоторые ответы удастся найти до того, как я отыщу их методом "научного тыка".

Из инструментария пользуюсь EiEdit для редактирования баз, MobSurgeon для изменения mob-файлов, MapEd - для добавления (а точнее - копирования) новых юнитов.

И к вопросам по существу:
1. При постановке в брифинговые зоны (Поселок, Ингос, Укрытие) новых персонажей посредством MapED при наведении на них курсора их имена не появляются, что делает разговор с ними невозможным, хотя сведения о новых юнитах включены и в MonsterPrototypes, и в разделы pers и unit texts.res. В качестве объектов в соответствующем моб-файле юниты также описаны.
Пояснение: в настоящее время я отключил проверку наличия у главного героя напарников, которая проводилась Тка-Рик'ом по завершению каждого аллода. Вместе с тем, иногда возникает желание вернуть напарников домой и заменить их на других спутников. В этой связи я хочу создать персонажа, который сможет осуществлять переброску главного героя между аллодами (при этом тетепортация с Гипата в Канию и Хадаган будет становиться доступной по мере открытия этих островов)

2. В качестве промежуточного этапа попытался написать новый диалог со свиньей в Поселке. Текст диалога прописал в разделе briefing texts.res, а сами действия включил в mob-файл.

Код
Script VCheck#0#632
(
  if
  (
    IsEqual( GSGetVar( 0, "b.pig.p2" ) , 2 )
  )
  then
  (
    KillScript(  )
    VTriger#0#636( this )
  )
)

Script VTriger#0#636
(
  if
  (
  )
  then
  (
    KillScript(  )
    Sleep( 100 )
    GSSetVar( 0, "b.pig.p2", 1 )
    VCheck#0#632( this )
  )
)

<...>
Script #OnBriefingComplete
<...>
if
  (
    IsEqualString( szComplete, "b.pig.p2" )
  )
  then
  (
    KillScript(  )
    PlayMovie( "teleprt2.bik" )
    LeaveToZone( 0, "gz8k", 0 )
  )
<...>

Первоначальная активация диалога - при первом посещении посёлка.

Результат - в диалоге со свиньёй появляется новая пустая реплика (знак "-" с пустотой после него). В этой связи создаётся впечатление, что игра не видит этого диалога, и его нужно вписать куда-то ещё. Что я не учитываю?

3. Также хотелось бы поэксперементировать с предельным количеством людей в команде.
Но всё, что я сумел найти, это то, что указанное число определяется переменной GetMercsNumber( 0 ). Есть ли возможность принудительного изменения этой переменной?
3.1. Кроме того, в разделе briefing файла texts.res содержатся все диалоги с наёмниками, когда они отказываются идти в команду к герою в связи с "перенаселением". Однако в basecam.mob нет ссылок на активацию указанных диалогов и проверку счётчика. Где ещё может быть прописано его выполнение?

Прошу прощения за многословность и корявость формулировок.
 
DemothДата: Вторник, 2018.01.09, 00:00 | Сообщение # 1605
Demoth
Шифрующийся Наркобарон
Группа: Администраторы
Сообщений: 246
Репутация: 34
Статус: Временно отсутствует
Lentyn_Totalis, привет.

Цитата Lentyn_Totalis ()
1. При постановке в брифинговые зоны (Поселок, Ингос, Укрытие) новых персонажей посредством MapED при наведении на них курсора их имена не появляются, что делает разговор с ними невозможным, хотя сведения о новых юнитах включены и в MonsterPrototypes, и в разделы pers и unit texts.res. В качестве объектов в соответствующем моб-файле юниты также описаны.

Для того, чтобы NPC стал кликабельным и у него было правильное имя, нужно, чтобы у него был специальный ID. Сгенерить этот ID можно здесь: http://evilislands.github.io/nidgen/. В NPC Name нужно указать имя прототипа.

Цитата Lentyn_Totalis ()

2. В качестве промежуточного этапа попытался написать новый диалог со свиньей в Поселке. Текст диалога прописал в разделе briefing texts.res, а сами действия включил в mob-файл.

На счёт этого сейчас не вспомню, но кажется, что брифинги для сингла в базе могут быть прописаны.

Цитата Lentyn_Totalis ()
3. Также хотелось бы поэксперементировать с предельным количеством людей в команде.
Но всё, что я сумел найти, это то, что указанное число определяется переменной GetMercsNumber( 0 ). Есть ли возможность принудительного изменения этой переменной?

Проверка числа наёмников зашита в игре, её вот так просто не изменить (можно это сделать патчами, но это другая история совсем). Там зашито ровно 2 наёмника, не больше.
 
Lentyn_TotalisДата: Вторник, 2018.01.09, 02:09 | Сообщение # 1606
Ранг 1
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Временно отсутствует
Demoth, благодарю за столь быстрый ответ - до генерации ID я своими силами докопался бы очень и очень не скоро.

Цитата Demoth ()
На счёт этого сейчас не вспомню, но кажется, что брифинги для сингла в базе могут быть прописаны.

Смущает, что все остальные диалоги - в т.ч. о приёме в команду и об оставлении в посёлке - забиты именно в basecam.mob. Плюс часть данных - в мобе развалин. Что-то мне подсказывает, что и остальное можно найти - или же эти части кода просто писали разные люди.
В любом случае - попробую найти костыль. Полагаю, что само по себе появление опции диалога можно так или иначе докрутить до чего-то работоспособного. В случае нахождения - отчитаюсь.
Цитата Demoth ()

Проверка числа наёмников зашита в игре, её вот так просто не изменить (можно это сделать патчами, но это другая история совсем). Там зашито ровно 2 наёмника, не больше.

Ну, тут я вижу два варианта решения. Либо найти, где запаяна проверка счётчика при приёме в команду (почему-то это кажется более простым), либо пойти по пути, предлагаемому в этой статье michael_vostrikov'a - https://habrahabr.ru/post/335498/. Идея совсем отключать счётчик персонажей мне не нравится, но и в этом направлении можно поработать.

В качестве ещё одной гипотезы - при принятии наёмников в команду скриптами mob-файла меняется переменная apartynX (X - номер конкретного наёмника), и я допускаю, что в случае изменения этой переменной обратно к 0, изменится и показатель счетчика.
Вместе с тем, с этой переменной игра связывает в том числе и отображение наёмников в посёлке, что может привести к "дублированию" напарников, поэтому в качестве контр-меры потребуется создание дублирующей переменной, ссылку на которую и прописать во всех доступных в Mob-файлах диалогах.

Попробую в ближайшие дни добраться до кода и проверить это на практике. Гипотезу привожу в основном на случай, если кто-то из читающих этот пост, ранее уже проводил схожие изыскания и теперь может сократить ковырятельный процесс, подтвердив или опровергнув мои наблюдения, дабы я не пытался в очередной раз изобрести велосипед =)

Добавлено (2018.01.09, 02:09)
---------------------------------------------
Прошу прощения за дабл-постинг (не сумел отредактировать свой предыдущий пост) - чуть-чуть свежей информации:

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

По добавлению спутников - изменение apartyn никак не сказалось на возможности взять спутника в команду, но вопрос может быть легко решён через использование команды AddUnitToParty (0, ScriptVariableName, Name1) - третий наёмник прекрасно добавляется, диалоги об его оставлении дома сохраняются, другие наёмники из команды не пропадают, давки с вылетами при входе в локацию не возникает.

 
MIRILLEDДата: Вторник, 2018.01.09, 10:05 | Сообщение # 1607
MIRILLED
Ранг 3
Группа: Пользователи
Сообщений: 156
Репутация: 12
Статус: Временно отсутствует
Цитата Lentyn_Totalis ()
Попробую в ближайшие дни добраться до кода и проверить это на практике. Гипотезу привожу в основном на случай, если кто-то из читающих этот пост, ранее уже проводил схожие изыскания и теперь может сократить ковырятельный процесс, подтвердив или опровергнув мои наблюдения,

Тот кто тебе ответил и проводит эти изыскания. :D

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

Для этого надо создать текстовый файл без расширения в texts.res
Например, в нидгене ты закодировал внутреннее имя нпс fufel, то тебе понадобится создать файлик Pers fufel и в него написать Фуфел. тогда ты увидишь имя нпс, которое написал в файле.
 
Lentyn_TotalisДата: Вторник, 2018.01.09, 19:21 | Сообщение # 1608
Ранг 1
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Временно отсутствует
MIRILLED, увы, но как я уже говорил,
Цитата Lentyn_Totalis ()
сведения о новых юнитах включены и в MonsterPrototypes, и в разделы pers и unit texts.res
.
EiEdit при создании нового значения самостоятельно создаёт необходимый файл.
Так что в данном конкретном случае дело в чем-то ещё =(
 
MIRILLEDДата: Среда, 2018.01.10, 11:13 | Сообщение # 1609
MIRILLED
Ранг 3
Группа: Пользователи
Сообщений: 156
Репутация: 12
Статус: Временно отсутствует
Lentyn_Totalis, эм, а сгенерированный id был присвоен мобу?
 
Lentyn_TotalisДата: Четверг, 2018.01.11, 21:50 | Сообщение # 1610
Ранг 1
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Временно отсутствует
MIRILLED, естественно. Менял путем замены графы ObjectID через MobSurgeon. В MapED также выводится новое значение. Дополнительно в скрипте карты юнит в переменных WorldScript (GetObjectByID) также описан с новым ID.

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

Кстати вопрос - квестодателем может являться любой юнит? Проблема не может быть как-то связана с выбором в качестве прототипа модели опытного скелета-война с гипата?
Ещё могу связать разве что с типом Patrol Type в MapEd (поля BZ, Radius, Points, Place, Brif). Я так понимаю, они отвечают за тип перемещения, так что формально это не должно как-то влиять, но у меня больше и идей-то нет особо.
 
MIRILLEDДата: Пятница, 2018.01.12, 11:10 | Сообщение # 1611
MIRILLED
Ранг 3
Группа: Пользователи
Сообщений: 156
Репутация: 12
Статус: Временно отсутствует
Lentyn_Totalis, а брифинги появляются у такого юнита?

Цитата Lentyn_Totalis ()
Кстати вопрос - квестодателем может являться любой юнит? Проблема не может быть как-то связана с выбором в качестве прототипа модели опытного скелета-война с гипата?

Да, у нас в моде(Фернео) брифиги есть у столба. Тип патрулирования не влияет, это проверено.
Ещё можешь как вариант скинуть сюда что сделал, ну или можем связаться где-нибудь, например дискорд.
 
Lentyn_TotalisДата: Вторник, 2018.02.06, 09:37 | Сообщение # 1612
Ранг 1
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Временно отсутствует
Благодарю за помощь в проявлении имени персонажа. Проблема была с рес-билдом в EiEdit – почему-то новые файлы не запаковывались в texts.res. После проверки на другом устройстве (и переустановки на первом) имена и диалоги стали благополучно отрисовываться.

Также удалось обойти ограничение сингла на количество наёмников в партии. Поскольку ранее (правда, уже довольно давно) неоднократно видел со стороны игроков вопросы о невозможности прохождения сингла с бо́льшим количеством спутников, и невозможности переноса компаньонов в Канию и Хадаган без использования скриптов (точнее, забрать спутников в Канию штатными средствами ещё возможно, а вот в Хадаган, насколько мне известно – нет), решил подготовить мануал с решением этих вопросов.
Думаю, что для большинства присутствующих указанные решения являются очевидными, но для тех, кто не слишком хорошо разбирается в скриптинге ПЗ, или просто желает сэкономить своё время – выкладываю в открытый доступ.
Как уже писал, для внесения изменений в базу данных я использую EiEdit, а для правки Mob-файлов – MobSurgeon (глубокий поклон авторам утилит). Не буду подробно описывать работу с указанными программами, т.к. инструкций по работе с ними достаточно много.
1. Активируем возможность брать в команду более 2 спутников (наемников):
Поскольку оперативно обнаружить механизм работы счетчика, заложенного в GetMercsNumber( 0 ), не удалось, решил использовать костыль – команду AddUnitToParty (0, ScriptVariableName, Name1) вместе с активацией связанных с наёмниками переменных (apartynN, где N – номер наёмника по database.res).
Для реализации замысла нам потребуется, во-первых, внести в texts.res новые диалоги, а во-вторых – поправить mob-файлы игровых зон, в которых располагаются спутники.
Механизм изменения довольно простой – мы добавляем в брифинги по новому диалогу с каждым наёмником (у меня это диалоги с n4_1 по n4_9). После того, как потенциальный спутник произносит речь о том, что он с нами не пойдет, потому как рядом с героем и так слишком много народа (диалоги с n9_1 по n9_10), мы активируем возможность нового диалога с этим компаньоном (вида «Убедить Хадора присоединиться»), а также отключаем диалог с отказом от вступления. При произнесении диалога включаем срабатывание AddUnitToParty и действий, обычно связанных с наймом персонажа. Ну и прописываем изменения в разделе WorldScript, чтобы в течение всего времени, пока спутник у нас в команде и жив, диалоги с отказом от вступления в отряд были отключены.
Как выглядит: имея в команде двух (и более) спутников, подходим к потенциальному соратнику и зовем его с собой. Соратник отказывается. Говорим ещё раз и убеждаем всё же пойти с нами. Соратник идет к зоне перехода и ждет нас. Диалог о возврате напарника исправно работает. Процедуру можно выполнить любое количество раз, по необходимости меняя спутников.
Что, собственно, меняем.
Дополнения в texts.res. Приведу пример диалога с Хадором. Остальные меняются по аналогии. Как уже писал, новая ветка диалогов у меня поименована как n4_N (c Хадором – n4_1).

Дополнения в mob-файлы на примере Поселка (basecamp.mob). Ниже приведу изменения для Хадора и Ринта, чтобы было легче внести правки по аналогии.
Хадор:
В раздел DeclareScript

В раздел Scripts

В раздел Script #OnBriefingComplete

В раздел WorldScript

Ринт:
В раздел DeclareScript

В раздел Scripts

В раздел Script #OnBriefingComplete

В раздел WorldScript

2. Перемещение между аллодами со спутниками:
С этим вообще просто. При посещении великого мага и ЛуаДжаллы срабатывает заскриптованная проверка, которая либо откроет диалог с магом о переходе, либо запустит набор скриптов для прощания со спутниками, а после всех необходимых процедур – опять же откроет тот же диалог о переходе. В этой связи я не стал влезать в оригинальный текст брифингов и просто видоизменил проверочные скрипты таким образом, чтобы вне зависимости от результатов проверки запускался диалог о переходе. Для особо страждущих, не желающих геноцидить и мечтающих вернуться на Гипат после Ингоса, чтобы донавесить люлей недобитым големам и хадаганцам, можно оставить открытой дверь Тка-Рика во внешний мир.
Для исполнения вышенаписанного необходимо внести правки в mob-файлы gподземелья великого мага (bz7g) и пещеры, где держали Луа (gz11k).
Изменения в файле bz7g:
Было:


Стало:


Для того, чтобы выход на Гипат оставался открытым и далее, ищем кусок:

и удаляем строку GSSetVarMax( 0, "z.gz4g_bz7g", 1 )
Изменения в файле gz11k:
Было:

Стало:

3. Для полноты картины также хотел бы ещё раз обратить внимание на возможность отключить распределение опыта между персонажами, чтобы каждый персонаж получал опыт целиком. Даже с учетом прощания с наёмниками на каждом новом аллоде, этот способ является для баланса практически приговором и уместен в первую очередь тем, кто не желает проходить игру соло или геноцидом, но хочет при этом добраться до Хадагана, имея адекватный уровень раскачки. Способ подробно не освещаю, так как мануал довольно подробный. Найти его можно по ссылке (Автор: Michael_Vostrikov).

Полагаю, что в дальнейшем замену наёмников может осложнить сброс аллода к началу, но, насколько я понимаю, незаконченные квесты на Гипате препятствуют перезагрузке аллода. В настоящее время я разрабатываю возможность через цепочку квестов открыть возможность произвольно возвращаться (телепортироваться) на гипат из Кании и Хадагана и обратно, в ходе чего планирую сделать в т.ч. висящий фоном квест для того, чтобы аллод не перезагружался (или же найти способ иным образом отключить его перезапуск).

Update2: Выявил необходимость внести дополнительные правки для Кании и Хадагана. В mob-файлах bz8k (город Ингос) и bz14h (Укрытие) в разделе Script #OnBriefingComplete необходимо заменить каждую команду GSSetVarMax, меняющую переменную apartynN на GSSetVar (Например, с GsSetVarMax( 0, apartyn6, 1) на GsSetVar( 0, apartyn6, 1), и так далее).
В этом же разделе необходимо проверить, чтобы при проигрывании диалога mercX.n3_X переменная apartynX менялась на 0 [(GsSetVar( 0, apartyn6, 1)], а не на 1 (в паре случаев в оригинальном коде явно была опечатка, которая не влияла на оригинальную игру, но при интеграции предлагаемых мной проверок новый диалог попросту не активировался).
В Хадагане (bz14h) я также менял переменную ScriptVariableName во вкладке "Объекты", чтобы имена спутников указывались с больших букв (было "merc7", стало "Merc7"). Не уверен, насколько это нужно, т.к. заработало все после исправления банальной опечатки %).

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


Сообщение отредактировал Lentyn_Totalis - Суббота, 2018.02.17, 22:49
 
Форум » Форум Honest'ов » Проклятые Земли » Помощь по ПЗ (Чем смогу помогу.)
  • Страница 81 из 81
  • «
  • 1
  • 2
  • 79
  • 80
  • 81
Поиск:
Copyright by Honest Group © 2018. All rights reserved. Используются технологии uCoz Created & Supported by Ash