657 lines
23 KiB
Python
Executable File
657 lines
23 KiB
Python
Executable File
//////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// SCRIPT NAME : component_checker.sc //
|
|
// AUTHOR : Kenneth Ross //
|
|
// DESCRIPTION : Used to cycle through the various component //
|
|
// variations and print out the information for use //
|
|
// with ped_components_data.sch. //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Include the standard headers (which also ensures the correct #DEFINEs are recognised)
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
|
|
// Do nothing in release mode
|
|
#IF IS_FINAL_BUILD
|
|
SCRIPT
|
|
ENDSCRIPT
|
|
#ENDIF
|
|
|
|
// Only include in debug mode
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
USING "commands_script.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "script_player.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "ped_component_public.sch"
|
|
|
|
CONST_INT NUM_PED_PROP_POSITIONS 9
|
|
CONST_INT MAX_PROP_INDEXES 30
|
|
|
|
ENUM STAGE_CONTROL_ENUM
|
|
STAGE_INIT = 0,
|
|
STAGE_COMP_CHECKER,
|
|
STAGE_PROP_CHECKER,
|
|
STAGE_CLEANUP
|
|
ENDENUM
|
|
STAGE_CONTROL_ENUM eStage = STAGE_INIT
|
|
PED_COMPONENT eCompType = PED_COMP_HEAD
|
|
PED_PROP_POSITION ePropPos = ANCHOR_HEAD
|
|
MODEL_NAMES ePedModel
|
|
|
|
INT iTexture[NUM_PED_COMPONENTS]
|
|
INT iDrawable[NUM_PED_COMPONENTS]
|
|
|
|
INT iPropIndex, iTexIndex
|
|
|
|
BOOL bUpdateModel, bOutputAllInfo, bOutputVariations, bOutputCurrent, bOutputValidationCheck
|
|
TEXT_WIDGET_ID widgetID[2]
|
|
|
|
PROC SETUP_WIDGETS()
|
|
START_WIDGET_GROUP("Component Checker")
|
|
widgetID[0] = ADD_TEXT_WIDGET("Model name")
|
|
widgetID[1] = ADD_TEXT_WIDGET("Ped code")
|
|
ADD_WIDGET_BOOL("Update model", bUpdateModel)
|
|
ADD_WIDGET_BOOL("Output all ped component data", bOutputAllInfo)
|
|
ADD_WIDGET_BOOL("Output current ped component data", bOutputCurrent)
|
|
ADD_WIDGET_BOOL("Output component variations", bOutputVariations)
|
|
ADD_WIDGET_BOOL("Output validation check", bOutputValidationCheck)
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
PROC RESET_STORED_DATA()
|
|
INT i
|
|
PED_INDEX pedID = PLAYER_PED_ID()
|
|
|
|
FOR i = 0 TO NUM_PED_COMPONENTS-1
|
|
iTexture[i] = GET_PED_TEXTURE_VARIATION(pedID, INT_TO_ENUM(PED_COMPONENT, i))
|
|
iDrawable[i] = GET_PED_DRAWABLE_VARIATION(pedID, INT_TO_ENUM(PED_COMPONENT, i))
|
|
ENDFOR
|
|
|
|
iPropIndex = 0
|
|
iTexIndex = 0
|
|
|
|
eCompType = PED_COMP_HEAD
|
|
ePropPos = ANCHOR_HEAD
|
|
ENDPROC
|
|
|
|
PROC OUTPUT_COMPONENT_VARIATIONS()
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
INT i
|
|
OPEN_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("MODEL ")SAVE_INT_TO_DEBUG_FILE(ENUM_TO_INT(ePedModel))
|
|
FOR i = 0 TO NUM_PED_COMPONENTS-1
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ")SAVE_STRING_TO_DEBUG_FILE(GET_COMP_VARIATION_TYPE_STRING(INT_TO_ENUM(PED_COMPONENT, i)))SAVE_STRING_TO_DEBUG_FILE(", ")SAVE_INT_TO_DEBUG_FILE(iDrawable[i]) SAVE_STRING_TO_DEBUG_FILE(", ")SAVE_INT_TO_DEBUG_FILE(iTexture[i])SAVE_STRING_TO_DEBUG_FILE(")")
|
|
ENDFOR
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
FOR i = 0 TO NUM_PED_PROP_POSITIONS-1
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
IF GET_PED_PROP_INDEX(PLAYER_PED_ID(), INT_TO_ENUM(PED_PROP_POSITION, i)) = -1
|
|
SAVE_STRING_TO_DEBUG_FILE("CLEAR_PED_PROP(PLAYER_PED_ID(), ")SAVE_STRING_TO_DEBUG_FILE(GET_PROP_POSITION_STRING(INT_TO_ENUM(PED_PROP_POSITION, i)))SAVE_STRING_TO_DEBUG_FILE(")")
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE("SET_PED_PROP_INDEX(PLAYER_PED_ID(), ")SAVE_STRING_TO_DEBUG_FILE(GET_PROP_POSITION_STRING(INT_TO_ENUM(PED_PROP_POSITION, i)))SAVE_STRING_TO_DEBUG_FILE(", ")SAVE_INT_TO_DEBUG_FILE(GET_PED_PROP_INDEX(PLAYER_PED_ID(), INT_TO_ENUM(PED_PROP_POSITION, i)))SAVE_STRING_TO_DEBUG_FILE(")")
|
|
ENDIF
|
|
ENDFOR
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
CLOSE_DEBUG_FILE()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC OUTPUT_CURRENT_COMPONENT_INFO()
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
// INT iMaxDraw, iMaxTex
|
|
INT iType // , iDraw, iTex
|
|
INT iItem
|
|
OPEN_DEBUG_FILE()
|
|
|
|
//loop for each comp type
|
|
FOR iType = 0 TO NUMBER_OF_PED_COMP_TYPES-1
|
|
|
|
IF INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_OUTFIT
|
|
AND INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_PROPS
|
|
AND INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_PROPGROUP
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("CASE ")SAVE_STRING_TO_DEBUG_FILE(GET_PED_COMP_NAME_STRING(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_STRING_TO_DEBUG_FILE(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[1]))SAVE_STRING_TO_DEBUG_FILE("_ITEM")SAVE_INT_TO_DEBUG_FILE(iItem)SAVE_STRING_TO_DEBUG_FILE(" FILL_PED_COMPONENT_ITEM_DATA(sData, eType, eItem, \"NO_LABEL\", ")SAVE_INT_TO_DEBUG_FILE(GET_PED_DRAWABLE_VARIATION(PLAYER_PED_ID(), GET_PED_COMPONENT_FROM_TYPE(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType))))SAVE_STRING_TO_DEBUG_FILE(", ")SAVE_INT_TO_DEBUG_FILE(GET_PED_TEXTURE_VARIATION(PLAYER_PED_ID(), GET_PED_COMPONENT_FROM_TYPE(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType))))SAVE_STRING_TO_DEBUG_FILE(", cost, !bOutfitOnly, !bCanToggle, ANCHOR_HEAD, COMP_STYLE_SENSIBLE) BREAK")
|
|
|
|
ELIF INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) = COMP_TYPE_PROPS
|
|
INT i
|
|
FOR i = 0 TO NUM_PED_PROP_POSITIONS-1
|
|
IF GET_PED_PROP_INDEX(PLAYER_PED_ID(), INT_TO_ENUM(PED_PROP_POSITION, i)) <> -1
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE("CASE ")SAVE_STRING_TO_DEBUG_FILE(GET_PED_COMP_NAME_STRING(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_STRING_TO_DEBUG_FILE(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[1]))SAVE_STRING_TO_DEBUG_FILE("_ITEM")SAVE_INT_TO_DEBUG_FILE(iItem)SAVE_STRING_TO_DEBUG_FILE(" FILL_PED_COMPONENT_ITEM_DATA(sData, eType, eItem, \"NO_LABEL\", ")SAVE_INT_TO_DEBUG_FILE(GET_PED_PROP_INDEX(PLAYER_PED_ID(), INT_TO_ENUM(PED_PROP_POSITION, i)))SAVE_STRING_TO_DEBUG_FILE(", 0, cost, !bOutfitOnly, !bCanToggle, ")SAVE_STRING_TO_DEBUG_FILE(GET_PROP_POSITION_STRING(INT_TO_ENUM(PED_PROP_POSITION, i)))SAVE_STRING_TO_DEBUG_FILE(", COMP_STYLE_SENSIBLE) BREAK")
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
CLOSE_DEBUG_FILE()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC OUTPUT_ALL_COMPONENT_INFO()
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
INT iMaxDraw, iMaxTex
|
|
INT iType, iDraw, iTex
|
|
INT iItem
|
|
OPEN_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
|
|
//loop for each comp type
|
|
FOR iType = 0 TO NUMBER_OF_PED_COMP_TYPES-1
|
|
|
|
iItem = 0
|
|
|
|
IF INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_OUTFIT
|
|
AND INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_PROPS
|
|
AND INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_PROPGROUP
|
|
|
|
iMaxDraw = GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), GET_PED_COMPONENT_FROM_TYPE(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))
|
|
IF iMaxDraw > 0
|
|
iMaxDraw--
|
|
ENDIF
|
|
|
|
iItem = 0
|
|
|
|
// loop for each drawable
|
|
FOR iDraw = 0 TO iMaxDraw
|
|
iMaxTex = GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), GET_PED_COMPONENT_FROM_TYPE(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)), iDraw)
|
|
IF iMaxTex > 0
|
|
iMaxTex--
|
|
ENDIF
|
|
|
|
// loop for each texture
|
|
FOR iTex = 0 TO iMaxtex
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" ")SAVE_STRING_TO_DEBUG_FILE(GET_PED_COMP_NAME_STRING(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_STRING_TO_DEBUG_FILE(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[1]))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_INT_TO_DEBUG_FILE(iDraw)SAVE_STRING_TO_DEBUG_FILE("_")SAVE_INT_TO_DEBUG_FILE(iTex)
|
|
|
|
IF iItem = 0
|
|
SAVE_STRING_TO_DEBUG_FILE(" =0,")
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" ,")
|
|
ENDIF
|
|
|
|
iItem++
|
|
ENDFOR
|
|
ENDFOR
|
|
ELSE
|
|
iItem++
|
|
ENDIF
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDFOR
|
|
|
|
|
|
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
//loop for each comp type
|
|
FOR iType = 0 TO NUMBER_OF_PED_COMP_TYPES-1
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
|
|
iItem = 0
|
|
|
|
IF INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_OUTFIT
|
|
AND INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_PROPS
|
|
AND INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) <> COMP_TYPE_PROPGROUP
|
|
|
|
iMaxDraw = GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), GET_PED_COMPONENT_FROM_TYPE(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))
|
|
IF iMaxDraw > 0
|
|
iMaxDraw--
|
|
ENDIF
|
|
|
|
iItem = 0
|
|
|
|
// loop for each drawable
|
|
FOR iDraw = 0 TO iMaxDraw
|
|
iMaxTex = GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), GET_PED_COMPONENT_FROM_TYPE(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)), iDraw)
|
|
IF iMaxTex > 0
|
|
iMaxTex--
|
|
ENDIF
|
|
|
|
// loop for each texture
|
|
FOR iTex = 0 TO iMaxtex
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_STRING_TO_DEBUG_FILE(" CASE ")SAVE_STRING_TO_DEBUG_FILE(GET_PED_COMP_NAME_STRING(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_STRING_TO_DEBUG_FILE(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[1]))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_INT_TO_DEBUG_FILE(iDraw)SAVE_STRING_TO_DEBUG_FILE("_")SAVE_INT_TO_DEBUG_FILE(iTex)SAVE_STRING_TO_DEBUG_FILE(" tlLabel = \"LABEL_")SAVE_INT_TO_DEBUG_FILE(iDraw)SAVE_STRING_TO_DEBUG_FILE("_")SAVE_INT_TO_DEBUG_FILE(iTex)SAVE_STRING_TO_DEBUG_FILE("\", iDraw = ")SAVE_INT_TO_DEBUG_FILE(iDraw)SAVE_STRING_TO_DEBUG_FILE(" iTex = ")SAVE_INT_TO_DEBUG_FILE(iTex)SAVE_STRING_TO_DEBUG_FILE(" cost = cost BREAK")
|
|
|
|
iItem++
|
|
ENDFOR
|
|
ENDFOR
|
|
ELSE
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
IF INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType) = COMP_TYPE_OUTFIT
|
|
SAVE_STRING_TO_DEBUG_FILE(" CASE ")SAVE_STRING_TO_DEBUG_FILE(GET_PED_COMP_NAME_STRING(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_STRING_TO_DEBUG_FILE(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[1]))SAVE_STRING_TO_DEBUG_FILE("_ITEM")SAVE_INT_TO_DEBUG_FILE(iItem)SAVE_STRING_TO_DEBUG_FILE(" FILL_PED_COMPONENT_ITEM_DATA(sData, eType, eItem, \"NO_LABEL\", 0, 0, cost, !bOutfitOnly, !bCanToggle, ANCHOR_HEAD, COMP_STYLE_SENSIBLE) BREAK")
|
|
ELSE
|
|
SAVE_STRING_TO_DEBUG_FILE(" CASE ")SAVE_STRING_TO_DEBUG_FILE(GET_PED_COMP_NAME_STRING(INT_TO_ENUM(PED_COMP_TYPE_ENUM, iType)))SAVE_STRING_TO_DEBUG_FILE("_")SAVE_STRING_TO_DEBUG_FILE(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[1]))SAVE_STRING_TO_DEBUG_FILE("_ITEM")SAVE_INT_TO_DEBUG_FILE(iItem)SAVE_STRING_TO_DEBUG_FILE(" FILL_PED_COMPONENT_ITEM_DATA(sData, eType, eItem, \"NO_LABEL\", 0, 0, cost, !bOutfitOnly, !bCanToggle, ANCHOR_HEAD, COMP_STYLE_SENSIBLE) BREAK")
|
|
ENDIF
|
|
iItem++
|
|
ENDIF
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
ENDFOR
|
|
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
SAVE_NEWLINE_TO_DEBUG_FILE()
|
|
CLOSE_DEBUG_FILE()
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC UPDATE_INPUT()
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
// Check widgets
|
|
IF bUpdateModel
|
|
INT iModel = GET_HASH_KEY(GET_CONTENTS_OF_TEXT_WIDGET(widgetID[0]))
|
|
IF IS_MODEL_A_PED(INT_TO_ENUM(MODEL_NAMES, iModel))
|
|
MODEL_NAMES eModel = INT_TO_ENUM(MODEL_NAMES, iModel)
|
|
|
|
REQUEST_MODEL(eModel)
|
|
WHILE NOT HAS_MODEL_LOADED(eModel)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PLAYER_MODEL(PLAYER_ID(), eModel)
|
|
SET_PED_DEFAULT_COMPONENT_VARIATION(PLAYER_PED_ID())
|
|
ENDIF
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(eModel)
|
|
ENDIF
|
|
bUpdateModel = FALSE
|
|
ENDIF
|
|
|
|
IF bOutputVariations
|
|
OUTPUT_COMPONENT_VARIATIONS()
|
|
bOutputVariations = FALSE
|
|
ENDIF
|
|
|
|
IF bOutputAllInfo
|
|
OUTPUT_ALL_COMPONENT_INFO()
|
|
bOutputAllInfo = FALSE
|
|
ENDIF
|
|
|
|
IF bOutputCurrent
|
|
OUTPUT_CURRENT_COMPONENT_INFO()
|
|
bOutputCurrent = FALSE
|
|
ENDIF
|
|
|
|
IF bOutputValidationCheck
|
|
|
|
PRINTNL()
|
|
|
|
INT iComp, iDraw, iTex, iLen
|
|
|
|
REPEAT NUM_PED_COMPONENTS iComp
|
|
REPEAT GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), INT_TO_ENUM(PED_COMPONENT, iComp)) iDraw
|
|
REPEAT GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), INT_TO_ENUM(PED_COMPONENT, iComp), iDraw) iTex
|
|
PRINTSTRING("\n")
|
|
PRINTSTRING(GET_COMP_VARIATION_TYPE_STRING(INT_TO_ENUM(PED_COMPONENT, iComp)))
|
|
|
|
iLen = GET_LENGTH_OF_LITERAL_STRING(GET_COMP_VARIATION_TYPE_STRING(INT_TO_ENUM(PED_COMPONENT, iComp)))
|
|
WHILE iLen < 20
|
|
PRINTSTRING(" ")
|
|
iLen++
|
|
ENDWHILE
|
|
|
|
PRINTINT(iDraw)PRINTSTRING(", ")PRINTINT(iTex)
|
|
IF IS_PED_COMPONENT_VARIATION_VALID(PLAYER_PED_ID(), eCompType, iDraw, iTex)
|
|
PRINTSTRING(" VALID")
|
|
ELSE
|
|
PRINTSTRING(" INVALID")
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
ENDREPEAT
|
|
|
|
PRINTNL()
|
|
|
|
bOutputValidationCheck = FALSE
|
|
ENDIF
|
|
|
|
// Check model consistency
|
|
IF NOT IS_PED_MODEL(PLAYER_PED_ID(), ePedModel)
|
|
ePedModel = GET_ENTITY_MODEL(PLAYER_PED_ID())
|
|
RESET_STORED_DATA()
|
|
ENDIF
|
|
|
|
// Switch stage
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, SQUARE)
|
|
IF eStage = STAGE_PROP_CHECKER
|
|
eStage = STAGE_COMP_CHECKER
|
|
ELIF eStage = STAGE_COMP_CHECKER
|
|
eStage = STAGE_PROP_CHECKER
|
|
ENDIF
|
|
|
|
RESET_STORED_DATA()
|
|
ENDIF
|
|
|
|
// Update prop checker
|
|
IF eStage = STAGE_PROP_CHECKER
|
|
IF IS_BUTTON_PRESSED(PAD1, LEFTSHOULDER1)
|
|
// Switch prop position
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADUP)
|
|
IF ENUM_TO_INT(ePropPos) <= 0
|
|
ePropPos = INT_TO_ENUM(PED_PROP_POSITION, NUM_PED_PROP_POSITIONS-1)
|
|
ELSE
|
|
ePropPos = INT_TO_ENUM(PED_PROP_POSITION, ENUM_TO_INT(ePropPos)-1)
|
|
ENDIF
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN)
|
|
IF ENUM_TO_INT(ePropPos) >= NUM_PED_PROP_POSITIONS-1
|
|
ePropPos = INT_TO_ENUM(PED_PROP_POSITION, 0)
|
|
ELSE
|
|
ePropPos = INT_TO_ENUM(PED_PROP_POSITION, ENUM_TO_INT(ePropPos)+1)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELSE
|
|
// Switch prop index up/down
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADUP)
|
|
IF iPropIndex+1 < GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), ePropPos)
|
|
iPropIndex++
|
|
ENDIF
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN)
|
|
iPropIndex--
|
|
IF iPropIndex < 0
|
|
iPropIndex = GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), ePropPos) -1
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Switch texture index left/right
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADRIGHT)
|
|
IF iTexIndex+1 < GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(PLAYER_PED_ID(), ePropPos, iPropIndex)
|
|
iTexIndex++
|
|
ENDIF
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADLEFT)
|
|
iTexIndex--
|
|
IF iTexIndex < 0
|
|
iTexIndex = GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(PLAYER_PED_ID(), ePropPos, iPropIndex)-1
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, CROSS)
|
|
SET_PED_PROP_INDEX(PLAYER_PED_ID(), ePropPos, iPropIndex, iTexIndex)
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, CIRCLE)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ePropPos)
|
|
ENDIF
|
|
|
|
ELIF eStage = STAGE_COMP_CHECKER
|
|
|
|
BOOL bUpdateComponents = FALSE
|
|
PED_INDEX pedID = PLAYER_PED_ID()
|
|
|
|
IF IS_BUTTON_PRESSED(PAD1, LEFTSHOULDER1)
|
|
// Switch component type
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADUP)
|
|
IF ENUM_TO_INT(eCompType) <= 0
|
|
eCompType = INT_TO_ENUM(PED_COMPONENT, NUM_PED_COMPONENTS-1)
|
|
ELSE
|
|
eCompType = INT_TO_ENUM(PED_COMPONENT, ENUM_TO_INT(eCompType)-1)
|
|
ENDIF
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN)
|
|
IF ENUM_TO_INT(eCompType) >= NUM_PED_COMPONENTS-1
|
|
eCompType = INT_TO_ENUM(PED_COMPONENT, 0)
|
|
ELSE
|
|
eCompType = INT_TO_ENUM(PED_COMPONENT, ENUM_TO_INT(eCompType)+1)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
// Switch drawable variation up/down
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADUP)
|
|
IF iDrawable[ENUM_TO_INT(eCompType)]+1 < GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), eCompType)
|
|
iDrawable[ENUM_TO_INT(eCompType)]++
|
|
ELSE
|
|
iDrawable[ENUM_TO_INT(eCompType)] = 0
|
|
ENDIF
|
|
iTexture[ENUM_TO_INT(eCompType)] = 0 // reset texture
|
|
bUpdateComponents = TRUE
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADDOWN)
|
|
IF iDrawable[ENUM_TO_INT(eCompType)]-1 >= 0
|
|
iDrawable[ENUM_TO_INT(eCompType)]--
|
|
ELSE
|
|
IF GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), eCompType) = 0
|
|
iDrawable[ENUM_TO_INT(eCompType)] = 0
|
|
ELSE
|
|
iDrawable[ENUM_TO_INT(eCompType)] = GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), eCompType)-1
|
|
ENDIF
|
|
ENDIF
|
|
iTexture[ENUM_TO_INT(eCompType)] = 0 // reset texture
|
|
bUpdateComponents = TRUE
|
|
ENDIF
|
|
|
|
// Switch texture variation left/right
|
|
IF IS_BUTTON_JUST_PRESSED(PAD1, DPADRIGHT)
|
|
IF iTexture[ENUM_TO_INT(eCompType)]+1 < GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), eCompType, iDrawable[ENUM_TO_INT(eCompType)])
|
|
iTexture[ENUM_TO_INT(eCompType)]++
|
|
ELSE
|
|
iTexture[ENUM_TO_INT(eCompType)] = 0
|
|
ENDIF
|
|
bUpdateComponents = TRUE
|
|
ELIF IS_BUTTON_JUST_PRESSED(PAD1, DPADLEFT)
|
|
IF iTexture[ENUM_TO_INT(eCompType)]-1 >= 0
|
|
iTexture[ENUM_TO_INT(eCompType)]--
|
|
ELSE
|
|
IF GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), eCompType, iDrawable[ENUM_TO_INT(eCompType)]) = 0
|
|
iTexture[ENUM_TO_INT(eCompType)] = 0
|
|
ELSE
|
|
iTexture[ENUM_TO_INT(eCompType)] = GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), eCompType, iDrawable[ENUM_TO_INT(eCompType)])-1
|
|
ENDIF
|
|
ENDIF
|
|
bUpdateComponents = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bUpdateComponents
|
|
INT i
|
|
FOR i = 0 TO NUM_PED_COMPONENTS-1
|
|
SET_PED_COMPONENT_VARIATION(pedID, INT_TO_ENUM(PED_COMPONENT, i), iDrawable[i], iTexture[i])
|
|
ENDFOR
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
eStage = STAGE_CLEANUP
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_STRING(FLOAT x, FLOAT y, STRING sText, BOOL bCentre, INT r = 255, INT g = 255, INT b = 255, INT a = 255)
|
|
SET_TEXT_CENTRE(bCentre)
|
|
SET_TEXT_SCALE(0.5000, 0.5000)
|
|
SET_TEXT_COLOUR(r, g, b, a)
|
|
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
|
|
SET_TEXT_EDGE(0, 0, 0, 0, 0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(x, y, "STRING", sText)
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_LABEL(FLOAT x, FLOAT y, STRING sLabel, BOOL bCentre, INT r = 255, INT g = 255, INT b = 255, INT a = 255)
|
|
SET_TEXT_CENTRE(bCentre)
|
|
SET_TEXT_SCALE(0.5000, 0.5000)
|
|
SET_TEXT_COLOUR(r, g, b, a)
|
|
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
|
|
SET_TEXT_EDGE(0, 0, 0, 0, 0)
|
|
DISPLAY_TEXT(x, y, sLabel)
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_LABEL_WITH_1_NUMBER(FLOAT x, FLOAT y, STRING sLabel, INT iNumber1, INT r = 255, INT g = 255, INT b = 255, INT a = 255)
|
|
SET_TEXT_SCALE(0.5000, 0.5000)
|
|
SET_TEXT_COLOUR(r, g, b, a)
|
|
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
|
|
SET_TEXT_EDGE(0, 0, 0, 0, 0)
|
|
DISPLAY_TEXT_WITH_NUMBER(x, y, sLabel, iNumber1)
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_LABEL_WITH_2_NUMBERS(FLOAT x, FLOAT y, STRING sLabel, INT iNumber1, INT iNumber2, INT r = 255, INT g = 255, INT b = 255, INT a = 255)
|
|
SET_TEXT_SCALE(0.5000, 0.5000)
|
|
SET_TEXT_COLOUR(r, g, b, a)
|
|
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
|
|
SET_TEXT_EDGE(0, 0, 0, 0, 0)
|
|
DISPLAY_TEXT_WITH_2_NUMBERS(x, y, sLabel, iNumber1, iNumber2)
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_COMPONENT_CHECKER_HUD()
|
|
|
|
HIDE_HUD_AND_RADAR_THIS_FRAME()
|
|
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("COMP_HELP")
|
|
PRINT_HELP_FOREVER("COMP_HELP")
|
|
ENDIF
|
|
|
|
// Interface background
|
|
DRAW_RECT(0.5000, 0.1375, 0.3500, 0.1725, 0, 0, 0, 255)
|
|
IF IS_BUTTON_PRESSED(PAD1, LEFTSHOULDER1)
|
|
DRAW_RECT(0.5000, 0.1388, 0.3500, 0.0400, 125, 125, 125, 255)
|
|
ELSE
|
|
DRAW_RECT(0.5000, 0.1893, 0.3500, 0.0400, 125, 125, 125, 255)
|
|
ENDIF
|
|
|
|
// Title
|
|
DISPLAY_STRING(0.500, 0.0615, "Component Checker", TRUE, 200, 255, 36, 255)
|
|
|
|
// Component
|
|
TEXT_LABEL_15 sText
|
|
sText = "COMP_TYPE_"
|
|
sText += ENUM_TO_INT(eCompType)
|
|
DISPLAY_LABEL(0.5000, 0.1200, sText, TRUE)
|
|
|
|
// Drawable/Texture
|
|
INT iDrawVars = GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), eCompType)
|
|
INT iTexVars = GET_NUMBER_OF_PED_TEXTURE_VARIATIONS(PLAYER_PED_ID(), eCompType, iDrawable[ENUM_TO_INT(eCompType)])
|
|
IF iDrawVars > 0 iDrawVars-- ENDIF
|
|
IF iTexVars > 0 iTexVars-- ENDIF
|
|
|
|
DISPLAY_LABEL_WITH_2_NUMBERS(0.3500, 0.1702, "COMP_DRAW", iDrawVars, iDrawable[ENUM_TO_INT(eCompType)])
|
|
DISPLAY_LABEL_WITH_2_NUMBERS(0.5155, 0.1700, "COMP_TEX", iTexVars, iTexture[ENUM_TO_INT(eCompType)])
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_PROP_CHECKER_HUD()
|
|
|
|
HIDE_HUD_AND_RADAR_THIS_FRAME()
|
|
|
|
IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PROP_HELP")
|
|
PRINT_HELP_FOREVER("PROP_HELP")
|
|
ENDIF
|
|
|
|
// Interface background
|
|
DRAW_RECT(0.5000, 0.1375, 0.3500, 0.1725, 0, 0, 0, 255)
|
|
IF IS_BUTTON_PRESSED(PAD1, LEFTSHOULDER1)
|
|
DRAW_RECT(0.5000, 0.1388, 0.3500, 0.0400, 125, 125, 125, 255)
|
|
ELSE
|
|
DRAW_RECT(0.5000, 0.1893, 0.3500, 0.0400, 125, 125, 125, 255)
|
|
ENDIF
|
|
|
|
// Title
|
|
DISPLAY_STRING(0.500, 0.0615, "Prop Checker", TRUE, 200, 255, 36, 255)
|
|
|
|
// Prop
|
|
TEXT_LABEL_15 sText
|
|
sText = "PROP_POS_"
|
|
sText += ENUM_TO_INT(ePropPos)
|
|
DISPLAY_LABEL(0.5000, 0.1200, sText, TRUE)
|
|
|
|
// Drawable/Texture
|
|
INT iDrawVars = GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(PLAYER_PED_ID(), ePropPos)
|
|
INT iTexVars = GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(PLAYER_PED_ID(), ePropPos, iPropIndex)
|
|
IF iDrawVars > 0 iDrawVars-- ENDIF
|
|
IF iTexVars > 0 iTexVars-- ENDIF
|
|
|
|
// Prop/Texture index
|
|
DISPLAY_LABEL_WITH_2_NUMBERS(0.3685, 0.1702, "PROP_INDEX", iDrawVars, iPropIndex)
|
|
DISPLAY_LABEL_WITH_2_NUMBERS(0.5155, 0.1700, "PROP_TEX", iTexVars, iTexIndex)
|
|
ENDPROC
|
|
|
|
PROC DO_INITIALISE()
|
|
|
|
VECTOR vPos = <<-428.6418, -120.9582, 64.8967>>
|
|
FLOAT fHeading = 214.7821
|
|
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
ePedModel = GET_ENTITY_MODEL(PLAYER_PED_ID())
|
|
CLEAR_AREA(vPos, 200.0, TRUE)
|
|
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
|
|
SET_ENTITY_COORDS(PLAYER_PED_ID(), vPos)
|
|
SET_ENTITY_HEADING(PLAYER_PED_ID(), fHeading)
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
|
|
CLEAR_TIMECYCLE_MODIFIER()
|
|
DISABLE_CELLPHONE(TRUE)
|
|
RESET_STORED_DATA()
|
|
SETUP_WIDGETS()
|
|
|
|
eStage = STAGE_COMP_CHECKER
|
|
ELSE
|
|
eStage = STAGE_CLEANUP
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC DO_COMP_CHECKER()
|
|
UPDATE_INPUT()
|
|
DISPLAY_COMPONENT_CHECKER_HUD()
|
|
ENDPROC
|
|
|
|
PROC DO_PROP_CHECKER()
|
|
UPDATE_INPUT()
|
|
DISPLAY_PROP_CHECKER_HUD()
|
|
ENDPROC
|
|
|
|
PROC DO_CLEANUP()
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), FALSE)
|
|
ENDIF
|
|
DISABLE_CELLPHONE(FALSE)
|
|
CLEAR_HELP()
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
SCRIPT
|
|
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
|
|
WHILE TRUE
|
|
|
|
WAIT(0)
|
|
|
|
SWITCH eStage
|
|
CASE STAGE_INIT
|
|
DO_INITIALISE()
|
|
BREAK
|
|
|
|
CASE STAGE_COMP_CHECKER
|
|
DO_COMP_CHECKER()
|
|
BREAK
|
|
|
|
CASE STAGE_PROP_CHECKER
|
|
DO_PROP_CHECKER()
|
|
BREAK
|
|
|
|
CASE STAGE_CLEANUP
|
|
DO_CLEANUP()
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
|
|
OR IS_BUTTON_JUST_PRESSED(PAD1, TRIANGLE)
|
|
DO_CLEANUP()
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|
|
|
|
#ENDIF
|