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 IsVaulting { 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 IsOnFire { get; set; }
internal bool IsAiming { get; set; }
@ -62,6 +64,37 @@ namespace CoopClient.Entities.Player
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 (!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?.Delete();
player.Value.PedBlip?.Delete();
player.Value.ParachuteProp?.Delete();
}
Players.Clear();
@ -416,6 +417,7 @@ namespace CoopClient
DebugSyncPed.IsRagdoll = (flags.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
DebugSyncPed.IsOnFire = (flags.Value & (ushort)PedDataFlags.IsOnFire) > 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.IsVaulting = (flags.Value & (ushort)PedDataFlags.IsVaulting) > 0;
DebugSyncPed.IsInVehicle = false;

View File

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

View File

@ -502,6 +502,7 @@ namespace CoopClient
player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 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.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0;
player.IsInVehicle = false;
@ -571,6 +572,7 @@ namespace CoopClient
player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 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.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0;
player.IsInVehicle = false;

View File

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

View File

@ -269,6 +269,11 @@ namespace CoopClient
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
{
flags |= (ushort)PedDataFlags.IsOnLadder;

View File

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

View File

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