wleizhen 发表于 2014-4-8 05:20

会脚本的进!辐射3动态准心,不支持mod武器,谁能修改下啊!

本帖最后由 wleizhen 于 2014-4-8 08:14 编辑

辐射3动态准心,不支持mod武器,谁能修改下啊!


脚本
scn DynamicCrosshairTokenScript

float CurrentSize
float TargetSize
short skill
short skilltype
ref weapon

;Game settings used by the spread formula
float GunSpreadIronSightsBase
float GunSpreadIronSightsMult
float GunSpreadCrouchBase
float GunSpreadCrouchMult
float GunSpreadCondBase
float GunSpreadCondMult
float GunSpreadSkillBase
float GunSpreadSkillMult
float GunSpreadWalkBase
float GunSpreadWalkMult
float GunSpreadRunBase
float GunSpreadRunMult
float GunSpreadArmBase
float GunSpreadArmMult

float ArmCondition

float IronSightsBonus
float CrouchBonus
float ConditionPenalty
float SkillBonus
float WalkPenalty
float RunPenalty
float ArmPenalty

float Spread
float MinSpread

short walking
short running
short IsUsingIronSights

short WeaponType

float AimAngle
float SpreadAngle

float CrossTop
float CrossBottom
float CrossLeft
float CrossRight
float CrossSize

short Configuring
short button

begin OnEquip
    set Configuring to 1
    ShowMessage DynamicCrosshairConfigureMessage
end

begin MenuMode
    if Configuring
      set button to GetButtonPressed

      if button == -1
            return
      endif

      if button == 0
            if Configuring == 1
                set Configuring to 2
                ShowMessage DynamicCrosshairTypeMsg
                return
            elseif Configuring == 2
                set Configuring to 1
                set DynamicCrosshairQuest.CrossMode to 0
                ShowMessage DynamicCrosshairConfigureMessage
                return
            elseif Configuring == 3
                set DynamicCrosshairQuest.AlwaysOn to (1-DynamicCrosshairQuest.AlwaysOn)
                ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
                return
            elseif Configuring == 4
                set Configuring to 1
                set DynamicCrosshairQuest.Opacity to 255
                ShowMessage DynamicCrosshairConfigureMessage
                return
            endif
      elseif button == 1
            if Configuring == 1
                set Configuring to 3
                ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
                return
            elseif Configuring == 2
                set Configuring to 1
                set DynamicCrosshairQuest.CrossMode to 1
                ShowMessage DynamicCrosshairConfigureMessage
                return
            elseif Configuring == 3
                set DynamicCrosshairQuest.IronSights to (1-DynamicCrosshairQuest.IronSights)
                ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
                return
            elseif Configuring == 4
                set Configuring to 1
                set DynamicCrosshairQuest.Opacity to 191
                ShowMessage DynamicCrosshairConfigureMessage
                return
            endif
      elseif button == 2
            if Configuring == 1
                set Configuring to 4
                ShowMessage DynamicCrosshairOpacityMessage
                return
            elseif Configuring == 3
                set DynamicCrosshairQuest.HostileTarget to (1-DynamicCrosshairQuest.HostileTarget)
                ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
                return
            elseif Configuring == 4
                set Configuring to 1
                set DynamicCrosshairQuest.Opacity to 127
                ShowMessage DynamicCrosshairConfigureMessage
                return
            endif
      elseif button == 3
            if Configuring == 1
                set Configuring to 0
                player.UnequipItem DynamicCrosshairToken 1 1
                player.additem ammo10mm 1 1
                player.removeitem ammo10mm 1 1
                return
            elseif Configuring == 3
                set DynamicCrosshairQuest.DuringCombat to (1-DynamicCrosshairQuest.DuringCombat)
                ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
                return
            elseif Configuring == 4
                set Configuring to 1
                set DynamicCrosshairQuest.Opacity to 63
                ShowMessage DynamicCrosshairConfigureMessage
                return
            endif
      else
            set Configuring to 1
            ShowMessage DynamicCrosshairConfigureMessage
            return
      endif
    endif
end

