Перейти к содержанию

Shadd Ashborn

Участник
  • Публикаций

    2 980
  • Пожертвование

    0,00 ₽ 
  • Зарегистрирован

  • Посещение

  • Победитель дней

    171

Сообщения, опубликованные Shadd Ashborn


  1. Заменила - да, вроде как пошло гладко.

     

     

     

     

    55033f5525.png

     

     

     

     

    Доходит до 5 блока, потом через какое-то время снова прогоняет до 5-го. Я так понимаю, остальные блоки уже работают с фолловером, которого пока нет.

     

    UD, конечно, наверняка имеет еще много подводных камней, но одним эррором, мучающим консоль, меньше - уже весьма неплохо. Спасибо.)


  2. UPD - вдруг поможет, инфа с ловерслаба как раз про этот эррор, вроде от кого-то, кто понимает, что там такое.

     

    This one has to do with Companions. You won't get that message if you have any followers at all (modded, ED-E, etc.). It only occurs when the Courier has no Companion, the script is easy to find, I don't see any glaring flaws with it except I thought the "default" return value if none of the checks for companions pass must be messed up, so I don't know what point of that script is broken to return a bad value.

     


  3. По идее надо бы это в логе всё выложить, но вот сразу же после входа в игру полезло после print 3.

     

     

     

     

    bfdc78cdeb.jpg

     

     

     

     

     

     

     

     

     

    scn alxUDCompanionsFnUpdateArrays
    
    array_var arrEntry
    array_var arrExtraTeammates
    array_var arrActiveTeammates
    array_var arrFormerTeammates
    ref rActor
    int iIndex
    int iArraySize
    
    begin Function {}
      
      let alxUDCompanions.bLocked := 1
      
      if eval !(alxUDCompanions.arrActiveCompanions)
        let alxUDCompanions.arrActiveCompanions := Ar_Construct array
      endif
      if eval !(alxUDCompanions.arrFormerCompanions)
        let alxUDCompanions.arrFormerCompanions := Ar_Construct array
      endif
    
      let arrActiveTeammates := GetTeammates
      if eval (GetDebugMode) && (alxUDDebugLog.arrDebugLogModesEnabled["CM"])
        let iArraySize := Ar_Size arrActiveTeammates
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: %.0f player companions found." iArraySize) 1
        let iIndex := 1
    print "1"
        foreach arrEntry <- arrActiveTeammates
          let rActor := arrEntry["value"]
          call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
          let iIndex += 1
        loop
      endif
      call alxUDFnCheckFormList UDApiExtraCompanionsList (Ar_List 42 43)
      let arrExtraTeammates := GetListForms UDApiExtraCompanionsList
      if eval (arrExtraTeammates)
        let iArraySize := Ar_Size arrExtraTeammates
        if eval iArraySize > 0
          call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: %.0f extra companions found (UDApiExtraCompanionsList)." iArraySize) 1
          let iIndex := 1
    print "2"
          foreach arrEntry <- arrExtraTeammates
            let rActor := arrEntry["value"]
            if eval rActor.IsActor
              if eval (Ar_Find rActor arrActiveTeammates) == Ar_BadNumericIndex
                Ar_Append arrActiveTeammates rActor
                call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
                let iIndex += 1
              endif
            endif
          loop
        endif
      endif
      let iArraySize := Ar_Size arrActiveTeammates
      call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Total companions found: %.0f." iArraySize) 1
      
    print "3"
      foreach arrEntry <- arrActiveTeammates
        let rActor := arrEntry["value"]
        if eval !(rActor)
          continue
        endif
        if eval GetType rActor == 0
          continue
        endif
        if eval !(rActor.IsActor)
          continue
        endif
        let iIndex := Ar_Find rActor alxUDCompanions.arrActiveCompanions
        if eval iIndex != Ar_BadNumericIndex
          Ar_Erase alxUDCompanions.arrActiveCompanions iIndex
        endif
        let iIndex := Ar_Find rActor alxUDCompanions.arrFormerCompanions
        if eval iIndex != Ar_BadNumericIndex
          Ar_Erase alxUDCompanions.arrFormerCompanions iIndex
        endif
      loop
      
      let arrFormerTeammates := Ar_Construct "array"
      
    print "4"
      foreach arrEntry <- alxUDCompanions.arrFormerCompanions
        let rActor := arrEntry["value"]
        if eval !(rActor)
          continue
        endif
        if eval GetType rActor == 0
          continue
        endif
        if eval !(rActor.IsActor)
          continue
        endif
        Ar_Append arrFormerTeammates rActor
      loop
      
    print "5"
      foreach arrEntry <- alxUDCompanions.arrActiveCompanions
        let rActor := arrEntry["value"]
        if eval !(rActor)
          continue
        endif
        if eval GetType rActor == 0
          continue
        endif
        if eval !(rActor.IsActor)
          continue
        endif
        Ar_Append arrFormerTeammates rActor
      loop
    
      let alxUDCompanions.arrActiveCompanions := Ar_Copy arrActiveTeammates
      let alxUDCompanions.arrFormerCompanions := Ar_Copy arrFormerTeammates
      
      let arrActiveTeammates := Ar_Null
      let arrFormerTeammates := Ar_Null
      
      if eval (GetDebugMode) && (alxUDDebugLog.arrDebugLogModesEnabled["CM"])
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Companion arrays updated." iArraySize) 1
        let iArraySize := Ar_Size alxUDCompanions.arrActiveCompanions
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Active companions: %.0f." iArraySize) 1
        if eval iArraySize > 0
          let iIndex := 1
    print "6"
          foreach arrEntry <- alxUDCompanions.arrActiveCompanions
            let rActor := arrEntry["value"]
            call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
            let iIndex += 1
          loop
        endif
        let iArraySize := Ar_Size alxUDCompanions.arrFormerCompanions
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Former companions: %.0f." iArraySize) 1
        if eval iArraySize > 0
          let iIndex := 1
    print "7"
          foreach arrEntry <- alxUDCompanions.arrFormerCompanions
            let rActor := arrEntry["value"]
            call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
            let iIndex += 1
          loop
        endif
      endif
      
      let alxUDCompanions.bLocked := 0
    
    end
    

     

     


  4. Еще раз всем драсте.

     

    У меня тут есть проблема с модом Unethicsl Deeds - он постоянно спамит в консоль ошибку такого типа:

     

     

     

     

    e12954cc33.jpg

     

     

     

     

     

    Cкрипт я нашла, пересохранение в ГЕКК не выдает ошибок. Можно ли как-то этот скрипт исправить? Очень бы не помешало, т.к. я думаю, что именно из-за спама в консоль ошибки (судя по всему, не критичной и на работу мода то и не влияющей) и при включенном АВОП я получаю очень частые зависания игры (уже было раз, что спам в консоль к такому приводил, когда разбирались с hookups).

     

    Вот текст скрипта:

     

     

     

    scn alxUDCompanionsFnUpdateArrays
    
    array_var arrEntry
    array_var arrExtraTeammates
    array_var arrActiveTeammates
    array_var arrFormerTeammates
    ref rActor
    int iIndex
    int iArraySize
    
    begin Function {}
      
      let alxUDCompanions.bLocked := 1
      
      if eval !(alxUDCompanions.arrActiveCompanions)
        let alxUDCompanions.arrActiveCompanions := Ar_Construct array
      endif
      if eval !(alxUDCompanions.arrFormerCompanions)
        let alxUDCompanions.arrFormerCompanions := Ar_Construct array
      endif
    
      let arrActiveTeammates := GetTeammates
      if eval (GetDebugMode) && (alxUDDebugLog.arrDebugLogModesEnabled["CM"])
        let iArraySize := Ar_Size arrActiveTeammates
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: %.0f player companions found." iArraySize) 1
        let iIndex := 1
        foreach arrEntry <- arrActiveTeammates
          let rActor := arrEntry["value"]
          call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
          let iIndex += 1
        loop
      endif
      call alxUDFnCheckFormList UDApiExtraCompanionsList (Ar_List 42 43)
      let arrExtraTeammates := GetListForms UDApiExtraCompanionsList
      if eval (arrExtraTeammates)
        let iArraySize := Ar_Size arrExtraTeammates
        if eval iArraySize > 0
          call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: %.0f extra companions found (UDApiExtraCompanionsList)." iArraySize) 1
          let iIndex := 1
          foreach arrEntry <- arrExtraTeammates
            let rActor := arrEntry["value"]
            if eval rActor.IsActor
              if eval (Ar_Find rActor arrActiveTeammates) == Ar_BadNumericIndex
                Ar_Append arrActiveTeammates rActor
                call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
                let iIndex += 1
              endif
            endif
          loop
        endif
      endif
      let iArraySize := Ar_Size arrActiveTeammates
      call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Total companions found: %.0f." iArraySize) 1
      
      foreach arrEntry <- arrActiveTeammates
        let rActor := arrEntry["value"]
        if eval !(rActor)
          continue
        endif
        if eval GetType rActor == 0
          continue
        endif
        if eval !(rActor.IsActor)
          continue
        endif
        let iIndex := Ar_Find rActor alxUDCompanions.arrActiveCompanions
        if eval iIndex != Ar_BadNumericIndex
          Ar_Erase alxUDCompanions.arrActiveCompanions iIndex
        endif
        let iIndex := Ar_Find rActor alxUDCompanions.arrFormerCompanions
        if eval iIndex != Ar_BadNumericIndex
          Ar_Erase alxUDCompanions.arrFormerCompanions iIndex
        endif
      loop
      
      let arrFormerTeammates := Ar_Construct "array"
      
      foreach arrEntry <- alxUDCompanions.arrFormerCompanions
        let rActor := arrEntry["value"]
        if eval !(rActor)
          continue
        endif
        if eval GetType rActor == 0
          continue
        endif
        if eval !(rActor.IsActor)
          continue
        endif
        Ar_Append arrFormerTeammates rActor
      loop
      
      foreach arrEntry <- alxUDCompanions.arrActiveCompanions
        let rActor := arrEntry["value"]
        if eval !(rActor)
          continue
        endif
        if eval GetType rActor == 0
          continue
        endif
        if eval !(rActor.IsActor)
          continue
        endif
        Ar_Append arrFormerTeammates rActor
      loop
    
      let alxUDCompanions.arrActiveCompanions := Ar_Copy arrActiveTeammates
      let alxUDCompanions.arrFormerCompanions := Ar_Copy arrFormerTeammates
      
      let arrActiveTeammates := Ar_Null
      let arrFormerTeammates := Ar_Null
      
      if eval (GetDebugMode) && (alxUDDebugLog.arrDebugLogModesEnabled["CM"])
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Companion arrays updated." iArraySize) 1
        let iArraySize := Ar_Size alxUDCompanions.arrActiveCompanions
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Active companions: %.0f." iArraySize) 1
        if eval iArraySize > 0
          let iIndex := 1
          foreach arrEntry <- alxUDCompanions.arrActiveCompanions
            let rActor := arrEntry["value"]
            call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
            let iIndex += 1
          loop
        endif
        let iArraySize := Ar_Size alxUDCompanions.arrFormerCompanions
        call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: Former companions: %.0f." iArraySize) 1
        if eval iArraySize > 0
          let iIndex := 1
          foreach arrEntry <- alxUDCompanions.arrFormerCompanions
            let rActor := arrEntry["value"]
            call alxUDDebugLogAppend "CM" (Sv_Construct "__UD:CM: # %3.0f: %n (%i)." iIndex rActor rActor) 1
            let iIndex += 1
          loop
        endif
      endif
      
      let alxUDCompanions.bLocked := 0
    
    end
    

     

     

     

    Заранее спасибо.


  5. подскажите,это надо ставить или как? для чего?

     

    Уже вшили в раздачу из первого поста. Это просто патч оптимизации, добавляющий портал маркеры самым загруженным локациям мода (спец. штуки в ГЕКК, которые позволяют скрывать статики, когда ГГ вне пределов портал маркера, т.е. не может их видеть, что сильно облегчает нагрузку на движок).

    • Нравится 1

  6. Могу ошибаться, но вроде как не наблюдаю вшитым AWOP Portal Rooms, то бишь, собственно, очень важный оптимизатор, добавляющий портал-маркеры самым загруженным интерьерам АВОП (вообще, если на чистоту, там везде надо делать маркеры. В АВОП их вообще нет, при том, что интерьеры сильно заполнены обьектами, потому он такой груженый).

     

    Я перенаправила мастер патча на эту версию и скопипастила названия ячеек. Вот:

     

    https://mega.nz/#!YVgyyBzA!YcUvNFCox1pflvWbwvS8ijV2SfzmP3lJU44-eO1e5Zo


  7. Какой интерьер то?

     

    В последний раз Дьвольская Впадина (вроде как; в общем, овраг возле Гудспрингс), пещера, добавляемая АВОП (в оригинале там просто овраг и всё).

     

    То же самое ловила в окрестностях Вегаса (уже не помню чо там), в притоне на фрисайде, еще в ряде интерьеров - счас честно не упомню.


  8. Только что вот подключила АВОП, и без всяческих фолловеров меня первый же интерьер послал гулять, выбив игру на рабочий стол.

     

    Так что я напоминаю, что Вегасовский АВОП с модулями RA неиграбелен, и если это не будет исправлено, мне как бы не хочется отказываться от обнов модуля Пустошей потому, что оттуда будет вырезан АВОП-Ф3 и сшит с модом, который у меня (и наверняка не только у меня) просто не будет работать, посылая на раб. стол в 80% случаев загрузки интерьеров.


  9. Ага, уже разобралась и с тем, и с другим.

     

    Я все равно вижу в консоли айди ячейки, но я так понимаю, этого не избежать - скрипт все равно будет бегать по кругу, пока я не зайду в разрешенное помещение.

     

    Всё равно спасибо.)


  10. Ок, насчет кулдауна:

         if fDelay > 0
           set fDelay to fDelay - GetSecondsPassed
           return
        endif
         set fDelay to loopDelay
    

    Я не понимаю логики этого блока, т.е. я не понимаю, откуда берутся значения того же fDelay. Как уменьшить этот самый кулдаун?


  11.  

     

    Так что, могу предложить уменьшить кулдаун, а строку с проверкой ячейки повесить на весь скрипт, т.е. в самое начало поднять те строки.

     

    Какие именно строки? Сейчас проверка на ячейку прописана подблоком в цикле проверок на аборт подката.


  12. Воот, а с такой строкой пошло дело.

     

    045457b62f.jpg

     

     

    В принципе, теперь цель на проверку ячейки вроде как достигнута. Но появилась другая проблема - кулдаун скрипта. Я могу его убрать, но боюсь, что тогда скрипт будет без толку бомбить всю игру, будучи где-то в 80% игрового процесса просто обузой, грузящей производительность.

     

    Сам скрипт подцеплен к квесту, да. Я так понимаю, нужно сунуть в квест условие на этот формлист?


  13. Если закомментить сроки 

    Let rCurCell := Player.GPC
        printc "%i" rCurCell
        If rCurCell.IsInList aaHookUpAllowedCells

    И endif в конце соответственно - мод работает, как и раньше.

     

    В консоль спамятся айдишники НПС (я так понимаю, не прошедших проверку)

     

    efe8fd3f77.jpg

     

     

    Мне кажется, тут нужен принципиально другой подход - нужно сделать так, чтобы этот скрипт вообще запускался только в нужных ячейках. Как минимум из-за его кулдауна - если ГГ пришел в Мегатонну и сразу рванул в салун - скрипт уже отбомбил, и в салуне он напорется на банальный кулдаун, и в итоге работа мода сведется на нет.


  14. Выдает такое (айдишник появляется раз в несколько игровых часов, т.к. насколько я поняла, у сканера есть кд):

     

    df7587cbc4.jpg

     

    Первый айди появился на улице мегатонны, второй регулярно появляется раз в несколько часов в салуне мориарти. Тем не менее, никто не разе не подкатил (в настройках выставила макс. шанс, т.. харизма ГГ*5), т.е. сканер все еще не работает как надо.


  15. Судя по всему, не работает (сканер вообще стопорится).

     

    Текст текущего скрипта:

     

     

     

    scn 00SexoutHookupQuestScript
    
    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
    
    Let rCurCell := Player.GPC
    
    	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
    
        
        Label startwhile
        set scanIndex to (scanIndex +1) % subLoops
    
    	if scan
            if (scanIndex == scanChance)
    			if scan.IsChild
    				set scan to GetNextRef
    				Goto startwhile
    			endif
    			if ListGetFormIndex aaHookUpsBannedNPC scan > -1 && rCurCell.IsInList aaHookUpAllowedCells == 0
    					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.IsChild
    				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.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
    
    End
    
    

     

     

     

    Что может быть не так?


×
×
  • Создать...