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.LastStateSynced = Main.Ticked;
c.BlipColor=packet.BlipColor;
c.BlipSprite=packet.BlipSprite;
c.BlipScale=packet.BlipScale;
}
private static void VehicleSync(Packets.VehicleSync packet)
{

View File

@ -66,10 +66,18 @@ namespace RageCoop.Client
if (c.IsPlayer)
{
packet.BlipColor=Scripting.API.Config.BlipColor;
packet.BlipSprite=Scripting.API.Config.BlipSprite;
packet.BlipScale=Scripting.API.Config.BlipScale;
}
else if ((b = p.AttachedBlip) !=null)
{
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);
}

View File

@ -58,6 +58,17 @@ namespace RageCoop.Client.Scripting
/// Get or set player's blip color
/// </summary>
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>
/// Base events for RageCoop

View File

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

View File

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

View File

@ -80,6 +80,14 @@ namespace RageCoop.Core
{
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)
{
bytes.AddRange(BitConverter.GetBytes(i));

View File

@ -28,6 +28,8 @@ namespace RageCoop.Core
public byte WeaponTint { get;set; }
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)
{
@ -67,6 +69,11 @@ namespace RageCoop.Core
byteArray.Add(WeaponTint);
byteArray.Add((byte)BlipColor);
if ((byte)BlipColor!=255)
{
byteArray.AddUshort((ushort)BlipSprite);
byteArray.AddFloat(BlipScale);
}
byte[] result = byteArray.ToArray();
message.Write(result.Length);
@ -104,6 +111,12 @@ namespace RageCoop.Core
WeaponTint=reader.ReadByte();
BlipColor=(BlipColor)reader.ReadByte();
if ((byte)BlipColor!=255)
{
BlipSprite=(BlipSprite)reader.ReadUShort();
BlipScale=reader.ReadFloat();
}
#endregion
}
}