Addded Climb and ClimbLadder sync. Small changes
This commit is contained in:
@ -21,6 +21,8 @@ namespace CoopClient.Entities.Player
|
|||||||
internal byte Speed { get; set; }
|
internal byte Speed { get; set; }
|
||||||
private bool LastIsJumping = false;
|
private bool LastIsJumping = false;
|
||||||
internal bool IsJumping { get; set; }
|
internal bool IsJumping { get; set; }
|
||||||
|
internal bool IsOnLadder { get; set; }
|
||||||
|
internal bool IsVaulting { get; set; }
|
||||||
internal bool IsInParachuteFreeFall { get; set; }
|
internal bool IsInParachuteFreeFall { get; set; }
|
||||||
internal bool IsRagdoll { get; set; }
|
internal bool IsRagdoll { get; set; }
|
||||||
internal bool IsOnFire { get; set; }
|
internal bool IsOnFire { get; set; }
|
||||||
@ -60,6 +62,38 @@ namespace CoopClient.Entities.Player
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsOnLadder)
|
||||||
|
{
|
||||||
|
if (!Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, Character.Handle, ETasks.CLIMB_LADDER))
|
||||||
|
{
|
||||||
|
Character.Task.ClimbLadder();
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateOnFootPosition(true, true, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (!IsOnLadder && Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, Character.Handle, ETasks.CLIMB_LADDER))
|
||||||
|
{
|
||||||
|
Character.Task.ClearAllImmediately();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsVaulting)
|
||||||
|
{
|
||||||
|
if (!Character.IsVaulting)
|
||||||
|
{
|
||||||
|
Character.Task.Climb();
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateOnFootPosition(true, true, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (!IsVaulting && Character.IsVaulting)
|
||||||
|
{
|
||||||
|
Character.Task.ClearAllImmediately();
|
||||||
|
}
|
||||||
|
|
||||||
if (IsOnFire && !Character.IsOnFire)
|
if (IsOnFire && !Character.IsOnFire)
|
||||||
{
|
{
|
||||||
Character.IsInvincible = false;
|
Character.IsInvincible = false;
|
||||||
@ -78,12 +112,18 @@ namespace CoopClient.Entities.Player
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsJumping && !LastIsJumping)
|
if (IsJumping)
|
||||||
{
|
{
|
||||||
Character.Task.Jump();
|
if (!LastIsJumping)
|
||||||
}
|
{
|
||||||
|
LastIsJumping = true;
|
||||||
|
Character.Task.Jump();
|
||||||
|
}
|
||||||
|
|
||||||
LastIsJumping = IsJumping;
|
UpdateOnFootPosition(true, true, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LastIsJumping = false;
|
||||||
|
|
||||||
if (IsRagdoll)
|
if (IsRagdoll)
|
||||||
{
|
{
|
||||||
@ -118,12 +158,6 @@ namespace CoopClient.Entities.Player
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsJumping || IsOnFire)
|
|
||||||
{
|
|
||||||
UpdateOnFootPosition(true, true, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsReloading)
|
if (IsReloading)
|
||||||
{
|
{
|
||||||
if (!Character.IsReloading)
|
if (!Character.IsReloading)
|
||||||
|
@ -409,13 +409,15 @@ namespace CoopClient
|
|||||||
DebugSyncPed.CurrentWeaponHash = (uint)player.Weapons.Current.Hash;
|
DebugSyncPed.CurrentWeaponHash = (uint)player.Weapons.Current.Hash;
|
||||||
DebugSyncPed.WeaponComponents = player.Weapons.Current.GetWeaponComponents();
|
DebugSyncPed.WeaponComponents = player.Weapons.Current.GetWeaponComponents();
|
||||||
DebugSyncPed.LastSyncWasFull = true;
|
DebugSyncPed.LastSyncWasFull = true;
|
||||||
DebugSyncPed.IsAiming = (flags.Value & (byte)PedDataFlags.IsAiming) > 0;
|
DebugSyncPed.IsAiming = (flags.Value & (ushort)PedDataFlags.IsAiming) > 0;
|
||||||
DebugSyncPed.IsShooting = (flags.Value & (byte)PedDataFlags.IsShooting) > 0;
|
DebugSyncPed.IsShooting = (flags.Value & (ushort)PedDataFlags.IsShooting) > 0;
|
||||||
DebugSyncPed.IsReloading = (flags.Value & (byte)PedDataFlags.IsReloading) > 0;
|
DebugSyncPed.IsReloading = (flags.Value & (ushort)PedDataFlags.IsReloading) > 0;
|
||||||
DebugSyncPed.IsJumping = (flags.Value & (byte)PedDataFlags.IsJumping) > 0;
|
DebugSyncPed.IsJumping = (flags.Value & (ushort)PedDataFlags.IsJumping) > 0;
|
||||||
DebugSyncPed.IsRagdoll = (flags.Value & (byte)PedDataFlags.IsRagdoll) > 0;
|
DebugSyncPed.IsRagdoll = (flags.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
|
||||||
DebugSyncPed.IsOnFire = (flags.Value & (byte)PedDataFlags.IsOnFire) > 0;
|
DebugSyncPed.IsOnFire = (flags.Value & (ushort)PedDataFlags.IsOnFire) > 0;
|
||||||
DebugSyncPed.IsInParachuteFreeFall = player.IsInParachuteFreeFall;
|
DebugSyncPed.IsInParachuteFreeFall = (flags.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0;
|
||||||
|
DebugSyncPed.IsOnLadder = (flags.Value & (ushort)PedDataFlags.IsOnLadder) > 0;
|
||||||
|
DebugSyncPed.IsVaulting = (flags.Value & (ushort)PedDataFlags.IsVaulting) > 0;
|
||||||
DebugSyncPed.IsInVehicle = false;
|
DebugSyncPed.IsInVehicle = false;
|
||||||
|
|
||||||
if (DebugSyncPed.Character != null && DebugSyncPed.Character.Exists())
|
if (DebugSyncPed.Character != null && DebugSyncPed.Character.Exists())
|
||||||
|
@ -390,13 +390,15 @@ namespace CoopClient
|
|||||||
player.CurrentWeaponHash = packet.CurrentWeaponHash;
|
player.CurrentWeaponHash = packet.CurrentWeaponHash;
|
||||||
player.WeaponComponents = packet.WeaponComponents;
|
player.WeaponComponents = packet.WeaponComponents;
|
||||||
player.AimCoords = packet.AimCoords.ToVector();
|
player.AimCoords = packet.AimCoords.ToVector();
|
||||||
player.IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0;
|
player.IsAiming = (packet.Flag.Value & (ushort)PedDataFlags.IsAiming) > 0;
|
||||||
player.IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0;
|
player.IsShooting = (packet.Flag.Value & (ushort)PedDataFlags.IsShooting) > 0;
|
||||||
player.IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0;
|
player.IsReloading = (packet.Flag.Value & (ushort)PedDataFlags.IsReloading) > 0;
|
||||||
player.IsJumping = (packet.Flag.Value & (byte)PedDataFlags.IsJumping) > 0;
|
player.IsJumping = (packet.Flag.Value & (ushort)PedDataFlags.IsJumping) > 0;
|
||||||
player.IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0;
|
player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
|
||||||
player.IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0;
|
player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0;
|
||||||
player.IsInParachuteFreeFall = (packet.Flag.Value & (byte)PedDataFlags.IsInParachuteFreeFall) > 0;
|
player.IsInParachuteFreeFall = (packet.Flag.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0;
|
||||||
|
player.IsOnLadder = (packet.Flag.Value & (ushort)PedDataFlags.IsOnLadder) > 0;
|
||||||
|
player.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0;
|
||||||
player.IsInVehicle = false;
|
player.IsInVehicle = false;
|
||||||
player.LastSyncWasFull = true;
|
player.LastSyncWasFull = true;
|
||||||
|
|
||||||
@ -457,13 +459,15 @@ namespace CoopClient
|
|||||||
player.Speed = packet.Speed;
|
player.Speed = packet.Speed;
|
||||||
player.CurrentWeaponHash = packet.CurrentWeaponHash;
|
player.CurrentWeaponHash = packet.CurrentWeaponHash;
|
||||||
player.AimCoords = packet.AimCoords.ToVector();
|
player.AimCoords = packet.AimCoords.ToVector();
|
||||||
player.IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0;
|
player.IsAiming = (packet.Flag.Value & (ushort)PedDataFlags.IsAiming) > 0;
|
||||||
player.IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0;
|
player.IsShooting = (packet.Flag.Value & (ushort)PedDataFlags.IsShooting) > 0;
|
||||||
player.IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0;
|
player.IsReloading = (packet.Flag.Value & (ushort)PedDataFlags.IsReloading) > 0;
|
||||||
player.IsJumping = (packet.Flag.Value & (byte)PedDataFlags.IsJumping) > 0;
|
player.IsJumping = (packet.Flag.Value & (ushort)PedDataFlags.IsJumping) > 0;
|
||||||
player.IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0;
|
player.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
|
||||||
player.IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0;
|
player.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0;
|
||||||
player.IsInParachuteFreeFall = (packet.Flag.Value & (byte)PedDataFlags.IsInParachuteFreeFall) > 0;
|
player.IsInParachuteFreeFall = (packet.Flag.Value & (ushort)PedDataFlags.IsInParachuteFreeFall) > 0;
|
||||||
|
player.IsOnLadder = (packet.Flag.Value & (ushort)PedDataFlags.IsOnLadder) > 0;
|
||||||
|
player.IsVaulting = (packet.Flag.Value & (ushort)PedDataFlags.IsVaulting) > 0;
|
||||||
player.IsInVehicle = false;
|
player.IsInVehicle = false;
|
||||||
player.LastSyncWasFull = false;
|
player.LastSyncWasFull = false;
|
||||||
|
|
||||||
@ -660,12 +664,12 @@ namespace CoopClient
|
|||||||
npc.Speed = packet.Speed;
|
npc.Speed = packet.Speed;
|
||||||
npc.CurrentWeaponHash = packet.CurrentWeaponHash;
|
npc.CurrentWeaponHash = packet.CurrentWeaponHash;
|
||||||
npc.AimCoords = packet.AimCoords.ToVector();
|
npc.AimCoords = packet.AimCoords.ToVector();
|
||||||
npc.IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0;
|
npc.IsAiming = (packet.Flag.Value & (ushort)PedDataFlags.IsAiming) > 0;
|
||||||
npc.IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0;
|
npc.IsShooting = (packet.Flag.Value & (ushort)PedDataFlags.IsShooting) > 0;
|
||||||
npc.IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0;
|
npc.IsReloading = (packet.Flag.Value & (ushort)PedDataFlags.IsReloading) > 0;
|
||||||
npc.IsJumping = (packet.Flag.Value & (byte)PedDataFlags.IsJumping) > 0;
|
npc.IsJumping = (packet.Flag.Value & (ushort)PedDataFlags.IsJumping) > 0;
|
||||||
npc.IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0;
|
npc.IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0;
|
||||||
npc.IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0;
|
npc.IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0;
|
||||||
npc.IsInVehicle = false;
|
npc.IsInVehicle = false;
|
||||||
npc.LastSyncWasFull = true;
|
npc.LastSyncWasFull = true;
|
||||||
|
|
||||||
@ -684,12 +688,12 @@ namespace CoopClient
|
|||||||
Speed = packet.Speed,
|
Speed = packet.Speed,
|
||||||
CurrentWeaponHash = packet.CurrentWeaponHash,
|
CurrentWeaponHash = packet.CurrentWeaponHash,
|
||||||
AimCoords = packet.AimCoords.ToVector(),
|
AimCoords = packet.AimCoords.ToVector(),
|
||||||
IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0,
|
IsAiming = (packet.Flag.Value & (ushort)PedDataFlags.IsAiming) > 0,
|
||||||
IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0,
|
IsShooting = (packet.Flag.Value & (ushort)PedDataFlags.IsShooting) > 0,
|
||||||
IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0,
|
IsReloading = (packet.Flag.Value & (ushort)PedDataFlags.IsReloading) > 0,
|
||||||
IsJumping = (packet.Flag.Value & (byte)PedDataFlags.IsJumping) > 0,
|
IsJumping = (packet.Flag.Value & (ushort)PedDataFlags.IsJumping) > 0,
|
||||||
IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0,
|
IsRagdoll = (packet.Flag.Value & (ushort)PedDataFlags.IsRagdoll) > 0,
|
||||||
IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0,
|
IsOnFire = (packet.Flag.Value & (ushort)PedDataFlags.IsOnFire) > 0,
|
||||||
IsInVehicle = false,
|
IsInVehicle = false,
|
||||||
LastSyncWasFull = true,
|
LastSyncWasFull = true,
|
||||||
|
|
||||||
|
@ -137,7 +137,9 @@ namespace CoopClient
|
|||||||
IsJumping = 1 << 3,
|
IsJumping = 1 << 3,
|
||||||
IsRagdoll = 1 << 4,
|
IsRagdoll = 1 << 4,
|
||||||
IsOnFire = 1 << 5,
|
IsOnFire = 1 << 5,
|
||||||
IsInParachuteFreeFall = 1 << 6
|
IsInParachuteFreeFall = 1 << 6,
|
||||||
|
IsOnLadder = 1 << 7,
|
||||||
|
IsVaulting = 1 << 8
|
||||||
}
|
}
|
||||||
|
|
||||||
#region ===== VEHICLE DATA =====
|
#region ===== VEHICLE DATA =====
|
||||||
@ -440,7 +442,7 @@ namespace CoopClient
|
|||||||
|
|
||||||
public Dictionary<uint, bool> WeaponComponents { get; set; }
|
public Dictionary<uint, bool> WeaponComponents { get; set; }
|
||||||
|
|
||||||
public byte? Flag { get; set; }
|
public ushort? Flag { get; set; }
|
||||||
|
|
||||||
public float? Latency { get; set; }
|
public float? Latency { get; set; }
|
||||||
|
|
||||||
@ -461,7 +463,7 @@ namespace CoopClient
|
|||||||
byteArray.AddRange(BitConverter.GetBytes(Health));
|
byteArray.AddRange(BitConverter.GetBytes(Health));
|
||||||
|
|
||||||
// Write player flags
|
// Write player flags
|
||||||
byteArray.Add(Flag.Value);
|
byteArray.AddRange(BitConverter.GetBytes(Flag.Value));
|
||||||
|
|
||||||
// Write player model hash
|
// Write player model hash
|
||||||
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
||||||
@ -559,7 +561,7 @@ namespace CoopClient
|
|||||||
Health = reader.ReadInt();
|
Health = reader.ReadInt();
|
||||||
|
|
||||||
// Read player flag
|
// Read player flag
|
||||||
Flag = reader.ReadByte();
|
Flag = reader.ReadUShort();
|
||||||
|
|
||||||
// Read player model hash
|
// Read player model hash
|
||||||
ModelHash = reader.ReadInt();
|
ModelHash = reader.ReadInt();
|
||||||
@ -980,7 +982,7 @@ namespace CoopClient
|
|||||||
|
|
||||||
public uint CurrentWeaponHash { get; set; }
|
public uint CurrentWeaponHash { get; set; }
|
||||||
|
|
||||||
public byte? Flag { get; set; }
|
public ushort? Flag { get; set; }
|
||||||
|
|
||||||
public float? Latency { get; set; }
|
public float? Latency { get; set; }
|
||||||
|
|
||||||
@ -995,7 +997,7 @@ namespace CoopClient
|
|||||||
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
||||||
|
|
||||||
// Write player flags
|
// Write player flags
|
||||||
byteArray.Add(Flag.Value);
|
byteArray.AddRange(BitConverter.GetBytes(Flag.Value));
|
||||||
|
|
||||||
// Write player health
|
// Write player health
|
||||||
byteArray.AddRange(BitConverter.GetBytes(Health));
|
byteArray.AddRange(BitConverter.GetBytes(Health));
|
||||||
@ -1057,7 +1059,7 @@ namespace CoopClient
|
|||||||
NetHandle = reader.ReadLong();
|
NetHandle = reader.ReadLong();
|
||||||
|
|
||||||
// Read player flags
|
// Read player flags
|
||||||
Flag = reader.ReadByte();
|
Flag = reader.ReadUShort();
|
||||||
|
|
||||||
// Read player health
|
// Read player health
|
||||||
Health = reader.ReadInt();
|
Health = reader.ReadInt();
|
||||||
@ -1678,7 +1680,7 @@ namespace CoopClient
|
|||||||
|
|
||||||
public uint CurrentWeaponHash { get; set; }
|
public uint CurrentWeaponHash { get; set; }
|
||||||
|
|
||||||
public byte? Flag { get; set; } = 0;
|
public ushort? Flag { get; set; } = 0;
|
||||||
|
|
||||||
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
|
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
|
||||||
{
|
{
|
||||||
@ -1691,7 +1693,7 @@ namespace CoopClient
|
|||||||
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
||||||
|
|
||||||
// Write npc flags
|
// Write npc flags
|
||||||
byteArray.Add(Flag.Value);
|
byteArray.AddRange(BitConverter.GetBytes(Flag.Value));
|
||||||
|
|
||||||
// Write npc model hash
|
// Write npc model hash
|
||||||
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
||||||
@ -1762,7 +1764,7 @@ namespace CoopClient
|
|||||||
NetHandle = reader.ReadLong();
|
NetHandle = reader.ReadLong();
|
||||||
|
|
||||||
// Read npc flag
|
// Read npc flag
|
||||||
Flag = reader.ReadByte();
|
Flag = reader.ReadUShort();
|
||||||
|
|
||||||
// Read npc model hash
|
// Read npc model hash
|
||||||
ModelHash = reader.ReadInt();
|
ModelHash = reader.ReadInt();
|
||||||
|
@ -10,6 +10,11 @@ using GTA.Math;
|
|||||||
|
|
||||||
namespace CoopClient
|
namespace CoopClient
|
||||||
{
|
{
|
||||||
|
enum ETasks
|
||||||
|
{
|
||||||
|
CLIMB_LADDER = 47
|
||||||
|
}
|
||||||
|
|
||||||
static class Util
|
static class Util
|
||||||
{
|
{
|
||||||
#region -- POINTER --
|
#region -- POINTER --
|
||||||
@ -225,43 +230,53 @@ namespace CoopClient
|
|||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte? GetPedFlags(this Ped ped, bool isPlayer = false)
|
public static ushort? GetPedFlags(this Ped ped, bool isPlayer = false)
|
||||||
{
|
{
|
||||||
byte? flags = 0;
|
ushort? flags = 0;
|
||||||
|
|
||||||
if (ped.IsAiming)
|
if (ped.IsAiming)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsAiming;
|
flags |= (ushort)PedDataFlags.IsAiming;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ped.IsShooting || isPlayer && Game.IsControlPressed(Control.Attack)) && ped.Weapons.Current?.AmmoInClip != 0)
|
if ((ped.IsShooting || isPlayer && Game.IsControlPressed(Control.Attack)) && ped.Weapons.Current?.AmmoInClip != 0)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsShooting;
|
flags |= (ushort)PedDataFlags.IsShooting;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ped.IsReloading)
|
if (ped.IsReloading)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsReloading;
|
flags |= (ushort)PedDataFlags.IsReloading;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ped.IsJumping)
|
if (ped.IsJumping)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsJumping;
|
flags |= (ushort)PedDataFlags.IsJumping;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ped.IsRagdoll)
|
if (ped.IsRagdoll)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsRagdoll;
|
flags |= (ushort)PedDataFlags.IsRagdoll;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ped.IsOnFire)
|
if (ped.IsOnFire)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsOnFire;
|
flags |= (ushort)PedDataFlags.IsOnFire;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ped.IsInParachuteFreeFall)
|
if (ped.IsInParachuteFreeFall)
|
||||||
{
|
{
|
||||||
flags |= (byte)PedDataFlags.IsInParachuteFreeFall;
|
flags |= (ushort)PedDataFlags.IsInParachuteFreeFall;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, ped.Handle, ETasks.CLIMB_LADDER)) // USING_LADDER
|
||||||
|
{
|
||||||
|
flags |= (ushort)PedDataFlags.IsOnLadder;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ped.IsVaulting && !Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, ped.Handle, ETasks.CLIMB_LADDER))
|
||||||
|
{
|
||||||
|
flags |= (ushort)PedDataFlags.IsVaulting;
|
||||||
}
|
}
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
|
@ -123,7 +123,9 @@ namespace CoopServer
|
|||||||
IsJumping = 1 << 3,
|
IsJumping = 1 << 3,
|
||||||
IsRagdoll = 1 << 4,
|
IsRagdoll = 1 << 4,
|
||||||
IsOnFire = 1 << 5,
|
IsOnFire = 1 << 5,
|
||||||
IsInParachuteFreeFall = 1 << 6
|
IsInParachuteFreeFall = 1 << 6,
|
||||||
|
IsOnLadder = 1 << 7,
|
||||||
|
IsVaulting = 1 << 8
|
||||||
}
|
}
|
||||||
|
|
||||||
#region ===== VEHICLE DATA =====
|
#region ===== VEHICLE DATA =====
|
||||||
@ -423,7 +425,7 @@ namespace CoopServer
|
|||||||
|
|
||||||
public Dictionary<uint, bool> WeaponComponents { get; set; }
|
public Dictionary<uint, bool> WeaponComponents { get; set; }
|
||||||
|
|
||||||
public byte? Flag { get; set; }
|
public ushort? Flag { get; set; }
|
||||||
|
|
||||||
public float? Latency { get; set; }
|
public float? Latency { get; set; }
|
||||||
|
|
||||||
@ -444,7 +446,7 @@ namespace CoopServer
|
|||||||
byteArray.AddRange(BitConverter.GetBytes(Health));
|
byteArray.AddRange(BitConverter.GetBytes(Health));
|
||||||
|
|
||||||
// Write player flags
|
// Write player flags
|
||||||
byteArray.Add(Flag.Value);
|
byteArray.AddRange(BitConverter.GetBytes(Flag.Value));
|
||||||
|
|
||||||
// Write player model hash
|
// Write player model hash
|
||||||
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
||||||
@ -542,7 +544,7 @@ namespace CoopServer
|
|||||||
Health = reader.ReadInt();
|
Health = reader.ReadInt();
|
||||||
|
|
||||||
// Read player flag
|
// Read player flag
|
||||||
Flag = reader.ReadByte();
|
Flag = reader.ReadUShort();
|
||||||
|
|
||||||
// Read player model hash
|
// Read player model hash
|
||||||
ModelHash = reader.ReadInt();
|
ModelHash = reader.ReadInt();
|
||||||
@ -963,7 +965,7 @@ namespace CoopServer
|
|||||||
|
|
||||||
public uint CurrentWeaponHash { get; set; }
|
public uint CurrentWeaponHash { get; set; }
|
||||||
|
|
||||||
public byte? Flag { get; set; }
|
public ushort? Flag { get; set; }
|
||||||
|
|
||||||
public float? Latency { get; set; }
|
public float? Latency { get; set; }
|
||||||
|
|
||||||
@ -978,7 +980,7 @@ namespace CoopServer
|
|||||||
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
||||||
|
|
||||||
// Write player flags
|
// Write player flags
|
||||||
byteArray.Add(Flag.Value);
|
byteArray.AddRange(BitConverter.GetBytes(Flag.Value));
|
||||||
|
|
||||||
// Write player health
|
// Write player health
|
||||||
byteArray.AddRange(BitConverter.GetBytes(Health));
|
byteArray.AddRange(BitConverter.GetBytes(Health));
|
||||||
@ -1040,7 +1042,7 @@ namespace CoopServer
|
|||||||
NetHandle = reader.ReadLong();
|
NetHandle = reader.ReadLong();
|
||||||
|
|
||||||
// Read player flags
|
// Read player flags
|
||||||
Flag = reader.ReadByte();
|
Flag = reader.ReadUShort();
|
||||||
|
|
||||||
// Read player health
|
// Read player health
|
||||||
Health = reader.ReadInt();
|
Health = reader.ReadInt();
|
||||||
@ -1661,7 +1663,7 @@ namespace CoopServer
|
|||||||
|
|
||||||
public uint CurrentWeaponHash { get; set; }
|
public uint CurrentWeaponHash { get; set; }
|
||||||
|
|
||||||
public byte? Flag { get; set; } = 0;
|
public ushort? Flag { get; set; } = 0;
|
||||||
|
|
||||||
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
|
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
|
||||||
{
|
{
|
||||||
@ -1674,7 +1676,7 @@ namespace CoopServer
|
|||||||
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
byteArray.AddRange(BitConverter.GetBytes(NetHandle));
|
||||||
|
|
||||||
// Write npc flags
|
// Write npc flags
|
||||||
byteArray.Add(Flag.Value);
|
byteArray.AddRange(BitConverter.GetBytes(Flag.Value));
|
||||||
|
|
||||||
// Write npc model hash
|
// Write npc model hash
|
||||||
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
byteArray.AddRange(BitConverter.GetBytes(ModelHash));
|
||||||
@ -1745,7 +1747,7 @@ namespace CoopServer
|
|||||||
NetHandle = reader.ReadLong();
|
NetHandle = reader.ReadLong();
|
||||||
|
|
||||||
// Read npc flag
|
// Read npc flag
|
||||||
Flag = reader.ReadByte();
|
Flag = reader.ReadUShort();
|
||||||
|
|
||||||
// Read npc model hash
|
// Read npc model hash
|
||||||
ModelHash = reader.ReadInt();
|
ModelHash = reader.ReadInt();
|
||||||
|
Reference in New Issue
Block a user