Помню когда про это читал, были высказывания что типа объекты исчезают, но фактически не удаляется и накапливаются в Сейве.
Disable() - это да, здесь только прорисовка отключается, а сам объект остаётся в игре. Но Delete() удаляет объект из игры навсегда, т.е. не остаётся записей в сохранке (это в теории, на практике проверить такое крайне затруднительно).
Изменение репутации для пользователя BileraON
BileraONOffline
Сообщение №5462
написано: 9 сентября 2013, 23:16
| Отредактировано: BileraON - 9 сентября 2013, 23:18
Как я понял речь идет о файле "aamyOutfitManaken", так вот как его выдрать из Creation Kit? И по какому адресу копировать? По аналогиии с текстурами это по адресу: \Skyrim\Data\Textures, но ведь не в текстуры же его пихать
Не-не, aamyOutfitManaken - это "список одежды", просто "параметр" в моде. Речь ведь шла о скриптах, так в Скайриме скрипты не просто объект, но и отдельный файл (!). Ты писал скрипт с названием aamyManakenXScript, так вот в папке Scripts лежит файл твоего скрипта под названием aamyManakenXScript.pex Его надо добавлять вместе с ESP, текстурами, нифами, и естественно, в своей папке Data\Scripts\aamyManakenXScript.pex (текстуры ты добавляешь так: Data\Textures\myMod\LaLaLa.dds)
GlobalVariable Property _Anton_TranslationComplete Auto Actor Property akCamera Auto Actor Property akPlayer Auto ObjectReference Property CameraPathMarker Auto ObjectReference Property ReturnMarker Auto ObjectReference Property CollisionMarker Auto
Int i Int IterationCounter
Int Iterations = 64 ; на сколько частей мы поделим круг (чем больше - тем плавнее будет поворот) Float SpeedT = 75.0 Float SpeedR = 180.0 Float TimeToWaitForTranslationComplete = 0.1
Event OnEffectStart(Actor akTarget, Actor akCaster) ; сразу блокируем возможность повторного каста этого заклинания до его завершения GoToState("CameraAlreadyCasted")
; ===================================================================== ; перемещаем камеру по заданному маршруту ; ===================================================================== i = 0 While i < 1 IterationCounter = 0 While IterationCounter <= Iterations ; вычисляем новое положение маркера для камеры Angle = ( 360.0 / Iterations as Float ) * IterationCounter
; возвращаем управление игроку Game.SetCameraTarget(akPlayer) Game.ForceFirstPerson() Game.EnablePlayerControls() Utility.Wait(0.1) endEvent
Event OnEffectFinish(Actor akTarget, Actor akCaster) endEvent
EndState
State CameraAlreadyCasted
Event OnEffectStart(Actor akTarget, Actor akCaster) endEvent
Event OnEffectFinish(Actor akTarget, Actor akCaster) ; отвязываем коллизию Актёра с камерой от маркера akCamera.SetVehicle( None ) Utility.Wait(0.1) ; убираем вызванную камеру и маркеры akCamera.MoveTo( ReturnMarker, 0.0, 0.0, 0.0, True ) CameraPathMarker.MoveTo( ReturnMarker, 0.0, 0.0, 0.0, True ) CollisionMarker.Disable() CollisionMarker.Delete() Utility.Wait(0.1) ; переводим скрипт назад в рабочий режим, чтобы камеру можно было вызвать снова GoToState("WaitingForCameraToBeCasted") endEvent
EndState
ПС: сам Актёр и два маркера уже добавлены в игру в спец ячейку, и оттуда вызываются при касте и по окончании эффекта возвращаются назад.
Антон, должен тебя огорчить - скрипт не рабочий, точнее некорректно работающий. При такой системе неизбежны рывки камеры, толком вращения не будет, равномерность под очень большим сомнением.
1. "сразу блокируем возможность повторного каста этого заклинания до его завершения " - это заблуждение, статусы ничего не заблокируют. При повторном запуске заклинания возникает новый эффект с новым скриптом, и поэтому никакие статусы или переменные на второй скрипт не повлияют. Получится два параллельно работающих скрипта, результат очевиден.
2. "ждём, пока камера выполнит перемещение к маркеру Utility.Wait(TimeToWaitForTranslationComplete) " - отсутствие синхронизации, полностью переместилась или ещё где-то в пути, а таймер отработал и запустил новое перемещение. Неизбежны рывки. Для синхронизации можно использовать событие OnTranslationComplete() на актёре-камере, которое будет запускать следующее перемещение.
3. Событие финиша надо удалить, оно даст ненужный баг, а толку от него ноль.
4. Сам расчёт кругового движения сделан не совсем правильно, толком вращения не будет. Если у тебя вращается, то это исключительно частный случай и на другом железе будет лажа.
5. Скорее всего, актёр-камера не будет удаляться из помещения, MoveTo не отработает (сделай камеру видимой и проверь). Возможно, это и есть твой полтергейст.
Если будет время, то я попробую изменить/поправить скрипт.
AleksTirex, один черт,я не понял как это сделать..я только поня,что с помощью скрипта и что скрипт повесить на рычаг..в самих скриптах я полнейший ноль..
Други, я, конечно, дико извиняюсь, но для Скриптов есть отдельная спец. тема. Нахфига всё в кучу тут валить, а? Потом замучаешься искать нужное.
Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Artem13, я там задавал когда то,никто не отвечал.туда никто и не заходит.да и изначально я спросил "как сделать" и понятия не имел,что это через скрипт делается)
Добавлено (10.09.2013, 17:54) --------------------------------------------- AleksTirex, спасибо большое
Изменение репутации для пользователя AleksTirex
AleksTirexOffline
Сообщение №5472
написано: 10 сентября 2013, 14:21
| Отредактировано: AleksTirex - 10 сентября 2013, 14:21
Други, я, конечно, дико извиняюсь, но для Скриптов есть отдельная спец. тема. Нахфига всё в кучу тут валить, а? Потом замучаешься искать нужное.
Здесь ведь есть модератор, надо чтобы он перенёс эти посты в нужную тему.
******* mayor, практически любое действие: переключение, добавление и удаление, одевание и снятие, включение и выключение, и т.д. - всё это делается на основе скриптов (даже стадии квестов переключаются скриптами).
Изменение репутации для пользователя anton
antonOffline
Сообщение №5473
написано: 10 сентября 2013, 14:48
| Отредактировано: anton - 10 сентября 2013, 14:52
AleksTirex, спасибо за подробный анализ, но по некоторым пунктам я хочу попробовать оправдаться:
Цитата AleksTirex
Скорее всего, актёр-камера не будет удаляться из помещения
Это интересно, проверю обязательно ... это может быть из за использования другой ячейки для хранения объектов ? (я не уверен что смогу сделать своего Актёра назад видимым, я там столько всего наменял, когда пытался избавить его от коллизии... )
Это интересно, проверю обязательно ... это может быть из за использования другой ячейки для хранения объектов ? (я не уверен что смогу сделать своего Актёра назад видимым, я там столько всего наменял, когда пытался избавить его от коллизии... )
Нет, другая ячейка не причём, там скорее проблема в привязке к маркеру + неотработка трансляции + телепортация. Они иногда получаются "несовместимы", т.е. мешают друг другу. Телепортацию можно исключить из скрипта - просто создавать нового актёра и маркеры, потом удалять. Трансляцию заменить на другой принцип (напишу ниже). Чтобы увидеть невидимого актёра, надо повесить на него способность типа Ghost, тогда по шлейфу эффекта можно определить наличие оного в локации.
Антон, у трансляции есть особенность или баг (?) : когда транслируешь не по координатам, а на цель, то объект начинает как бы следовать за перемещающейся целью. Возможно, что это баг, но у меня такое срабатывало. Попробуй этот вариант. Делаешь маленькую скорость трансляции (100-250) на цель-маркер, а саму эту цель постепенно перемещаешь по маршруту не давая её догнать, тогда возможно, что будет достаточно одного запуска трансляции на весь процесс. Более плавного варианта придумать сложно.
Изменение репутации для пользователя anton
antonOffline
Сообщение №5475
написано: 10 сентября 2013, 18:24
| Отредактировано: anton - 10 сентября 2013, 18:49
объект начинает как бы следовать за перемещающейся целью
Так на этом эффекте весь мой мод и построен ! Только я камеру постоянно подталкиваю, на тот случай если она всё таки догонит свой маркер.
Да, вот ещё забыл отметить, сегодня крутил камеру вокруг лошадки, так камера эту лошадку постоянно двигала, но когда я убрал "SetVihecle()" и вернул "SetIniBool("bDisablePlayerCollision:Havok",true)" всё стало нормально. Хотя коллизии со стенами, деревьями и землёй никуда не делись. Надо будет попробовать как то найти НИФ файл этой камеры, грохнуть оттуда коллизионный блок и посмотреть что получится...
Невидимку засветить мне пока не удалось. Добавил в СК ему кейворд "ActorTypeGhost", добавил способность "GhostAbility" и "GhostAbilityViolet" - ничего. Наверное этот эффект на нём надо через "myeffect.play()" запускать...
Ещё немного похвалюсь: сегодня модернизировал скрипт системой динамического расчёта квоты времени на выполнение камерой заданного интервала перемещения. Теперь круги получаются практически идеальные, прямо "как доктор прописал" ! (особенно по сравнению с тем что было ) Вот как я это сделал:
Код
; динамически вычисляем время ожидания ; (чтобы небыло дёрганных движений на малых радиусах, и элипсов - на больших) If (Radius > 0) TimeToWaitForTranslationComplete = (2*PI*Radius / Iterations) / SpeedT Else TimeToWaitForTranslationComplete = (360.0 / Iterations) / SpeedR EndIf
; скорректируем полученное время на коэффициент, зависящий от расстояния до цели, чтобы камера немного "не догоняла" маркер TimeToWaitForTranslationComplete = TimeToWaitForTranslationComplete * (Radius / 1000)
AleksTirex, я нацепил таки спецэффект на актёра-оператора. Эффект появляется и движется вместе с "оператором", и пропадает, когда "оператор" возвращается назад, в свою ячейку. Так что вроде бы всё работает как надо.
alexwar, ага, осталось только найти её, если она вообще существует.
Народ, копировал измерение, очистил его, создал 2 комнаты. Первая комната трофейная, а 2 для сна крафта и шмоток, но когда я сохраняюсь у меня сохраняется она рандомными отрывками, либо подчти полная одна комната, либо подчти полная другая, что я не так делаю, как мне сохранить обе комнаты и чтобы все было хорошо объясните плиз!
Изменение репутации для пользователя Imperator3
Imperator3Offline
Сообщение №5479
написано: 10 сентября 2013, 22:33
| Отредактировано: Imperator3 - 10 сентября 2013, 22:36
Ichimar, То есть при заходе в комнату ты видишь лишь часть моделей, но стоит отойти в другое место - и ты уже видишь другие модели? Ты не падаешь в пустоту? Если все верно, то делаешь так: кликаешь View > Show/hide window: В появившемся окне отмечаешь галочкой Portals and Rooms: Закрываешь окно. После этого можно увидеть, что в Render Window появились большие кубы: Они называются Room Marker. Удаляешь их всех. После этого можно будет встретить вот такие полупрозрачные модели с черной обводкой, они по большей части стоят в проходах: Это Portal Marker. Их ты тоже удаляешь. После этого все должно быть нормально.
Нашёл в СК ветку "Collision Objects", и в ней объект "L_CAMERA". Внутри свойств этого объекта есть большой список того, с чем эта камера будет взаимодействовать в игре (на сколько я понял по логике). И в описании этого объекта есть запись, что этот объект и есть камера игрока. Выходит это то что мне нужно (ещё не успел проверить).
Я думаю если удалить из этого списка все записи, то камера перестанет взаимодействовать с миром и будет плавно вертеться вокруг игрока. Мне интересно, если кто работал с такими объектами - прав ли я в своей догадке, можно ли удалить всё что там есть, или что то нужно оставить ?
Ichimar, прежде чем задавать вопросы здесь, советую ВНИМАТЕЛЬНО изучить это По вашему последнему вопросу ответ в сообщении номер 2 под спойлером "Редактирование существующего плагина"
anton, аккуратнее, если потом соберёшься поиграть Я подозреваю, что эти настройки влияют на взаимодействие игрока в виде от первого лица с миром.
Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
ребят.. проложил путь маркерами, меш есть, нпс идёт по пути до точки где маркеры находятся на разных уровнях (этажах), и дальше этой точки не идёт, как сделать чтобы нижний и верхний маркеры не влияли друг на друга?
Ichimar, когда выбираешь в ск какие файлы будешь загружать.короче при старте ск.сделав это,ты будешь все изменения сохранять в один (свой) плагин.сейчас ты при каждом перезапуске делаешь новое сохранение и они потом перебивают изменения друг друга.выдели свой плагин и сделай активным
mayor Я вообше из стима удалил и скайрим и СК так как я запутался, буду сегодня с 0 пробовать делать, и кстати как обновить стимовский ск до последней версии?
Ichimar, так ты спрашивай у людей совета.мне лично тут часто помогают хорошие люди.на счет стима не подскажу,я парень с повязкой на глазу и попугаем на плече))