Kamrad.ru

Kamrad.ru (https://kamrad.ru/index.php)
-   Серия TES: Oblivion, Morrowind и т.д. (https://kamrad.ru/forumdisplay.php?f=71)
-   -   MorroWind ------> DaggerWind (https://kamrad.ru/showthread.php?t=32933)

KamaRAD 28-05-2002 13:17

Предлагаю объединить усилия по модостою! :)
Идея такая:
Создать в Морре собственные города с неписями. НО! Надо подойти грамотно. Понимаю, что город, положим, одному трудно осилить, а вот непися с домом - вполне.
Для этого надо продумать персонаж, создать его и его дом. Перс должен быть оригинальным, иметь квесты, расти параллельно игроку, иметь свою собственную жизнь. :) В идеале еще комплектация оригинальных приветствий и т.п. :)
Далее можно скоординировать полученных НПС в города.
Только не кидайтесь в меня помидорами. :) Задача тяжкая, но ИМХО решаемая, если есть творческий талант. :)

karnot 28-05-2002 13:26

to all:
Ребят, спасибо за население темы :)
Отдельное спасибо glass за юмор ( положим начало Морровским анекдотам ! )

Kit 28-05-2002 16:06

sqr
Ну и чего. Как долго она радовала глаз и душу?. Часа два от силы. Потом все замылилось. Так же было бы и в морре.

Ну кого часа два, а кого и побольше.

В любом случае тотальное скриптование неписей пока под очень большим вопросом, т.к. поисследовав хорошенько эдитор пришел к выводу, что автоматизировать чтение и запись reference data вообще невозможно (как такое издевательство могли придумать - не знаю), а без этого делать каждого непися руками - это просто #%@$$^$^.

Kit 28-05-2002 18:20

Научился укладывать непися спать и даже топать куда надо, но он, сука, не просыпается!
Почему fatigue у него перестает восстанавливаться - ума не приложу.

По ходу единственный выход: сложный глобальный скрипт со списком неписей. Бум писать. :)

Benedict 28-05-2002 19:19

Кинь в меня, плиз, (или сюда) примером такого скрипта, попробую насодить на него НПСя....

Kit 29-05-2002 00:05

Вот что родилось после долгих мучений.
При этом оно работает очень плохо:
1. По какой-то причине непись далеко не всегда ложится спать, несмотря на отрицательный fatigue.
2. Непись не выходит из дома до тех пор, пока игрок не покинет тот cell на который он должен выйти.

Code:

begin SleeptimeCheck
;this is a global script
;does simple time check
if (GameHour > 6.0)
        if (GameHour < 22.0)
                set SleepTime to 0
                return
        endif
endif

set SleepTime to 1

end SleeptimeCheck

Code:

begin SleepTest
;don't do anything if game paused with menu
if ( Menumode == 1 )
        return
endif

short state
short initx
short inity
short initz
float SleepHour

;checking if it's time to sleep
if (SleepTime == 1)
        ;here I've tried to randomize slightly the sleeping time
               
                ;set SleepHour to (GameHour + Random, 1)
        ;while (GameHour <= SleepHour)
        ;endwhile

                ;check whether npc arrived to the house door, then teleport him inside
        if (GetCurrentAIPackage == 1)
                if (GetAIPackageDone == 1)
                        PositionCell -487, 281, 291, 130, "Balmora, Nalcarya of White Haven: Fine Alchemist"
                        SetFatigue -5
                        set state to 10
                        return
                endif
        endif
                ;check if npc is just wandering around when he must sleep
        if (GetCurrentAIPackage != 1)
                if (state == 0)
                        AITravel -24813, -10272, 1077
                        return
                endif
        endif
                ;check if npc is in state 10, means: in bed
        if (state == 10)
                SetFatigue -5
                return
        endif
else
                ;check if npc is still in bed when it's time to go out
        if (state == 10)
                set initx to GetStartingPos, X
                set inity to GetStartingPos, Y
                set initz to GetStartingPos, Z
                SetFatigue 80
                PositionCell -24813, -10272, 1077, 180, "Balmora"
                AITravel initx, inity, initz
                AIWander 2000, 5, 0, 60, 20, 10, 10, 0, 0, 0, 0
                set state to 0
        endif       
endif

end SleepTest


glass 29-05-2002 00:15

sqr
Мне каэтся, камрады, что задача "тотального" оживляторства морровинда имеет исключительно академический интерес.
В конце-концов, почти все здесь обсуждаемое имеет более или менее, но академический интерес - мы же здесь в игрушки играем. :)

Вся эта "живость" присутсвовала в полном объеме к примеру в той же готике. Ну и чего. Как долго она радовала глаз и душу?. Часа два от силы. Потом все замылилось. Так же было бы и в морре.
Kit прав - каждый воспринимает по-своему. В конечном итоге, все приедается, вопрос лишь времени. :) "Живость" или нестатичность мира в игре, такая же часть его наполнения, как и все остальное (сюжет, внешний вид, квесты, фракции, отношения, dungeon'ы, монстры, драки etc). Все это для того, чтобы игроку было интересно, и как можно дольше. Но что из этого главнее? Забавно, но приоритеты меняются в зависимости от игры.

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

Что-то у меня сегодня мысли путаются - прямо поток сознания какой-то. :)

