예제 #1
0
        void SendToPrison(BasePlayer player, string prisonName, double time)
        {
            int cellNumber = GetEmptyCell(prisonName);

            object spawnLocation = GetSpawnLocation(prisonName, cellNumber);

            if (spawnLocation is Vector3)
            {
                PrisonerEntry entry = new PrisonerEntry
                {
                    cellNumber  = cellNumber,
                    prisonName  = prisonName,
                    releaseDate = time + GrabCurrentTime(),
                    x           = player.transform.position.x,
                    y           = player.transform.position.y,
                    z           = player.transform.position.z
                };
                prisoners[player.userID] = entry;
                if (SaveInventory(player))
                {
                    player.inventory.Strip();
                    MovePosition(player, (Vector3)spawnLocation);
                    CheckIn(player, prisonName);
                }
            }
        }
예제 #2
0
        private void FreeFromJail(BasePlayer player)
        {
            PrisonerEntry entry = prisoners[player.userID];

            prisons[entry.prisonName].occupiedCells[entry.cellNumber] = false;
            MovePosition(player, configData.ReturnHomeAfterRelease ? new Vector3(entry.x, entry.y, entry.z) : CalculateFreePosition(entry.prisonName));
            RestoreAllInventory(player);
        }
예제 #3
0
        private void RestoreAllInventory(BasePlayer player)
        {
            player.inventory.Strip();
            PrisonerEntry entry = prisoners[player.userID];

            timer.In(1, () =>
            {
                foreach (var container in entry.savedInventory)
                {
                    RestoreItems(player, container.Value, container.Key);
                }
                timer.In(1, () => prisoners.Remove(player.userID));
            });
        }