private async Task DebugFishingMG() { string debugText = ""; try { FishingMinigame.GetMiniGameState(); debugText += $"State: {FishingMinigame.State} \n"; debugText += $"TrowDist: {FishingMinigame.ThrowDistance} \n"; debugText += $"Distance: {FishingMinigame.Distance} \n"; debugText += $"Curvature: {FishingMinigame.Curvature} \n"; debugText += $"N0: {FishingMinigame.Unknown0} \n"; debugText += $"HookFlag: {FishingMinigame.HookFlag} \n"; debugText += $"TransFlag: {FishingMinigame.TransitionFlag} \n"; debugText += $"F Ent: {FishingMinigame.FishEntity} \n"; debugText += $"F Weight: {FishingMinigame.FishWeight} \n"; debugText += $"F Power: {FishingMinigame.FishPower} \n"; debugText += $"Time: {FishingMinigame.ScriptTimer} \n"; debugText += $"Bobber Ent: {FishingMinigame.BobberEntity} \n"; debugText += $"Hook Ent: {FishingMinigame.HookEntity} \n"; debugText += $"RShake*: {FishingMinigame.RodShakeMultiplier} \n"; debugText += $"N1: {FishingMinigame.Unknown1} \n"; debugText += $"N2: {FishingMinigame.Unknown2} \n"; debugText += $"N3: {FishingMinigame.Unknown3} \n"; debugText += $"ShakeFight*: {FishingMinigame.ShakeFightMultiplier} \n"; debugText += $"FishSizeIx: {FishingMinigame.FishSizeIndex} \n"; debugText += $"N4: {FishingMinigame.Unknown4} \n"; debugText += $"N5: {FishingMinigame.Unknown5} \n"; debugText += $"Tension: {FishingMinigame.Tension} \n"; debugText += $"RodDirX: {FishingMinigame.RodDirX} \n"; debugText += $"RodDirY: {FishingMinigame.RodDirY} \n"; debugText += $"N6: {FishingMinigame.Unknown6} \n"; debugText += $"N7: {FishingMinigame.Unknown7} \n"; debugText += $"N8: {FishingMinigame.Unknown8} \n"; debugText += $"N9: {FishingMinigame.Unknown9} \n"; } catch (Exception e) { Debug.WriteLine(e.Message); } string fishText = ""; foreach (var ent in fishesInArea) { fishText += Utils.FishModels[API.GetEntityModel(ent)] + " Bait: " + API.DecorGetFloat(ent, "FBaitInt") + "\n"; } await Utils.DrawTxt(debugText, 0.1f, 0.2f, 0.25f, 0.25f, 255, 255, 255, 255, false, false); await Utils.DrawTxt(fishText, 0.75f, 0.1f, 0.25f, 0.25f, 255, 255, 255, 255, false, false); }
public async Task CheckFishingState() { FishingMinigame.GetMiniGameState(); int actualState = FishingMinigame.State; int catchFish = fish; float catchFishDistance = fishDistance; if (FishingMinigame.State == actualState && !hooked) { if (catchFish != -1) { float baitInt = API.DecorGetFloat(catchFish, "FBaitInt"); if (baitInt > 20f && catchFishDistance < 3.0f) { uint model = (uint)API.GetEntityModel(catchFish); float size = API.DecorGetFloat(catchFish, "FSize"); float ozs = Utils.fishOzs(model, size); actualReelSpeed = Utils.Lerp(reelSpeeds[1] * 0.7f, reelSpeeds[0] * 0.7f, ozs / 500f); hooked = true; isCatched = false; API.SetEntityInvincible(catchFish, true); API.SetPedConfigFlag(catchFish, 17, true); API.SetBlockingOfNonTemporaryEvents(catchFish, true); API.ClearPedTasksImmediately(catchFish, 0, 1); Function.Call((Hash)0x1F298C7BD30D1240, API.PlayerPedId()); Function.Call((Hash)0x1A52076D26E09004, API.PlayerPedId(), catchFish); FishingMinigame.TransitionFlag = 4; FishingMinigame.FishEntity = catchFish; FishingMinigame.FishWeight = 3.0f; FishingMinigame.FishPower = 1.0f; catchedFish = catchFish; Vector3 hookCoords = API.GetEntityCoords(FishingMinigame.HookEntity, true, true); Function.Call(Hash.TASK_SMART_FLEE_COORD, catchFish, hookCoords.X, hookCoords.Y, hookCoords.Z, 10f, 1000, 8, 3f); catchedTime = API.GetGameTimer(); lastFlee = catchedTime; API.DecorSetFloat(catchedFish, "FBaitInt", 0f); FishingMinigame.SetMiniGameState(); } } } else if (actualState == 12) { if (!isCatched) { FX_Drip = Function.Call <int>(Hash.START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY, "scr_mg_fishing_drips", catchFish, 0f, 0f, 0f, 0f, 0f, 0f, 1f, 0, 0, 0); Function.Call(Hash.SET_PARTICLE_FX_LOOPED_EVOLUTION, FX_Drip, "fade", 0f, false); isCatched = true; } if (API.PromptHasHoldModeCompleted(BackPrompt)) { FishingMinigame.TransitionFlag = 64; FishingMinigame.SetMiniGameState(); await Delay(2000); API.SetBlockingOfNonTemporaryEvents(catchFish, false); API.SetEntityInvincible(catchFish, false); API.SetPedConfigFlag(catchFish, 17, false); hooked = false; API.DeleteEntity(ref catchFish); API.DeletePed(ref catchFish); } if (API.PromptHasHoldModeCompleted(SavePrompt) && !givedFish) { API.PromptSetEnabled(SavePrompt, 0); API.PromptSetVisible(SavePrompt, 0); givedFish = true; showing = false; int fEnt = FishingMinigame.FishEntity; if (Utils.FishModels.ContainsKey(API.GetEntityModel(fEnt))) { FishingMinigame.TransitionFlag = 32; FishingMinigame.SetMiniGameState(); hooked = false; if (Utils.FishModels[API.GetEntityModel(fEnt)].EndsWith("_lg")) //BigFish { API.SetBlockingOfNonTemporaryEvents(fEnt, false); API.SetEntityInvincible(fEnt, false); API.SetPedConfigFlag(fEnt, 17, false); } else { Debug.WriteLine(Utils.FishModels[API.GetEntityModel(fEnt)]); TriggerServerEvent("vorp_fishing:FishToInventory", Utils.FishModels[API.GetEntityModel(fEnt)]); API.DeleteEntity(ref fEnt); API.DeletePed(ref fEnt); } } givedFish = false; } await Delay(500); } else { if (FX_Drip != -1 && API.DoesParticleFxLoopedExist(FX_Drip)) { API.StopParticleFxLooped(FX_Drip, true); FX_Drip = -1; } } await Delay(10); }
public async Task ControlFishingMG() { int actualState = FishingMinigame.State; if (actualState == 6 && actualState == 7) { catchedTime = -1; lastFlee = -1; } if (actualState == 0) { catchedFish = -1; //A REVISAR fish = -1; } if (actualState == 0) { await Delay(100); } if (actualState == 4) { actualReelSpeed = reelSpeeds[0]; } if (actualState == 6 || actualState == 7) { if (actualState == 6) { //+ Speed if (API.IsControlPressed(0, 0xE30CD707)) { if (actualReelSpeed < reelSpeeds[1]) { actualReelSpeed = Math.Min(reelSpeeds[1], actualReelSpeed + 0.0025f); } } //- Speed if (API.IsControlPressed(0, 0XB2F377E8)) { if (actualReelSpeed > reelSpeeds[0]) { actualReelSpeed = Math.Max(reelSpeeds[1], actualReelSpeed - 0.0025f); } } } if (actualState == 7) { if (API.IsControlPressed(2, 0xF84FA74F)) { FishingMinigame.RodDirX = 1f - API.GetControlNormal(2, 0xD6C4ECDC); FishingMinigame.RodDirY = 1f - API.GetControlNormal(2, 0xE4130778); } else { FishingMinigame.RodDirX = 0f; FishingMinigame.RodDirY = 0f; } Random rnd = new Random(); if (!FleeIng && lastFlee != -1 && API.GetGameTimer() - lastFlee > rnd.Next(7000, 15000)) { FleeIng = true; startFlee = API.GetGameTimer(); } if (FleeIng && lastFlee != -1 && API.GetGameTimer() - startFlee > 5000) { FleeIng = false; startFlee = -1; lastFlee = API.GetGameTimer(); } } if (API.PromptHasHoldModeCompleted(ResetCastPrompt)) { if (actualState == 7) { FishingMinigame.TransitionFlag = 2; Function.Call((Hash)0x9B0C7FA063E67629, API.PlayerPedId(), "", false, true); } else { FishingMinigame.TransitionFlag = 128; } hooked = false; isCatched = false; FishingMinigame.SetMiniGameState(); } if (FleeIng) { Random rnd = new Random(); if (rnd.NextDouble() > 0.85) { Vector3 fishCoords = API.GetEntityCoords(FishingMinigame.FishEntity, true, true); API.UseParticleFxAsset("scr_mg_fishing"); Function.Call(Hash.START_NETWORKED_PARTICLE_FX_NON_LOOPED_AT_COORD, "scr_mg_fish_struggle", fishCoords.X, fishCoords.Y, fishCoords.Z + 0.4F, 0f, 0f, (float)(rnd.NextDouble() * 360.0), 1f, 0, 0, 0); Function.Call((Hash)0xDCF5BA95BBF0FABA, fleeSoundId, API.GetHashKey("VFX_SPLASH"), fishCoords.X, fishCoords.Y, fishCoords.Z, false, 0, 0, 1); Function.Call((Hash)0x503703EC1781B7D6, fleeSoundId, API.GetHashKey("FishSize"), API.PlayerPedId(), 1f); } Vector3 playerCoords = API.GetEntityCoords(API.PlayerPedId(), true, true); if (!API.IsPedFleeing(FishingMinigame.FishEntity)) { API.ClearPedTasksImmediately(FishingMinigame.FishEntity, 1, 0); Function.Call(Hash.TASK_SMART_FLEE_COORD, FishingMinigame.FishEntity, playerCoords.X, playerCoords.Y, playerCoords.Z, 10f, 6000, 8, 3f); } float actualTension = FishingMinigame.Tension; if (API.PromptHasHoldModeCompleted(ReelInPrompt)) { actualTension += 0.005f; if (actualTension > 1f) { FishingMinigame.TransitionFlag = 2; actualTension = 0f; FleeIng = false; lastFlee = -1; startFlee = -1; hooked = false; isCatched = false; Function.Call((Hash)0x9B0C7FA063E67629, API.PlayerPedId(), "", false, true); TriggerEvent("vorp:TipRight", GetConfig.Langs["EscapeFish"], 2000); } } else { actualTension = Math.Max(actualTension - 0.0025f, 0f); } FishingMinigame.Tension = actualTension; FishingMinigame.RodShakeMultiplier = actualTension * 1.5f; FishingMinigame.ShakeFightMultiplier = actualTension * 2.0f; } if (API.PromptHasHoldModeCompleted(ReelInPrompt)) { if (!FleeIng) { FishingMinigame.Tension = 0f; FishingMinigame.RodShakeMultiplier = 0f; FishingMinigame.ShakeFightMultiplier = 0f; if (actualState == 7 && API.IsPedFleeing(FishingMinigame.FishEntity)) { API.ClearPedTasksImmediately(FishingMinigame.FishEntity, 1, 0); } Vector3 playerCoords; if (actualState == 7) { float rodX = (1 - FishingMinigame.RodDirX) * 2f - 1f; playerCoords = API.GetOffsetFromEntityInWorldCoords(API.PlayerPedId(), rodX, 0f, 0f); } else { playerCoords = API.GetEntityCoords(API.PlayerPedId(), true, true); } Vector3 bobberCoords = API.GetEntityCoords(FishingMinigame.BobberEntity, true, true); Vector3 dest = playerCoords - bobberCoords; Vector3.Normalize(ref dest, out dest); dest = bobberCoords + dest * actualReelSpeed; API.SetEntityCoords(FishingMinigame.BobberEntity, dest.X, dest.Y, dest.Z, false, false, false, false); if (FishingMinigame.Distance < 5f) { FishingMinigame.TransitionFlag = 8; Function.Call((Hash)0x9B0C7FA063E67629, API.PlayerPedId(), "", false, true); } else if (FishingMinigame.Distance > 37f) { FishingMinigame.TransitionFlag = 2; Function.Call((Hash)0x9B0C7FA063E67629, API.PlayerPedId(), "", false, true); TriggerEvent("vorp:TipRight", GetConfig.Langs["EscapeFish"], 2000); } } } else { if (actualState == 7) { Vector3 playerCoords = API.GetEntityCoords(API.PlayerPedId(), true, true); if (!API.IsPedFleeing(FishingMinigame.FishEntity)) { API.ClearPedTasksImmediately(FishingMinigame.FishEntity, 1, 0); Function.Call(Hash.TASK_SMART_FLEE_COORD, FishingMinigame.FishEntity, playerCoords.X, playerCoords.Y, playerCoords.Z, 10f, 6000, 8, 3f); } } } FishingMinigame.SetMiniGameState(); } }