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.

Sign in to follow this  
Followers 0
PjMpire

Modding
Halo 4 Descope Mod Discussion

30 posts in this topic

Hi all,

 

i just wanted to start this thread to discuss everything about what would have to be one of the most game saving mods if pulled off correctly.

 

@Matt I would also like to kindly request that you could post updates here so that we can all see where you are with the mod and help contribute to any problems that have arisen.

 

I have been looking into descope beta script recently trying to work out how it can be improved.

 

you mentioned you had an incline as to why it didnt work when i asked for a fix to the host display mod. i was wondering if you could start this thread off by elaborating on what you think could be the problem? maybe if you could even post an annotated version of the descope script so the modding community can contribute to getting this working if you are busy with other projects?

 

thanks

 

Synth92 classic slayer beta script:

 

<Megalo encoding="103" version="5399" engineIcon="1" engineCategory="25" scoreToWinRound="250" unk1ACF2="False" unk1ACF3="False" unk1ACF4="True">    <SerializeFlags>UseStringTableNames, UseUserOptionNames</SerializeFlags>    <StringTable baseNameIndex="BaseName">      <String name="String0">        <String>        </String>      </String>      <String name="BaseName">        <String>Classic Slayer (Beta)</String>      </String>      <String name="p_overshield">        <String>p_overshield</String>      </String>      <String name="Custom Powerup Traits">        <String>Custom Powerup Traits</String>      </String>      <String name="Traits applied to players who have the custom powerup.">        <String>Traits applied to players who have the custom powerup.</String>      </String>      <String name="Zoom Button Hold Duration Requirement">        <String>Zoom Button Hold Duration Requirement</String>      </String>      <String name="How long (in game ticks) does the zoom button have to be pressed for you to enable automatic unscoping?

<< BETA FINE TUNING SETTING >>">        <String>How long (in game ticks) does the zoom button have to be pressed for you to enable automatic unscoping?<< BETA FINE TUNING SETTING >></String>      </String>      <String name="5">        <String>5</String>      </String>      <String name="6">        <String>6</String>      </String>      <String name="7">        <String>7</String>      </String>      <String name="8">        <String>8</String>      </String>      <String name="9">        <String>9</String>      </String>      <String name="10">        <String>10</String>      </String>      <String name="11">        <String>11</String>      </String>      <String name="Instant Switch Speed Duration">        <String>Instant Switch Speed Duration</String>      </String>      <String name="How many game ticks should the instant switch speed override last for any scoped player that got descoped forcibly?

<< BETA FINE TUNING SETTING >>">        <String>How many game ticks should the instant switch speed override last for any scoped player that got descoped forcibly?<< BETA FINE TUNING SETTING >></String>      </String>      <String name="10">        <String>10</String>      </String>      <String name="20">        <String>20</String>      </String>      <String name="30">        <String>30</String>      </String>      <String name="40">        <String>40</String>      </String>      <String name="50">        <String>50</String>      </String>      <String name="60">        <String>60</String>      </String>      <String name="70">        <String>70</String>      </String>      <String name="80">        <String>80</String>      </String>      <String name="90">        <String>90</String>      </String>      <String name="APPLYING TRAIT">        <String>APPLYING TRAIT</String>      </String>      <String name="EXPERIMENTAL BETA VERSION
Is Scoped: %n | Host: %s">        <String>EXPERIMENTAL BETA VERSIONIs Scoped: %n | Host: %s</String>      </String>      <String name="USING HOST PLAYER REFERENCE">        <String>USING HOST PLAYER REFERENCE</String>      </String>    </StringTable>    <NameString>      <String>        <String>Classic Slayer (Beta)</String>      </String>    </NameString>    <DescString>      <String>        <String>Descoping, no sprint, and no flinch.Experimental beta version, expect gameplay issues.</String>      </String>    </DescString>    <CategoryString>      <String>        <String>Community</String>      </String>    </CategoryString>    <IntroString>      <String>        <String>Descoping, no sprint, and no flinch.Experimental beta version, expect gameplay issues.</String>      </String>    </IntroString>    <PlayerTraits>      <entry nameIndex="String0" descIndex="String0">        <Traits>          <Weapons>            <Modifiers>              <entry key="SwitchSpeedModifier" value="200" />            </Modifiers>          </Weapons>          <Appearance aura="2" />        </Traits>      </entry>      <entry nameIndex="Custom Powerup Traits" descIndex="Traits applied to players who have the custom powerup." name="Custom Powerup Traits" runtime="True">        <Traits>          <Appearance aura="2" />        </Traits>      </entry>    </PlayerTraits>    <UserDefinedOptions>      <entry nameIndex="Zoom Button Hold Duration Requirement" descIndex="How long (in game ticks) does the zoom button have to be pressed for you to enable automatic unscoping?

