Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
В FalloutNV скрипт scn vGomorrahSlot01Script содержит строчку ShowSlotMachineMenuParams GomorrahCasinoData 1 60 0, при чем не пойму что за 60 и 0, а в скрипте от мода такая же строчка но выглядит так : ShowSlotMachineMenuParams GomorrahCasinoData 1 CasinoMillionCaps.RateCasinoChips 0.
Здесь изменяется максимальная ставка. Вместо фиксированного значения 60 крышек назначается какая-то переменная. К фишкам это отношения, похоже не имеет. А вот предупреждение Invalid Chip in CasinoData list, откуда бы оно там ни выскакивало, имеет. Неправильная фишка в объекте "казино"... То есто смотреть надо, что там переправлено в этих казино и их фишках (Miscellaneous - Casino и Miscellaneous - Casino Chip). Хм, фишка там в каждом казино одна на все виды развлечений. Почему тогда не работают только автоматы? В чём эта нерабочесть, кстати, выражается в смысле симптомов?
Добавлено (13 Марта 2015, 19:03) --------------------------------------------- Скачал, посмотрел. Мод простой как табуретка, ломаться там нечему. В казино ничего не трогали, кроме максимального выигрыша. В игре бага не наблюдал. Версия игры 1.4.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1412
написано: 13 марта 2015, 16:29
| Отредактировано: КсюXa - 13 марта 2015, 18:20
Не знаю, как там в Лондоне на ГЕКК-вики, я не была. Может, там собака — друг человека! А у нас управдом — друг человека! а тут я проверила такую конструкцию ... Взяла модельку с набором анимашек, написала тот скрипт и зашла в игру. Работает жа. Что еще нужно человеку, чтобы достойно встретить старость, получить желаемое. RustWays, только там в скрипт нужно внести маленькое изменение. Потому что переменная State успевает смениться, и анимашка форвард прерывается, едва начавшись. Попробуй так: Scn RWTstcrn
int State
begin onActivate Player if State == 0 playGroup Forward 1 set State to 1 else if State == 1 playGroup Backward 1 set State to 0 endif endif end ------------- тут на твое усмотрение: хочешь - в типе блока пишешь OnActivate Player, хочешь - внутри блока - && GetActionRef == player . раз так более правильно. Я проверила именно на приведенном варианте.
Добавлено (13 Марта 2015, 19:29) --------------------------------------------- А, да... Вместо int State я использовала Short State Переменной типа Short вполне достаточно, чтоб отслеживать два состояния: 0 и 1 без точности до n-знаков после запятой
Здесь изменяется максимальная ставка. Вместо фиксированного значения 60 крышек назначается какая-то переменная. К фишкам это отношения, похоже не имеет. А вот предупреждение Invalid Chip in CasinoData list, откуда бы оно там ни выскакивало, имеет. Неправильная фишка в объекте "казино"... То есто смотреть надо, что там переправлено в этих казино и их фишках (Miscellaneous - Casino и Miscellaneous - Casino Chip). Хм, фишка там в каждом казино одна на все виды развлечений. Почему тогда не работают только автоматы? В чём эта нерабочесть, кстати, выражается в смысле симптомов?
Я пыталась найти проблему, почему у меня мод не хочет работать, точнее работает все кроме игровых автоматов. Все происходит следующим образом: Покупаю фишки у кассира, подхожу к игровому автомату, пытаюсь его использовать, и мне выводится это сообщение : Invalid Chip in CasinoData list. Вот и вся проблема. Версия игры 1.4. НВСЕ МСМ ФНВЭДИТ всякие баг фиксы, и ни чего не спасает.
От Сердца К Солнцу
Изменение репутации для пользователя Xilandro
XilandroOffline
Сообщение №1416
написано: 14 марта 2015, 21:53
| Отредактировано: Xilandro - 14 марта 2015, 21:57
Я пыталась найти проблему, почему у меня мод не хочет работать, точнее работает все кроме игровых автоматов. Все происходит следующим образом: Покупаю фишки у кассира, подхожу к игровому автомату, пытаюсь его использовать, и мне выводится это сообщение : Invalid Chip in CasinoData list. Вот и вся проблема. Версия игры 1.4. НВСЕ МСМ ФНВЭДИТ всякие баг фиксы, и ни чего не спасает.
Как я уже говорил, этот мод никаких фишек не трогает. В казино он меняет только максимальный выигрыш, в скриптах автоматов, рулетки и блэкджека - только максимальную ставку. Что самое смешное, в основном мастер файле и в дополнениях никаких сообщений о фишках-инвалидах не обнаруживается. Пожалуй, на всякий случай уточню. Проверялось на чистой игре (по крайней мере без других "улучшителей казино")? Без этого мода работает? Если на чистой и без мода работает... Что ж, необъяснимое иногда случается.
Joopeeter, какие фишки инвалиды? Там же написано, что неправильное *ID* фишки в CasinoData List или фишка которой я хочу активировать Слот-машину не найдена в CAsinoData List. Улучшений на казино кроме этого мода нет. Посмотрела в FNVEdit, ну не пойму в чем проблема, может в различиях с поле SCDA - Complited Script. RefCount? Тогда будьте добры скажите мне, как найти CasinoData List? Сама
Тогда будьте добры скажите мне, как найти CasinoData List?
Полагаю, это те самые казино, которые в разделе Casino, если смотреть через FNVEdit. Через ГЭКК их видно наглядней (раздел Miscellaeuos - Casino). Признаюсь, что-то в них сломать мне так и не удалось.
Изменение репутации для пользователя dianka48
dianka48Offline
Сообщение №1421
написано: 17 марта 2015, 21:25
| Отредактировано: dianka48 - 17 марта 2015, 21:51
Joopeeter, , зачем вы надо мной издеваетесь? Разве у слова Invalid только одно значение? Я Вам сделал, что-то плохое или оскорбила Вас? Ни когда не понимала глум над человеком который пытается разобраться с проблемой и просит помощи у более знающих людей, а те в свою очередь вместо конструктива, буквально переводят слова, хотя это абсолютно неуместный перевод. Если посмотреть с юмором на это, то фишка то правда инвалид, раз её не видит игра. А вот все моды:
01NodFireflyLaserRifle.esp AWorldOfPain(Preview).esm CaravanPack_lang.esp ClassicPack.esm ClassicPack_lang.esp DeadMoney.esm FalloutNV.esm GunRunnersArsenal.esm GunRunnersArsenal_lang.esp HonestHearts.esm LonesomeRoad.esm MercenaryPack.esm MercenaryPack_lang.esp More Perks for Companions Update.esp More Perks for Companions.esm More Perks for Dead Money Update.esp More Perks for Dead Money.esm More Perks for Honest Hearts Update.esp More Perks for Honest Hearts.esm More Perks for Old World Blues Update.esp More Perks for Old World Blues.esm More Perks Update.esp More Perks.esm More Traits Update.esp More Traits.esm OldWorldBlues.esm PointLookoutNV.esm ThePittNV.esm TribalPack.esm TribalPack_lang.esp ZetaNV.esm CaravanPack.esm HonestHeartsRusMgTribal.esp NVEC BugFixes.esp New Vegas Error Corrections Reduce CTD - DLC.esp The Mod Configuration Menu.esp SlaveTown - Episode II.esm homeITU.esm DS_WH40K.esm MoMod.esm domecity.esm House of Horrors.esm 7758_CasinoMillionCa.esp SignatureWeapons.esp Night Furia.esp Unique skill Magazines.esp ForestPerkNoCL.esp Necron Gauss Weapons.esp Survivalist Crossbow.esp NiptonRebuilt_RUS.esp Performance Of The Gods.esp Clean Up New Vegas.esp RadiiHairFix.esp VendorsChestsRespawnMonitor (Silent notice).esp AQFH2NV.esp AQFH_D_NV.esp AWOP-LowNPCSWastelandOnly.esp SlaveTown - Episode II - Assets.esp Max Level 100.esp SignatureArmor.esp CMD.esp BoostedSkills.esp BOA.esp Sword.esp PX-187 Phase Pulse Cannon.esp 1puxagoustlla.esp SniperAMR.esp AR_Ghost_Marines.esp
В FOMM в другом порядке все выставлено. Тогда как игра определяет; могу я поиграть в слот-машину; какое количество у меня фишек; и соответствуют ли фишки этому казино?
От Сердца К Солнцу
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1422
написано: 18 марта 2015, 06:29
| Отредактировано: Joopeeter - 18 марта 2015, 00:00
Да не издевается никто. Это я просто так шучу, что без смайлика об этом и не догадаешься. Я вот о чём. Текст сообщения - его игра не сама сочинила, он где-то написан. В FalloutNV.esm и DLC его нет, по крайней мере поиск в ГЭКК ничего не выдаёт, а поиск там будь здоров какой дотошный. Значит оно в каком-то из этих модов. Значит мод, в котором оно находится, каким-то образом затрагивает казино, иначе за каким бы лешим автору мода вносить туда это сообщение. Значит, возможен конфликт с другими модами, затрагивающими казино. Наш рассматриваемый мод сам по себе, когда он единственный подключенный, ничего в казино сломать не может. Конечно, скачивать всю эту гору модов я не стану. Да и поиск конфликтов среди чьих-то чужих модов - это не то, что я называю интересной задачей. Да и тема совсем не о том. Поэтому просто несколько соображений, куда, по моему мнению, надо смотреть. Загрузить всю кучу в FNVEdit и в ГЭКК (ну, может, кроме тех, которые совсем вне подозрений - типа всяких классикпаков). Особенно под подозрением "исправители всех ошибок" и "улучшители всего". В Эдите посмотреть в разделы Casino и Casino Chip - какие моды туда залезают. Глянуть, не затронуты ли сами игровые автоматы - они в разделе Activator, игровой автомат Гоморры, например, называется, vGomorrahSlot01. В ГЭКК зайти в меню Edit - Find Text и ввести в поиск текст сообщения или его часть. В каком моде сообщение отыщется, тот, голубчик, и конфликтует.
Цитата Xilandro
Player.PlayGroup Forward 0 ;потому что 1-ца багнутая
Нажал на кнопку и пошёл, пошёл, пошёл... А что, можно было бы использовать. Жаль, что это не работает хоть сколько-нибудь удовлетворительно. Особенно с нолём.
Никто еще не разбирался с этим плагином - JIP NVSE Plugin ?Проект вроде многообещающий..
Я разбирался. Есть пара странных функций типа Get\SetPrimitiveBound, а в остальном всё очень цивильно, звуки, погода, прожектили, интерфейс, новые функции для оружия и аммуниции. С первого взгляда плагин очень легко недооценить, но он на самом деле дает возможность сделать очень крутые моды о которых раньше даже мечтать было страшно) Да и проект очень быстро вышел из разряда пряника в разряд мастхеф.
Evaluate, adapt, destroy
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1425
написано: 19 марта 2015, 16:06
| Отредактировано: Joopeeter - 19 марта 2015, 16:13
Не смотря на разные незнакомые слова типа IsKeyPressed и let, мне кажется, что принципиальных отличий от предыдущего скрипта тут нету. Это теоретически. Посмотрел бы и на практике, но я из тех странных типов, которые играют в ванильку без нормальных модов.
Изменение репутации для пользователя Xilandro
XilandroOffline
Сообщение №1426
написано: 19 марта 2015, 16:25
| Отредактировано: Xilandro - 19 марта 2015, 16:27
Всё там работает. Если нужно форвард\бэквард анимацию для активатора (не объекта) и есть какие-то проблемы с проигрыванием - нужно проверить cycle type в kf и убедиться что там clamp. Одного фрейма playgroup хватит чтобы анимация проигралась полностью. Если нет - можно попробовать вместо нуля единицу, хотя не уверен багнется ли. Если начнет глючить - анимация типа specialIdle и rActivator.playIdle всё сделает.
Отличие второго скрипта в том что "нажал кнопку и пошел пошел пошел", а не "нажал кнопку и типа пошел, но не пошел" + всё на одной кнопке, работает как on\off по поводу IsKeyPressed - http://geck.bethsoft.com/index.php?title=IsKeyPressed А let - тот же set только с кучей полезных возможностей, позволяет работать с массивами, стрингами и прочей кучей полезных новых функций в NVSE 4+. Чем быстрее перешел на Let - тем лучше, потому использую повсеместно вместо set. http://geck.bethsoft.com/index.php?title=Let
Скрипт - молодец. Вот только что он смог? Запустил ли он player.PlayGroup? По виду, он запустил просто PlayGroup или ВывескаРеф.PlayGroup. Это и я могу.
Цитата Xilandro
объяснить что и где не работает, здесь не позволяет либо менталитет, либо религия.
Вообще-то да, ну да ладно. На всякий случай напомню, что речь о запуске анимации на игроке, а не на активаторе. От первого лица только чуть дёргается камера, как при коротком нажатии на клавишу движения. Да и то, только если шевельнёшь мышкой или клавой. Что с нолём, что с единицей - без разницы. От третьего лица с нолём та же история - короткий порыв к движению, как при кратком нажатии клавиши. От третьего лица с единицей начинается медленное движение. Шевельнёшь чем-нибудь - движение обретает нормальную скорость. При движении активировать активатор снова не удаётся, но это ладно, чёрт бы с ним. Чистая игра без модов, улучшителей, исправителей и т.п. Подробно описывать, как я, падкий до халявы, на форуме нажал Ctrl+C, а в редакторе - Ctrl+V, не стану. В то, что эту операцию я проделал правильно, придётся поверить на слово.
Добавлено (19 Марта 2015, 22:27) --------------------------------------------- NPC на PlayGroup с нолём реагируют так же - коротким подёргиванием.
Там достаточно много документации, нет возможности полностью с ней ознакомится. Меня интересовал вопрос - нет ли там функции, которая позволяет задать референс-ссылку на выделенный в пип-бое объект? Именно выделенный, а не одетый или использованный..
Если я правильно понимаю этот механизм, у большинства предметов, находящихся в инвентаре, нет собственного FormID. Точнее, он есть только у тех, которые недавно были именно референс-объектами, самостоятельными объектами игрового мира - на полу валялись например (и существование этого FormID привязано к загруженности той ячейки, в которой оно валялось).
Даже в тех случаях, когда FormID есть, это не "полноценный" референс - например, оружие в контейнере не может быть заряжено, хотя владелец у предмета может быть, отсутствуют координаты X/Y/Z, хотя масштаб может быть не единица...
Изменение репутации для пользователя Quazar
QuazarOffline
Сообщение №1433
написано: 20 марта 2015, 05:38
| Отредактировано: Quazar - 20 марта 2015, 05:39
Ipatow, дело в том что в Обливионе такая функция была (точнее не в самой игре, а опять же в экстендере), вот правда ее название я конечно уже не вспомню.. Была надежда, что возможно ее все же перенесут в фоллаут.
Хотя, я уже сам думал о том, что если это до сих пор не сделали, то видимо у этих двух игр действительно есть какие-то значительные отличия в механизме инвентарных предметов, либо какие-то другие серьезные причины...
А поможете еще с одним вопросом? Вот мне нужно сделать так чтобы после убийства гг 20 когтей смерти появился мессадж об этом... Есть лист-form куда вписаны все когти и есть GetDeadCount но скрипт не хочет сохранятся - пишет что-то про actorbase. Сама строчка такая: IF Player.GetDeadCount CrDeathClawList > 20 ShowMessage DeathClawDead20Message ENDIF
и ничего не сохраняется. Вот так. Если вместо лист-form пишу ИД какогото когтя, тогда все хорошо сохраняется и работает. Но когтей ж много разных в игре у всех ИД разные, как тогда быть? как можно GetDeadCount вместе с form заставить работать? Или нельзя так?
..
и спасибо заранее
Изменение репутации для пользователя Galko
GalkoOffline
Сообщение №1435
написано: 20 марта 2015, 10:41
| Отредактировано: Galko - 20 марта 2015, 10:45
А полностью текст ты привести не можешь? И мы должны гадать - что же там компилятор пишет? А во вторых: CrDeathClawList Лист. т.е - список. Получается в скрипте написано: если количество убитых СПИСКОВ больше 20. Как можно убить список?
А вообще-то все это уже реализовано в достижениях (в ГЕКК это раздел Challenge) Когда после убийства скольких-то там тараканов, скорпионов, мутантов, (нужное подчеркнуть) выводится сообщение о награде. Можешь посмотреть, как это сделано и повторить.
Пишет такую ошибку: invalid actor base 'CrDeathClawList' for parameter Actor Base
и три кнопки Да , Нет, Отмена
И все, скрипт не сохраняется.
>> в ГЕКК это раздел Challenge
А мне для Фоллаута нужно, там нет этих достижений.
>> Как можно убить список?
Я думал что будут считаться те кричеры которые в этом списке. Если убито 20 или больше кричеров из списка тогда и появится мессадж.
.. я млжет не так что пишу но я 3 недели назад только gekk первый раз открыл, ничего не знаю еще. Вот и пишу чтобы узнать как можно сделать такой скрипт. Очень нужно. я как раз и хочу сделать типа достижений как в Вегасе но конечно попроще. Для себя.
Пишет такую ошибку: invalid actor base 'CrDeathClawList' for parameter Actor Base
GetDeadCount работает только с базовыми актерами, не со списками. Поэтому у тебя скрипт компилируется когда ты в качестве проверки используешь EditorID существа (ты сам писал Если вместо лист-form пишу ИД какогото когтя, тогда все хорошо сохраняется и работает.), но НЕ компилируется когда указываешь список. Текст ошибки как раз на это и указывает. "Помирить" ты их никак не сможешь, если функция не работает со списками, то она не работает не чуть-чуть а насовсем..
Интересно, кто-нибудь сделал функцию SetLinkedRef в пару к оригинальной Get..? Она ведь до скрежета зубовного напрашивается с незапамятных времён - у линка роскошное почётное место практически во всех кондишнах, пакеты поведения без динамической линковки просто бледная тень того, что могло бы быть... Среди FOSE-плагинов такая определённо не появлялась.
Изменение репутации для пользователя Xilandro
XilandroOffline
Сообщение №1440
написано: 20 марта 2015, 16:17
| Отредактировано: Xilandro - 20 марта 2015, 16:25
SetLinkedReference есть в JIP плагине. Но функция не сохраняет изменения в сейв. Вот что мне сказал кодер по поводу похожей функции CloneForm "The function relies on functionality of the saves that no longer exists in the engine since FO3" Скорее всего потому SetLinkedRef и была оставлена ребятами за бортом как в FOSE, так и в NVSE. Hlp с оф.форума пытался найти выход, эдакой обходной путь сохранения разных изменений в сейв файл, но безуспешно. Можно в принципе подолбать разрабов NX'а, они сохраняют свои данные в отдельный файл, может смогут сделать то же самое с референсами.
вот описание SetLinkedReference: (null) reference.SetLinkedReference objectRef:ref Sets the calling reference's linked reference to objectRef or, if the latter is not provided, removes its current linked reference. Unfortunately, the changes are not saved with the game and this function must be called again when the game is restarted.