Beispiel #1
0
        //20x40

        private async Task OnTick()
        {
            if (Game.IsControlJustPressed(0, (Control)166))
            {
                Gfx.ToggleLimbo();
            }
            ScreenWidth  = CitizenFX.Core.UI.Screen.Resolution.Width;
            ScreenHeight = CitizenFX.Core.UI.Screen.Resolution.Height;
            Gfx.DrawStatBar("TIME", "00:00", 0);
            var i = 1;

            foreach (Player p in new PlayerList())
            {
                Gfx.DrawStatBar($"~HUD_COLOUR_NET_PLAYER{i}~{p.Name}", $"(player)", i);
            }
            if (ReturnTwo(2) != 2)
            {
                await Delay(0);
            }
            if (Gfx.LimboActive)
            {
                //DisableAllControlActions(0);
                Game.DisableAllControlsThisFrame(0);
                Game.EnableControlThisFrame(0, Control.MpTextChatAll);
                Game.EnableControlThisFrame(0, Control.FrontendPause);
            }

            if (frontendActive)
            {
                if (Game.IsControlJustPressed(0, Control.FrontendAccept) || Game.IsControlJustPressed(0, Control.PhoneSelect))
                {
                    await Delay(100);

                    //var _return1 = BeginScaleformMovieMethodN("GET_COLUMN_SELECTION");
                    //var _return1 = BeginScaleformMovieMethodN("GET_COLUMN_SELECTION");
                    //var result1 = BeginScaleformMovieMethod(GetPauseMenuState(), "GET_COLUMN_SELECTION");
                    //PushScaleformMovieMethodParameterInt(0);
                    //Debug.Write(EndScaleformMovieMethodReturn().ToString() + "\n");
                    //var pop = PopScaleformMovieFunction();
                    //Debug.Write(GetScaleformMovieFunctionReturnBool(pop).ToString() + "\n");
                    //Debug.Write(GetScaleformMovieFunctionReturnInt(pop).ToString() + "\n");
                    //Debug.Write(pop.ToString() + "\n");
                    //Debug.Write(result1.ToString() + "\n");
                    Game.PlaySound("SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET");


                    //PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false);
                    PushScaleformMovieFunctionN("GET_COLUMN_SELECTION");
                    PushScaleformMovieMethodParameterInt(0);
                    var res   = EndScaleformMovieMethodReturn();
                    var timer = GetGameTimer();
                    while (!GetScaleformMovieFunctionReturnBool(res))
                    {
                        await Delay(0);

                        if (GetGameTimer() - timer > 1000)
                        {
                            Debug.WriteLine("Took too long");
                            break;
                        }
                    }
                    var resInt = GetScaleformMovieFunctionReturnInt(res);
                    Debug.Write($"{resInt}\n");
                    //else
                    //{
                    //    var resInt = GetScaleformMovieFunctionReturnInt(res);
                    //    Debug.Write($"No Return value: {resInt}\n");
                    //}
                }
            }
            if (Game.IsControlJustPressed(0, Control.FrontendSocialClubSecondary))
            {
                // If the menu is active, deactivate it.
                if (IsPauseMenuActive())
                {
                    SetPauseMenuActive(false);
                    SetFrontendActive(false);
                    frontendActive = false;
                }
                // Otherwise, activate it.
                else
                {
                    ///// RESET THE MENU IN CASE IT ALREADY EXISTS.
                    RestartFrontendMenu((uint)GetHashKey("FE_MENU_VERSION_CORONA"), -1);
                    //RestartFrontendMenu((uint)GetHashKey("FE_MENU_VERSION_CORONA"), -1);
                    //RestartFrontendMenu((uint)GetHashKey("FE_MENU_VERSION_CORONA_RACE"), -1);
                    AddFrontendMenuContext((uint)GetHashKey("FM_TUTORIAL"));
                    AddFrontendMenuContext((uint)GetHashKey("AUTOFILL_CORONA"));
                    AddFrontendMenuContext((uint)GetHashKey("CORONA_TOURNAMENT"));
                    AddFrontendMenuContext((uint)GetHashKey("AUTOFILL_CONTINUE"));

                    AddFrontendMenuContext(2010410515);
                    ObjectDecalToggle((uint)Int64.Parse("-228602367"));
                    //ObjectDecalToggle(1037243298);
                    //AddFrontendMenuContext(696397158);

                    ActivateFrontendMenu((uint)GetHashKey("FE_MENU_VERSION_CORONA"), false, -1);
                    //ActivateFrontendMenu((uint)GetHashKey("FE_MENU_VERSION_CORONA"), false, -1);
                    //ActivateFrontendMenu((uint)GetHashKey("FE_MENU_VERSION_CORONA_RACE"), false, -1);

                    // start a call
                    while (!IsPauseMenuActive() || IsPauseMenuRestarting())
                    {
                        await Delay(0);
                    }

                    AddFrontendMenuContext((uint)GetHashKey("FM_TUTORIAL"));
                    AddFrontendMenuContext((uint)GetHashKey("AUTOFILL_CORONA"));
                    AddFrontendMenuContext((uint)GetHashKey("CORONA_TOURNAMENT"));
                    AddFrontendMenuContext((uint)GetHashKey("AUTOFILL_CONTINUE"));

                    frontendActive = true;


                    ///// LOADING SCALEFORM AND ACTIVATING IT IN THE MENU?!
                    //BeginScaleformMovieMethodV("PAUSE_MENU_PAGES_CORONA_RACE");
                    //EndScaleformMovieMethod();


                    ///// PUSH THE DESCRIPTION AND TITLE UP, OTHERWISE IT'S BEHIND THE TOP HEADER BARS.
                    BeginScaleformMovieMethodV("SHIFT_CORONA_DESC"); // BeginScaleformMovieMethodV
                    PushScaleformMovieMethodParameterBool(true);     // push up.
                    PushScaleformMovieMethodParameterBool(false);    // show extra line
                    EndScaleformMovieMethod();


                    ///// SET THE MENU TITLE.
                    BeginScaleformMovieMethodN("SET_HEADER_TITLE"); // BeginScaleformMovieMethodV
                    BeginTextCommandScaleformString("STRING");
                    AddTextComponentSubstringPlayerName("Sumo");
                    EndTextCommandScaleformString();
                    PushScaleformMovieMethodParameterBool(false); // unknown, (confirmed bool), but is 0 (false) in decompiled scripts
                    ///// SET THE MENU DESCRIPTION.
                    BeginTextCommandScaleformString("STRING");
                    AddTextComponentSubstringPlayerName("LOBBY - Waiting for players");
                    EndTextCommandScaleformString();
                    ///// UNKNOWN.
                    PushScaleformMovieMethodParameterBool(true); // uknown, (confirmed bool), but is 1 (true) in decompiled scripts
                    ///// FINISH.
                    EndScaleformMovieMethod();                   // _POP_SCALEFORM_MOVIE_FUNCTION_VOID


                    /////// HEADER HUD COLOR (OPTIONAL)
                    //BeginScaleformMovieMethodV("SET_ALL_HIGHLIGHTS"); // BeginScaleformMovieMethodV
                    //PushScaleformMovieMethodParameterBool(true); // if false, will be black/white (high contrast mode)
                    //PushScaleformMovieMethodParameterInt(136); // HUD_COLOUR_PLATFORM_BLUE (136)
                    //EndScaleformMovieMethod();


                    await Delay(500);

                    ////////////////////////////////////////////////////////////////////////////////////////////
                    SetColumnSettingsRow(0, "Select a vehicle", "0", -1, true, HudColors.HudColor.HUD_COLOUR_ADVERSARY);
                    SetColumnSettingsRow(1, "Vote for a map", "0", -1, true, HudColors.HudColor.HUD_COLOUR_ADVERSARY);
                    SetColumnSettingsRow(2, "Quit to server list", "0", -1, true, HudColors.HudColor.HUD_COLOUR_ADVERSARY);
                    SetColumnSettingsRow(3, "Exit FiveM", "0", -1, true, HudColors.HudColor.HUD_COLOUR_ADVERSARY);

                    //BeginScaleformMovieMethodN("INIT_SCROLL_BAR");
                    //PushScaleformMovieMethodParameterBool(true);
                    //PushScaleformMovieMethodParameterInt(3);
                    //PushScaleformMovieMethodParameterInt(1);
                    //PushScaleformMovieMethodParameterInt(1);
                    //PushScaleformMovieMethodParameterInt(0);
                    //PushScaleformMovieMethodParameterInt(0);
                    //PopScaleformMovieFunctionVoid();

                    //BeginScaleformMovieMethodN("SET_SCROLL_BAR");
                    //PushScaleformMovieMethodParameterInt(2);
                    //PushScaleformMovieMethodParameterInt(5);
                    //PushScaleformMovieMethodParameterInt(1);
                    //PushScaleformMovieMethodParameterString("te");
                    //PopScaleformMovieFunctionVoid();
                    //for (var x = 0; x < 5; x++)
                    //{
                    //    ///// COLUMN 0 (LEFT) - ROW 0
                    //    PushScaleformMovieFunctionN("SET_DATA_SLOT");
                    //    PushScaleformMovieMethodParameterInt(0); // column
                    //    PushScaleformMovieMethodParameterInt(x); // index

                    //    // com.rockstargames.gtav.pauseMenu.pauseMenuItems.PauseMenuBaseItem::__set__data
                    //    PushScaleformMovieMethodParameterInt(0); // menu ID 0
                    //    PushScaleformMovieMethodParameterInt(0); // unique ID 0
                    //    PushScaleformMovieMethodParameterInt(0); // type 0 (TYPE_MAIN_CHAR_SELECTOR)
                    //    PushScaleformMovieMethodParameterInt(0); // initialIndex 1337 (rank)
                    //    PushScaleformMovieMethodParameterBool(true); // isSelectable true

                    //    ///// ITEM/ROW TITLE.
                    //    BeginTextCommandScaleformString("STRING");
                    //    AddTextComponentSubstringPlayerName("Setting " + x);
                    //    EndTextCommandScaleformString();

                    //    ///// UNSURE HOW THIS WORKS, BUT IF YOU UNCOMMENT THIS, IT'LL ADD AN ICON TO THE ROW.
                    //    ///// MAKING THE STRING "20" AND THE BOOL TRUE SEEMS TO DO SOMETHING WITH A ROCKSTAR LOGO INSTEAD.
                    //    BeginTextCommandScaleformString("STRING");
                    //    AddTextComponentSubstringPlayerName("");
                    //    EndTextCommandScaleformString();
                    //    PushScaleformMovieMethodParameterBool(false); // SOMETHING WITH ROCKSTAR/STAR LOGO SWITCHING.

                    //    ///// FINISH.
                    //    EndScaleformMovieMethod();
                    //}

                    PushScaleformMovieFunctionN("DISPLAY_DATA_SLOT");
                    PushScaleformMovieMethodParameterInt(0);
                    EndScaleformMovieMethod();

                    ////////////////////////////////////////////////////////////////////////////////////////////

                    #region Info Column Setup
                    ////////////////////////////////////////////////////////////////////////////////////////////
                    string[] leftText = new string[5] {
                        "Rating", "Created by", "Snail?", "Max players?", "Type"
                    };
                    string[] rightText = new string[5] {
                        "100.00%", "Vespura", "~g~YES", "32", "Sumo~b~"
                    };

                    /*
                     * for (var x = 0; x < 5; x++)
                     * {
                     *
                     #region Old messy code
                     *  ///// COLUMN 0 (LEFT) - ROW 0
                     *  PushScaleformMovieFunctionN("SET_DATA_SLOT");
                     *  PushScaleformMovieMethodParameterInt(1); // column
                     *  PushScaleformMovieMethodParameterInt(x); // index
                     *
                     *  PushScaleformMovieMethodParameterInt(0); // menu ID 0
                     *  PushScaleformMovieMethodParameterInt(0); // unique ID 0
                     *
                     *  //if (x == 4)
                     *  //{
                     *  //    PushScaleformMovieMethodParameterInt(2); // right icon type
                     *  //}
                     *  //else
                     *  //{
                     *  //    PushScaleformMovieMethodParameterInt(0); // right icon type
                     *  //}
                     *  PushScaleformMovieMethodParameterInt(2); // right icon type
                     *  // 0 & 1 = right text, no icon.
                     *  // 2 = icon (variation 1)
                     *  // 3 = crew label(?) (broken, always "undef" as crew text)
                     *  // 4 bordered rows, no icon.
                     *  // 5 no right text.
                     *  // >= 6 no icons, just left/right text.
                     *
                     *
                     *  PushScaleformMovieMethodParameterString("hello"); // right icon string or unused? 99% sure it's the latter.
                     *  PushScaleformMovieMethodParameterBool(false); // row isSelectable / false
                     *
                     *  PushScaleformMovieMethodParameterString(leftText[x]); // left text
                     *  PushScaleformMovieMethodParameterString(rightText[x]); // right text
                     *
                     *  if (x != 4)
                     *  {
                     *      PushScaleformMovieMethodParameterString("..+SUMO"); // (right icon variation) crew label text (if icon type is 3).
                     *                                                          // will switch to an int (see below) when icon type 2 is used.
                     *      PushScaleformMovieMethodParameterInt((int)HudColors.HudColor.HUD_COLOUR_BLUE); // color (hud color)
                     *      PushScaleformMovieMethodParameterBool(false); // checkmarked.
                     *  }
                     *  else
                     *  {
                     *      PushScaleformMovieMethodParameterString("0");
                     *      PushScaleformMovieMethodParameterInt((int)HudColors.HudColor.HUD_COLOUR_BLUE); // color (hud color)
                     *      PushScaleformMovieMethodParameterBool(false); // checkmarked.
                     *      // only uncomment this ↓ if the above string is commented out ↑
                     *      //PushScaleformMovieMethodParameterInt(0); // right icon variation?! (only used when int above (icon type) is 2.
                     *      // 0 = star / mission.
                     *      // 1 = skull / deathmatch / rampage.
                     *      // 2 = flag / race.
                     *      // 3 = shield / ?.
                     *      // 4 = multiple skulls / ?.
                     *      // >=5 = no icon.
                     *  }
                     *  //PushScaleformMovieMethodParameterString("voltic2"); // ?
                     *  //PushScaleformMovieMethodParameterString("candc_importexport"); // ?
                     *
                     *
                     *
                     *  ///// FINISH.
                     *  EndScaleformMovieMethod();
                     #endregion
                     * }
                     */
                    SetColumnInfoRow(0, "Rating", "100.00%", false);
                    SetColumnInfoRow(1, "Created By", "Vespura", false);
                    SetColumnInfoRow(2, "Snail", "~g~YES", false);
                    SetColumnInfoRow(3, "Max Players", "32", false);
                    SetColumnInfoRow(4, "Type", "Sumo", 0, HudColors.HudColor.HUD_COLOUR_BLUE, false);


                    //PushScaleformMovieFunctionN("BUILD_MENU_GFX_FILES");
                    ////PushScaleformMovieMethodParameterString("");
                    ////PushScaleformMovieMethodParameterString("");
                    //PushScaleformMovieMethodParameterInt(1);
                    //PushScaleformMovieMethodParameterString("candc_importexport/voltic2");
                    //PushScaleformMovieMethodParameterString("candc_importexport");
                    //EndScaleformMovieMethod();

                    // Show the column.
                    PushScaleformMovieFunctionN("DISPLAY_DATA_SLOT");
                    PushScaleformMovieMethodParameterInt(1);
                    EndScaleformMovieMethod();

                    ////////////////////////////////////////////////////////////////////////////////////////////
                    #endregion

                    #region Players column setup
                    ////////////////////////////////////////////////////////////////////////////////////////////
                    //                          PLAYERS ROWS SETUP (COLUMN 3) HERE                            //
                    ////////////////////////////////////////////////////////////////////////////////////////////
                    var rowindex = 0;
                    foreach (Player p in new PlayerList())
                    {
                        // Add the player.
                        SetColumnPlayerRow(rowindex + 0, p.Name, 420, (HudColors.HudColor)p.Handle + 28, false, 115, "SUMO", false, "LOADING", HudColors.HudColor.HUD_COLOUR_RED);
                        SetColumnPlayerRow(rowindex + 1, p.Name, 420, (HudColors.HudColor)p.Handle + 28, false, 116, "SUMO", true, "KICKED", HudColors.HudColor.HUD_COLOUR_ORANGE);
                        SetColumnPlayerRow(rowindex + 2, p.Name, 420, (HudColors.HudColor)p.Handle + 28, false, 117, "SUMO", false, "JOINED", HudColors.HudColor.HUD_COLOUR_GREEN);
                        SetColumnPlayerRow(rowindex + 3, p.Name, 420, (HudColors.HudColor)p.Handle + 28, false, 118, "SUMO", false, "SNAILSOME", HudColors.HudColor.HUD_COLOUR_ADVERSARY);
                        SetColumnPlayerRow(rowindex + 4, p.Name, 420, (HudColors.HudColor)p.Handle + 28, false, 119, "SUMO", false, "", HudColors.HudColor.HUD_COLOUR_ADVERSARY);
                        SetColumnPlayerRow(rowindex + 5, p.Name, 420, (HudColors.HudColor)p.Handle + 28, false, 120, "SUMO", false, "SPECTATOR", HudColors.HudColor.HUD_COLOUR_GREY);
                        rowindex++;
                        #region old messy code

                        /*
                         * ///// COLUMN 0 (LEFT) - ROW 0
                         * PushScaleformMovieFunctionN("SET_DATA_SLOT");
                         * PushScaleformMovieMethodParameterInt(3); // column
                         * PushScaleformMovieMethodParameterInt(rowindex); // index
                         *
                         * //// com.rockstargames.gtav.pauseMenu.pauseMenuItems.PauseMenuBaseItem::__set__data
                         * //PushScaleformMovieMethodParameterInt(0); // menu ID 0
                         * //PushScaleformMovieMethodParameterInt(0); // unique ID 0
                         * //PushScaleformMovieMethodParameterInt(0); // type 0 (TYPE_MAIN_CHAR_SELECTOR)
                         * //PushScaleformMovieMethodParameterInt(0); // initialIndex 1337 (rank)
                         * //PushScaleformMovieMethodParameterBool(true); // isSelectable true
                         *
                         * /////// ITEM/ROW TITLE.
                         * //BeginTextCommandScaleformString("STRING");
                         * //AddTextComponentSubstringPlayerName(GetPlayerName(PlayerId()) + " " + x);
                         * //EndTextCommandScaleformString();
                         *
                         * /////// UNSURE HOW THIS WORKS, BUT IF YOU UNCOMMENT THIS, IT'LL ADD AN ICON TO THE ROW.
                         * /////// MAKING THE STRING "20" AND THE BOOL TRUE SEEMS TO DO SOMETHING WITH A ROCKSTAR LOGO INSTEAD.
                         * //BeginTextCommandScaleformString("STRING");
                         * //AddTextComponentSubstringPlayerName("");
                         * //EndTextCommandScaleformString();
                         * //PushScaleformMovieMethodParameterBool(true); // SOMETHING WITH ROCKSTAR/STAR LOGO SWITCHING.
                         *
                         * /////// FINISH.
                         * //EndScaleformMovieMethod();
                         * // com.rockstargames.gtav.pauseMenu.pauseMenuItems.PauseMenuBaseItem::__set__data
                         * PushScaleformMovieMethodParameterInt(0); // menu ID 0
                         * PushScaleformMovieMethodParameterInt(0); // unique ID 0
                         * PushScaleformMovieMethodParameterInt(2); // type 2 (AS_ONLINE_IN_SESSION)
                         * PushScaleformMovieMethodParameterInt(120); // initialIndex 1337 (rank)
                         * PushScaleformMovieMethodParameterBool(false); // isSelectable true
                         *
                         * // data, see com.rockstargames.gtav.pauseMenu.pauseMenuItems.multiplayer.PauseMPMenuFriendsListItem
                         * BeginTextCommandScaleformString("STRING");
                         * AddTextComponentSubstringPlayerName(p.Name);
                         * EndTextCommandScaleformString();
                         *
                         * PushScaleformMovieMethodParameterInt(28 + p.Handle); // row color / 134
                         *
                         * PushScaleformMovieMethodParameterBool(false); // if true, removes color from left bar & reduces color opacity on row itself.
                         *                                              // False colors everything.
                         *
                         * PushScaleformMovieMethodParameterString("0"); // unused / 0
                         *
                         * PushScaleformMovieMethodParameterInt(65); // 66 EYE // 65 RANK_FREEMODE // 64 BOOT(KICK) // 63 GLOBE // <= 62 || >= 67 EMPTY
                         *
                         * PushScaleformMovieMethodParameterString("0"); // unused / 0
                         *
                         * if (NetworkIsHost())
                         * {
                         *  PushScaleformMovieMethodParameterString("..+SUMO"); // maybe show host?
                         * }
                         * else
                         * {
                         *  PushScaleformMovieMethodParameterString("..+SUMO"); // show something else here?
                         * }
                         *
                         *
                         * PushScaleformMovieMethodParameterBool(false); // '(boot) kick blinking'
                         *
                         * var state = "LOADING";
                         * if (state == "JOINED")
                         * {
                         *  BeginTextCommandScaleformString("STRING");
                         *  AddTextComponentSubstringPlayerName(state); // BADGE
                         *  EndTextCommandScaleformString();
                         *  PushScaleformMovieMethodParameterInt((int)HudColors.HudColor.HUD_COLOUR_HB_BLUE); // COLOR OF BADGE // HUD_COLORS // BLUE / JOINED
                         * }
                         * else if (state == "LOADING")
                         * {
                         *  BeginTextCommandScaleformString("STRING");
                         *  AddTextComponentSubstringPlayerName(state); // BADGE
                         *  EndTextCommandScaleformString();
                         *  PushScaleformMovieMethodParameterInt((int)HudColors.HudColor.HUD_COLOUR_RED); // COLOR OF BADGE // HUD_COLORS // RED / LOADING
                         * }
                         * else if (state == "READY")
                         * {
                         *  BeginTextCommandScaleformString("STRING");
                         *  AddTextComponentSubstringPlayerName(state); // BADGE
                         *  EndTextCommandScaleformString();
                         *  PushScaleformMovieMethodParameterInt((int)HudColors.HudColor.HUD_COLOUR_GREEN); // COLOR OF BADGE // HUD_COLORS // READY / GREEN
                         * }
                         *
                         * // statusStr
                         * // statusColID
                         *
                         * PopScaleformMovieFunctionVoid();
                         * rowindex++;
                         */
                        #endregion
                    }
                    // Show the column.
                    PushScaleformMovieFunctionN("DISPLAY_DATA_SLOT");
                    PushScaleformMovieMethodParameterInt(3);
                    EndScaleformMovieMethod();

                    ////////////////////////////////////////////////////////////////////////////////////////////
                    #endregion

                    #region Menu focus setup
                    ///// ACTIVATE THE FIRST COLUMN (FOCUS).
                    PushScaleformMovieFunctionN("SET_COLUMN_FOCUS");
                    PushScaleformMovieMethodParameterInt(0); // column index // _loc7_
                    PushScaleformMovieMethodParameterInt(1); // highlightIndex // _loc6_
                    PushScaleformMovieMethodParameterInt(1); // scriptSetUniqID // _loc4_
                    PushScaleformMovieMethodParameterInt(0); // scriptSetMenuState // _loc5_
                    EndScaleformMovieMethod();
                    #endregion

                    ////////////////////////////////////////////////////////////////////////////////////////////
                }
            }
        }
 public async void Intro()
 {
     await Gfx.ShowIntroScaleform();
 }