<< BETA FINE TUNING SETTING >>" name="Zoom Button Hold Duration Requirement" valueIndex="2">        <Values defaultIndex="2">          <entry nameIndex="5" descIndex="String0" value="5" />          <entry nameIndex="6" descIndex="String0" value="6" />          <entry nameIndex="7" descIndex="String0" value="7" />          <entry nameIndex="8" descIndex="String0" value="8" />          <entry nameIndex="9" descIndex="String0" value="9" />          <entry nameIndex="10" descIndex="String0" value="10" />          <entry nameIndex="11" descIndex="String0" value="11" />        </Values>      </entry>      <entry nameIndex="Instant Switch Speed Duration" descIndex="How many game ticks should the instant switch speed override last for any scoped player that got descoped forcibly?

<< BETA FINE TUNING SETTING >>" name="Instant Switch Speed Duration" valueIndex="6">        <Values defaultIndex="3">          <entry nameIndex="10" descIndex="String0" value="10" />          <entry nameIndex="20" descIndex="String0" value="20" />          <entry nameIndex="30" descIndex="String0" value="30" />          <entry nameIndex="40" descIndex="String0" value="40" />          <entry nameIndex="50" descIndex="String0" value="50" />          <entry nameIndex="60" descIndex="String0" value="60" />          <entry nameIndex="70" descIndex="String0" value="70" />          <entry nameIndex="80" descIndex="String0" value="80" />          <entry nameIndex="90" descIndex="String0" value="90" />        </Values>      </entry>    </UserDefinedOptions><MegaloScript version="0" dbVersion="0">    <SerializeFlags>EmbedObjects, UseEnumNames, UseIndexNames, UseConditionTypeNames, UseActionTypeNames, EmbedObjectsWriteSansIds</SerializeFlags>    <IDs NextCondID="26" NextActionID="55" NextValueID="196" NextTrigID="7" NextVirtualTriggerID="9" />    <HudWidgets>      <Widget position="10" name="Widget0" />    </HudWidgets>    <ObjectFilters>      <Filter labelIndex="p_overshield" name="p_overshield" />    </ObjectFilters>    <GlobalVariables>      <Numeric>        <Var name="GlobalNumeric0" varRefType="Int16">0</Var>      </Numeric>      <Players>        <Var networkState="HighPriority" name="GlobalPlayer0" />      </Players>    </GlobalVariables>    <PlayerVariables>      <Numeric>        <Var name="PlayerNumeric0" varRefType="Int16">0</Var>        <Var name="PlayerNumeric1" varRefType="Int16">0</Var>        <Var name="PlayerNumeric2" varRefType="Int16">0</Var>        <Var name="PlayerNumeric3" varRefType="Int16">0</Var>        <Var name="PlayerNumeric4" varRefType="Int16">0</Var>      </Numeric>      <Objects>        <Var name="PlayerObject0" />      </Objects>    </PlayerVariables>    <Values /><Trigger trigType="Local" name="LocalTrigger">        <Elements>          <E type="Action" name="ActivateTrigger">            <Param type="TriggerReference">              <T type="Trigger" trigType="Subroutine" execMode="OnEachPlayer" name="LocalTrigger_Subroutine5">                <Elements>                  <E type="Condition" name="Comparison" unionGroupID="-2">                    <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="Iterator.Player">PlayerNumeric0</Param>                    <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                    <Param type="ComparisonType">GreaterThan</Param>                  </E>                  <E type="Action" name="ApplyPlayerTraits">                    <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />                    <Param type="PlayerTraitsReference">                    </Param>                  </E>                  <E type="Action" name="ChudMessage">                    <Param type="TargetVar" targetType="Player" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />                    <Param type="SoundIndex">NONE</Param>                    <Param type="Tokens2" stringIndex="APPLYING TRAIT" />                  </E>                  <E type="Action" name="VariableOperation">                    <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="Iterator.Player">PlayerNumeric0</Param>                    <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                    <Param type="OperationType">Subtract</Param>                  </E>                </Elements>              </T>            </Param>          </E>          <E type="Action" name="VariableOperation">            <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />            <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="NONE" />            <Param type="OperationType">Set</Param>          </E>          <E type="Action" name="ActivateTrigger">            <Param type="TriggerReference">              <T type="Trigger" trigType="Subroutine" execMode="OnEachPlayer" name="LocalTrigger_Subroutine6">                <Elements>                  <E type="Action" name="WidgetSetPlayerVisibility">                    <Param type="Widget">Widget0</Param>                    <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />                    <Param type="Bool">True</Param>                  </E>                  <E type="Action" name="WidgetSetText">                    <Param type="Widget">Widget0</Param>                    <Param type="Tokens2" stringIndex="EXPERIMENTAL BETA VERSION
Is Scoped: %n | Host: %s" tokenCount="2">                      <Token0 type="Numeric" varRefType="Player.NumericVar" dataType="_PlayerType24_Local">PlayerNumeric1</Token0>                      <Token1 type="Player" varRefType="ExplicitPlayerType" dataType="GlobalPlayer0" />                    </Param>                  </E>                  <E type="Action" name="VariableOperation">                    <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                    <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="Iterator.Player" />                    <Param type="OperationType">Set</Param>                  </E>                  <E type="Action" name="VariableOperation">                    <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                    <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="NONE" />                    <Param type="OperationType">Set</Param>                  </E>                  <E type="Action" name="PlayerGetWeapon">                    <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                    <Param type="Bool">True</Param>                    <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                  </E>                  <E type="Action" name="VariableOperation">                    <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch0</Param>                    <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                    <Param type="OperationType">Set</Param>                  </E>                  <E type="Action" name="PlayerPressedButton?">                    <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                    <Param type="UInt4">8</Param>                    <Param type="CustomReference" varRefType="Scratch">NumericScratch0</Param>                  </E>                  <E type="Action" name="Branch">                    <Param type="VirtualTrigger">                      <VT type="VirtualTrigger">                        <E type="Condition" name="Comparison" unionGroupID="-2">                          <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric1</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                          <Param type="ComparisonType">GreaterThanEqual</Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric2</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                          <Param type="OperationType">Add</Param>                        </E>                      </VT>                    </Param>                  </E>                  <E type="Action" name="Branch">                    <Param type="VirtualTrigger">                      <VT type="VirtualTrigger">                        <E type="Condition" name="Comparison" unionGroupID="-2">                          <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch0</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                          <Param type="ComparisonType">Equal</Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric1</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                          <Param type="OperationType">Xor</Param>                        </E>                      </VT>                    </Param>				 </E>                  <E type="Action" name="Branch">                    <Param type="VirtualTrigger">                      <VT type="VirtualTrigger">                        <E type="Condition" name="Comparison" unionGroupID="-2">                          <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch0</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                          <Param type="ComparisonType">Equal</Param>                        </E>                        <E type="Action" name="Branch">                          <Param type="VirtualTrigger">                            <VT type="VirtualTrigger">                              <E type="Condition" name="Comparison" unionGroupID="-2">                                <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric2</Param>                                <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Zoom Button Hold Duration Requirement</Param>                                <Param type="ComparisonType">GreaterThanEqual</Param>                              </E>                              <E type="Action" name="VariableOperation">                                <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric1</Param>                                <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                                <Param type="OperationType">Set</Param>                              </E>                            </VT>                          </Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric2</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                          <Param type="OperationType">Set</Param>                        </E>                      </VT>                    </Param>                  </E>                  <E type="Action" name="Branch">                    <Param type="VirtualTrigger">                      <VT type="VirtualTrigger">                        <E type="Action" name="Action205">                          <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                          <Param type="CustomReference" varRefType="Scratch">NumericScratch3</Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch1</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                          <Param type="OperationType">Set</Param>                        </E>                        <E type="Action" name="Action40">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="CustomReference" varRefType="Scratch">NumericScratch1</Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch1" />                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="NONE" />                          <Param type="OperationType">Set</Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch2" />                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="NONE" />                          <Param type="OperationType">Set</Param>                        </E>                        <E type="Action" name="PlayerGetVehicle">                          <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch1" />                        </E>                        <E type="Action" name="PlayerGetObject60">                          <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch2" />                        </E>                        <E type="Condition" name="Comparison" unionGroupID="-2">                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="VarReference" varRefKind="Object" varRefType="Player.ObjectVar" dataType="PlayerScratch0">PlayerObject0</Param>                          <Param type="ComparisonType">NotEqual</Param>                        </E>                        <E type="Condition" name="Comparison" unionGroupID="-3">                          <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch3</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="Scratch">NumericScratch1</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                          <Param type="ComparisonType">GreaterThan</Param>                        </E>                        <E type="Condition" name="PlayerIsAlive?" unionGroupID="-3" invert="True">                          <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                        </E>                        <E type="Condition" name="Comparison" unionGroupID="-3">                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch1" />                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="NONE" />                          <Param type="ComparisonType">NotEqual</Param>                        </E>                        <E type="Condition" name="Comparison" unionGroupID="-3">                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch2" />                          <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="NONE" />                          <Param type="ComparisonType">NotEqual</Param>                        </E>                        <E type="Condition" name="ObjectIsSameType" unionGroupID="-3">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="ObjectTypeIndex">machinegun</Param>                        </E>                        <E type="Condition" name="ObjectIsSameType" unionGroupID="-3">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="ObjectTypeIndex">plasma_turret_weapon</Param>                        </E>                        <E type="Condition" name="ObjectIsSameType" unionGroupID="-3">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="ObjectTypeIndex">carry_bomb</Param>                        </E>                        <E type="Condition" name="ObjectIsSameType" unionGroupID="-3">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="ObjectTypeIndex">bomb_disarm</Param>                        </E>                        <E type="Condition" name="ObjectIsSameType" unionGroupID="-3">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="ObjectTypeIndex">ball</Param>                        </E>                        <E type="Condition" name="ObjectIsSameType" unionGroupID="-3">                          <Param type="ObjectReference" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                          <Param type="ObjectTypeIndex">flood_sword</Param>                        </E>                        <E type="Action" name="VariableOperation">                          <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric1</Param>                          <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                          <Param type="OperationType">Set</Param>                        </E>                      </VT>                    </Param>                  </E>                  <E type="Action" name="VariableOperation">                    <Param type="VarReference" varRefKind="Object" varRefType="Player.ObjectVar" dataType="PlayerScratch0">PlayerObject0</Param>                    <Param type="VarReference" varRefKind="Object" varRefType="ExplicitObjectType" dataType="ObjectScratch0" />                    <Param type="OperationType">Set</Param>                  </E>                </Elements>              </T>            </Param>          </E>		  <E type="Action" name="VariableOperation">            <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch6</Param>            <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>            <Param type="OperationType">Set</Param>          </E>		  <E type="Action" name="Branch">            <Param type="VirtualTrigger">              <VT type="VirtualTrigger">                <E type="Condition" name="Comparison" unionGroupID="-2">                  <Param type="VarReference" varRefKind="Custom" varRefType="Global.NumericVar">GlobalNumeric0</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                  <Param type="ComparisonType">Equal</Param>                </E>                <E type="Condition" name="Comparison" unionGroupID="-2">                  <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="GlobalPlayer0" />                  <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="NONE" />                  <Param type="ComparisonType">NotEqual</Param>                </E>                <E type="Action" name="VariableOperation">                  <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                  <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="GlobalPlayer0" />                  <Param type="OperationType">Set</Param>                </E>                <E type="Action" name="ChudMessage">                  <Param type="TargetVar" targetType="Player" varRefType="ExplicitPlayerType" dataType="GlobalPlayer0" />                  <Param type="SoundIndex">NONE</Param>                  <Param type="Tokens2" stringIndex="USING HOST PLAYER REFERENCE" />                </E>              </VT>            </Param>          </E>		  <E type="Condition" name="Comparison" unionGroupID="-2">            <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />            <Param type="VarReference" varRefKind="Player" varRefType="ExplicitPlayerType" dataType="NONE" />            <Param type="ComparisonType">NotEqual</Param>          </E>		  <E type="Action" name="Branch">            <Param type="VirtualTrigger">              <VT type="VirtualTrigger">                <E type="Action" name="ObjectGetShields">                  <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />                  <Param type="CustomReference" varRefType="Scratch">NumericScratch4</Param>                </E>                <E type="Action" name="ObjectGetHealth">                  <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />                  <Param type="CustomReference" varRefType="Scratch">NumericScratch5</Param>                </E>			    <E type="Condition" name="Comparison" unionGroupID="-2">                  <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch4</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric4</Param>                  <Param type="ComparisonType">LessThan</Param>                </E>                <E type="Condition" name="Comparison" unionGroupID="-3">                  <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch5</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric3</Param>                  <Param type="ComparisonType">LessThan</Param>                </E>                <E type="Action" name="VariableOperation">                  <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch6</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                  <Param type="OperationType">Set</Param>                </E>              </VT>            </Param>          </E>		  <E type="Action" name="ObjectGetHealth">            <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />            <Param type="CustomReference" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric3</Param>          </E>          <E type="Action" name="ObjectGetShields">            <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />            <Param type="CustomReference" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric4</Param>          </E>		  <E type="Action" name="Branch">            <Param type="VirtualTrigger">              <VT type="VirtualTrigger">                <E type="Condition" name="Comparison" unionGroupID="-2">                  <Param type="VarReference" varRefKind="Custom" varRefType="Scratch">NumericScratch6</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                  <Param type="ComparisonType">Equal</Param>                </E>                <E type="Condition" name="Comparison" unionGroupID="-2">                  <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric1</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Int16">1</Param>                  <Param type="ComparisonType">Equal</Param>                </E>                <E type="Action" name="VariableOperation">                  <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric1</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="Int16">0</Param>                  <Param type="OperationType">Set</Param>                </E>				<E type="Action" name="ApplyPlayerTraits">                  <Param type="PlayerReference" varRefType="ExplicitPlayerType" dataType="PlayerScratch0" />                  <Param type="PlayerTraitsReference">                  </Param>                </E>                <E type="Action" name="VariableOperation">                  <Param type="VarReference" varRefKind="Custom" varRefType="Player.NumericVar" dataType="PlayerScratch0">PlayerNumeric0</Param>                  <Param type="VarReference" varRefKind="Custom" varRefType="UserDefinedOption">Instant Switch Speed Duration</Param>                  <Param type="OperationType">Set</Param>                </E>				<E type="Action" name="BipedGiveWeapon">                  <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />                  <Param type="ObjectTypeIndex">bomb</Param>                  <Param type="AddWeaponMode">Mode1</Param>                </E>                <E type="Action" name="BipedDropWeapon">                  <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />                  <Param type="DropWeaponMode">InteractionObject</Param>                  <Param type="Bool">True</Param>                </E>              </VT>            </Param>          </E>        </Elements>      </Trigger> 