begin GameMode
    if GetQuestRunning DynamicCrosshairQuest == 0
      startquest DynamicCrosshairQuest
    endif
    set weapon to player.GetEquippedObject 5

    if weapon != 0
      set WeaponType to GetWeaponType weapon
    else
      set WeaponType to 0
    endif

    if DynamicCrosshairQuest.AlwaysOn == 0
      short found
      set found to 0
      if Player.GetCombatTarget != 0 && DynamicCrosshairQuest.HostileTarget
            set found to 1
      endif

      if Player.IsControlPressed 6 && DynamicCrosshairQuest.IronSights
            set found to 1
      endif

      if Player.IsInCombat && DynamicCrosshairQuest.DuringCombat
            set found to 1
      endif

      if found == 0
            SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 0
            SetUIFloat "HUDMainMenu\AccuracyCross\Active" 0
            return
      endif
    endif

    if GetUIFloat "HUDMainMenu\ReticleCenter\Reticle_Center\Visible" == 0 || weapon == 0 || player.IsWeaponOut == 0 || WeaponType == 0 || WeaponType == 1 || WeaponType == 2 || WeaponType == 10 || WeaponType == 11 || WeaponType == 12
      SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 0
      SetUIFloat "HUDMainMenu\AccuracyCross\Active" 0
      return
    else
      if DynamicCrosshairQuest.CrossMode == 0
            SetUIFloat "HUDMainMenu\AccuracyCross\Active" 0
            SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 1
      else
            SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 0
            SetUIFloat "HUDMainMenu\AccuracyCross\Active" 1
      endif
      set skilltype to GetWeaponSkill weapon
      if skilltype == 33
            set skill to player.GetAV BigGuns
      elseif skilltype == 34
            set skill to player.GetAV EnergyWeapons
      elseif skilltype == 41
            set skill to player.GetAV SmallGuns
      else
            set skill to 0
      endif
      if skill > 100
            set skill to 100
      elseif skill < 0
            set skill to 0
      endif

      set GunSpreadIronSightsBase to GetNumericGameSetting fGunSpreadIronSightsBase
      set GunSpreadIronSightsMult to GetNumericGameSetting fGunSpreadIronSightsMult
      set GunSpreadCrouchBase to GetNumericGameSetting fGunSpreadCrouchBase
      set GunSpreadCrouchMult to GetNumericGameSetting fGunSpreadCrouchMult
      set GunSpreadCondBase to GetNumericGameSetting fGunSpreadCondBase
      set GunSpreadCondMult to GetNumericGameSetting fGunSpreadCondMult
      set GunSpreadSkillBase to GetNumericGameSetting fGunSpreadSkillBase
      set GunSpreadSkillMult to GetNumericGameSetting fGunSpreadSkillMult
      set GunSpreadWalkBase to GetNumericGameSetting fGunSpreadWalkBase
      set GunSpreadWalkMult to GetNumericGameSetting fGunSpreadWalkMult
      set GunSpreadRunBase to GetNumericGameSetting fGunSpreadRunBase
      set GunSpreadRunMult to GetNumericGameSetting fGunSpreadRunMult
      set GunSpreadArmBase to GetNumericGameSetting fGunSpreadArmBase
      set GunSpreadArmMult to GetNumericGameSetting fGunSpreadArmMult

      if Player.IsMoving
            set running to player.IsRunning
            set walking to 1-running
      else
            set running to 0
            set walking to 0
      endif

      set IsUsingIronSights to IsControlPressed 6

      set IronSightsBonus to GunSpreadIronSightsBase + GunSpreadIronSightsMult * IsUsingIronSights
      set CrouchBonus to GunSpreadCrouchBase + GunSpreadCrouchMult * player.IsSneaking
      set ConditionPenalty to GunSpreadCondBase + GunSpreadCondMult * (player.GetWeaponHealthPerc/100)
      set SkillBonus to GunSpreadSkillBase + GunSpreadSkillMult * skill
      set WalkPenalty to GunSpreadWalkBase * (1 - player.IsRunning) + GunSpreadWalkMult * walking
      set RunPenalty to GunSpreadRunBase * player.IsRunning + GunSpreadRunMult * running

      set ArmCondition to 1

      if WeaponType == 3 || WeaponType == 4
            if player.GetAV RightAttackCondition <= 0
                set ArmCondition to ArmCondition - 0.5
            endif
            if player.GetAV LeftAttackCondition <= 0
                set ArmCondition to ArmCondition - 0.5
            endif
      else
            if player.GetAV RightAttackCondition <= 0
                set ArmCondition to 0
            endif
      endif

      set ArmPenalty to GunSpreadArmBase + GunSpreadArmMult * ArmCondition

      set Spread to GetWeaponSpread weapon
      set MinSpread to GetWeaponMinSpread weapon
      
      set AimAngle to IronSightsBonus * CrouchBonus * (ConditionPenalty + SkillBonus) * (WalkPenalty + RunPenalty) + ArmPenalty
      set SpreadAngle to MinSpread

      set TargetSize to AimAngle * 126 + SpreadAngle * 42
      if (TargetSize - (floor TargetSize)) < 0.5
            set TargetSize to floor TargetSize
      else
            set TargetSize to ceil TargetSize
      endif
      if TargetSize < 0
            set TargetSize to 0
      endif
    endif
    set CurrentSize to GetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Height"
    if CurrentSize != TargetSize || GetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Alpha" != DynamicCrosshairQuest.Opacity
      if TargetSize - CurrentSize > 1 || TargetSize - CurrentSize < -1
            set CurrentSize to CurrentSize + ((TargetSize - CurrentSize)/5)
      else
            set CurrentSize to TargetSize
      endif

      set CrossSize to CurrentSize/3
      if CrossSize < 10
            set CrossSize to 10
      elseif CrossSize > 50
            set CrossSize to 50
      endif
      set CrossTop to GetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Y" - CrossSize
      set CrossLeft to GetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\X" - CrossSize
      set CrossBottom to CrossTop + CurrentSize + CrossSize
      set CrossRight to CrossLeft + CurrentSize + CrossSize

      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_100\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_150\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_200\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_250\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_300\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_350\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_400\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_450\Visible" 0
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_500\Visible" 0

      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_100\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_150\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_200\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_250\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_300\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_350\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_400\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_450\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_500\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCross\Accuracy_Cross_Top\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCross\Accuracy_Cross_Bottom\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCross\Accuracy_Cross_Left\Alpha" DynamicCrosshairQuest.Opacity
      SetUIFloat"HUDMainMenu\AccuracyCross\Accuracy_Cross_Right\Alpha" DynamicCrosshairQuest.Opacity

      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Top\Y" CrossTop
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Top\Height" CrossSize
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Bottom\Y" CrossBottom
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Bottom\Height" CrossSize
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Left\X" CrossLeft
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Left\Width" CrossSize
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Right\X" CrossRight
      SetUIFloat "HUDMainMenu\AccuracyCross\Accuracy_Cross_Right\Width" CrossSize

      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_100\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_100\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_150\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_150\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_200\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_200\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_250\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_250\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_300\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_300\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_350\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_350\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_400\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_400\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_450\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_450\Width" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_500\Height" CurrentSize
      SetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_500\Width" CurrentSize

      if CurrentSize <= 25
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Visible" 1
      elseif CurrentSize <= 50
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Visible" 1
      elseif CurrentSize <= 100
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_100\Visible" 1
      elseif CurrentSize <= 150
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_150\Visible" 1
      elseif CurrentSize <= 200
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_200\Visible" 1
      elseif CurrentSize <= 250
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_250\Visible" 1
      elseif CurrentSize <= 300
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_300\Visible" 1
      elseif CurrentSize <= 350
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_350\Visible" 1
      elseif CurrentSize <= 400
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_400\Visible" 1
      elseif CurrentSize <= 450
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_450\Visible" 1
      else
            SetUIFloat"HUDMainMenu\AccuracyCircle\Accuracy_Circle_500\Visible" 1
      endif
    endif
end

vipufo1234 发表于 2014-4-8 10:45

直接使用 内华达计划,什么MOD武器 的 动态准星都有了

y285905007 发表于 2014-5-18 15:12

我的都支持,仔细看说明

y285905007 发表于 2014-5-18 22:06

嗯...测试不同装扮的人群之间社会关系是否变化
页: [1]
查看完整版本: 会脚本的进!辐射3动态准心,不支持mod武器,谁能修改下啊!