Parachute sync added. Small changes

This commit is contained in:
EntenKoeniq
2022-01-01 04:16:24 +01:00
parent 7cc91ebbbd
commit 3f4eeb0a32
8 changed files with 65 additions and 15 deletions

View File

@ -24,6 +24,8 @@ namespace CoopClient.Entities.Player
internal bool IsOnLadder { get; set; } internal bool IsOnLadder { get; set; }
internal bool IsVaulting { get; set; } internal bool IsVaulting { get; set; }
internal bool IsInParachuteFreeFall { get; set; } internal bool IsInParachuteFreeFall { get; set; }
internal bool IsParachuteOpen { get; set; }
internal Prop ParachuteProp { get; set; } = null;
internal bool IsRagdoll { get; set; } internal bool IsRagdoll { get; set; }
internal bool IsOnFire { get; set; } internal bool IsOnFire { get; set; }
internal bool IsAiming { get; set; } internal bool IsAiming { get; set; }
@ -62,6 +64,37 @@ namespace CoopClient.Entities.Player
return; return;
} }
if (IsParachuteOpen)
{
if (ParachuteProp == null)
{
ParachuteProp = World.CreateProp(Util.ModelRequest(1740193300), Character.Position, Character.Rotation, false, false);
ParachuteProp.IsPositionFrozen = true;
ParachuteProp.IsCollisionEnabled = false;
ParachuteProp.AttachTo(Character.Bones[Bone.SkelSpine2], new Vector3(3.6f, 0f, 0f), new Vector3(0f, 90f, 0f));
Character.Task.ClearAllImmediately();
Character.Task.ClearSecondary();
}
UpdateOnFootPosition(true, true, false);
if (!Function.Call<bool>(Hash.IS_ENTITY_PLAYING_ANIM, Character.Handle, "skydive@parachute@first_person", "chute_idle_right", 3))
{
Function.Call(Hash.TASK_PLAY_ANIM, Character, LoadAnim("skydive@parachute@first_person"), "chute_idle_right", 8f, 10f, -1, 0, -8f, 1, 1, 1);
}
return;
}
if (ParachuteProp != null)
{
if (ParachuteProp.Exists())
{
ParachuteProp.Delete();
}
ParachuteProp = null;
}
if (IsOnLadder) if (IsOnLadder)
{ {
if (!Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, Character.Handle, ETasks.CLIMB_LADDER)) if (!Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, Character.Handle, ETasks.CLIMB_LADDER))

View File