Edited by PjMpire

Share this post


Link to post
Share on other sites

Hi all,

i just wanted to start this thread to discuss everything about what would have to be one of the most game saving mods if pulled off correctly.

@Matt I would also like to kindly request that you could post updates here so that we can all see where you are with the mod and help contribute to any problems that have arisen.

I have been looking into descope beta script recently trying to work out how it can be improved.

you mentioned you had an incline as to why it didnt work when i asked for a fix to the host display mod. i was wondering if you could start this thread off by elaborating on what you think could be the problem? maybe if you could even post an annotated version of the descope script so the modding community can contribute to getting this working if you are busy with other projects?

thanks

Matt isn't actively developing this mod anymore.

Share this post


Link to post
Share on other sites

Matt isn't actively developing this mod anymore.

yes im aware of that and thats why i would like to request some brief information/annotation on what problems he found whilst writing the script so others in the modding community can attempt to continue where he left off.

This thread can also be used to discuss alternative methods the create a workign descope mod for other modders that are interested.

 

working descope would be the single most important mod in halo 4. 

Edited by PjMpire

Share this post


Link to post
Share on other sites

working descope would be the single most important mod in halo 4. 

Couldn't disagree more, but to each their own. But if you want to help, play the mod extensively and find all situations where the descoping 'illusion' breaks down so that Matt can have proper feedback. It seems rather surprising to have such enthusiasm towards the mod but not recognize any issues, despite noting that there are some.

