Cleaned up
This commit is contained in:
@ -10,7 +10,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>RageCoop.Client</RootNamespace>
|
<RootNamespace>RageCoop.Client</RootNamespace>
|
||||||
<AssemblyName>RageCoop.Client</AssemblyName>
|
<AssemblyName>RageCoop.Client</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
|
@ -46,8 +46,7 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
foreach (int id in new List<int>(PedsByID.Keys))
|
foreach (int id in new List<int>(PedsByID.Keys))
|
||||||
{
|
{
|
||||||
if (keepPlayer&&(id==Main.LocalPlayerID)) { continue; }
|
if (keepPlayer && (id==Main.LocalPlayerID)|| keepMine && (PedsByID[id].OwnerID == Main.LocalPlayerID)) { continue; }
|
||||||
if (keepMine&&(PedsByID[id].OwnerID==Main.LocalPlayerID)) { continue; }
|
|
||||||
RemovePed(id);
|
RemovePed(id);
|
||||||
}
|
}
|
||||||
PedsByID.Clear();
|
PedsByID.Clear();
|
||||||
@ -88,31 +87,31 @@ namespace RageCoop.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region PEDS
|
#region PEDS
|
||||||
public static SyncedPed GetPedByID(int id)
|
public static SyncedPed GetPedByID(int id) => PedsByID.ContainsKey(id) ? PedsByID[id] : null;
|
||||||
{
|
public static SyncedPed GetPedByHandle(int handle) => PedsByHandle.ContainsKey(handle) ? PedsByHandle[handle] : null;
|
||||||
return PedsByID.ContainsKey(id) ? PedsByID[id] : null;
|
public static List<int> GetPedIDs() => new List<int>(PedsByID.Keys);
|
||||||
}
|
|
||||||
public static SyncedPed GetPedByHandle(int handle)
|
|
||||||
{
|
|
||||||
return PedsByHandle.ContainsKey(handle) ? PedsByHandle[handle] : null;
|
|
||||||
}
|
|
||||||
public static List<int> GetPedIDs()
|
|
||||||
{
|
|
||||||
return new List<int>(PedsByID.Keys);
|
|
||||||
}
|
|
||||||
public static bool AddPlayer()
|
public static bool AddPlayer()
|
||||||
{
|
{
|
||||||
Ped p = Game.Player.Character;
|
Ped p = Game.Player.Character;
|
||||||
SyncedPed player = GetPedByID(Main.LocalPlayerID);
|
SyncedPed player = GetPedByID(Main.LocalPlayerID);
|
||||||
if (player!=null)
|
if (player==null)
|
||||||
{
|
{
|
||||||
if (player.MainPed!=p)
|
Main.Logger.Debug($"Creating SyncEntity for player, handle:{p.Handle}");
|
||||||
|
SyncedPed c = new SyncedPed(p);
|
||||||
|
Main.LocalPlayerID = c.OwnerID = c.ID;
|
||||||
|
Add(c);
|
||||||
|
Main.Logger.Debug($"Local player ID is:{c.ID}");
|
||||||
|
PlayerList.SetPlayer(c.ID, Main.Settings.Username);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.MainPed != p)
|
||||||
{
|
{
|
||||||
// Player model changed
|
// Player model changed
|
||||||
player.MainPed = p;
|
player.MainPed = p;
|
||||||
|
|
||||||
// Remove it from Handle_Characters
|
// Remove it from Handle_Characters
|
||||||
var pairs = PedsByHandle.Where(x => x.Value==player);
|
var pairs = PedsByHandle.Where(x => x.Value == player);
|
||||||
if (pairs.Any())
|
if (pairs.Any())
|
||||||
{
|
{
|
||||||
var pair = pairs.First();
|
var pair = pairs.First();
|
||||||
@ -126,17 +125,6 @@ namespace RageCoop.Client
|
|||||||
PedsByHandle.Add(p.Handle, player);
|
PedsByHandle.Add(p.Handle, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Main.Logger.Debug($"Creating SyncEntity for player, handle:{p.Handle}");
|
|
||||||
SyncedPed c = new SyncedPed(p);
|
|
||||||
Main.LocalPlayerID=c.OwnerID=c.ID;
|
|
||||||
Add(c);
|
|
||||||
Main.Logger.Debug($"Local player ID is:{c.ID}");
|
|
||||||
PlayerList.SetPlayer(c.ID, Main.Settings.Username);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public static void Add(SyncedPed c)
|
public static void Add(SyncedPed c)
|
||||||
@ -194,18 +182,9 @@ namespace RageCoop.Client
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region VEHICLES
|
#region VEHICLES
|
||||||
public static SyncedVehicle GetVehicleByID(int id)
|
public static SyncedVehicle GetVehicleByID(int id) => VehiclesByID.ContainsKey(id) ? VehiclesByID[id] : null;
|
||||||
{
|
public static SyncedVehicle GetVehicleByHandle(int handle) => VehiclesByHandle.ContainsKey(handle) ? VehiclesByHandle[handle] : null;
|
||||||
return VehiclesByID.ContainsKey(id) ? VehiclesByID[id] : null;
|
public static List<int> GetVehicleIDs() => new List<int>(VehiclesByID.Keys);
|
||||||
}
|
|
||||||
public static SyncedVehicle GetVehicleByHandle(int handle)
|
|
||||||
{
|
|
||||||
return VehiclesByHandle.ContainsKey(handle) ? VehiclesByHandle[handle] : null;
|
|
||||||
}
|
|
||||||
public static List<int> GetVehicleIDs()
|
|
||||||
{
|
|
||||||
return new List<int>(VehiclesByID.Keys);
|
|
||||||
}
|
|
||||||
public static void Add(SyncedVehicle v)
|
public static void Add(SyncedVehicle v)
|
||||||
{
|
{
|
||||||
if (VehiclesByID.ContainsKey(v.ID))
|
if (VehiclesByID.ContainsKey(v.ID))
|
||||||
@ -300,18 +279,9 @@ namespace RageCoop.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool PedExists(int id)
|
public static bool PedExists(int id) => PedsByID.ContainsKey(id);
|
||||||
{
|
public static bool VehicleExists(int id) => VehiclesByID.ContainsKey(id);
|
||||||
return PedsByID.ContainsKey(id);
|
public static bool ProjectileExists(int id) => ProjectilesByID.ContainsKey(id);
|
||||||
}
|
|
||||||
public static bool VehicleExists(int id)
|
|
||||||
{
|
|
||||||
return VehiclesByID.ContainsKey(id);
|
|
||||||
}
|
|
||||||
public static bool ProjectileExists(int id)
|
|
||||||
{
|
|
||||||
return ProjectilesByID.ContainsKey(id);
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
static int vehStateIndex;
|
static int vehStateIndex;
|
||||||
static int pedStateIndex;
|
static int pedStateIndex;
|
||||||
@ -358,27 +328,22 @@ namespace RageCoop.Client
|
|||||||
if (!ProjectilesByHandle.ContainsKey(p.Handle))
|
if (!ProjectilesByHandle.ContainsKey(p.Handle))
|
||||||
{
|
{
|
||||||
Add(new SyncedProjectile(p));
|
Add(new SyncedProjectile(p));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (SyncedProjectile p in ProjectilesByID.Values.ToArray())
|
foreach (SyncedProjectile p in ProjectilesByID.Values.ToArray())
|
||||||
{
|
{
|
||||||
|
|
||||||
// Outgoing sync
|
// Outgoing sync
|
||||||
if (p.IsLocal)
|
if (p.IsLocal)
|
||||||
{
|
{
|
||||||
if (p.MainProjectile.AttachedEntity==null)
|
if (p.MainProjectile.AttachedEntity==null)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Prevent projectiles from exploding next to vehicle
|
// Prevent projectiles from exploding next to vehicle
|
||||||
if (WeaponUtil.VehicleProjectileWeapons.Contains((VehicleWeaponHash)p.MainProjectile.WeaponHash))
|
if (WeaponUtil.VehicleProjectileWeapons.Contains((VehicleWeaponHash)p.MainProjectile.WeaponHash) &&
|
||||||
{
|
p.MainProjectile.WeaponHash != (WeaponHash)VehicleWeaponHash.Tank && p.Origin.DistanceTo(p.MainProjectile.Position) < 2)
|
||||||
if (p.MainProjectile.WeaponHash!=(WeaponHash)VehicleWeaponHash.Tank && p.Origin.DistanceTo(p.MainProjectile.Position)<2)
|
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Networking.SendProjectile(p);
|
Networking.SendProjectile(p);
|
||||||
}
|
}
|
||||||
@ -393,11 +358,8 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
p.Update();
|
p.Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i=-1;
|
i=-1;
|
||||||
@ -411,20 +373,15 @@ namespace RageCoop.Client
|
|||||||
SyncedPed c = EntityPool.GetPedByHandle(p.Handle);
|
SyncedPed c = EntityPool.GetPedByHandle(p.Handle);
|
||||||
if (c==null && (p!=Game.Player.Character))
|
if (c==null && (p!=Game.Player.Character))
|
||||||
{
|
{
|
||||||
if (allPeds.Length>Main.Settings.WorldPedSoftLimit)
|
if (allPeds.Length>Main.Settings.WorldPedSoftLimit && p.PopulationType != EntityPopulationType.RandomAmbient)
|
||||||
{
|
|
||||||
if (p.PopulationType!=EntityPopulationType.RandomAmbient)
|
|
||||||
{
|
{
|
||||||
p.Delete();
|
p.Delete();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Main.Logger.Trace($"Creating SyncEntity for ped, handle:{p.Handle}");
|
// Main.Logger.Trace($"Creating SyncEntity for ped, handle:{p.Handle}");
|
||||||
c=new SyncedPed(p);
|
c=new SyncedPed(p);
|
||||||
|
|
||||||
EntityPool.Add(c);
|
EntityPool.Add(c);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if BENCHMARK
|
#if BENCHMARK
|
||||||
@ -437,6 +394,7 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
pedStateIndex=0;
|
pedStateIndex=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (SyncedPed c in ps)
|
foreach (SyncedPed c in ps)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
@ -457,7 +415,6 @@ namespace RageCoop.Client
|
|||||||
|
|
||||||
Networking.SendPed(c, (i-pedStateIndex)<pedStatesPerFrame);
|
Networking.SendPed(c, (i-pedStateIndex)<pedStatesPerFrame);
|
||||||
#if BENCHMARK
|
#if BENCHMARK
|
||||||
|
|
||||||
Debug.TimeStamps[TimeStamp.SendPed]=PerfCounter2.ElapsedTicks-start;
|
Debug.TimeStamps[TimeStamp.SendPed]=PerfCounter2.ElapsedTicks-start;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -472,13 +429,11 @@ namespace RageCoop.Client
|
|||||||
RemovePed(c.ID, "OutOfSync");
|
RemovePed(c.ID, "OutOfSync");
|
||||||
}
|
}
|
||||||
#if BENCHMARK
|
#if BENCHMARK
|
||||||
|
|
||||||
Debug.TimeStamps[TimeStamp.UpdatePed]=PerfCounter2.ElapsedTicks-start;
|
Debug.TimeStamps[TimeStamp.UpdatePed]=PerfCounter2.ElapsedTicks-start;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if BENCHMARK
|
#if BENCHMARK
|
||||||
|
|
||||||
Debug.TimeStamps[TimeStamp.PedTotal]=PerfCounter.ElapsedTicks;
|
Debug.TimeStamps[TimeStamp.PedTotal]=PerfCounter.ElapsedTicks;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -487,7 +442,6 @@ namespace RageCoop.Client
|
|||||||
|
|
||||||
lock (VehiclesLock)
|
lock (VehiclesLock)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (Vehicle veh in allVehicles)
|
foreach (Vehicle veh in allVehicles)
|
||||||
{
|
{
|
||||||
if (!VehiclesByHandle.ContainsKey(veh.Handle))
|
if (!VehiclesByHandle.ContainsKey(veh.Handle))
|
||||||
@ -513,12 +467,9 @@ namespace RageCoop.Client
|
|||||||
// Main.Logger.Debug($"Creating SyncEntity for vehicle, handle:{veh.Handle}");
|
// Main.Logger.Debug($"Creating SyncEntity for vehicle, handle:{veh.Handle}");
|
||||||
|
|
||||||
Add(new SyncedVehicle(veh));
|
Add(new SyncedVehicle(veh));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if BENCHMARK
|
#if BENCHMARK
|
||||||
|
|
||||||
Debug.TimeStamps[TimeStamp.AddVehicles]=PerfCounter.ElapsedTicks;
|
Debug.TimeStamps[TimeStamp.AddVehicles]=PerfCounter.ElapsedTicks;
|
||||||
#endif
|
#endif
|
||||||
var vs = VehiclesByID.Values.ToArray();
|
var vs = VehiclesByID.Values.ToArray();
|
||||||
@ -527,6 +478,7 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
vehStateIndex=0;
|
vehStateIndex=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (SyncedVehicle v in vs)
|
foreach (SyncedVehicle v in vs)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
@ -543,20 +495,15 @@ namespace RageCoop.Client
|
|||||||
SyncEvents.Check(v);
|
SyncEvents.Check(v);
|
||||||
|
|
||||||
Networking.SendVehicle(v, (i-vehStateIndex)<vehStatesPerFrame);
|
Networking.SendVehicle(v, (i-vehStateIndex)<vehStatesPerFrame);
|
||||||
|
|
||||||
}
|
}
|
||||||
else // Incoming sync
|
else // Incoming sync
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
v.Update();
|
v.Update();
|
||||||
if (v.IsOutOfSync)
|
if (v.IsOutOfSync)
|
||||||
{
|
{
|
||||||
RemoveVehicle(v.ID, "OutOfSync");
|
RemoveVehicle(v.ID, "OutOfSync");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if BENCHMARK
|
#if BENCHMARK
|
||||||
@ -586,6 +533,7 @@ namespace RageCoop.Client
|
|||||||
RemovePed(p.ID);
|
RemovePed(p.ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (SyncedVehicle v in VehiclesByID.Values.ToArray())
|
foreach (SyncedVehicle v in VehiclesByID.Values.ToArray())
|
||||||
{
|
{
|
||||||
if (v.OwnerID==playerPedId)
|
if (v.OwnerID==playerPedId)
|
||||||
@ -598,10 +546,7 @@ namespace RageCoop.Client
|
|||||||
public static int RequestNewID()
|
public static int RequestNewID()
|
||||||
{
|
{
|
||||||
int ID = 0;
|
int ID = 0;
|
||||||
while ((ID==0)
|
while ((ID==0) || PedsByID.ContainsKey(ID) || VehiclesByID.ContainsKey(ID) || ProjectilesByID.ContainsKey(ID))
|
||||||
|| PedsByID.ContainsKey(ID)
|
|
||||||
|| VehiclesByID.ContainsKey(ID)
|
|
||||||
|| ProjectilesByID.ContainsKey(ID))
|
|
||||||
{
|
{
|
||||||
byte[] rngBytes = new byte[4];
|
byte[] rngBytes = new byte[4];
|
||||||
|
|
||||||
@ -619,16 +564,14 @@ namespace RageCoop.Client
|
|||||||
}
|
}
|
||||||
public static string DumpDebug()
|
public static string DumpDebug()
|
||||||
{
|
{
|
||||||
string s = "";
|
return $"\nID_Peds: {PedsByID.Count}" +
|
||||||
s+="\nID_Peds: "+PedsByID.Count;
|
$"\nHandle_Peds: {PedsByHandle.Count}" +
|
||||||
s+="\nHandle_Peds: "+PedsByHandle.Count;
|
$"\nID_Vehicles: {VehiclesByID.Count}" +
|
||||||
s+="\nID_Vehicles: "+VehiclesByID.Count;
|
$"\nHandle_vehicles: {VehiclesByHandle.Count}" +
|
||||||
s+="\nHandle_Vehicles: "+VehiclesByHandle.Count;
|
$"\nID_Projectiles: {ProjectilesByID.Count}" +
|
||||||
s+="\nID_Projectiles: "+ProjectilesByID.Count;
|
$"\nHandle_Projectiles: {ProjectilesByHandle.Count}" +
|
||||||
s+="\nHandle_Projectiles: "+ProjectilesByHandle.Count;
|
$"\npedStatesPerFrame: {pedStatesPerFrame}" +
|
||||||
s+="\npedStatesPerFrame:"+pedStatesPerFrame;
|
$"\nvehStatesPerFrame: {vehStatesPerFrame}";
|
||||||
s+="\nvehStatesPerFrame:"+vehStatesPerFrame;
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
public static class ThreadSafe
|
public static class ThreadSafe
|
||||||
{
|
{
|
||||||
|
@ -136,13 +136,10 @@ namespace RageCoop.Client
|
|||||||
var v = EntityPool.GetVehicleByID(vehId);
|
var v = EntityPool.GetVehicleByID(vehId);
|
||||||
var p = EntityPool.GetPedByID(pedId)?.MainPed;
|
var p = EntityPool.GetPedByID(pedId)?.MainPed;
|
||||||
if (v==null||p==null) { return; }
|
if (v==null||p==null) { return; }
|
||||||
if (!v.MainVehicle.IsSeatFree(seat))
|
if (!v.MainVehicle.IsSeatFree(seat) && v.MainVehicle.GetPedOnSeat(seat) != p)
|
||||||
{
|
|
||||||
if (v.MainVehicle.GetPedOnSeat(seat)!=p)
|
|
||||||
{
|
{
|
||||||
v.MainVehicle.GetPedOnSeat(seat).Task.WarpOutOfVehicle(v.MainVehicle);
|
v.MainVehicle.GetPedOnSeat(seat).Task.WarpOutOfVehicle(v.MainVehicle);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
p.SetIntoVehicle(v.MainVehicle, seat);
|
p.SetIntoVehicle(v.MainVehicle, seat);
|
||||||
}
|
}
|
||||||
private static void HandleOwnerChanged(Packets.OwnerChanged p)
|
private static void HandleOwnerChanged(Packets.OwnerChanged p)
|
||||||
@ -215,16 +212,12 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
World.CreateParticleEffectNonLooped(CorePFXAsset, "muz_assault_rifle", p.GetMuzzlePosition(), w.Rotation, 1);
|
World.CreateParticleEffectNonLooped(CorePFXAsset, "muz_assault_rifle", p.GetMuzzlePosition(), w.Rotation, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (p.VehicleWeapon!=VehicleWeaponHash.Invalid)
|
else if (p.VehicleWeapon!=VehicleWeaponHash.Invalid && p.VehicleWeapon == VehicleWeaponHash.Tank)
|
||||||
{
|
|
||||||
if (p.VehicleWeapon==VehicleWeaponHash.Tank)
|
|
||||||
{
|
{
|
||||||
World.CreateParticleEffectNonLooped(CorePFXAsset, "muz_tank", p.CurrentVehicle.GetMuzzleInfo().Position, p.CurrentVehicle.Bones[35].ForwardVector.ToEulerRotation(p.CurrentVehicle.Bones[35].UpVector), 1);
|
World.CreateParticleEffectNonLooped(CorePFXAsset, "muz_tank", p.CurrentVehicle.GetMuzzleInfo().Position, p.CurrentVehicle.Bones[35].ForwardVector.ToEulerRotation(p.CurrentVehicle.Bones[35].UpVector), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
public static void HandleEvent(PacketType type, byte[] data)
|
public static void HandleEvent(PacketType type, byte[] data)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@ -303,32 +296,10 @@ namespace RageCoop.Client
|
|||||||
Vector3 endPos = subject.LastWeaponImpactPosition;
|
Vector3 endPos = subject.LastWeaponImpactPosition;
|
||||||
if (endPos==default)
|
if (endPos==default)
|
||||||
{
|
{
|
||||||
if (i>5)
|
if (++i<=5) { return false; }
|
||||||
{
|
|
||||||
endPos=subject.GetAimCoord();
|
endPos = subject.GetAimCoord();
|
||||||
if (subject.IsInVehicle() && subject.VehicleWeapon!=VehicleWeaponHash.Invalid)
|
if (subject.IsInVehicle() && subject.VehicleWeapon != VehicleWeaponHash.Invalid)
|
||||||
{
|
|
||||||
if (subject.IsOnTurretSeat())
|
|
||||||
{
|
|
||||||
TriggerBulletShot((uint)subject.VehicleWeapon, c, endPos);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle, c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TriggerBulletShot((uint)subject.Weapons.Current.Hash, c, endPos);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (subject.IsInVehicle() && subject.VehicleWeapon!=VehicleWeaponHash.Invalid)
|
|
||||||
{
|
{
|
||||||
if (subject.IsOnTurretSeat())
|
if (subject.IsOnTurretSeat())
|
||||||
{
|
{
|
||||||
@ -346,8 +317,25 @@ namespace RageCoop.Client
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (subject.IsInVehicle() && subject.VehicleWeapon != VehicleWeaponHash.Invalid)
|
||||||
|
{
|
||||||
|
if (subject.IsOnTurretSeat())
|
||||||
|
{
|
||||||
|
TriggerBulletShot((uint)subject.VehicleWeapon, c, endPos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle, c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TriggerBulletShot((uint)subject.Weapons.Current.Hash, c, endPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!getBulletImpact())
|
if (!getBulletImpact())
|
||||||
{
|
{
|
||||||
Main.QueueAction(getBulletImpact);
|
Main.QueueAction(getBulletImpact);
|
||||||
@ -357,10 +345,8 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
TriggerBulletShot((uint)VehicleWeaponHash.Tank, c, subject.LastWeaponImpactPosition);
|
TriggerBulletShot((uint)VehicleWeaponHash.Tank, c, subject.LastWeaponImpactPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Vehicles
|
// Vehicles
|
||||||
var g = subject.IsGettingIntoVehicle;
|
var g = subject.IsGettingIntoVehicle;
|
||||||
if (g && (!c._lastEnteringVehicle))
|
if (g && (!c._lastEnteringVehicle))
|
||||||
@ -368,6 +354,7 @@ namespace RageCoop.Client
|
|||||||
var v = subject.VehicleTryingToEnter.GetSyncEntity();
|
var v = subject.VehicleTryingToEnter.GetSyncEntity();
|
||||||
TriggerEnteringVehicle(c, v, subject.GetSeatTryingToEnter());
|
TriggerEnteringVehicle(c, v, subject.GetSeatTryingToEnter());
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentSitting = subject.IsSittingInVehicle();
|
var currentSitting = subject.IsSittingInVehicle();
|
||||||
if (c._lastSittingInVehicle)
|
if (c._lastSittingInVehicle)
|
||||||
{
|
{
|
||||||
@ -391,18 +378,20 @@ namespace RageCoop.Client
|
|||||||
|
|
||||||
public static void Check(SyncedVehicle v)
|
public static void Check(SyncedVehicle v)
|
||||||
{
|
{
|
||||||
if (v.MainVehicle!=null&&v.MainVehicle.HasNozzle())
|
if (v.MainVehicle==null||!v.MainVehicle.HasNozzle())
|
||||||
{
|
{
|
||||||
if ((v.LastNozzleAngle==1) && (v.MainVehicle.GetNozzleAngel()!=1))
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((v.LastNozzleAngle == 1) && (v.MainVehicle.GetNozzleAngel() != 1))
|
||||||
{
|
{
|
||||||
TriggerNozzleTransform(v.ID, false);
|
TriggerNozzleTransform(v.ID, false);
|
||||||
}
|
}
|
||||||
else if ((v.LastNozzleAngle==0) && (v.MainVehicle.GetNozzleAngel()!=0))
|
else if ((v.LastNozzleAngle == 0) && (v.MainVehicle.GetNozzleAngel() != 0))
|
||||||
{
|
{
|
||||||
TriggerNozzleTransform(v.ID, true);
|
TriggerNozzleTransform(v.ID, true);
|
||||||
}
|
}
|
||||||
v.LastNozzleAngle=v.MainVehicle.GetNozzleAngel();
|
v.LastNozzleAngle = v.MainVehicle.GetNozzleAngel();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user