Files
gtav-src/script/dev_ng/singleplayer/scripts/debug/rng_output.sc
T
2025-09-29 00:52:08 +02:00

772 lines
25 KiB
Python
Executable File

//////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : rng_output.sc //
// AUTHOR : Kenneth Ross //
// DESCRIPTION : Used to output datasets that use the random number //
// generator. //
// //
//////////////////////////////////////////////////////////////////////////////////
// Include the standard headers (which also ensures the correct #DEFINEs are recognised)
USING "rage_builtins.sch"
USING "globals.sch"
USING "casino_slots_rng.sch"
USING "three_card_poker_helpers.sch"
USING "blackjack_helpers.sch"
USING "net_lucky_reward.sch"
USING "RouletteConstants.sch"
USING "net_casino_inside_track_minigame.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"
ENUM RNG_OUTPUT_STAGE
STAGE_INIT = 0,
STAGE_PROCESSING,
STAGE_CLEANUP
ENDENUM
RNG_OUTPUT_STAGE eStage = STAGE_INIT
CONST_INT RNG_OUTPUT_SLOTS 0
CONST_INT RNG_OUTPUT_SLOTS_PRIZE 1
CONST_INT RNG_OUTPUT_ROULETTE 2
CONST_INT RNG_OUTPUT_3_CARD_POKER 3
CONST_INT RNG_OUTPUT_BLACKJACK 4
CONST_INT RNG_OUTPUT_LUCKY_WHEEL 5
CONST_INT RNG_OUTPUT_RAW 6
CONST_INT RNG_OUTPUT_INSIDE_TRACK 7
CONST_INT RNG_OUTPUT_INSIDE_TRACK_DISTRO 8
CONST_INT RNG_OUTPUT_TYPE_COUNT 9
CONST_INT RNG_OUTPUT_INSIDE_TRACK_SELECTION_SIZE 20
TWEAK_INT RNG_OUTPUT_SAMPLE_SIZE 50000000
TWEAK_INT RNG_OUTPUT_SAMPLE_SIZE_PER_FILE 5000000
TWEAK_INT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME 1000
TWEAK_INT RNG_OUTPUT_FILE_WRITE_FRAME_DELAY 0
STRUCT RNG_OUTPUT_DATA
INT iFrameCountSinceWrite
INT iItemStep
INT iItemTotal
INT iItemCount
INT iItemSelection
BOOL bRun
BOOL bPause
BOOL bInit
INT iType
BOOL bGenerateDataset
BOOL bInitDataset
FLOAT fPercentageComplete
TEXT_LABEL_63 tlFilename
INT iTimer
TEXT_WIDGET_ID twRunningTime
ENDSTRUCT
RNG_OUTPUT_DATA sRNGData
//SLOTS
LOCAL_SLOT_MACHINE_SETUP slotSetup
LOCAL_SLOT_MACHINE localSlots[54]
RESULT_STRUCT results
INT iOverrideReelResult[NUM_REELS]
INT iOverrideWheelResult = -1
//3 CARD POKER
TCP_DECK sTCPDeck
//BLACKJACK
BJACK_DECK sBJDeck
//INSIDE TRACK
INSIDE_TRACK_RACE_DATA sRaceData
FUNC STRING GET_RNG_OUTPUT_TYPE_NAME(INT iType)
SWITCH iType
CASE RNG_OUTPUT_SLOTS RETURN "slots" BREAK
CASE RNG_OUTPUT_SLOTS_PRIZE RETURN "slots_prize" BREAK
CASE RNG_OUTPUT_ROULETTE RETURN "roulette" BREAK
CASE RNG_OUTPUT_3_CARD_POKER RETURN "poker" BREAK
CASE RNG_OUTPUT_BLACKJACK RETURN "blackjack" BREAK
CASE RNG_OUTPUT_LUCKY_WHEEL RETURN "lucky_wheel" BREAK
CASE RNG_OUTPUT_RAW RETURN "raw" BREAK
CASE RNG_OUTPUT_INSIDE_TRACK RETURN "insidetrack_selection" BREAK
CASE RNG_OUTPUT_INSIDE_TRACK_DISTRO RETURN "insidetrack_winner" BREAK
ENDSWITCH
RETURN "NA"
ENDFUNC
FUNC INT GET_RNG_OUTPUT_SELECTION_SIZE(INT iType)
SWITCH iType
CASE RNG_OUTPUT_SLOTS RETURN NUM_REELS BREAK
CASE RNG_OUTPUT_3_CARD_POKER RETURN TCP_DECK_MAX_CARDS BREAK
CASE RNG_OUTPUT_BLACKJACK RETURN (BJACK_MAX_DECKS * BJACK_DECK_MAX_CARDS) BREAK
ENDSWITCH
RETURN 1
ENDFUNC
PROC SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(INT iOverride0, INT iOverride1, INT iOverride2, INT iOverride3, INT iOverride4, INT iOverride5)
g_iCachedRNGValues_InsideTrackOverride[0] = iOverride0
g_iCachedRNGValues_InsideTrackOverride[1] = iOverride1
g_iCachedRNGValues_InsideTrackOverride[2] = iOverride2
g_iCachedRNGValues_InsideTrackOverride[3] = iOverride3
g_iCachedRNGValues_InsideTrackOverride[4] = iOverride4
g_iCachedRNGValues_InsideTrackOverride[5] = iOverride5
ENDPROC
PROC UPDATE_RNG_OUTPUT_INSIDE_TRACK_SELECTION(INT iSelection)
SWITCH iSelection
CASE -1
SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(-1,-1,-1,-1,-1,-1)
BREAK
// Max/Min Distribution
CASE 0 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(28,46,23,72,3,63) BREAK
CASE 1 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(62,99,64,82,76,83) BREAK
CASE 2 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(28,99,23,82,3,83) BREAK
CASE 3 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(28,46,64,82,76,83) BREAK
CASE 4 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(62,99,23,72,76,83) BREAK
CASE 5 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(62,99,64,82,3,63) BREAK
CASE 6 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(28,99,64,82,76,83) BREAK
CASE 7 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(62,99,23,82,76,83) BREAK
CASE 8 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(62,99,64,82,3,83) BREAK
// Random
CASE 9 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(97,27,23,18,14,63) BREAK
CASE 10 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(99,85,29,34,83,59) BREAK
CASE 11 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(19,13,30,52,55,91) BREAK
CASE 12 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(48,28,16,8,1,90) BREAK
CASE 13 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(27,36,37,18,54,43) BREAK
CASE 14 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(44,13,29,18,3,5) BREAK
CASE 15 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(13,74,78,88,1,54) BREAK
CASE 16 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(85,41,12,71,75,11) BREAK
CASE 17 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(48,28,30,34,63,3) BREAK
CASE 18 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(19,39,16,64,5,14) BREAK
CASE 19 SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(68,84,88,25,1,32) BREAK
// Sink
DEFAULT
SET_RNG_OUTPUT_INSIDE_TRACK_SELECTION(0,0,0,0,0,0)
BREAK
ENDSWITCH
ENDPROC
FUNC INT GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(INT iHorseEnumID)
SWITCH iHorseEnumID
// Favourite
CASE 7 RETURN 1
CASE 9 RETURN 2
CASE 13 RETURN 3
CASE 15 RETURN 4
CASE 19 RETURN 5
CASE 26 RETURN 6
CASE 27 RETURN 7
CASE 28 RETURN 8
CASE 36 RETURN 9
CASE 39 RETURN 10
CASE 41 RETURN 11
CASE 42 RETURN 12
CASE 44 RETURN 13
CASE 46 RETURN 14
CASE 48 RETURN 15
CASE 49 RETURN 16
CASE 50 RETURN 17
CASE 51 RETURN 18
CASE 60 RETURN 19
CASE 61 RETURN 20
CASE 62 RETURN 21
CASE 68 RETURN 22
CASE 70 RETURN 23
CASE 73 RETURN 24
CASE 74 RETURN 25
CASE 79 RETURN 26
CASE 84 RETURN 27
CASE 85 RETURN 28
CASE 89 RETURN 29
CASE 92 RETURN 30
CASE 97 RETURN 31
CASE 98 RETURN 32
CASE 99 RETURN 33
// Middle
CASE 4 RETURN 1
CASE 6 RETURN 2
CASE 8 RETURN 3
CASE 12 RETURN 4
CASE 16 RETURN 5
CASE 17 RETURN 6
CASE 18 RETURN 7
CASE 23 RETURN 8
CASE 24 RETURN 9
CASE 25 RETURN 10
CASE 29 RETURN 11
CASE 30 RETURN 12
CASE 34 RETURN 13
CASE 35 RETURN 14
CASE 37 RETURN 15
CASE 45 RETURN 16
CASE 47 RETURN 17
CASE 52 RETURN 18
CASE 53 RETURN 19
CASE 58 RETURN 20
CASE 64 RETURN 21
CASE 65 RETURN 22
CASE 71 RETURN 23
CASE 72 RETURN 24
CASE 78 RETURN 25
CASE 81 RETURN 26
CASE 82 RETURN 27
CASE 86 RETURN 28
CASE 88 RETURN 29
CASE 93 RETURN 30
CASE 94 RETURN 31
CASE 96 RETURN 32
// Outlier
CASE 1 RETURN 1
CASE 2 RETURN 2
CASE 3 RETURN 3
CASE 5 RETURN 4
CASE 10 RETURN 5
CASE 11 RETURN 6
CASE 14 RETURN 7
CASE 20 RETURN 8
CASE 21 RETURN 9
CASE 22 RETURN 10
CASE 31 RETURN 11
CASE 32 RETURN 12
CASE 33 RETURN 13
CASE 38 RETURN 14
CASE 40 RETURN 15
CASE 43 RETURN 16
CASE 54 RETURN 17
CASE 55 RETURN 18
CASE 56 RETURN 19
CASE 57 RETURN 20
CASE 59 RETURN 21
CASE 63 RETURN 22
CASE 66 RETURN 23
CASE 67 RETURN 24
CASE 69 RETURN 25
CASE 75 RETURN 26
CASE 76 RETURN 27
CASE 77 RETURN 28
CASE 80 RETURN 29
CASE 83 RETURN 30
CASE 87 RETURN 31
CASE 90 RETURN 32
CASE 91 RETURN 33
CASE 95 RETURN 34
ENDSWITCH
RETURN -1
ENDFUNC
PROC GET_RNG_OUTPUT_FILENAME(INT iTypeOverride = -1)
INT iType = sRNGData.iType
IF iTypeOverride != -1
iType = iTypeOverride
ENDIF
sRNGData.tlFilename = "RNGnums_("
sRNGData.tlFilename += GET_RNG_OUTPUT_TYPE_NAME(iType)
sRNGData.tlFilename += ")"
IF (iType = RNG_OUTPUT_INSIDE_TRACK_DISTRO)
sRNGData.tlFilename += "_selections("
sRNGData.tlFilename += GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionFavourite[0])
sRNGData.tlFilename += ","
sRNGData.tlFilename += GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionFavourite[1])
sRNGData.tlFilename += ","
sRNGData.tlFilename += GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionMiddle[0])
sRNGData.tlFilename += ","
sRNGData.tlFilename += GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionMiddle[1])
sRNGData.tlFilename += ","
sRNGData.tlFilename += GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionOutlier[0])
sRNGData.tlFilename += ","
sRNGData.tlFilename += GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionOutlier[1])
sRNGData.tlFilename += ")"
ENDIF
sRNGData.tlFilename += "1"
INT i
REPEAT (sRNGData.iItemCount / RNG_OUTPUT_SAMPLE_SIZE_PER_FILE) i
sRNGData.tlFilename += "1"
ENDREPEAT
sRNGData.tlFilename += ".txt"
ENDPROC
PROC DO_INITIALISE()
START_WIDGET_GROUP("RNG Output")
START_WIDGET_GROUP("Dataset")
START_NEW_WIDGET_COMBO()
INT iType
REPEAT RNG_OUTPUT_TYPE_COUNT iType
ADD_TO_WIDGET_COMBO(GET_RNG_OUTPUT_TYPE_NAME(iType))
ENDREPEAT
STOP_WIDGET_COMBO("Type", sRNGData.iType)
ADD_WIDGET_INT_SLIDER("Sample size", RNG_OUTPUT_SAMPLE_SIZE, 0, 100000000, 1000000)
ADD_WIDGET_INT_SLIDER("Sample size per file", RNG_OUTPUT_SAMPLE_SIZE_PER_FILE, 0, 100000000, 1000000)
ADD_WIDGET_INT_SLIDER("Sample size per frame", RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME, 0, 100000000, 1000000)
ADD_WIDGET_INT_SLIDER("File write frame delay", RNG_OUTPUT_FILE_WRITE_FRAME_DELAY, 0, 10000, 1000)
ADD_WIDGET_INT_READ_ONLY("Current sample", sRNGData.iItemCount)
ADD_WIDGET_FLOAT_READ_ONLY("Percentage complete", sRNGData.fPercentageComplete)
ADD_WIDGET_INT_READ_ONLY("Current selection", sRNGData.iItemSelection)
sRNGData.twRunningTime = ADD_TEXT_WIDGET("Running time")
ADD_WIDGET_BOOL("Generate", sRNGData.bRun)
ADD_WIDGET_BOOL("Pause", sRNGData.bPause)
ADD_WIDGET_BOOL("Generate Full Dataset", sRNGData.bGenerateDataset)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
eStage = STAGE_PROCESSING
ENDPROC
PROC DO_PROCESSING()
INT iSelection
INT iSample
IF sRNGData.bPause
EXIT
ENDIF
IF sRNGData.bGenerateDataset
IF NOT sRNGData.bInitDataset
sRNGData.bInitDataset = TRUE
sRNGData.bInit = TRUE
sRNGData.iItemCount = 0
sRNGData.iItemSelection = 0
sRNGData.iFrameCountSinceWrite = 0
sRNGData.iType = 0//-1
sRNGData.fPercentageComplete = 0
SETUP_SLOT_MACHINES(slotSetup, localSlots)
TCP_INIT_AND_SHUFFLE_DECK(sTCPDeck)
BJACK_INIT_AND_SHUFFLE_DECK(sBJDeck)
ENDIF
IF NOT sRNGData.bRun
sRNGData.iType++
sRNGData.bRun = TRUE
sRNGData.bInit = TRUE
sRNGData.iItemCount = 0
sRNGData.iItemSelection = 0
sRNGData.iFrameCountSinceWrite = 0
IF (sRNGData.iType = RNG_OUTPUT_SLOTS)
RNG_OUTPUT_SAMPLE_SIZE = 50000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 50000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 5000
ELIF (sRNGData.iType = RNG_OUTPUT_SLOTS_PRIZE)
RNG_OUTPUT_SAMPLE_SIZE = 10000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 10000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 5000
ELIF (sRNGData.iType = RNG_OUTPUT_ROULETTE)
RNG_OUTPUT_SAMPLE_SIZE = 50000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 50000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 10000
ELIF (sRNGData.iType = RNG_OUTPUT_3_CARD_POKER)
RNG_OUTPUT_SAMPLE_SIZE = 50000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 5000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 5000
ELIF (sRNGData.iType = RNG_OUTPUT_BLACKJACK)
RNG_OUTPUT_SAMPLE_SIZE = 10000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 2000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 5000
ELIF (sRNGData.iType = RNG_OUTPUT_LUCKY_WHEEL)
RNG_OUTPUT_SAMPLE_SIZE = 100000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 100000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 10000
ELIF (sRNGData.iType = RNG_OUTPUT_INSIDE_TRACK)
RNG_OUTPUT_SAMPLE_SIZE = 100000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 100000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 10000
ELIF (sRNGData.iType = RNG_OUTPUT_INSIDE_TRACK_DISTRO)
RNG_OUTPUT_SAMPLE_SIZE = 100000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FILE = 100000000
RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME = 10000
ELSE
sRNGData.bGenerateDataset = FALSE
ENDIF
ENDIF
ELSE
sRNGData.bInitDataset = FALSE
ENDIF
IF sRNGData.bRun
IF NOT sRNGData.bInit
sRNGData.bInit = TRUE
sRNGData.iItemCount = 0
sRNGData.iFrameCountSinceWrite = 0
sRNGData.iItemSelection = 1
SETUP_SLOT_MACHINES(slotSetup, localSlots)
TCP_INIT_AND_SHUFFLE_DECK(sTCPDeck)
BJACK_INIT_AND_SHUFFLE_DECK(sBJDeck)
UPDATE_RNG_OUTPUT_INSIDE_TRACK_SELECTION(-1)
sRNGData.iTimer = GET_CLOUD_TIME_AS_INT()
ENDIF
IF sRNGData.iFrameCountSinceWrite < RNG_OUTPUT_FILE_WRITE_FRAME_DELAY
sRNGData.iFrameCountSinceWrite++
EXIT
ENDIF
sRNGData.iFrameCountSinceWrite = 0
IF (sRNGData.iType = RNG_OUTPUT_SLOTS)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
DETERMINE_SLOT_MACHINE_RESULT(0, results, slotSetup, localSlots, iOverrideReelResult, iOverrideWheelResult)
REPEAT GET_RNG_OUTPUT_SELECTION_SIZE(sRNGData.iType) iSelection
IF iSelection > 0
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
ENDIF
SAVE_INT_TO_NAMED_DEBUG_FILE(results.iVirtualReelPos[iSelection], "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
ENDREPEAT
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_SLOTS_PRIZE)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
iOverrideReelResult[0] = SRS_WILD
iOverrideReelResult[1] = SRS_WILD
iOverrideReelResult[2] = SRS_WILD
DETERMINE_SLOT_MACHINE_RESULT(0, results, slotSetup, localSlots, iOverrideReelResult, iOverrideWheelResult)
SAVE_INT_TO_NAMED_DEBUG_FILE(results.iWheelPos, "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_ROULETTE)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
SAVE_INT_TO_NAMED_DEBUG_FILE(ROULETTE_GENERATE_WINNING_NUMBER(), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_3_CARD_POKER)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
TCP_SHUFFLE_DECK(sTCPDeck)
REPEAT GET_RNG_OUTPUT_SELECTION_SIZE(sRNGData.iType) iSelection
IF iSelection > 0
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
ENDIF
//SAVE_INT_TO_NAMED_DEBUG_FILE(ENUM_TO_INT(sTCPDeck.eCards[iSelection]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(g_iCachedRNGValues_Poker[iSelection], "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
ENDREPEAT
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_BLACKJACK)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
BJACK_SHUFFLE_DECK(sBJDeck)
REPEAT GET_RNG_OUTPUT_SELECTION_SIZE(sRNGData.iType) iSelection
IF iSelection > 0
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
ENDIF
//SAVE_INT_TO_NAMED_DEBUG_FILE(ENUM_TO_INT(sBJDeck.eCards[iSelection]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(g_iCachedRNGValues_Blackjack[iSelection], "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
ENDREPEAT
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_LUCKY_WHEEL)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
//SAVE_INT_TO_NAMED_DEBUG_FILE(ENUM_TO_INT(PICK_RANDOM_LUCK_REWARD_TYPE()), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
PICK_RANDOM_LUCK_REWARD_TYPE()
SAVE_INT_TO_NAMED_DEBUG_FILE(g_iCachedRNGValues_LuckyWheel, "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_RAW)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RANDOM_MWC_INT_IN_RANGE(0, 2147483647), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
CLOSE_DEBUG_FILE()
ELIF (sRNGData.iType = RNG_OUTPUT_INSIDE_TRACK)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
SET_BIT(sRaceData.iBS, BS_RACE_INSIDE_TRACK_MINIGAME_SINGLE_EVENT)
MAINTAIN_INSIDE_TRACK_MINIGAME_SETUP_NEW_GAME(sRaceData, TRUE)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionFavourite[0]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionFavourite[1]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionMiddle[0]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionMiddle[1]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionOutlier[0]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackSelectionOutlier[1]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
CLOSE_DEBUG_FILE()
RANDOMISE_INSIDE_TRACK_MINIGAME_REWARD(sRaceData)
sRNGData.iItemCount++
ENDIF
ENDREPEAT
ELIF (sRNGData.iType = RNG_OUTPUT_INSIDE_TRACK_DISTRO)
UPDATE_RNG_OUTPUT_INSIDE_TRACK_SELECTION(sRNGData.iItemSelection)
REPEAT RNG_OUTPUT_SAMPLE_SIZE_PER_FRAME iSample
IF sRNGData.iItemCount < RNG_OUTPUT_SAMPLE_SIZE
SET_BIT(sRaceData.iBS, BS_RACE_INSIDE_TRACK_MINIGAME_SINGLE_EVENT)
MAINTAIN_INSIDE_TRACK_MINIGAME_SETUP_NEW_GAME(sRaceData, TRUE)
RANDOMISE_INSIDE_TRACK_MINIGAME_REWARD(sRaceData)
GET_RNG_OUTPUT_FILENAME()
OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_INT_TO_NAMED_DEBUG_FILE(GET_RNG_OUTPUT_INSIDE_TRACK_LOCAL_HORSE_INDEX(g_iCachedRNGValues_InsideTrackFinish[0]), "X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", sRNGData.tlFilename)
CLOSE_DEBUG_FILE()
sRNGData.iItemCount++
ENDIF
ENDREPEAT
UPDATE_RNG_OUTPUT_INSIDE_TRACK_SELECTION(-1)
ENDIF
sRNGData.fPercentageComplete = (TO_FLOAT(sRNGData.iItemCount) / TO_FLOAT(RNG_OUTPUT_SAMPLE_SIZE))*100.0
IF sRNGData.iItemCount >= RNG_OUTPUT_SAMPLE_SIZE
sRNGData.bRun = FALSE
IF (sRNGData.iType = RNG_OUTPUT_INSIDE_TRACK_DISTRO)
sRNGData.iItemSelection++
IF sRNGData.iItemSelection < RNG_OUTPUT_INSIDE_TRACK_SELECTION_SIZE
sRNGData.bRun = TRUE
sRNGData.iItemCount = 0
ENDIF
ENDIF
ENDIF
INT iRunningTime = (GET_CLOUD_TIME_AS_INT() - sRNGData.iTimer)
INT iHours = (iRunningTime/3600)
INT iMinutes = ((iRunningTime%3600)/60)
INT iSeconds = ((iRunningTime%3600)%60)
TEXT_LABEL_63 tlRunningTime = ""
IF iHours < 10
tlRunningTime += "0"
ENDIF
tlRunningTime += iHours
tlRunningTime += ":"
IF iMinutes < 10
tlRunningTime += "0"
ENDIF
tlRunningTime += iMinutes
tlRunningTime += ":"
IF iSeconds < 10
tlRunningTime += "0"
ENDIF
tlRunningTime += iSeconds
SET_CONTENTS_OF_TEXT_WIDGET(sRNGData.twRunningTime, tlRunningTime)
ELIF sRNGData.bInit
sRNGData.bInit = FALSE
ENDIF
ENDPROC
PROC DO_CLEANUP()
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_PROCESSING
DO_PROCESSING()
BREAK
CASE STAGE_CLEANUP
DO_CLEANUP()
BREAK
ENDSWITCH
// IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_DOWN)
//
// INT iHorseIDTemp, iThisOdds
// FOR iHorseIDTemp = ENUM_TO_INT(INSIDE_TRACK_HORSE_ATetheredEnd) TO ENUM_TO_INT(INSIDE_TRACK_HORSE_TYPE_COUNT)-1
// iThisOdds = GET_INSIDE_TRACK_MINIGAME_SCALEFORM_HORSE_ODDS(INT_TO_ENUM(INSIDE_TRACK_HORSE_TYPE, iHorseIDTemp))
//
// CLEAR_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", "horse_info.txt")
//
// OPEN_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", "horse_info.txt")
//
// SAVE_INT_TO_NAMED_DEBUG_FILE(iHorseIDTemp, "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// SAVE_INT_TO_NAMED_DEBUG_FILE(iThisOdds, "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// SAVE_STRING_TO_NAMED_DEBUG_FILE("/1", "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// SAVE_STRING_TO_NAMED_DEBUG_FILE(",", "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
//
// IF (iThisOdds <= 5)
// SAVE_STRING_TO_NAMED_DEBUG_FILE("Favourite", "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// ELIF (iThisOdds <= 15)
// SAVE_STRING_TO_NAMED_DEBUG_FILE("Middle", "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// ELSE
// SAVE_STRING_TO_NAMED_DEBUG_FILE("Outlier", "X:/gta5/titleupdate/dev_ng/RNG", "horse_info.xls")
// ENDIF
//
// SAVE_NEWLINE_TO_NAMED_DEBUG_FILE("X:/gta5/titleupdate/dev_ng/RNG", "horse_info.txt")
//
//
// CLOSE_DEBUG_FILE()
//
//
// ENDFOR
//
// ENDIF
ENDWHILE
ENDSCRIPT
#ENDIF