Edited by Teancum
Fierce Waffle likes this

Share this post


Link to post
Share on other sites

Bug list off the top of my head....

 

1. If you swap weapons while scoped, and them immediately rescope with your second weapon, the game will think that you are not scoping, so you will not be descoped when shot

 

2. Doesn't work on guests

 

3. In a 1v1 with Saucey, Cyren mentioned that he sometimes couldn't shoot after getting descoped. Saucey was the host by the way

Edited by shanez1215
PjMpire likes this

Share this post


Link to post
Share on other sites

Couldn't disagree more, but to each their own. But if you want to help, play the mod extensively and find all situations where the descoping 'illusion' breaks down so that Matt can have proper feedback. It seems rather surprising to have such enthusiasm towards the mod but not recognize any issues, despite noting that there are some.

well i am curious to hear what other mod is more important in creating a skill gap that halo 4 is lacking in the competitive community. I thought the response from the community over at beyond entertainment would have been more then enough to back my statement but clearly not.

Also i never said i didnt recognise the issues, i just wanted to know what im working with before i set of looking at an alternative way of implementing the descope mod. @Thunder also said that matt isnt actively developing the mod anymore so further testing and feedback reports to him would be pointless.

Edited by PjMpire

Share this post


Link to post
Share on other sites

Bug list off the top of my head....

 

