Jump to content

Quick Question - Quick Answer


Cipscis

Recommended Posts

  • Replies 804
  • Created
  • Last Reply

Top Posters In This Topic

I'm having a problem with a function that isn't taking the value of my variable. The code is below and the problem area is in the else, the con_SetGameSetting calls aren't using the numbers. The game settings are being set to 0.0 instead of what I want. I know my variables are getting set to the right values. Is it because con_SetGameSetting only takes in strings? The console command SetGameSetting takes in both numbers and strings, I think, but I can't use it obviously. If that is the problem, can I convert the floats to strings easily? Also, if there are any coding improvements that can be made to the script, I'd be glad to hear it; this is my first mod.

 

ScriptName GRepairScript

int iRepair
float fArmorPercent
float fWeaponEnergyMult 
float fWeaponGunMult
float fWeaponLauncherMult
float fWeaponMeleeMult

begin GameMode
set iRepair to Player.GetActorValue Repair
if iRepair >= 100
	con_SetGameSetting fDamageToArmorPercentage 0.0
	con_SetGameSetting fDamageToWeaponEnergyMult 0.0
	con_SetGameSetting fDamageToWeaponGunMult 0.0
	con_SetGameSetting fDamageToWeaponLauncherMult 0.0
	con_SetGameSetting fDamageToWeaponMeleeMult 0.0
else
	set fArmorPercent to 0.35 * ((100 - iRepair) / 100.0)
	set fWeaponEnergyMult to 0.04 * ((100 - iRepair) / 100.0)
	set fWeaponGunMult to 0.03 * ((100 - iRepair) / 100.0)
	set fWeaponLauncherMult to 0.06 * ((100 - iRepair) / 100.0)
	set fWeaponMeleeMult to 0.05 * ((100 - iRepair) / 100.0)
	con_SetGameSetting fDamageToArmorPercentage fArmorPercent
	con_SetGameSetting fDamageToWeaponEnergyMult fWeaponEnergyMult
	con_SetGameSetting fDamageToWeaponGunMult fWeaponGunMult
	con_SetGameSetting fDamageToWeaponLauncherMult fWeaponLauncherMult
	con_SetGameSetting fDamageToWeaponMeleeMult fWeaponMeleeMult
endif
end

Link to comment
Share on other sites

I'm not 100% sure that there isn't another way, but if you just want to know if any limbs are crippled you could make a "hasCrippledLimb" variable to check for that.

 

if GetAV PerceptionCondition > 0
	 set NoHeadCripple to 1
EndIf
if GetAV LeftMobilityCondition > 0
	 set LeftLegCripple to 1
EndIf
if GetAV RightMobilityCondition > 0
	 set NoRightLegCripple to 1
EndIf
if GetAV LeftAttackCondition > 0
	 set NoLeftArmCripple to 1
EndIf
if GetAV RightAttackCondition > 0
	 set NoRightArmCripple to 1
EndIf
if GetAV EnduranceCondition > 0
	 set NoTorsoCripple to 1
EndIf

set NoCrippledParts to NoHeadCripple + NoLeftLegCripple + NoRightLegCripple + NoLeftArmCripple + NoRightArmCripple + NoTorsoCripple

If NoCrippledParts < 5

 

This would check each body part then return true for each not being crippled. If the total value is less than 5 the actor has a crippled bodypart. You could do this opposite way and return false for each limb that is ok and then check LimbsCripple == 0.

 

This should be functional but could probably be shortened a lot.

Link to comment
Share on other sites

You probably want SetNumericGameSetting.

You're right. I also should've noticed in the FOSE documentation where it says in con_SetGameSetting, "Does not accept variables as arguments."

Link to comment
Share on other sites

I put my FOSE download in my Fallout 3 folder and when I load up fallout using the fose_launcher I have no saves. I did what the readme said like moving the saves out from "C:\Users\name\Documents\My Games\Fallout3" and back in again. That didn't work.

 

This is my Fallout 3 directory "C:\Program Files\Steam\steamapps\common\fallout 3". halp. :(

Link to comment
Share on other sites

Trying to make a break in conversation where the NPC will tell you to come back in an hour. I have a feeling it's got to to with TimePassed, which seems to be used for timer-oriented conditions, but I'm not sure how to make use of it. Can someone please clarify this for me? Thanks in advance
Link to comment
Share on other sites

I've got a ScriptEffectStart block that sets a variable, Rand, to GetRandomPercent. Rand is then used as a conditional. However, after some testing, it seems to not work as I thought. If the compare value is less than 70, my effect never fires. At 70, it always fires and all the other conditions are ignored. I've also tried changing the blocktype to ScriptEffectUpdate, but the results weren't much different. The Wiki pages are kinda vague regarding the function's behaviours, so I was wondering if anyone can shed any light on what's going on.
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...