@ -238,6 +238,7 @@ namespace CoopClient
player.Value.Character?.Kill(); player.Value.Character?.Kill();
player.Value.Character?.Delete(); player.Value.Character?.Delete();
player.Value.PedBlip?.Delete(); player.Value.PedBlip?.Delete();
player.Value.ParachuteProp?.Delete();
} }
Players.Clear(); Players.Clear();
@ -416,6 +417,7 @@ namespace CoopClient
DebugSyncPed.IsRagdoll = (flags.Value & (ushort)PedDataFlags.IsRagdoll) > 0; DebugSyncPed.IsRagdoll = (flags.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
DebugSyncPed.IsOnFire = (flags.Value & (ushort)PedDataFlags.IsOnFire) > 0; DebugSyncPed.IsOnFire = (flags.Value & (ushort)PedDataFlags.IsOnFire) > 0;
DebugSyncPed.IsInParachuteFreeFall = (flags.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0; DebugSyncPed.IsInParachuteFreeFall = (flags.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0;
DebugSyncPed.IsParachuteOpen = (flags.Value & (ushort)PedDataFlags.IsParachuteOpen) > 0;
DebugSyncPed.IsOnLadder = (flags.Value & (ushort)PedDataFlags.IsOnLadder) > 0; DebugSyncPed.IsOnLadder = (flags.Value & (ushort)PedDataFlags.IsOnLadder) > 0;
DebugSyncPed.IsVaulting = (flags.Value & (ushort)PedDataFlags.IsVaulting) > 0; DebugSyncPed.IsVaulting = (flags.Value & (ushort)PedDataFlags.IsVaulting) > 0;
DebugSyncPed.IsInVehicle = false; DebugSyncPed.IsInVehicle = false;

View File

@ -55,6 +55,12 @@ namespace CoopClient.Menus.Sub
GetAllServer(); GetAllServer();
}; };
MainMenu.Closed += (object sender, EventArgs e) => MainMenu.Closed += (object sender, EventArgs e) =>
{
CleanUpList();
};
}
private void CleanUpList()
{ {
if (MainMenu.Items.Count > 0) if (MainMenu.Items.Count > 0)
{ {
@ -63,8 +69,8 @@ namespace CoopClient.Menus.Sub
MainMenu.Remove(MainMenu.Items[i]); MainMenu.Remove(MainMenu.Items[i]);
} }
} }
};
} }
private void GetAllServer() private void GetAllServer()
{ {
List<ServerListClass> serverList = null; List<ServerListClass> serverList = null;
@ -88,18 +94,18 @@ namespace CoopClient.Menus.Sub
if (serverList == null) if (serverList == null)
{ {
MainMenu.Items[0].Title = "Something went wrong!"; ResultItem.Title = "Something went wrong!";
return; return;
} }
if (serverList.Count == 0) if (serverList.Count == 0)
{ {
MainMenu.Items[0].Title = "No server was found!"; ResultItem.Title = "No server was found!";
return; return;
} }
if (ResultItem != null) if (ResultItem != null)
{ {
MainMenu.Remove(MainMenu.Items[0]); CleanUpList();
ResultItem = null; ResultItem = null;
} }

View File

@ -502,6 +502,7 @@ namespace CoopClient
player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0; player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0; player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0;
player.IsInParachuteFreeFall = (packet.Flag.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0; player.IsInParachuteFreeFall = (packet.Flag.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0;
player.IsParachuteOpen = (packet.Flag.Value & (ushort)PedDataFlags.IsParachuteOpen) > 0;
player.IsOnLadder = (packet.Flag.Value & (ushort)PedDataFlags.IsOnLadder) > 0; player.IsOnLadder = (packet.Flag.Value & (ushort)PedDataFlags.IsOnLadder) > 0;
player.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0; player.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0;
player.IsInVehicle = false; player.IsInVehicle = false;
@ -571,6 +572,7 @@ namespace CoopClient
player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0; player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0; player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0;
player.IsInParachuteFreeFall = (packet.Flag.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0; player.IsInParachuteFreeFall = (packet.Flag.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0;
player.IsParachuteOpen = (packet.Flag.Value & (ushort)PedDataFlags.IsParachuteOpen) > 0;
player.IsOnLadder = (packet.Flag.Value & (ushort)PedDataFlags.IsOnLadder) > 0; player.IsOnLadder = (packet.Flag.Value & (ushort)PedDataFlags.IsOnLadder) > 0;
player.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0; player.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0;
player.IsInVehicle = false; player.IsInVehicle = false;

View File

@ -138,8 +138,9 @@ namespace CoopClient
IsRagdoll = 1 << 4, IsRagdoll = 1 << 4,
IsOnFire = 1 << 5, IsOnFire = 1 << 5,
IsInParachuteFreeFall = 1 << 6, IsInParachuteFreeFall = 1 << 6,
IsOnLadder = 1 << 7, IsParachuteOpen = 1 << 7,
IsVaulting = 1 << 8 IsOnLadder = 1 << 8,
IsVaulting = 1 << 9
} }
#region ===== VEHICLE DATA ===== #region ===== VEHICLE DATA =====

View File

@ -269,6 +269,11 @@ namespace CoopClient
flags |= (ushort)PedDataFlags.IsInParachuteFreeFall; flags |= (ushort)PedDataFlags.IsInParachuteFreeFall;
} }
if (ped.ParachuteState == ParachuteState.Gliding)
{
flags |= (ushort)PedDataFlags.IsParachuteOpen;
}
if (Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, ped.Handle, ETasks.CLIMB_LADDER)) // USING_LADDER if (Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, ped.Handle, ETasks.CLIMB_LADDER)) // USING_LADDER
{ {
flags |= (ushort)PedDataFlags.IsOnLadder; flags |= (ushort)PedDataFlags.IsOnLadder;

View File

@ -3,7 +3,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<AssemblyVersion>1.39.0.0001</AssemblyVersion> <AssemblyVersion>1.42.0.0001</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion> <FileVersion>1.0.0.0</FileVersion>
<RepositoryUrl>https://github.com/GTACOOP-R/GTACoop-R</RepositoryUrl> <RepositoryUrl>https://github.com/GTACOOP-R/GTACoop-R</RepositoryUrl>
</PropertyGroup> </PropertyGroup>

View File

@ -124,8 +124,9 @@ namespace CoopServer
IsRagdoll = 1 << 4, IsRagdoll = 1 << 4,
IsOnFire = 1 << 5, IsOnFire = 1 << 5,
IsInParachuteFreeFall = 1 << 6, IsInParachuteFreeFall = 1 << 6,
IsOnLadder = 1 << 7, IsParachuteOpen = 1 << 7,
IsVaulting = 1 << 8 IsOnLadder = 1 << 8,
IsVaulting = 1 << 9
} }
#region ===== VEHICLE DATA ===== #region ===== VEHICLE DATA =====