1. If you swap weapons while scoped, and them immediately rescope with your second weapon, the game will think that you are not scoping, so you will not be descoped when shot

 

2. Doesn't work on guests

 

3. In a 1v1 with Saucey, Cyren mentioned that he sometimes couldn't shoot after getting descoped. Saucey was the host by the way

1 & 3 seems like they would be based off detecting the user input of holding the scope button. 3 being the instant switch speed duration.

 

2. im not sure why this wouldnt work but my best guess is that its related to the local user input as said above.

 

I do have an idea for an alternative approach though. would it be possible to have to have the :

<E type="Action" name="BipedGiveWeapon">                  <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />                  <Param type="ObjectTypeIndex">bomb</Param>                  <Param type="AddWeaponMode">Mode1</Param>                </E>                <E type="Action" name="BipedDropWeapon">                  <Param type="ObjectReference" varRefType="Player.SlaveObject" dataType="PlayerScratch0" />                  <Param type="DropWeaponMode">InteractionObject</Param>                  <Param type="Bool">True</Param>                </E>

running every game tick disregarding the local input/ zoom button hold duration and making the instant switch speed duration instantaneous?

 

my theory is that if this action is repeated  every game tick for the duration of the game then it would eliminate the glitches and maybe even work for local guests as it wouldn't be dependant on user input or host if it is triggered locally for each player. If the instant switch speed is fast enough then you should still be able to fire the weapon consistently. 

