Полная Версия: Скрипты, так их и растак...
Cheb
Я сейчас работаю над созданием продвинутого непися, способного непрерывно гоняться за игроком по всему Моровинду, несмотря на застревания в кустах и прочие тупые выходки AI...

Сколько крови это у меня выпило - не счесть, начиная с отсутствия функции "переместить объект к игроку" (PlaceAtPC создаёт новый экземпляр), и кончая некультурным поведением объектных скриптов, которые тихо отключаются когда игрок переходит на соседнюю клеточку, тем самым "замораживая" объект, и не позволяя гарантировать реакцию на ускользание игрока...

Пока что, я нашёл следующий обход:
создаём (Н) непися, (О) класс непися-охотника, (А) объект-активатор, (Г) глобальный скрипт. Все классы объектов со своими скриптами.
(А) нужен только для того, чтобы в своём скрипте хранить счётчик созданных охотников СЧ и критерий тайм-аута ТА: к переменным глобального скрипта объекты обращаться не могут.

Итак, вся эта система в работе:
(Н), если атакован, запускает (Г), который гарантированно будет работать, на сколько бы клеток игрок ни ушёл. На этом роль скрипта (Н) заканчивается... Ах да, ещё при смерти (Н) останавливает (Г).

(Г) состоит из команд:
- если (Н) включён, далеко от игрока и не видит его, то: отключить (Н), установить (А).СЧ в 1, и при помощи PlaceAtPC создать у игрока за спиной (О)
- увеличить ТА на время, прошедшее с предыдущего кадра
- если ТА больше контрольного интервала, значит (О) "замёрз", надо создавать нового. Если при этом удовлетворяются некие сложные {условия случайной задержки преследования}, то увеличить (А).СЧ на 1 и создать у игрока за спиной (О).

Скрипт (О):
- при создании однократно: записать в собственный ИД (А).СЧ
- если собственный ИД не равен (А).СЧ, то выключить себя и выйти (например, игрок вернулся в клеточку, где торчал замёрзший (О), и его скрипт снова запустился, но за это время уже был создан следующий. Нам ведь не нужно, чтобы они размножались?.. Старый должен исчезнуть)
- каждый кадр сбрасывать (А).ТА в 0, чтобы показать (Г), что скрипт работает (иных способов я не нашёл)
- если игрок меняет клеточку, проверять расстояние. Если оно больше 2000000000, значит игрок перешёл между Exterior и Interior, и надо выключить себя.
- если игрок дальше 1000 и не виден (GetLOS, Player == 0), то выключить себя: велика вероятность, что мы просто застряли в кустах

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


Не парся:

В Трибунале - во внутреннем дворике дворца, по умолчанию, ходит Наёмник, но у него Хватает Багов ( В Вандерфил взять не можно)

И ещё - у меня есть МОД, чисто гильдия наёмников, 230 Кило, так тама божатся, что даже следують за персом, если тот пользует "Бож. Вмешательство" или тоже к Храму - запрос через "Приват", а если ещё смогёшь и к 1С адаптировать...

Alina
Вот здесь есть страничка модов Эммы, которые компилируют исследования в данной области, если мне не изменяет память...
Cheb
Хм... Расковырял... Обещают златые горы, но в Трибунале. Поскольку я с Трибуналом принципиально связываться не желаю, остаётся пользоваться тем что есть, создавая и удаляя двойников...

Но всё равно спасибо. День-два и будет готово :)
TERSERCUTOR


C Трибуналом связываться придётся, а потом ещё и с Блуд Муном ;)

А страничка Эммы откровенно порадовала:

Такого Качественого поведения Давно не было, рекомендую - Даже(!) под 1С, что само за себя кое о чём гоморит...

Cheb
Увы, для меня всё это лишь уход от основной темы и тренировка - я же ведь пишу свой движок для своей игры...
На самом деле я Морровинд уже было совсем забросил, но ни с того ни с сего увлёкся TES CS, чтобы хотя бы посмотреть, как у людей всё сделано.
Ну, и заодно непися создать - я, если честно, подобное творчество люблю больше программирования, просто без программирования сейчас никуда: все имеющиеся движки или за большие деньги, или сделаны совсем не так, как мне нужно.

To TERSERCUTOR: Спасибо, наёмников получил. Когда докопался до скрипта, захотелось плакать: прописана реакция на событие "игрок кастует на себя DivineIntervention", а дальше - дли-и-инный список регионов, и вручную указанные координаты точек приземления в храмах... Создатели этих наёмников, конечно, молодцы, но тем программистам, кто писал сам движок и скриптовый язык уже не первый раз хочется что-нибудь оторвать. За халтуру.
Cheb
Так... Кажется, понял, почему подъятие силы и пр. не срабатывало. У меня в скрипте стояло: "если (GetTarget, Player ==1), то установить Hostile в 1" - доморощенная переменная, для отработки поведения. Вот... А в конце ритуала подъятия атрибута она у меня припечатывает игрока деструктивным заклинанием, которое сносит нехило хитов, ослепляет, и т.д... И только случайно я узнал, что в процессе этого колдования GetTarget, Player возвращает единицу! Ну, соответственно, дальше всё идёт наперекосяк: флажок враждебности устанавливается, и до поднятия аттрибутов игрока выполнение просто не доходит: они все внутри секции (if Hostile==0).. Такие вот пироги.
Cheb
:) Ура, заработало!.. Теперь надо сделать так, чтобы из скелетов бродячих можно было черепа выколупывать... Как шлемы их оформить, что-ли?..
Cheb
!!! http://perso.club-internet.fr/faust/morrow...or_Dummies2.pdf
...а то уже эти ошибки необъяснимые задолбали: в CS говорит - всё нормально, в Морре скрипт вылетает с воплями "EXPRESSION!" и "Right eval". Может, теперь разберусь...
Ваш ответ: