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

Shadd Ashborn

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

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

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

  • Посещение

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

    171

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


  1. Насчет листов НПС вроде как вижу, что нужно добавить еще один подблок. Но что делать с ячейками? Сканер, судя по всему, сканирует только НПС.

     

    Нужно как-то добавлять условие на то, в разрешенной ли ячейке ГГ, прямо в начале скрипта или как?


  2. Не работает, По крайней мере, ячейка - точно.

     

    Вот полный текст скрипта:

     

     

     

    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
    
    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
    
        
        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 && ListGetFormIndex aaHookUpAllowedCells scan == -1
    					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
    
    

     

     

     

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


  3. Первый пост - явно не то. Мне нужно просто условие для уже имеющегося списка условий абортинга сканера - просто подставить новый мини-блок, а не писать новый скрипт.

     

    Второй пост, т.е., должно быть так - 

    if ListGetFormIndex aaHookUpsBannedNPC scan > -1 && ListGetFormIndex aaHookUpAllowedCells scan == -1

    Верно?

     

    Задача как раз стоит в том, чтобы задать условие - ячейки нет в списке, НПС есть. Решила так потому, что разрешенных ячеек будет мало (с десяток - бары и салуны), и запрещенных нпс, соответственно, тоже мало (квестовые именные, как то мориарти например).


  4. Методом сравнения имеющегося скрипта и тыка вывела такое:

    if ListGetFormIndex aaHookUpsBannedNPC scan > -1 && ListGetFormIndex aaHookUpAllowedCells scan == 0

    Правильно ли? 

     

    Не понимаю, почему -1, но в этом же скрипте используются формлисты, и в условиях, где логически значение позитивное (НПС принадлежит этому списку), выставлено так.


  5. Мне нужна еще помощь по скриптам.)

     

    В общем, у меня есть формлист ячеек, который, по моей задумке, я хочу использовать как лист разрешенных ячеек для определенного скрипта (сканер). И будет лист, который будет листом запрещенных НПС. Как сделать проверку на такое условие?

     

    Есть команда IsInList, но я не знаю, как именно использовать ее.

     

    Должно быть как-то так:

     

    If (текущая ячека) В списке разрешенных ячеек && (реф НПС) НЕ в списке запрещенных НПС

     

     срабатывает сканер

     

    endif

     

    Или же наоборот, если ячейка НЕ в списке и НПС В списке - аборт (там есть такая команда).


  6.  

     

    насчет врагов, левелинг подменяется соответствующими неписями или как? вопрос в тему

     

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


  7. На самом деле, свободные переменные в ванильной игре в разных скриптах зачастую называются одинаково, и это нормально, так как они никак не пересекаются. Вот, например, у меня почти в каждом скрипте есть переменная DoOnce. Так проще, потому, что наверняка знаешь, что это за переменные.

     

    Только вот простому человеку, который захотел просто сделать небольшой квест или фолловера, а не пилить второй Фронтир, узнать об этом неоткуда. х)


  8. В общем, я таки разобралась, где был затык с колесом.

     

    Соль в том, что ВСЕ переменные, отвечающие за его фукнции, должны быть строго идентичны стандартам: для ожидания ИСКЛЮЧИТЕЛЬНО Waiting, для стилей боя - ИСКЛЮЧИТЕЛЬНО FollowerCombatStyleRanged/Melee, никаких ChrisWaiting и т.д. Частичная работоспособность колеса у меня была потому, что часть переменных я таки выставила 100% идентичными стандарту. А вот, как оказалось, там, где я их изменила для удобства - т.к. в гайде ни малейшего слова об этой детали - всё косило.

     

    Вдруг кому пригодится.)

    • Нравится 2

  9. Снова нужна подсказка по скрипту.)

     

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

     

    Сделала такой блок:

       If GetStage aaChrisQuest02 == 10 && ChrisHired == 1 && ChrisWaiting == 0
          If Player.GetItemCount aaChrisMotherPendant == 1
             SetStage aaChrisQuest02 20
                set raiderdead01 to 1
                 Else 
    if Player.GetItemCount aaChrisMotherPendant == 1
                   SetStage aaChrisQuest02 20
                 Endif
          Endif
       Endif
     
    Где при условии, что Крис с игроком, назначается переменная и в соответствии с ее значением диалог с Крисом немного отличается. Первая часть блока работает, но вот вторая не хочет. Видимо, напутала что-то с in/endif. x) Подскажите, что подкрутить, чтобы срабатывало в обеих вариантах.

  10. Именно колесо наоборот всегда видит стиль боя "мили" (именно иконка - оружие внизу оно высвечивает соотвественно текущему стилю боя). И при нажатии на нее, если у гг на самом деле стиль стрельба и это распознано игрой, фолловер ругается, что уже "и так стреляет" (т.е. колесо пытается выполнить команду назначения фолловеру стиля стрельбы, тогда как он уже активен). Причем это происходит ровно 1 раз после открытия колеса. Дальше стили свичятся коректно. Но - опять же! - при открытии колеса снова оно снова видит всегда стиль мили. И если НА САМОМ деле у фолловера активна стрельба - колесо опять будет пытаться назначить ему стрельбу, и он опять ругнется, что стрельба уже назначена.

     

    Я не знаю, как еще обьяснить.


  11. Ну так верно, стиль по умолчанию - рендж. Когда я открываю колесо - я вижу иконку кулаков, т.е. колесо думает, что у фолловера выставлен стиль боя мили, хотя это не так. Я жму на иконку и фолловер - логично - говорит, что он уже и так стреляет. Стиль боя меняется только со второго нажатия. И при открытии колеса повторно иконка стиля боя всегда кулаки, даже если я переставила до этого на рендж (т.е. - нажала 3 раза, 1 раз "протолкнула" колесо к правильному стилю боя, заставив фолловера ругнуться, что он и так стреляет, и дальше 2 раза, чтобыв переключить на мили и обратно на рендж).

     

    Впрочем, стиль боя точно также глючит в колесе и у другого модового компаньйона, Брисы Альмодавар (висят псевдо-кулаки, жмешь на них и она ругается, что уже и так стреляет), так что тут, наверное, дело не в моем моде.

     

    А вот фасттревел работает криво и я не понимаю, почему.


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