Вообщем, все свелось к табличке:
Cредство........Обратный эффект от него........Сложность реализации
-
-
-

Заполнить, посчитать эффект/сложность реализации и отсортировать в порядке убывания. :)

glass 29-05-2002 01:50

Kit
1. По какой-то причине непись далеко не всегда ложится спать, несмотря на отрицательный fatigue.
Именно ложится? Сама по себе у меня вообще не ложилась - стоит на кровати. ;) При тыкании в нее action key'ем, через некоторое время падает без чувств, снизу прибегает стражник и забирает меня в тюрьму. За попытку "надругательства"? :)

karnot 29-05-2002 03:18

Дождались...не супер, но уже в сети. NPC Gnisis называется. Ищите и обыщетесь . :)

glass 29-05-2002 04:13

Kit
Где-то так:

Code:

begin SleeptimeCheck

;this is a global script
;does simple time check
if (GameHour > 20.0)
  if (GameHour < 20.1) ;6.0
      set SleepTime to 1
      return
  endif
endif

set SleepTime to 0

end SleeptimeCheck

Code:

;checking if it's time to sleep
if (SleepTime == 1)

  if (state == 0)
      ;check whether npc arrived to the house door, then teleport him inside
      if (GetCurrentAIPackage == 1)
        if (GetAIPackageDone == 1)
            PositionCell -487, 281, 291, 130, "Balmora, Nalcarya of White Haven: Fine Alchemist"
            SetFatigue 0
            PlayGroup DeathKnockDown
            set state to 10
            return
        endif
      endif
       
      ;check if npc is just wandering around when he must sleep
      if (GetCurrentAIPackage != 1)
        AITravel -24813, -10272, 1077
        return
      endif
       
endif

else

  ;check if npc is still in bed when it's time to go out
  if (state == 10)
      SetFatigue 215
      PlayGroup Idle
      PositionCell -487, 150, 291, 130, "Balmora, Nalcarya of White Haven: Fine Alchemist"
      AITravel -487, 281, 313
      set state to 0
  endif       

endif

- На самом деле она 'спала', просто цикл aнимации был обычным Idle.
- В постели ее удерживать не нужно - сама не маленькая. ;)
- выглядит ужасно (с DeathKnockOut), но работает. ;)

set initx to GetStartingPos, X
set inity to GetStartingPos, Y
set initz to GetStartingPos, Z
AITravel initx, inity, initz

Похоже, c переменными в качестве параметров, вызывать функции нельзя. Точнее, можно, только работать не будет. По-крайней мере, в функциях перемещения. (это абзац :()

И AITravel -487, 281, 313 выше, тоже 'не работает' - бедняжку нужно за ручку проводить по лестнице вниз и может быть потом она вернется на место. В доме нет точек pathfinding'а.

Но в целом, уже больше похоже... ;)

xelax 29-05-2002 04:56

glass

Пара наметок.

В доме нет точек pathfinding'а.

По магазинам стража каким-то образом разгуливает.

бедняжку нужно за ручку проводить по лестнице вниз

Может быть событием а ля "нападение или враг" внизу заставить ее передвинуться вниз.


А следующий этап это конечно наполнение улиц ночью мелким хулиганьем, чтобы точно хотелось спать в гостиницах при неважном здоровье. :)

glass 29-05-2002 05:33

xelax
По магазинам стража каким-то образом разгуливает.
Ага, но тетенька-алхимик нарезает круги (не очень большого диаметра) по комнате, около кровати, с нескрываемым желанием нырнуть в пол (место, куда она была послана, прямо "под", на первом этаже). :)

Не, может я ее как-то плохо с кровати сдернул, конечно... ;)

Может быть событием а ля "нападение или враг" внизу заставить ее передвинуться вниз.
Конечно, можно попробовать, но это не ко мне (мавр сделал свое темное дело). :)

А следующий этап это конечно наполнение улиц ночью мелким хулиганьем, чтобы точно хотелось спать в гостиницах при неважном здоровье.
C хулиганьем, в принципе, не должно быть особых проблем. И c NPC, и с Creatures (самый простой вариант - телепортировать их из специального места, а потом обратно - злобу нагуливать ;)).

glass 29-05-2002 06:14

xelax
Cейчас точно посмотрел: все там есть в этом магазине - это я дурака валял.

Поменять на AITravel -220, 3, 16. После того как дойдет, останется только развернуть ее на 180 градусов, чтобы спиной не стояла к потенциальным покупателям.

Остается всякую косметику навести и, в принципе, имеем одного NPC, 'живущего' в нормальном режиме. Хе-хе,... мда, одного. ;)

