Add ped blip sync

This commit is contained in:
Sardelka
2022-07-04 22:50:47 +08:00
parent 56cd17401b
commit 2450956fda
7 changed files with 49 additions and 3 deletions

View File

@ -338,6 +338,8 @@ namespace RageCoop.Client
c.ModelHash=packet.ModelHash; c.ModelHash=packet.ModelHash;
c.LastStateSynced = Main.Ticked; c.LastStateSynced = Main.Ticked;
c.BlipColor=packet.BlipColor; c.BlipColor=packet.BlipColor;
c.BlipSprite=packet.BlipSprite;
c.BlipScale=packet.BlipScale;
} }
private static void VehicleSync(Packets.VehicleSync packet) private static void VehicleSync(Packets.VehicleSync packet)
{ {

View File

@ -66,10 +66,18 @@ namespace RageCoop.Client
if (c.IsPlayer) if (c.IsPlayer)
{ {
packet.BlipColor=Scripting.API.Config.BlipColor; packet.BlipColor=Scripting.API.Config.BlipColor;
packet.BlipSprite=Scripting.API.Config.BlipSprite;
packet.BlipScale=Scripting.API.Config.BlipScale;
} }
else if ((b = p.AttachedBlip) !=null) else if ((b = p.AttachedBlip) !=null)
{ {
packet.BlipColor=b.Color; packet.BlipColor=b.Color;
packet.BlipSprite=b.Sprite;
if (packet.BlipSprite==BlipSprite.PoliceOfficer || packet.BlipSprite==BlipSprite.PoliceOfficer2)
{
packet.BlipScale=0.5f;
}
} }
Send(packet, ConnectionChannel.PedSync); Send(packet, ConnectionChannel.PedSync);
} }

View File

@ -58,6 +58,17 @@ namespace RageCoop.Client.Scripting
/// Get or set player's blip color /// Get or set player's blip color
/// </summary> /// </summary>
public static BlipColor BlipColor { get; set; } = BlipColor.White; public static BlipColor BlipColor { get; set; } = BlipColor.White;
/// <summary>
/// Get or set player's blip sprite
/// </summary>
public static BlipSprite BlipSprite { get; set; } = BlipSprite.Standard;
/// <summary>
/// Get or set scale of player's blip
/// </summary>
public static float BlipScale { get; set; } = 1;
} }
/// <summary> /// <summary>
/// Base events for RageCoop /// Base events for RageCoop

View File

@ -49,6 +49,8 @@ namespace RageCoop.Client
internal string Username = "N/A"; internal string Username = "N/A";
internal Blip PedBlip = null; internal Blip PedBlip = null;
internal BlipColor BlipColor = (BlipColor)255; internal BlipColor BlipColor = (BlipColor)255;
internal BlipSprite BlipSprite = (BlipSprite)0;
internal float BlipScale=1;
internal bool DisplayNameTag { get; set; } = true; internal bool DisplayNameTag { get; set; } = true;
#endregion #endregion
@ -118,7 +120,7 @@ namespace RageCoop.Client
PedBlip.Delete(); PedBlip.Delete();
PedBlip=null; PedBlip=null;
} }
else if (PedBlip==null) else if (((byte)BlipColor != 255) && PedBlip==null)
{ {
PedBlip=MainPed.AddBlip(); PedBlip=MainPed.AddBlip();
if (IsPlayer) if (IsPlayer)
@ -137,6 +139,8 @@ namespace RageCoop.Client
}); });
} }
PedBlip.Color=BlipColor; PedBlip.Color=BlipColor;
PedBlip.Sprite=BlipSprite;
PedBlip.Scale=BlipScale;
} }

View File

@ -331,8 +331,8 @@ namespace RageCoop.Client
allPeds = World.GetAllPeds(); allPeds = World.GetAllPeds();
allVehicles=World.GetAllVehicles(); allVehicles=World.GetAllVehicles();
allProjectiles=World.GetAllProjectiles(); allProjectiles=World.GetAllProjectiles();
vehStatesPerFrame=allVehicles.Length*5/(int)Game.FPS+1; vehStatesPerFrame=allVehicles.Length*2/(int)Game.FPS+1;
pedStatesPerFrame=allPeds.Length*5/(int)Game.FPS+1; pedStatesPerFrame=allPeds.Length*2/(int)Game.FPS+1;
if (Main.Ticked%50==0) if (Main.Ticked%50==0)
{ {

View File

@ -80,6 +80,14 @@ namespace RageCoop.Core
{ {
bytes.AddRange(BitConverter.GetBytes(i)); bytes.AddRange(BitConverter.GetBytes(i));
} }
public static void AddShort(this List<byte> bytes, short i)
{
bytes.AddRange(BitConverter.GetBytes(i));
}
public static void AddUshort(this List<byte> bytes, ushort i)
{
bytes.AddRange(BitConverter.GetBytes(i));
}
public static void AddLong(this List<byte> bytes, long i) public static void AddLong(this List<byte> bytes, long i)
{ {
bytes.AddRange(BitConverter.GetBytes(i)); bytes.AddRange(BitConverter.GetBytes(i));

View File

@ -28,6 +28,8 @@ namespace RageCoop.Core
public byte WeaponTint { get;set; } public byte WeaponTint { get;set; }
public BlipColor BlipColor { get; set; } = (BlipColor)255; public BlipColor BlipColor { get; set; } = (BlipColor)255;
public BlipSprite BlipSprite { get; set; }= 0;
public float BlipScale { get; set; } = 1;
public override void Pack(NetOutgoingMessage message) public override void Pack(NetOutgoingMessage message)
{ {
@ -67,6 +69,11 @@ namespace RageCoop.Core
byteArray.Add(WeaponTint); byteArray.Add(WeaponTint);
byteArray.Add((byte)BlipColor); byteArray.Add((byte)BlipColor);
if ((byte)BlipColor!=255)
{
byteArray.AddUshort((ushort)BlipSprite);
byteArray.AddFloat(BlipScale);
}
byte[] result = byteArray.ToArray(); byte[] result = byteArray.ToArray();
message.Write(result.Length); message.Write(result.Length);
@ -104,6 +111,12 @@ namespace RageCoop.Core
WeaponTint=reader.ReadByte(); WeaponTint=reader.ReadByte();
BlipColor=(BlipColor)reader.ReadByte(); BlipColor=(BlipColor)reader.ReadByte();
if ((byte)BlipColor!=255)
{
BlipSprite=(BlipSprite)reader.ReadUShort();
BlipScale=reader.ReadFloat();
}
#endregion #endregion
} }
} }