예제 #1
0
        public void DoWork()
        {
            TTRPG.Api.consoleOutput("Started Clean Vehicles Thread");

            while (!_interuped)
            {
                List <NetHandle> vehicles = TTRPG.Api.getAllVehicles();
                foreach (NetHandle handle in vehicles)
                {
                    Vehicle veh = TTRPG.Api.getEntityFromHandle <Vehicle>(handle);

                    int maxIdleTime = -1;
                    if (veh.getSyncedData("MaxIdleTime") != null)
                    {
                        maxIdleTime = (int)veh.getSyncedData("MaxIdleTime");
                    }

                    if (veh.occupants.Length == 0 && veh.health > 0 && maxIdleTime != -1)
                    {
                        // Idle
                        DateTime lastUsage = (DateTime)veh.getData("last-driver-time");

                        if (DateTime.Now.Subtract(lastUsage).TotalMilliseconds >= maxIdleTime && VehiclesHelper.GetDistanceToSpawnLocation(veh) >= 0.5)
                        {
                            VehiclesHelper.RespawnVehicle(veh, true);
                        }
                    }
                    else if (veh.health <= 0)
                    {
                        DateTime lastUsage = (DateTime)veh.getData("last-death-time");

                        // destroyed
                        if (maxIdleTime != -1 &&
                            DateTime.Now.Subtract(lastUsage).TotalMilliseconds >= maxIdleTime)
                        {
                            VehiclesHelper.RespawnVehicle(veh, true);
                        }
                        else if (DateTime.Now.Subtract(lastUsage).TotalMilliseconds >= 300000)
                        {
                            veh.delete();
                        }
                    }
                }


                // Run Thread only every Minutes
                Thread.Sleep(60000);
            }
        }