eliminating the function that determines which players are scoped in is the first thing that needs to go imo.

@matt

Edited by PjMpire

Share this post


Link to post
Share on other sites

There's some explanation of the limitations here http://www.se7ensins.com/forums/threads/modded-game-types.923345/page-101#post-7181622 (and further along in the thread too - just keep reading)

 

I've looked at it - making it smoothly functional would require a shit-ton of luck and some very ingenious coding. The stuff you have to do to accomplish desoping is right at the limits of what the engine can interpret, and lag can really fuck it up. You know when you spawn in MM with no sprint for a few seconds? That kind of lag would mean you'd be unable to fire your weapon upon being descoped. That's a whole new level of flinch lol and that's just the tip of the iceberg. 

I'm not saying it's impossible, but it might be impossible. If 343 were taking requests for a TU on the other hand, they could toss in some hooks for scope state (and maybe a few for spawning, bleedthrough, strafe momentum, flag dropping and a few other things lol) and we could have a solid classic gametype. But barring that I think real serious competitive consideration should probably try to work around no-descope, because it's going to be very difficult to achieve consistency for high-level play, and even if it is achieved, I think it will probably still be doubted and complained about. I'm not saying don't work on it, just don't count on it. 

Edited by Gordon
AMD likes this

Share this post


Link to post
Share on other sites

