-
Публикаций
1 539 -
Пожертвование
0,00 ₽ -
Зарегистрирован
-
Посещение
-
Победитель дней
67
Сообщения, опубликованные Вис691
-
-
А меня всё устраивает
-
От всей души поздравляю победителя. Пускай и не было борьбы, но видно, что автор постарался на славу. Оформить сюжет в виде записок - очень интересный ход, кстати. Возьму на заметку.
-
А, ты в том смысле, что скрипт работает всегда. Ну а тут никак ничего не сделать. Однако у нас он видит условие, понимает, что оно не выполняется, и идёт себе дальше. И вся эта куча строк кода с волшебным циклом из Label и GoTo просто скипается. Что, естественно, положительно сказывается на производительности)
-
1
-
-
А, чтобы айдишники убрать, удали команды Print и Printc. Я их для теста использовал)
-
1
-
-
Не фанат их нового творчества и Danny в целом, но эта чем-то зацепила.
-
Вот это
Let rCurCell := Player.GPC printc "%i" rCurCell If ListGetFormIndex aaHookUpAllowedCells rCurCell > -1
Вытащить в самое начало. И если внимательно посмотреть, то можно заметить, что проверка идёт до блока проверок.
Касаемо задержки - там в самом начале
set subLoops to 5 set loopDelay to 300 / subLoops
Т.е. получаем 60 секунд. Вообще можно в тупую строку set fDelay to loopDelay заменить на set fDelay to [Задержка в секундах]
-
1
-
-
Вроде так не будет работать. Эти условия отвечают за другое
Quest Conditions: Any conditions here are considered to apply to all dialogue in the quest. The quest conditions are checked first; only if those are true are the conditions on the infos evaluated.
Так что, могу предложить уменьшить кулдаун, а строку с проверкой ячейки повесить на весь скрипт, т.е. в самое начало поднять те строки.
-
Окей, давай. Как этот скрипт вызывается? Он висит на квесте или что?
Но проблема всё-таки в определении ячейки значит. Я бы вначале с ней разобрался. Замени If rCurCell.IsInList aaHookUpAllowedCells на ListGetFormIndex aaHookUpAllowedCells rCurCell > -1
-
Так, ID верный (это ай ди ячейки), значит мы на верном пути. Докинь теперь после if (scanIndex == scanChance) строку printc "%n" scan
И в блок if scan.IsInList aaHookUpsBannedNPC строку print "1"
Сейчас мы проверим условие на НПС.
-
Давай попробуем так, потом посмотрим.
scn SexoutHookupQuestScript short playing float approach short legion short powder short kings short khans short ncrWhore short Whoring short doLegion short doPowder short doKings short doKhans short doNCRwhore short doWhoring short mLegion short mPowder short mKings short mKhans short mNCRwhore short mWhoring ref SexoutNCRWhore ref targetRef int iSelf short init short scanChance short scanIndex short scanCount short subLoops short loopDelay ref rCurCell float fDelay Begin GameMode if init < 5 set init to 5 set approach to 1.5 set scanIndex to 0 set subLoops to 5 set loopDelay to 300 / subLoops endif if GetGameLoaded PrintC "SexoutHookups: загрузка..." set iSelf to GetModIndex "SexoutHookups.esm" if 255 == iSelf set iSelf to GetModIndex "SexoutHookups.esp" endif if 255 == iSelf set iSelf to GetModIndex "SexoutHookupsAlt.esm" endif if 255 == iSelf set iSelf to GetModIndex "SexoutHookupsAlt.esp" endif set targetRef to BuildRef iSelf 2781 PrintC "SexoutHookups: Quest is %i" targetRef set targetRef to BuildRef iSelf 18649 PrintC "SexoutHookups: DebugQuest is %i" targetRef set targetRef to BuildRef iSelf 18651 PrintC "SexoutHookups: DebugOffQuest is %i" targetRef endif if GetGameRestarted set SexoutNCRWhore to 0 set mKhans to 0 set mKings to 0 set mLegion to 0 set mNCRwhore to 0 set mPowder to 0 set mWhoring to 0 if IsModLoaded "sexoutKhans.esp" set mKhans to GetModIndex "sexoutKhans.esp" endif if IsModLoaded "sexoutKhans.esm" set mKhans to GetModIndex "sexoutKhans.esm" endif if IsModLoaded "sexoutKings.esp" set mKings to GetModIndex "sexoutKings.esp" endif if IsModLoaded "sexoutKings.esm" set mKings to GetModIndex "sexoutKings.esm" endif if IsModLoaded "sexoutLegion.esp" set mLegion to GetModIndex "sexoutLegion.esp" endif if IsModLoaded "sexoutLegion.esm" set mLegion to GetModIndex "sexoutLegion.esm" endif if IsModLoaded "sexoutNCR.esp" set mNCRwhore to GetModIndex "sexoutNCR.esp" set SexoutNCRWhore to BuildRef mNCRwhore 160621 endif if IsModLoaded "sexoutNCR.esm" set mNCRwhore to GetModIndex "sexoutNCR.esm" set SexoutNCRWhore to BuildRef mNCRwhore 160621 endif if IsModLoaded "sexoutPowderGangers.esp" set mPowder to GetModIndex "sexoutPowderGangers.esp" endif if IsModLoaded "sexoutPowderGangers.esm" set mPowder to GetModIndex "sexoutPowderGangers.esm" endif if IsModLoaded "sexoutProstitutes.esp" set mWhoring to GetModIndex "sexoutProstitutes.esp" endif if IsModLoaded "sexoutProstitutes.esm" set mWhoring to GetModIndex "sexoutProstitutes.esm" endif if IsModLoaded "sexoutWorkinhGirl.esp" set mWhoring to GetModIndex "sexoutWorkinhGirl.esp" endif if IsModLoaded "sexoutWorkinhGirl.esm" set mWhoring to GetModIndex "sexoutWorkinhGirl.esm" endif endif short startwhile short endwhile set endwhile to 1 set doKhans to Khans * mKhans set doKings to Kings * mKings set doLegion to Legion * mLegion set doNCRwhore to NCRwhore * mNCRwhore set doPowder to Powder * mPowder set doWhoring to Whoring * mWhoring set targetRef to playerRef ref scan set scan to GetFirstRef 200 ; lets put a little delay here if fDelay > 0 set fDelay to fDelay - GetSecondsPassed return endif set fDelay to loopDelay set scanChance to (scanChance + 1) % subLoops ; one of 'subLoops' people tested at a time set scan to GetFirstRef 200 set scanCount to 0 set scanIndex to 0 Let rCurCell := Player.GPC printc "%i" rCurCell If rCurCell.IsInList aaHookUpAllowedCells Label startwhile set scanIndex to (scanIndex +1) % subLoops if scan if (scanIndex == scanChance) if scan.IsChild set scan to GetNextRef Goto startwhile endif if scan.IsInList aaHookUpsBannedNPC set scan to GetNextRef Goto startwhile endif if scan == playerRef set scan to GetNextRef Goto startwhile endif if scan.GetDisabled set scan to GetNextRef Goto startwhile endif if scan.GetIsCreature set scan to GetNextRef Goto startwhile endif if scan.GetPlayerTeammate || scan.GetFactionRank FollowerFaction > -1 set scan to GetNextRef Goto startwhile endif if scan.GetDead set scan to GetNextRef Goto startwhile endif if scan.GetUnconscious set scan to GetNextRef Goto startwhile endif if scan.GetRestrained set scan to GetNextRef Goto startwhile endif if ListGetFormIndex SexoutSLActorDataIsReserved scan > -1 set scan to GetNextRef Goto startwhile endif if scan.IsInList SexoutSLActorDataIsReserved set scan to GetNextRef Goto startwhile endif if ListGetFormIndex SexoutListBannedActor scan > -1 set scan to GetNextRef Goto startwhile endif if scan.IsInList SexoutListBannedActor set scan to GetNextRef Goto startwhile endif if ListGetFormIndex SexoutSLActorDataHatesSex scan > -1 set scan to GetNextRef Goto startwhile endif if scan.IsInList SexoutSLActorDataHatesSex set scan to GetNextRef Goto startwhile endif if ListGetFormIndex SexoutSLActorDataIsNotLookingForSex scan > -1 set scan to GetNextRef Goto startwhile endif if scan.IsInList SexoutSLActorDataIsNotLookingForSex set scan to GetNextRef Goto startwhile endif if ListGetFormIndex SexoutSLActorDataIsPartneredFaithfully scan > -1 set scan to GetNextRef Goto startwhile endif if scan.IsInList SexoutSLActorDataIsPartneredFaithfully set scan to GetNextRef Goto startwhile endif if scan.GetIsClass Prostitute set scan to GetNextRef Goto startwhile endif if doPowder if scan.GetInFaction vDialoguePowderGangerFaction set scan to GetNextRef Goto startwhile endif endif if doLegion if scan.GetInFaction vCaesarsLegionFaction set scan to GetNextRef Goto startwhile endif endif if doKings if scan.GetInFaction vKingsDialogueFaction set scan to GetNextRef Goto startwhile endif endif if doKhans if scan.GetInFaction vGreatKhansDialogueFaction set scan to GetNextRef Goto startwhile endif endif if doNCRwhore if scan.GetinFaction vNCRMilitaryDialogueFaction if targetRef.GetEquipped SexoutNCRWhore set scan to GetNextRef Goto startwhile endif endif endif if doWhoring ; what we really want is: ; set scan to BuildRef mWhoring 139704 ; if scan.whoremode if targetRef.GetEquipped SexoutListProstituteOutfits ; far from perfect as WorkingGirl allows whoring in arbitrary clothes set scan to GetNextRef Goto startwhile endif endif if (0 == (scan.IsSpellTarget SexoutHookupEffect)) && (0 == (scan.IsSpellTarget SexoutHookupOld)) short Limit ; base change 50 over 200 (1 in 4) set Limit to 50 ; if night, double limit if Gamehour > 19 set Limit to 2 * Limit endif ; if nympho, double limit again or for first time if not night if ListGetFormIndex SexoutSLActorDataIsNymphomaniac scan > -1 set Limit to 2 * Limit endif ; boosts ; + charisma * approach ; + 1/100 of Evil Karma set Limit to (Limit + (scan.GetAv Karma / -100) + (targetRef.GetAV Charisma * approach)) ; if wearing any armor with DT, make limit 0 if player.getav damagethreshold > 25 set Limit to 0 * Limit else set Limit to 1 * Limit endif short random set random to 2 * GetRandomPercent if random < Limit scan.CIOS SexoutHookupEffect else scan.CIOS SexoutHookupOld endif endif endif set scan to GetNextRef Goto startwhile endif endif End
-
1
-
-
Как вариант, перед строкой с Label как раз таки и запихнуть
Let rCurCell := Player.GPC If rCurCell.IsInList aaHookUpAllowedCells == 0 ... всё, что относится к циклу ... Endif
То, что цифра 3 не появляется - это нормально, если ты не в разрешённой ячейке. Странно то, что 1 и 2 появились всего 1 раз. Походу весь скрипт ломается на какой-то строке...
-
Вот этот блок надо выкинуть
if scan.IsInList aaHookUpsBannedNPC set scan to GetNextRef Goto startwhile endif
Не знаю, что может быть не так. Давай просто проверим работает ли сканер вообще.
После Label startwhile вставь строку print "1", после блока с детьми print "2", ну и после нашего блока print "3". А вообще не понимаю, почему тебе просто не убивать сканер вообще, если ГГ не в разрешённых ячейках находится?
-
А, ну естественно он работать не будет. Сканер тупо НПС и сканирует) В таком случае возвращаемся к моему первому посту, который я не зря написал. После блока проверки ребёнка (т.е. первого) пишем как-то так:
if ListGetFormIndex aaHookUpsBannedNPC scan > -1 && rCurCell.IsInList aaHookUpAllowedCells == 0 set scan to GetNextRef Goto startwhile endif
Про переменную вначале ты сама уже увидела. Строку вроде тоже написала.
-
А, ну так бы и сказала, что тебе нужно просто условие. Тогда я не уверен, что сработает, ибо я не знаю, как задаётся переменная scan. Вполне вероятно напорется на ту проблему, которую я описал в первом посте. Но надо тестить. А так да, вроде верно.
-
Методом сравнения имеющегося скрипта и тыка вывела такое:
if ListGetFormIndex aaHookUpsBannedNPC scan > -1 && ListGetFormIndex aaHookUpAllowedCells scan == 0
Правильно ли?
Не понимаю, почему -1, но в этом же скрипте используются формлисты, и в условиях, где логически значение позитивное (НПС принадлежит этому списку), выставлено так.
Чуть более высокий уровень скриптинга - тут и НПС, и ячейки в одном листе. Эта функция возвращает -1 только, когда объекта нет в списке. Следовательно > -1 означает, что объект всё же где-то есть. Он может лежать под номером 0, под 10 и т.д. (нумерация объектов, как ты наверно заметила, начинается с 0). А вот == 0 - очень сомнительная вещь, ибо сработает только когда Scan = первому объекту в листе. Вероятно, имеется в виду == -1, т.е. объекта нет в листе. Тогда как раз таки твоя вторая формулировка "если ячейка НЕ в списке и НПС В списке - аборт (там есть такая команда)." будет выполняться.
-
1
-
-
Тогда как-то так (может не работать, т.к. сходу я обычно косячу):
ref rCurCell Begin GameMode ... Let rCurCell := Player.GPC ; Функция GetParentCell. Вместо Player можно подавать любой ref, необязательно НПС If (rCurCell.IsInList [ID листа]) && ([Ref ID НПС].IsInList [ID листа] == 0) что-то делаем Endif ... End
Вообще фраза "(реф НПС) НЕ в списке запрещенных НПС" немного некорректная. Дело в том, что можно сделать лист, где хранятся именно REFы НПС, а можно, где Base Formы НПС. И если бы лист был именно с РЕФами, то IsInList не сработал бы, ибо он берёт реф, как параметр, смотрит его Base Form и ищет именно Base Form в листе. Всегда есть НВСЕшный IsRefInList, который сработает и с рефами, и с Base формами, но тут тебе это не нужно. Я почти что уверен, что список делается путём переноса НПС в сам лист.
-
Текущая ячейка - это какая подразумевается? Там где некий НПС (в т.ч. и ГГ)?
-
-
Ну а я в свою очередь не могу не сказать спасибо тебе, Юра, за то, что когда-то позвал меня сюда и познакомил с остальными. С праздником!
-
2
-
-
А можно чуть более развёрнуто, что за казино?)А, кто-то пиратские фильмы или сериалы не смотрел. Я, правда, тоже, но наслышан не мало. Ситуация следующая: смотришь фильм/сериал/etc, наступает некий напряжённый момент. Ты прям чувствуешь, что сейчас что-то произойдёт и... Резко вылезает реклама этого самого казино примерно следующего содержания: "Проблемы с доступом к Джойказино? Добавь цифру 1 в начало ссылки так, чтобы получилось 1ДжойКазино.ру и ты снова сможешь наслаждаться лучшими рулетками мира!".
Вот тут всё это более правильно написано) https://thequestion.ru/questions/101038/chto-takoe-dzhoikazino-i-pochemu-u-vsekh-problemy-s-dostupom-k-nemu
Ну а по теме, я бы такое даже к Дикой Пустоши не стал привязывать
-
Там вроде огнемётчики были. Спроси у Stanis'a
-
У нас система обновления немного другая. Каждое обновление РА помимо всех фиксов включает новые моды и фишки. Т.е., грубо говоря, "стабильной" версии не существует. Именно в кавычках потому, что сборка играбельная, но всегда находятся незначительные баги, которые фиксятся. Фиксы, кстати, можно брать на баг-трекере, если прям невозможно подождать обновы. Бывали, конечно, критические фиксы, которые сразу вливали в раздачу, но таких случаев на моей памяти было немного. Да и вроде фикс лежал отдельным файлом, чтобы не перекачивать.
И вам спасибо за доброжелательные сообщения. Помнится, как-то попытался помочь человеку, задавшему вопрос, так он столько всего мне высказал, дескать, не тебе задавал, не отвечай мне и т.д. А ваши сообщения читать - одно удовольствие)
-
Я бы всё же рискнул скинуть плагин Паше. Мне кажется, есть шанс, что он всё же запустится. Жаль, сам этими компаньонами никогда не занимался и помочь не могу.
-
Помнится, были уже попытки залива на торрент, но они оказались неудачными.
И кстати, еще один вопрос: зачем нужна 15-секундная пауза перед загрузкой? Она очень затягивет дело(Должно же быть разграничение в группах пользователей)
Школа Скриптинга
в Fallout 3 / NV - Мастерская по созданию модов
Опубликовано
Вообще эта тема немного не о том была, но т.к. она заброшена, то не особо важно.
Не, это совсем не так. В скрипте чётко выведена некая формула, которая и на странице мода есть:
Так что соотношение не 1 к 1. А теперь к теме.
.
). А т.к. это школа, то с моей стороны будет обеспечена любая помощь по любым вопросом, подсказки и проверка сделанного. Ну а если никто не хочет и пальцем о палец бить, или ни у кого катастрофически не хватает времени (как у меня например), то пишите в тему "Вопросы по моддингу", как найду время, так постараюсь что-то сделать.
По 1 единице опыта за 1 крафт, хм. Должно быть более чем реально. А если учесть, что в игре аж испытание есть, то шансы повышаются в разы, т.к. игра всё-таки считает количество скрафченных предметов. Вопрос лишь в том, как там всё устроено? Если какая-то переменная глобальная или ещё что-нибудь? В идеале, конечно, найти бы какую-нибудь функцию, верно? И, да, действительно, искать не пришлось совсем. Она попалась мне буквально за первые 15 секунд. Вот только не скажу я вам её
Предлагаю следующую схему, раз уж вы тут написали: тот, кто хочет этим заняться сейчас мне ответит, а хочет ли он попытаться сделать этот мод самостоятельно? Пока что в моей голове всё выглядит достаточно просто, поэтому это будет неплохая тренировка, которая позволит вам разобраться с основами скриптинга (и даже немного с продвинутым уровнем). Как я вижу, минимум 2 человека хотят увидеть такое нововведение в игре, поэтому я всё же надеюсь, что кто-то вызовется добровольцем (а ещё лучше, если сразу оба