Thanks now it’s only start one time.
But i have a Problem with the Spawn from the Scooter. Somtime’s the Faggio Spawn and i am in the Car and the Numberplate is right but Sometime’s it’s not working.
I am Sitting i a NPC Car and the Number Plate is on this Car. But i don’t know the Reason.
The Call from the Client Side
TriggerServerEvent(“rentroller:spawn”, spawnPos);
The Rent Roller Server Side
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using CitizenFX.Core;
using CitizenFX.Core.Native;
using static CitizenFX.Core.Native.API;
namespace FiveMGamemodeServer.Rentroller
{
internal class Rentroller : BaseScript
{
// Spieler → Fahrzeug
private static Dictionary<int, int> playerVehicles = new Dictionary<int, int>();
public Rentroller()
{
Debug.WriteLine("[Rentroller] Script geladen");
EventHandlers["rentroller:spawn"] += new Action<Player, Vector3>(SpawnVehicle);
EventHandlers["rentroller:return"] += new Action<Player>(ReturnVehicle);
EventHandlers["playerDropped"] += new Action<Player, string>(OnPlayerDropped);
}
public void SpawnVehicle([FromSource] Player player, Vector3 pos)
{
int source = int.Parse(player.Handle);
Debug.WriteLine($"[Rentroller] SpawnVehicle aufgerufen von {player.Name}");
if (playerVehicles.ContainsKey(source))
{
int existingVehicle = playerVehicles[source];
if (DoesEntityExist(existingVehicle))
{
SendChat(player, "❌ Du hast bereits einen Rentroller.");
TriggerClientEvent(player, "fcnr:ShowNotification", "Roller Mieten", "❌ Du hast bereits ein Roller gemietet.", "error");
return;
}
playerVehicles.Remove(source);
}
int ped = GetPlayerPed(player.Handle);
uint model = (uint)GetHashKey("faggio");
int vehicle = CreateVehicle(model, pos.X, pos.Y, pos.Z, GetEntityHeading(ped), true, true);
if (vehicle == 0)
{
Debug.WriteLine("[Rentroller] Vehicle Spawn fehlgeschlagen");
return;
}
SetVehicleNumberPlateText(vehicle, "RENT");
SetPedIntoVehicle(ped, vehicle, -1);
playerVehicles[source] = vehicle;
Debug.WriteLine($"[Rentroller] Roller gespawnt für {player.Name}");
TriggerClientEvent(player, "Roller Mieten", "Du hast dir erfolreich ein Roller gemietet.", "success");
SendChat(player, "🛴 Dein Rentroller wurde gespawnt.");
return;
}
private void ReturnVehicle([FromSource] Player player)
{
int source = int.Parse(player.Handle);
if (!playerVehicles.ContainsKey(source))
{
SendChat(player, "❌ Du hast keinen Rentroller.");
return;
}
int vehicle = playerVehicles[source];
if (DoesEntityExist(vehicle))
{
DeleteEntity(vehicle);
}
playerVehicles.Remove(source);
SendChat(player, "🛴 Rentroller zurückgegeben.");
}
private void OnPlayerDropped(Player player, string reason)
{
int source = int.Parse(player.Handle);
if (!playerVehicles.ContainsKey(source))
return;
int vehicle = playerVehicles[source];
if (DoesEntityExist(vehicle))
{
DeleteEntity(vehicle);
}
playerVehicles.Remove(source);
Debug.WriteLine($"[Rentroller] Roller gelöscht (Disconnect) {player.Name}");
}
private void SendChat(Player player, string message)
{
TriggerClientEvent(player, "chat:addMessage", new
{
args = new[] { "RENT", message }
});
}
}
}