glass 29-05-2002 06:20

Kit
Надо еще двери закрывать на висячий замок (крепкий) на ночь. После взлома которого, PC должен получать по башке от Hlaalu Guard, который там работает. Это я к тому, что, мало ли, может тебе всё ещё мало кажется? ;)

Wiz 29-05-2002 11:57

.

sqr 29-05-2002 12:05

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

Мне кажется, что игрок должен ощущать "обратную связь" от мира. И чем она сильнее и разнообразней, тем круче эмоции, вызываемые игрой. Но что-то для этого проще сделать, а что-то сложней, а эффект не обязательно будет пропорционален.
Согласен полностью. Поэтому и привел вариант с большим количеством уникальных, но при этом жестко прошитых скриптовых сценок. Имхо этот вариант на сегодняшний день является оптимальным по критерию эффект/сложность реализации . Вариант с "оживляторством" максимально дешев, но и эхфехт от него уж слишком мизерный. Вариант со встраиванием полноценной системы обратной связи, пускай даже и в первой производной, на сегодняшний день нереально сложен.

glass 30-05-2002 18:29

sqr
Почти со всем согласен, кроме, может быть Вариант с "оживляторством" максимально дешев, но и эхфехт от него уж слишком мизерный. - как видно, он не так уж и дешев.

To all
Так табличку кто-нибудь будет заполнять или нет? :)

Kit
Желание еще не пропало?

Wiz
"."? - наверное ты хотел сказать "+"? ;)

Kit 30-05-2002 20:21

glass
Желание еще не пропало?

Пока занят, к завтрему попробую еще что-то :)

Kit 02-06-2002 01:38

Отличная страничка, человека посетили те же мысли, что и меня, правда явно раньше, так как прогу он уже сваял. ;)
http://home.cinci.rr.com/jimadam/

glass 02-06-2002 03:48

Kit
Да, утилита полезная. Особенно понравилась ModData в xml и табличный layout внутри - правильный товарищ.

Только основная проблема не в создании интерьеров. С этим и редактор неплохо справляется - никто же не мешает выделять нужное и копипэйстить сразу готовыми блоками. И никто не мешает понаделать хоть 1000 Cell'ов с заготовками. Но интерьеров/экстерьеров и так хватает в Morr'e. ;)

Засада остается в скриптовом языке (я уже зол), самих скриптах и их отладке (крайне неудобно). Еще в отсутствии внятного описания у AIPackages, странности работы некоторых функций, дырявости скрипт runtime: бесконтрольный MessageBox роняет Morrowind через очень непродолжительное время, то же самое делает неконтролируемый спеллкастинг etc. То есть, как я и нудел - много нерациональной возни.

P.S. А ты читал комментарии в скриптах? Местами крайне поучительно: похоже, в Иуеруыве далеко не все в ладах с собственной скриптовой фигней. :)

Kit 02-06-2002 16:20

glass
Засада остается в скриптовом языке

Дык даный сайт хорош тем, что имеет отличное описание даты в .esp файлах. Т.е. теперь достаточно сделать свой компилятор на том же перле и пусть он компилит в MW-скрипт. :)

glass 03-06-2002 02:44

Kit
:eek: Очень смешно...
И компилятор на перле, и все 8 строчек описания, на основании которых, ты собрался его написать. :)

Kit 03-06-2002 21:21

glass
И компилятор на перле, и все 8 строчек описания, на основании которых, ты собрался его написать.

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

glass 03-06-2002 23:35

Kit
Теория часто вообще интересная вещь. ;) Написать приличного скриптера не так уж сложно, как это можно себе представлять. Без ОО в скрипте прекрасно можно обойтись - не сильно оно там и нужно. В любом случае, при достаточно небольших усилиях должно получиться лучше, чем Bethesda'вское творение. Однако какое это имеет отношение к текущему состоянию дел? Как бы знать о том, где хранится псевдокод в esp - несколько недостаточно. :) Нужно еще доподлинно знать, что он из себя представляет или знать, как заменить соб-но компилятор/интерпретатор. Однако, ни того, ни другого знать не дано.

Если бы парни из Bethesda были несколько более 'clever guys', то поступили бы, как, например, разработчики Severance: The Blade of Darkness - коли уж сам не можешь/не хочешь/не считаешь нужным изобретать велосипед, то не повышай энтропию и возьми чертежи существующего. В случае с Severanсe, это был Python - может быть, не самый удачный выбор с точки зрения быстродействия, но идея ясна.

К чему я это? А... от земли не отрывайся. :)

P.S. Лучше бы разобрался с AIWander. ;)

Kit 03-06-2002 23:41

glass
К чему я это? А... от земли не отрывайся.

Если честно: у меня такие проблемы в личной жизни, что от земли я оторвался далеко и надолго.

Поэтому буду писать что-то оторванное! :)


All times are GMT +3. The time now is 10:55.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.