well i am curious to hear what other mod is more important in creating a skill gap that halo 4 is lacking in the competitive community.

You said the most important thing in Halo 4, not just competitive. The customs community, who are our biggest customers, is also huge. Not everyone is competitive. Heck, I didn't even realize descoping was removed until this mod came out.

 

But regardless - while this mod can definitely improve, let's be clear that this mod is and always will be a hack, and wouldn't stand up to the demands of competitive players. It was merely a proof of concept; there's not a lot more that can be done. A few bugs might be fixable, but for instance detecting host (and thus fixing that bug) is difficult - there is no reliable system.

Edited by Teancum
PjMpire likes this

Share this post


Link to post
Share on other sites

Bugs include: incorrectly determining the host player (which is why it works in some matches but not others), overshield decay confusing the script, certain weapons take too long to switch even with the temporary 20,000% switch speed modifier, incompatibility with sniper rifles, etc.

Share this post


Link to post
Share on other sites

Bugs include: incorrectly determining the host player (which is why it works in some matches but not others), overshield decay rate confusing the script, certain weapons take too long to switch even with the temporary 20,000% switch speed modifier, incompatibility with sniper rifles, etc.

hi, yes that why i was thinking of finding a way to make the trigger and references entirely local.? that would be the only way to get it consistently working as we are all aware that a mechanic like this cannot be based entirely on the hosts connection. would this be possible?

 

 this is your quote taken from se7ensin: 

 

"Edge cases being ANY amount of lag will trigger some sort of delay in the weapon-swapping. Meaning players may get left being unable to shoot for a period of time if it does occur."

 

"It's in the local trigger so lag shouldn't be an issue. The issues are that it doesn't work very well with Forerunner weapons and anyone with LightRifle will be put at a disadvantage. Also, did I mention it doesn't work for guests at all?"

 

why would determining who the host player is really even be a problem if its supposed to be local? because of this??

 

"Because there's no way to get a reference to the local player "properly". Things like this aren't intended to be accomplished in Megalo."

 

so i guess this would be a local  reference to shields and health and the only way to store this is on the host??? 

 

 

EDIT: i went full retard on my theory: the way i explained it would mean that you would be forced to descope whether you are getting hit or not. Looks like the objectgethealth and getshields would be the only way to determine that. FAIL

Edited by PjMpire

Share this post


Link to post
Share on other sites

why would determining who the host player is really even be a problem if its supposed to be local? because of this??

Because there's no way to get a reference to the local player without resorting to a hack. The descope mod basically tries to guess whether you're descoped using only your biped properties and whether the player on a Xbox that's currently executing the script presses a button (the zoom button in this case).

Due to how my code is structured, if the host presses the zoom button, it will think a random player zoomed in and most things that happen on the host's Xbox syncs over the network affecting the wrong player.

The button press action is either broken or intended to be a debug function only.

Share this post


Link to post
Share on other sites

Because there's no way to get a reference to the local player without resorting to a hack. The descope mod basically tries to guess whether you're descoped using only your biped properties and whether the player on a Xbox that's currently executing the script presses a button (the zoom button in this case).

Due to how my code is structured, if the host presses the zoom button, it will think a random player zoomed in and most things that happen on the host's Xbox syncs over the network affecting the wrong player.

The button press action is either broken or intended to be a debug function only.

so wouldn't eliminating the code determining if the zoom button is pressed still cause the descope? i dont see why that would be needed if  you can initiate the switch with just a reference to the objects shields/health. Then again the reference to the local players shields would be another barrier to get5 around.

 

This way, you would have the biped weapon properties triggered even when your not scoped in but im wondering if that will affect the rate of fire given the instant switch speed?the switch recorvery time would have to be as low as possible. this was what i was kinda getting at in a previous post. :smile: 

Edited by PjMpire

Share this post


Link to post
Share on other sites

so wouldn't eliminating the code determining if the zoom button is pressed still cause the descope? i dont see why that would be needed if  you can initiate the switch with just a reference to the objects shields/health. Then again the reference to the local players shields would be another barrier to get5 around.

 

This way, you would have the biped weapon properties triggered even when your not scoped in but im wondering if that will affect the rate of fire given the instant switch speed?the switch recorvery time would have to be as low as possible. this was what i was kinda getting at in a previous post. :smile: 

