Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to Xbox Chaos: Modding Evolved

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

OrangeMohawk

Retail
Grenade Regeneration

2 posts in this topic

Hey guys, here's a tutorial on how to set up a custom Grenade Regeneration with Megalo. The Halo 4 version of this can be found here.
 
The script code in step 4 is written in version 5040.43099, but I have code for 4912.6622 included at the bottom.

  • Add these to the StringTable:
    <String name="Grenade Regen Type">  <String>Grenade Regen Type</String></String><String name="Which grenades will be effected with Grenade Regeneration">  <String>Which grenades will be effected with Grenade Regeneration</String></String><String name="Grenade Regen Time">  <String>Grenade Regen Time</String></String><String name="How long it takes for grenades to regenerate.">  <String>How long it takes for grenades to regenerate.</String></String><String name="One Frag">  <String>One Frag</String></String><String name="One Plasma">  <String>One Plasma</String></String><String name="One of Each">  <String>One of Each</String></String><String name="Instant">  <String>Instant</String></String><String name="One Second">  <String>One Second</String></String><String name="Two Seconds">  <String>Two Seconds</String></String><String name="Three Seconds">  <String>Three Seconds</String></String><String name="Five Seconds">  <String>Five Seconds</String></String><String name="Eight Seconds">  <String>Eight Seconds</String></String><String name="Ten Seconds">  <String>Ten Seconds</String></String><String name="Fifteen Seconds">  <String>Fifteen Seconds</String></String>
  • Add these to your UserDefinedOptions (Replacing String26 with your gametype's blank string):
    <entry nameIndex="Grenade Regen Type" descIndex="Which grenades will be effected with Grenade Regeneration" name="Grenade Regen Type" valueIndex="0">  <Values defaultIndex="0">    <entry nameIndex="Disabled" descIndex="String26" value="0" />    <entry nameIndex="One Frag" descIndex="String26" value="1" />    <entry nameIndex="One Plasma" descIndex="String26" value="2" />    <entry nameIndex="One of Each" descIndex="String26" value="3" />  </Values></entry><entry nameIndex="Grenade Regen Time" descIndex="How long it takes for grenades to regenerate." name="Grenade Regen Time" valueIndex="0">  <Values defaultIndex="0">    <entry nameIndex="Instant" descIndex="String26" value="0" />    <entry nameIndex="One Second" descIndex="String26" value="1" />    <entry nameIndex="Two Seconds" descIndex="String26" value="2" />    <entry nameIndex="Three Seconds" descIndex="String26" value="3" />    <entry nameIndex="Five Seconds" descIndex="String26" value="5" />    <entry nameIndex="Eight Seconds" descIndex="String26" value="8" />    <entry nameIndex="Ten Seconds" descIndex="String26" value="10" />    <entry nameIndex="Fifteen Seconds" descIndex="String26" value="15" />  </Values></entry>
  • Under PlayerVariables > Timers, add a new timer (in my example and in the code, it's called PlayerTimer3)
    <Var name="PlayerTimer3" varRefType="Int16">0</Var>
  • Add this trigger to your Triggers:
    <Trigger execMode="OnEachPlayer" name="GrenadeRegen">  <Elements>    <E type="Action" name="TimerRateSet">      <Param type="TimerReference" varRefType="Player.TimerVar" dataType="Iterator.Player">PlayerTimer3</Param>      <Param type="TimerRate">Minus100p</Param>    </E>    <E type="Condition" name="TimerIsZero">      <Param type="TimerReference" varRefType="Player.TimerVar" dataType="Iterator.Player">PlayerTimer3</Param>    </E>    <E type="Action" name="ActivateTrigger">      <Param type="TriggerReference">        <T type="Trigger" trigType="Subroutine" name="GrenadeRegen_Frags">          <Elements>            <E type="Condition" name="Comparison">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-3">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">3</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Action" name="PlayerAdjustGrenades">              <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="GrenadeType">Frag</Param>              <Param type="OperationType">Add</Param>              <Param type="CustomReference" varRefType="Int16">1</Param>            </E>          </Elements>        </T>      </Param>    </E>    <E type="Action" name="ActivateTrigger">      <Param type="TriggerReference">        <T type="Trigger" trigType="Subroutine" name="GrenadeRegen_Plasmas">          <Elements>            <E type="Condition" name="Comparison">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">2</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-3">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">3</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Action" name="PlayerAdjustGrenades">              <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="GrenadeType">Plasma</Param>              <Param type="OperationType">Add</Param>              <Param type="CustomReference" varRefType="Int16">1</Param>            </E>          </Elements>        </T>      </Param>    </E>    <E type="Action" name="VariableOperation">      <Param type="VarReference" varRefKind="Timer" varRefType="Player.TimerVar" dataType="Iterator.Player">PlayerTimer3</Param>      <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Time</Param>      <Param type="OperationType">Set</Param>    </E>  </Elements></Trigger>

Note: If your gametype doesn't have Enabled/Disabled strings, you'll need to add those too:

<String name="Enabled">  <String>Enabled</String></String><String name="Disabled">  <String>Disabled</String></String>

 
And that's it! You'll now have your own customizable Grenade Regeneration

 

Thanks to Matt for reminding me about Variable Operations, the timer wouldn't have worked without that.
 
Example: Slayer

As promised, the trigger in 4912:

<Trigger execMode="OnEachPlayer" name="Trigger0">  <Elements>    <E type="Action" name="TimerTick">      <Param type="TimerReference" varRefType="Player.TimerVar" dataType="Iterator.Player">PlayerTimer3</Param>      <Param type="UInt5">5</Param>    </E>    <E type="Condition" name="TimerIsZero" unionGroupID="-2">      <Param type="TimerReference" varRefType="Player.TimerVar" dataType="Iterator.Player">PlayerTimer3</Param>    </E>    <E type="Action" name="ActivateTrigger">      <Param type="TriggerReference">        <T type="Trigger" trigType="Subroutine" name="Trigger0_Subroutine1">          <Elements>            <E type="Condition" name="Comparison" unionGroupID="-2">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-3">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">3</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Action" name="PlayerAdjustGrenades">              <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="GrenadeType">Frag</Param>              <Param type="OperationType">Add</Param>              <Param type="CustomReference" varRefType="Int16">1</Param>            </E>          </Elements>        </T>      </Param>    </E>    <E type="Action" name="ActivateTrigger">      <Param type="TriggerReference">        <T type="Trigger" trigType="Subroutine" name="Trigger0_Subroutine2">          <Elements>            <E type="Condition" name="Comparison" unionGroupID="-2">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">2</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Condition" name="Comparison" unionGroupID="-3">              <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Type</Param>              <Param type="VarReference" varRefKind="Custom" varRefType="Int16">3</Param>              <Param type="ComparisonType">Equal</Param>            </E>            <E type="Action" name="PlayerAdjustGrenades">              <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />              <Param type="GrenadeType">Plasma</Param>              <Param type="OperationType">Add</Param>              <Param type="CustomReference" varRefType="Int16">1</Param>            </E>          </Elements>        </T>      </Param>    </E>    <E type="Action" name="VariableOperation">      <Param type="VarReference" varRefKind="Timer" varRefType="Player.TimerVar" dataType="Iterator.Player">PlayerTimer3</Param>      <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Grenade Regen Time</Param>      <Param type="OperationType">Set</Param>    </E>  </Elements></Trigger>

AMD, 7ime, Pfeuff and 3 others like this

Share this post


Link to post
Share on other sites