Цитата @pertureЯ ничего не пойму, потому что не знаю где, что и для какой цели ты пытаешься прописать Вот квестовый скрипт с функцией:
Код
Scriptname aaRaceIdentityScript extends Quest
Quest Property aaRaceIdentQuest auto Race Property NordRace Auto Race Property NordRaceVampire Auto Race Property DemonicaRace Auto Race Property DemonicaRaceVampire Auto
По задумке функция дублирует GetRace, но возвращает не DemonicaRace, а NordRace. А это скрипт алиаса в этом же квесте, который вызывает функцию GetPlayerRaceIdentity на алиасе aaPlayerAlias:
Event OnInit() (GetOwningQuest() as aaRaceIdentityScript).GetPlayerRaceIdentity(ReturnRace, Self) EndEvent
Квест запускается при старте игры с приоритетом 99. Т.е. суть задумки была в том, чтобы заставить игру распознавать демонику как норда. Соответственно, все реплики в квестах, связанные с расой, должны были применяться для демоники как для норда без правок самих квестов и т.д. Если бы это сработало, я бы переписала функцию так, чтобы вообще любая недефолтная раса распознавалась как одна из дефолтных по выбору игрока. А так оно не работает, то и смысла нет возиться.
З.ы. Проверила лечение от вампиризма - перс лечится нормально.
tuordiel, тогда остается распаковать бса-архивы пака текстур и неоф.патчей. Если все подключено, и вылетает, значит, или что-то не подхватилось, или где-то конфликт.
Если пиратка летает как птица, Лицензия падает как рубля курс, Попробуйте в Стиме вы обновиться, Качните Креатион Кита ресурс. Расширитель скриптов на него накатите... Настройте инишники и драйвера... Патаметры менеджера подкрутите... Еще вылетает? Попейте пивка.
Нафига вам ванильная броня на кастомной расе. Вам предлагают Lamborghini, а вы жалуетесь, что запчасти от Запорожца к ней не подходят. :lol: По поводу абилок. Малая способность - Сигнатура - Обнаружение жизни в небольшом радиусе - Манакост 0 - Кулдаун до выключения; Малая способность - Фамилиар - Призыв фамилиара (любого по вкусу, хоть дракончика) Lvl <=Lvl PC - Время "до смерти" - Манакост 0 - Кулдаун 3 часа; Способность - Демоническое присутствие: - В бою каждое убийство противника повышает наносимый урон и/или шанс нанести критический урон и/или сопротивление входящему урону; - Хождение по воде; - Животные и существа, кроме мертвяков и даэдра, не атакуют до нападения; - Низкоуровневые нпс не атакуют до нападения.
в стартовой версии надо будет ей чет адаптировать из того, что уже создано для LB 2.0
По всей видимости придется переписывать квесты и скрипты под одежду Лилит.
Зачем огород городить? - Создается уровневый список, куда засовывается одежда Лилит. На ГГ через абилку или квест вешается скрипт, который проверяет, из какого списка экипируется предмет. Предмет из неправильного списка деэкипируется, вместо него экипируется какой надо. - Не создается уровневый список, а EditorID допустимой одежды проверяются напрямую в скрипте. - Вообще никаких универсальных решений не создается, пишется скрипт, 1 раз при 1 запуске игры удаляющий из инвентаря лохмотья и добавляющий в инвентарь "стартовый" комплект. Игроку предлагается не страдать херней и не напяливать несовместимый шмот.
1. В квесте "Защита родословной" за вампиров нужно надеть броню Стражи рассвета и пойти убить NPC в одном из городов.2.1 В квесте "Ум безумца" при входе к Шеогорату автоматически надевается богатая одежда. 2.2 Так же богатая одежда нужна в квесте "Дипломатическая неприкосновенность" для продолжения квеста перед залезанием в повозку перед Талморским посольством.
А это вообще не проблема, потому что весь этот шмот полностью закрытый, соответственно, пофиг, под какое он тело. И надевается 1 раз за игру.
Вертикальную синхронизацию лучше ставить в адаптивный режим. При этом, если дрова последние, в 251 енб надо включать FPSLimit и WaitBusyRenderer, иначе есть опасноть, что енб+дрова "вздуют" видеокарту лишней нагрузкой, особенно если отражения включены. В 221 енб то ли наоборот, то ли ему просто пофиг.
а цветовая маска на губы имеет разрешение 256х256 пикселов. Более высокое разрешение не поддерживается движком
Ну щас. SKSE позволяет играть с любым разрешением, тинтмаски давно уже делают 2048. Правда, у меня с LB подружились только тинтмаски от Bella, а они 1024. А т.к. у LB3.0 голова новая, все существующие гарантированно "поедут", что как бэ намекаэ... Конечно, можно не краситься.
Искать сути проблемы и решений не стал, греша на движок и совесть разрабов.
У разрабов совести нет. Конструктор не умеет работать с кастомными тинтмасками, и если загрузить такую тинтмаску и назначить нпс мейкап с прозрачностью >0, то сгенерируется такая фигня, как у тебя и у PhysxN на скрине. Поэтому фейсген генерится с тинтмаской дефолтного разрешения, а для игры уже подкладывается кастомная. SKSE обеспечивает обработку тинтмасок нужного разрешения в игре (за это отвечает параметр iTintTextureResolution). Можно, конечно, под каждого НПС свой мейкап рисовать, но... зачем? Вполне достаточно "базового" набора для конкретной расы.
Во первых не совсем понимаю как и что подкладывается, ведь в процессе генерации маски для НПС суммируются несколько разных масок
Для каждого элемента мейкапа: верхнее веко, нижнее веко, помада и т.д. - есть своя базовая тинтмаска. Вот эти базовые тинтмаски и устанавливаются перед тем, как запускается игра. Это можно сделать потому, что игрового персонажа мы генерируем напрямую в игре на движке, а не в глючном Ките. Не могу сказать, как именно тут работает SKSE, надо смотреть код, но если прописан iTintTextureResolution и установлены базовые тинтмаски большого разрешения, то и к персонажу игрока, и к нпс применяются они. С квадратными губами и т.п. никто уже давно не играет.
AmoralPrince, хозяин барин, наше дело предложить. Я лично SKSE юзаю для: скриптов; оптимизатора памяти; тинтмасок; чистки сейвов; ряда модов. С ним гораздо лучше, чем без него.
В общем, есть квестовый скрипт, который должен вещшать на мобов абилки в определенном радиусе. Скрипт этот сделан по шаблону, выложенному AlexTirex в этой теме с полгода назад. Квест запускается один раз при первом запуске игры с подключенным модом и не завершается.
Spell Property aaARCRWeapArmMatSpecBase auto Spell Property aaARCRabilityWeapArmMatSpecDrag auto Spell Property aaARCRabilityUndead auto Spell Property aaARCRabilityUndeadMod auto Faction Property _00SICUndeadFaction auto
Actor[] ClosestActors
Event OnInit() ClosestActors = new Actor[120] ; назначаем массив на 120 ячеек While IsRunning() ; работает, пока квест активный int iIndex = 40 ; количество попыток поиска актёров While(iIndex > 0) ; поиск актёров около ГГ iIndex -= 1 Actor randomActor = Game.FindRandomActorFromRef(Game.GetPlayer(), 30000.0) ; радиус поиска ~4096*7 If !randomActor.HasSpell(aaARCRWeapArmMatSpecBase) ; если у НПС нет спелла randomActor.AddSpell(aaARCRWeapArmMatSpecBase) ; добавляем спелл endIf If !randomActor.HasSpell(aaARCRabilityWeapArmMatSpecDrag) randomActor.AddSpell(aaARCRabilityWeapArmMatSpecDrag) endIf If !randomActor.HasSpell(aaARCRabilityUndead) randomActor.AddSpell(aaARCRabilityUndead) endIf If !randomActor.HasSpell(aaARCRabilityUndeadMod) && randomActor.IsInFaction(_00SICUndeadFaction) randomActor.AddSpell(aaARCRabilityUndeadMod) endIf int iEmpty = ClosestActors.Find(none) ; поиск свободного слота в массиве if iEmpty > -1 ClosestActors [iEmpty]= randomActor ; записываем актёра в массив endif int iIndexActor = 120 While iIndexActor > 0 ; проверка массива iIndexActor -= 1 if ClosestActors [iIndexActor]; если есть актёр под этим номером if (ClosestActors[iIndexActor].GetDistance(Game.GetPlayer())> 30000) || ClosestActors[iIndexActor].IsDead() ; если актёр далеко или актёр мёртв ClosestActors[iIndexActor].RemoveSpell(aaARCRWeapArmMatSpecBase) ClosestActors[iIndexActor].RemoveSpell(aaARCRabilityWeapArmMatSpecDrag) ClosestActors[iIndexActor].RemoveSpell(aaARCRabilityUndead) ClosestActors[iIndexActor].RemoveSpell(aaARCRabilityUndeadMod) ;ClosestActors[iIndexActor].DispelAllSpells() ClosestActors [iIndexActor]= none ; очищаем слот в массиве endif endif endWhile endWhile Utility.Wait(3.0) ; через 3 сек. новый поиск актёров endWhile int iIndexClear = 120 While iIndexClear > 0 ; очистка массива iIndexClear -= 1 if ClosestActors [iIndexClear]; если есть актёр под этим номером ClosestActors[iIndexClear].RemoveSpell(aaARCRWeapArmMatSpecBase) ClosestActors[iIndexClear].RemoveSpell(aaARCRabilityWeapArmMatSpecDrag) ClosestActors[iIndexClear].RemoveSpell(aaARCRabilityUndead) ClosestActors[iIndexClear].RemoveSpell(aaARCRabilityUndeadMod) ;ClosestActors[iIndexClear].DispelAllSpells() ClosestActors [iIndexClear]= none ; очищаем слот в массиве endif endWhile Debug.Notification("Alliria NPC quest and script had finished") ; сообщение для теста endEvent
Однако эффекта не вижу. Похоже, спеллы просто не назначаются. Лог папируса выдает следующее: stack:
Код
[aaAlliriaRCRNPCQuest (4A1536DE)].aaAlliriaRCRNPCQuestScript.OnInit() - "aaAlliriaRCRNPCQuestScript.psc" Line ? [03/24/2014 - 11:44:45PM] warning: Assigning None to a non-object variable named "::temp13" stack: [aaAlliriaRCRNPCQuest (4A1536DE)].aaAlliriaRCRNPCQuestScript.OnInit() - "aaAlliriaRCRNPCQuestScript.psc" Line ? [03/24/2014 - 11:44:45PM] Error: Cannot call RemoveSpell() on a None object, aborting function call
Осталось выяснить глючность масок с высоким разрешением на чистой игре. Я запустив игру с маской 1024х1024 без SKSE глюков как в СК не увидел, просто маска отображалась как 256х256.
AleksTirex, скрипт из моего поста компиллятор компиллирует. Тот лог - это лог, который Папирус ведет в игре (Documents/My Games/Skyrim/Logs/Script/Papyrus0.log) Твой новый вариант - не компиллирует. Вот лог компиллятора:
Код
Starting 1 compile threads for 1 files... Compiling "aaAlliriaRCRNPCQuestScript"... F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(37,15): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(37,15): type mismatch while assigning to a none (cast missing or types unrelated) F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(38,18): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(39,23): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(39,33): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(39,62): cannot compare a none to a int (cast missing or types unrelated) F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(39,62): cannot relatively compare variables to None F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(40,22): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(40,32): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(41,22): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(41,32): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(42,22): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(42,32): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(43,22): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(43,32): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(55,4): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(55,4): type mismatch while assigning to a none (cast missing or types unrelated) F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(56,7): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(57,7): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(57,17): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(58,7): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(58,17): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(59,7): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(59,17): none is not a known user-defined type F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(60,7): variable TempActor is undefined F:\Programs\Steam\steamapps\common\skyrim\Data\Scripts\Source\aaAlliriaRCRNPCQuestScript.psc(60,17): none is not a known user-defined type No output generated for aaAlliriaRCRNPCQuestScript, compilation failed.
Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on aaAlliriaRCRNPCQuestScript
LordVadim, так проблема в том, почему возвращается none или temp13 в ячейках, заполненных актерами.
По условиям срабатывания и типу актеров: aaARCRabilityUndead - выдается всей нежити, включая вампиров и дохлых драконов (условия прописаны в самом спелле); aaARCRabilityUndeadMod - выдается актерам, имеющим фракцию _00SICUndeadFaction; aaARCRabilityWeapArmMatSpecDrag (она пока "пустая") и aaARCRWeapArmMatSpecBase - выдаются всем гуманоидам.
LordVadim, сделала, как ты сказал: скомпиллировала твой скрипт, создала форм-лист, прописала его в свойствах скрипта, убрала условия из раздаваемого закла aaARCRabilityUndead (т.е. теперь он должен работать вообще на всех). То же самое, эффекта на нпс не вижу. Папирус в игровом логе пишет то же:
Код
stack: [aaAlliriaRCRNPCQuest (4B1536DE)].aaAlliriaRCRNPCQuestScript.OnInit() - "aaAlliriaRCRNPCQuestScript.psc" Line ? [03/26/2014 - 10:36:37PM] Error: Cannot call IsDead() on a None object, aborting function call stack: [aaAlliriaRCRNPCQuest (4B1536DE)].aaAlliriaRCRNPCQuestScript.OnInit() - "aaAlliriaRCRNPCQuestScript.psc" Line ? [03/26/2014 - 10:36:37PM] warning: Assigning None to a non-object variable named "::temp7"