pz_4 803 Опубликовано 23 августа (изменено) Не акутально. Изменено 29 августа пользователем pz_4 Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 29 августа 3 часа назад, FNVFUN сказал: Если эта переменная багуется, то лучше создать другую переменную и ей манипулировать. Баг движка какой-то. Нет никакой ошибки, есть криворукий идиот (я) который напрочь забыл, что сделал перезапись скрипта(я забыл, что я использовал именно этот скрипт для личных целей), в которой не было обновленного механизма подсчета, и развел панику. 1 1 Поделиться сообщением Ссылка на сообщение
0 FNVFUN 973 Опубликовано 24 августа В 23.08.2026 в 12:30, pz_4 сказал: MQ03.bodyCount = 0 нужно сделать только один раз. А он вынесен в начало кода после проверки if eval MQ03.bodyCount < 14 и постоянно сбрасывается в ноль. А полный скрипт можешь скинуть? А то сижу на другом компе теперь, где не установлен SFW) Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 24 августа 1 час назад, FNVFUN сказал: А полный скрипт можешь скинуть? А то сижу на другом компе теперь, где не установлен SFW) Под спойлером полный текст. Он без scn навзания т.к. это не полноценный скрипт а элемент квеста, через внутриквестовую систему скриптов написан. Поделиться сообщением Ссылка на сообщение
0 FNVFUN 973 Опубликовано 24 августа 1 час назад, pz_4 сказал: Под спойлером полный текст. Он без scn навзания т.к. это не полноценный скрипт а элемент квеста, через внутриквестовую систему скриптов написан. Ну так он же 1 раз срабатывает, и далее идет проверка на MQ03.Bodycount >= 14 У тебя этот этап квеста забагался что ли? Там еще похожая проверка есть в скрипте квеста. Попробуй к каждому суперу тпшнуться и проверить, убит ли он. В Ротонде смотрел, все ли убиты? А то у меня этот квест ни разу не багался, а сохранение так никто и не скинул) Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 24 августа (изменено) 1 час назад, FNVFUN сказал: Попробуй к каждому суперу тпшнуться и проверить, убит ли он. В Ротонде смотрел, все ли убиты? См. скриншот в шапке темы. Я каждого из 14 мутных перебрал по REF и проверил, все getdead 1 , но переменная стоит в нуль. Повторюсь, я уверен, что дело именно в обнулении которое стоит в начале скрипта. Да, я понимаю твою логику когда ты писал код, что мол оно должно обнулить, потом пробить мутных, получить число 14 и уйти на следующую стадию до очередной проверки есть ли 14 и обнуления - но это не работает. Переменная просто бесконечно скидывается в ноль. Изменено 24 августа пользователем pz_4 Поделиться сообщением Ссылка на сообщение
0 MagnuMspec 8 681 Опубликовано 24 августа Впихнул проверку. GRA_MG05_SMcountDoonce.esp Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 24 августа (изменено) 2 часа назад, MagnuMspec сказал: Впихнул проверку. GRA_MG05_SMcountDoonce.esp Всё еще веселее. У нас фикс задвоился вообще. в MQ05Script [SCPT:0001B52E] вынесен такой же блок Спойлер ScriptName MQ05Script ;Quest script for MQ05 ;contains information about associated scripts for MQ05, and general, non-object-specific scripting for quest MQ05 ;MQ05 Object Scripts: ;- MQ05FuseBoxScript ;- MQ05FloodControlPumpScript ;- MQ05MainframeControlScript ;- MQ05PipeControlScript ;- MQ05IntercomScript ;Related Scripts: ;- ColonelAutumnScript ;- DoctorLiScript ;- RivetCityGarzaScript ;-MQ05GarzaTriggerWallScript short doonce short DadEscort ;flag set to 1 if player agrees to go with Dad to Rivet City short AutumnTrigger short ConvVar short LiGreet short LiFollow short LiWait short NoWay20 short DanGun short LiEnd short LiGarzaConv short DadLiConv short Broadcast short MutantsKilled ;incremented as mutants inside PPurity are killed; scientists won't enter until they're all dead short DeathScene ;flag set on Colonel Autumn's script; used for running death packages on related NPCs short AutumnMove ;flag set when moving Autumn to Raven Rock Short DadMove ;flag set if moving dad directly to PPurity Short LiMove ;flag set if moving Dr. Li directly to PPurity Short AnnaMove ;flag set if moving Anna directly to PPurity Short GarzaMove ;flag set if moving Garza directly to PPurity short NoFighting ;flag set when player's ability to fight is removed in stage 75 short GarzaKillPostSit ;flag set if Garza is killed by the player after his situation has been resolved short SciMove ;flag set when moving Scientists to Project Purity (if player fast travels) short AllClear ;flag set if Scientists are on the way to PPurity but mutants are not all dead short GateOpen ;flag set to 1 when Citadel Gate is opened, used for Li's packages short CueMusic ;flag set to 1 when Enclave invades and we start action music. set to 0 to cut music off when player exits Taft short RCBridgeOpened ; sesom: Bethesda assumed the bridge variables are loaded while the cell isn't. This is wrong sometimes in FO3 and everytime in NV ; I added a indicator here (quest script everytime loaded) to check if the bridge was already opened. It replaces the doonce in ; RCExBridge1SCRIPT float AutumnTimer float greettimer ;timer used to control when Dr. Li greets the player after dad is dead (uses quest delay to pad the time) ;the following vars are for taft tunnel, and the situation that arises with Garza short GarzaSit ; values: ; 10 - Garza Healed ; 20 - Garza Drugged ; 30 - Garza Left Behind ; 40 - Garza Stays Behind ; 99 - Killed by other ; 100 - Killed by player Begin GameMode ;>>>Добавлено 07.12.25 Фикс незасчитывающихся убийств суперов if eval GetStage MQ05 == 20 || GetStage MQ05 == 25 if eval MQ03.bodyCount < 14 MQ03.bodyCount = 0 if eval MQ03Mutant01.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant02.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant03.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant04.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant05.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant06.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant07.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant08.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant09.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant10.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant11.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant12.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant13.GetDead MQ03.bodyCount += 1 endif if eval MQ03Mutant14.GetDead MQ03.bodyCount += 1 endif endif endif ;<<< ;If player gets to Project Purity before the scientists, move them to a marker nearby to shorten the wait if ( GetStage MQ05 == 20 ) if ( SciMove == 0 ) ;If mutants aren't all dead, check for player near exterior marker and move NPCs to a marker down the path if ( MQ03.bodycount < 14 ) Set AllClear to 1 if ( Player.GetDistance3D MQ05ScientistExteriorWaitMarker < 1000 ) if ( MQDadRef.GetDistance3D MQ05ScientistExteriorWaitMarker >= 10000 ) MQDadRef.Moveto MQ05ScientistCatchUpMarker endif if ( DoctorLiRef.GetDistance3D MQ05ScientistExteriorWaitMarker >= 10000 ) DoctorLiRef.Moveto MQ05ScientistCatchUpMarker endif if ( JaniceKaplinskiRef.GetDistance3D MQ05ScientistExteriorWaitMarker >= 10000 ) JaniceKaplinskiRef.Moveto MQ05ScientistCatchUpMarker endif if ( AnnaHoltRef.GetDistance3D MQ05ScientistExteriorWaitMarker >= 10000 ) if ( AnnaHoltRef.GetDead == 0 ) AnnaholtRef.Moveto MQ05ScientistCatchUpMarker endif endif if ( GarzaRef.GetDistance3D MQ05ScientistExteriorWaitMarker >= 10000 ) if ( GarzaRef.GetDead == 0 ) GarzaRef.Moveto MQ05ScientistCatchUpMarker endif endif endif ;If mutants are all dead, move everyone to the outside marker close to the building else if ( Player.GetInCell PPurity == 1 ) if ( MQDadRef.GetInCell PPurity == 0 ) if ( DadMove == 0 ) MQDadRef.MoveTo MQ05ScientistExteriorWaitMarker set DadMove to 1 endif endif if ( DoctorLiRef.GetInCell PPurity == 0 ) if ( LiMove == 0 ) DoctorLiRef.Moveto MQ05ScientistExteriorWaitMarker set LiMove to 1 endif endif if ( AnnaHoltRef.GetInCell PPurity == 0 ) if ( AnnaMove == 0 ) if ( AnnaHoltRef.GetDead == 0 ) AnnaHoltRef.Moveto MQ05ScientistExteriorWaitMarker set AnnaMove to 1 endif endif endif if ( GarzaRef.GetInCell PPurity == 0 ) if ( GarzaMove == 0 ) if ( GarzaRef.GetDead == 0 ) GarzaRef.Moveto MQ05ScientistExteriorWaitMarker set GarzaMove to 1 endif endif endif endif ;/ player in cell PPurity endif ;/ bodycount check endif ;/SciMove == 0 endif ;/ getStage MQ05 == 20 ;If player has to kill mutants, check for MQ03.Bodycount and update stage when they're all dead. if ( GetStage MQ05 == 25 ) if ( MQ03.BodyCount >= 14 ) SetStage MQ05 26 Set MQ05.AllClear to 2 endif endif ;also check for player having killed mutants before talking to Dad and getting Stage 25 update if ( GetStage MQ05 == 20 ) if ( AllClear == 1 ) if ( MQ03.BodyCount >= 14 ) SetStage MQ05 26 Set MQ05.AllClear to 2 endif endif endif ;If player has left the cell for any reason during stage 75, re-disable fighting when he comes back in ; if ( GetStage MQ05 == 75 ) ; if ( NoFighting == 2 ) ; if ( Player.GetInCell PPurity01 == 1 ) ; DisablePlayerControls 0 0 1 ; set NoFighting to 1 ; endif ; endif ; endif ;When vars are initially set, count down AutumnTimer. When it runs out, move Autumn's ref to Dad ;Note: Rest of this sequence is handled by ColonelAutumnScript, on NPC ColonelAutumn if ( MQ05.AutumnTrigger == 1 ) PPBulkhead01Ref.SetOpenState 0 set MQ05.AutumnTrigger to 2 JaniceKaplinskiRef.SetRestrained 1 endif ;Have DoctorLi force-greet the player once dad is dead if ( LiGreet == 1 ) DoctorLiRef.EVP set LiGreet to 2 endif ;if player is a smart-ass and moves away from Li while at the Citadel, set vars as if he'd been there if ( LiEnd > 0 ) if ( Player.GetDistance3D DoctorLiRef > 5000 ) if ( GateOpen == 0 ) set GateOpen to 1 Set MQ05.LiEnd to 6 ; SetEnemy PlayerFaction EnclaveFaction 1 1 ;Makes the Enclave neutral to the player again. endif endif endif ;Loop to perpetuate action/battle music during Enclave Invasion and Pursuit. ; MQ05.cueMusic set to 1 by MQ05EnclaveSceneSCRIPT - to allow appropriate delay after stage 75 is set. if cueMusic == 1 && getStage MQ05 < 100 ; Music has been cued playMusic defaultBattle ; calling every frame to ensure it remains queued. elseif cueMusic == 1 && getStage MQ05 >= 100 ; stage 100 hit - cut the music playMusic defaultExplore set cueMusic to 2 endif End Но что важнее - еще и я не прав был таки. Таки дело не в обнулении, а в том, что не срабатывает само начисление очков за трупы. Попробовал из консоли толкнуть MQ03.bodyCount += 1 - оно сработало, в т.ч. и на коде без DoOnce(т.е. я был не прав, обнуления нет) но от убийства мутных - не происходит увеличения. Попробовал грохнуть дубликат из MQ05Script [SCPT:0001B52E] - ноль эффекта вобщем не срабатывает вся конструкция if eval MQ03Mutant0x.GetDead MQ03.bodyCount += 1 endif Изменено 24 августа пользователем pz_4 Поделиться сообщением Ссылка на сообщение
0 FNVFUN 973 Опубликовано 24 августа (изменено) 38 минут назад, pz_4 сказал: Таки дело не в обнулении, а в том, что не срабатывает само начисление очков за трупы. Ну я так думал, что дело в чем-то таком. Почему-то у некоторых этот баг проявляется. Иначе работали бы родные скрипты суперов и не пришлось бы вообще какой-либо фикс делать. Можешь скинуть сохранение? 38 минут назад, pz_4 сказал: if eval MQ03Mutant0x.GetDead MQ03.bodyCount += 1 endif Конкретно что не работает, условие или команда? Можешь проверить таким кодом: if eval MQ03Mutant0x.GetDead print "test" endif Изменено 24 августа пользователем FNVFUN Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 24 августа (изменено) 1 час назад, FNVFUN сказал: Конкретно что не работает, условие или команда? Пока что не знаю(вручную то команда срабатывает. Если в консоль вбить. Значит условие не срабатывает, но я еще перепроверю пару раз всё), - завтра посижу поэкспериментирую. Изменено 24 августа пользователем pz_4 Поделиться сообщением Ссылка на сообщение
0 Вис691 676 Опубликовано 25 августа Всем привет! Если это stage скрипт, то он срабатывает ровно один раз при переходе на соответствующую стадию. Соответственно, если на эту стадию перейти до убийства всех мутантов, то 14 не насчитается никогда. Ну а раз там 0, то похоже переход происходит до убийства хотя бы одного (либо до стадии вообще не дошли). Подобные проверки надо в главный скрипт вставлять, который постоянно крутится. P.S. У меня тоже пока игры нет, т.к. комп недавно поменял, поэтому сам посмотреть не могу. 1 Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 25 августа 1 час назад, Вис691 сказал: Если это stage скрипт, то он срабатывает ровно один раз при переходе на соответствующую стадию. Спасибо. Вот это очень полезное лично для меня замечание, о котором я если и знал - то забыл благополучно. Делаем вывод, что нужно курить MQ05Script [SCPT:0001B52E], как основной метод подсчета. А этот в стадии, полагаю, нужен для подсчета если игрок перебьет мутных до квеста. Поделиться сообщением Ссылка на сообщение
0 FNVFUN 973 Опубликовано 26 августа (изменено) *Обновлено* Я не так понял, тему разговора, сори) Изменено 26 августа пользователем FNVFUN Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 27 августа (изменено) Окей, я долбоеб максимальный. Нашел у себя левый плагин который перезаписывал MQ05Script [SCPT:0001B52E] и руинил обновленный счетчик. Проблемы нет, сам дурак. Прошу прощения у всех, кого дернул разбираться. Изменено 27 августа пользователем pz_4 Поделиться сообщением Ссылка на сообщение
0 FNVFUN 973 Опубликовано 28 августа Если эта переменная багуется, то лучше создать другую переменную и ей манипулировать. Баг движка какой-то. Поделиться сообщением Ссылка на сообщение
0 MagnuMspec 8 681 Опубликовано 29 августа 8 часов назад, pz_4 сказал: Нет никакой ошибки, есть криворукий идиот (я) который напрочь забыл, что сделал перезапись скрипта(я забыл, что я использовал именно этот скрипт для личных целей), в которой не было обновленного механизма подсчета, и развел панику. Т.е. проблемы нет?) Поделиться сообщением Ссылка на сообщение
0 pz_4 Автор вопроса 803 Опубликовано 29 августа 4 часа назад, MagnuMspec сказал: Т.е. проблемы нет?) Нет. Проблемы нет. Есть кривые руки. Поделиться сообщением Ссылка на сообщение
Не акутально.
Изменено пользователем pz_4Поделиться сообщением
Ссылка на сообщение