Add ServerEntities.CreateVehicle()

This commit is contained in:
Sardelka
2022-07-04 21:29:13 +08:00
parent de93af73f2
commit a53b514fec
3 changed files with 40 additions and 0 deletions

View File

@ -22,10 +22,27 @@ namespace RageCoop.Client.Scripting
API.RegisterCustomEventHandler(CustomEvents.SetEntity, SetEntity); API.RegisterCustomEventHandler(CustomEvents.SetEntity, SetEntity);
API.RegisterCustomEventHandler(CustomEvents.ServerBlipSync, ServerBlipSync); API.RegisterCustomEventHandler(CustomEvents.ServerBlipSync, ServerBlipSync);
API.RegisterCustomEventHandler(CustomEvents.DeleteServerBlip, DeleteServerBlip); API.RegisterCustomEventHandler(CustomEvents.DeleteServerBlip, DeleteServerBlip);
API.RegisterCustomEventHandler(CustomEvents.CreateVehicle, CreateVehicle);
API.Events.OnPedDeleted+=(s,p) => { API.SendCustomEvent(CustomEvents.OnPedDeleted,p.ID); }; API.Events.OnPedDeleted+=(s,p) => { API.SendCustomEvent(CustomEvents.OnPedDeleted,p.ID); };
API.Events.OnVehicleDeleted+=(s, p) => { API.SendCustomEvent(CustomEvents.OnVehicleDeleted, p.ID); }; API.Events.OnVehicleDeleted+=(s, p) => { API.SendCustomEvent(CustomEvents.OnVehicleDeleted, p.ID); };
} }
private void CreateVehicle(CustomEventReceivedArgs e)
{
API.QueueAction(() =>
{
var veh = World.CreateVehicle((Model)e.Args[1],(Vector3)e.Args[2],(float)e.Args[3]);
veh.CanPretendOccupants=false;
var v = new SyncedVehicle()
{
ID=(int)e.Args[0],
MainVehicle=veh,
OwnerID=Main.LocalPlayerID,
};
EntityPool.Add(v);
});
}
private void DeleteServerBlip(CustomEventReceivedArgs e) private void DeleteServerBlip(CustomEventReceivedArgs e)
{ {
if (EntityPool.ServerBlips.TryGetValue((int)e.Args[0], out var blip)) if (EntityPool.ServerBlips.TryGetValue((int)e.Args[0], out var blip))

View File

@ -26,6 +26,7 @@ namespace RageCoop.Core.Scripting
internal static readonly int DeleteServerProp = Hash("RageCoop.DeleteServerProp"); internal static readonly int DeleteServerProp = Hash("RageCoop.DeleteServerProp");
internal static readonly int DeleteEntity = Hash("RageCoop.DeleteEntity"); internal static readonly int DeleteEntity = Hash("RageCoop.DeleteEntity");
internal static readonly int DeleteServerBlip = Hash("RageCoop.DeleteServerBlip"); internal static readonly int DeleteServerBlip = Hash("RageCoop.DeleteServerBlip");
internal static readonly int CreateVehicle = Hash("RageCoop.CreateVehicle");
/// <summary> /// <summary>
/// Get a Int32 hash of a string. /// Get a Int32 hash of a string.
/// </summary> /// </summary>

View File

@ -117,6 +117,28 @@ namespace RageCoop.Server
return prop; return prop;
} }
/// <summary>
/// Create a vehicle
/// </summary>
/// <param name="owner">Owner of this vehicle</param>
/// <param name="model">model</param>
/// <param name="pos">position</param>
/// <param name="heading">heading of this vehicle</param>
/// <returns></returns>
public ServerVehicle CreateVehicle(Client owner,Model model,Vector3 pos,float heading)
{
if(owner == null) { throw new ArgumentNullException("Owner cannot be null"); }
ServerVehicle veh = new(Server)
{
ID=RequestNetworkID(),
Model=model,
_pos= pos,
};
owner.SendCustomEvent(CustomEvents.CreateVehicle,veh.ID, model, pos, heading);
Vehicles.Add(veh.ID, veh);
return veh;
}
/// <summary> /// <summary>
/// Create a static <see cref="ServerBlip"/> owned by server. /// Create a static <see cref="ServerBlip"/> owned by server.
/// </summary> /// </summary>