I originally tried this with NumberValues, then I tried using StringValues. Unfortunately, neither of their value properties changed. This almost never happens when I am doing a small and simple script, and it's driving me crazy. What do I do to get them to change?
Boss = script.Parent Fist1 = Boss.HandFighter1.Fist FB1 = Fist1.BodyPosition.position Hand1 = Boss.HandFighter1.OpenHand HB1 = Hand1.BodyPosition.position Fist2 = Boss.HandFighter2.Fist FB2 = Fist2.BodyPosition.position Hand2 = Boss.HandFighter2.OpenHand HB2 = Hand2.BodyPosition.position Attack1 = Fist1.Attack.Permission.Value Attack2 = Fist2.Attack.Permission.Value Attack3 = Hand1.Attack.Permission.Value Attack4 = Hand2.Attack.Permission.Value Disable1 = Boss.HandFighter1.Disable.Check.Value Disable2 = Boss.HandFighter2.Disable.Check.Value while true do wait(10) local num = math.random(1,3) print(num) if num == 1 then Attack1 = 1 Attack2 = 1 Disable1 = 1 Disable2 = 1 FB1 = game.Workspace.FistGuide1.Position FB2 = game.Workspace.FistGuide2.Position wait(4) if Attack1 == 1 then Attack1 = 0 elseif Attack2 == 1 then Attack2 = 0 elseif Attack1 == 1 and Attack2 == 1 then Attack1 = 0 Attack2 = 0 end FB1 = game.Workspace.HandGuide1.Fist.Position FB2 = game.Workspace.HandGuide2.Fist.Position Disable1 = 0 Disable2 = 0 elseif num == 2 then Attack3 = 1 HB1 = game.Workspace.OpenHandSlapGuide1.Position wait(3) HB1 = game.Workspace.OpenHandSlapGuide2.Position wait(4) if Attack3 == 1 then Attack3 = 0 end HB1 = game.Workspace.HandGuide1.OpenHand elseif num == 3 then Attack4 = 1 HB2 = game.Workspace.OpenHandGuide2.Position wait(3) HB2 = game.Workspace.OpenHandGuide1.Position wait(4) if Attack4 == 1 then Attack4 = 0 end end end
The output doesn't say anything either. Would a more efficient script help, if this can get any simpler?
This is a really frequent mistake.
When you assign to Attack1
the first time, that just sets Attack1 = 0
(since the right side is just 0 (or whatever other number)). It doesn't "link" the Value object with the variable.
As a result, later changes to the variable Attack1
has nothing to do with the Value object itself.
The fix is to do something like this:
Attack1 = Fist1.Attack.Permission ..... if num == 1 then Attack1.Value = 1 .....
As for simplifying the script, I'll be right back with that.
One small suggestion I have is to use BoolValues. You're using numbers, but you're only using 0 and 1, so you might as well use BoolValues.
If you could explain what the purpose of setting all of the values are (why do they need to be set? Why are you checking what you are checking?) I think could give good pointers of simplifying it.