Without it, you wouldn't be able to shoot while someone is shooting at you because the descope thing isn't instant.

Share this post


Link to post
Share on other sites

Without it, you wouldn't be able to shoot while someone is shooting at you because the descope thing isn't instant.

thats why the instant switch duration needs to be as quick as physically possible. the lowest value of ticks you provided in the menu was 10 i think.

 

wouldnt firing a weapon cancel out the givebipedweapon anyway?

Edited by PjMpire

Share this post


Link to post
Share on other sites

thats why the instant switch duration would have to be as quick as physically possible.the lowest value of ticks you provided in the menu was 10 i think.

 

wouldnt firing a weapon cancel out the givebipedweapon anyway?

No. I've tried it but weapons like the Assault Rifle make it impossible for the victim to shoot at all.

Share this post


Link to post
Share on other sites

You could check the player's weapon and only execute on weapons that have scopes - that would circumvent the issue with automatics. Then it would just be a matter of making the switch quick enough to not drastically disrupt players with scoped guns getting shot in general.

 

Edit: And instead of giving the player a third weapon, what about just deleting their weapon and giving them another of the same type? It would only work for infinite ammo gametypes, but would that avoid the switch speed factor?

 

Edit again: What happens if you try to attach a player's weapon to something (or just detach it) while they're using it? Could you just take it away and give it back really quick? Is it just attached or is there something more complex going on there?

Edited by Gordon

Share this post


Link to post
Share on other sites

The act of descoping isn't the problem. The problem is determining which player to force descope.

Share this post


Link to post
Share on other sites

The act of descoping isn't the problem. The problem is determining which player to force descope.

Oh - well then yeah, just execute descope on everybody who gets hit while holding a weapon that has a scope, regardless of their actual scoped state. There's no local-player-ambiguity associated with the objectgethealth function, is there?

 

Edit: as far as handling OS decay, does DBID="4" work? I can't remember. 

Edited by Gordon

Share this post


Link to post
Share on other sites

Oh - well then yeah, just execute descope on everybody who gets hit while holding a weapon that has a scope, regardless of their actual scoped state. There's no local-player-ambiguity associated with the objectgethealth function, is there?

 

Edit: as far as handling OS decay, does DBID="4" work? I can't remember. 

this, the first step would be eliminating the function that checks whether a player is scoped in or not. i can see this resolving a lot of the problems that were raised during the beta testing. Obviously we would still need something  trigger the descope which would a local player reference to the object shields and health.

like you said, this would have to depend on whether there would be any local player ambiguity associated with the function.

 

once this is done we can look into OS decay and a a way of applying the trigger only to weapons .that have scopes.

 

The main concern here is getting a working local player reference to health and shields.

Edited by PjMpire

Share this post


Link to post
Share on other sites

Obviously we would still need something  trigger the descope which would a local player reference to the object shields and health.

If you don't know who the local player is, how can you get their shields and health?

Share this post


Link to post
Share on other sites

If you don't know who the local player is, how can you get their shields and health?

Do you have to? Is that action only available to local players too? I thought it was just the one that catches button-presses.

Share this post


Link to post
Share on other sites

Do you have to? Is that action only available to local players too? I thought it was just the one that catches button-presses.

result = object_get_health(object)

What should the object parameter be?

Share this post


Link to post
Share on other sites

result = object_get_health(object)

What should the object parameter be?

Well I would want it to be Player.SlaveObject from Iterator.Player, but it kinda sounds like you're indicating that's not possible.. 

(this is getting a mite confusing with me speaking KSoft and you speaking Wumbo/Nitrogen lol)

Share this post


Link to post
Share on other sites

Well I would want it to be Player.SlaveObject from Iterator.Player, but it kinda sounds like you're indicating that's not possible.. 

(this is getting a mite confusing with me speaking KSoft and you speaking Wumbo/Nitrogen lol)

How do you know which player in the iterator is the local player?

EDIT:

Okay, I can think of a way. You can loop through each player in the local trigger and determine which player is which by observing button presses and the responsive biped. After a short time, you can build up enough confidence that you have a reference to the local player. Of course this might lead to some issues unless you force players to press A or something at the beginning of the match.

Edited by Matt

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0