Parachute sync added. Small changes
This commit is contained in:
@ -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))
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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 =====
|
||||||
|
@ -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;
|
||||||
|
@ -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>
|
||||||
|
@ -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 =====
|
||||||
|
Reference in New Issue
Block a user