コード例 #1
0
        public void DoWork()
        {
            TTRPG.Api.consoleOutput("Started Update Player PlayTime Thread");

            while (!_interuped)
            {
                List <Client> players = TTRPG.Api.getAllPlayers();

                foreach (Client player in players)
                {
                    if (player.hasSyncedData("loggedin") && (bool)player.getSyncedData("loggedin"))
                    {
                        player.setSyncedData("PlayTime", player.getSyncedData("PlayTime") + 1);

                        UpdatePlayerPlayTimeDisplay(player);
                        // Add one RP for playtime
                        RpLevelManager.AddRpToPlayer(player, 1, false);

                        if (player.getSyncedData("PlayTime") % 60 == 0)
                        {
                            PayDayManager.SendPayDay(player);
                        }
                    }
                }

                Thread.Sleep(60000);
            }
        }
コード例 #2
0
        private void OnEntityEnterColShapeHandler(ColShape shape, NetHandle entity)
        {
            if (TTRPG.Api.getEntityType(entity) == EntityType.Player &&
                shape.getData("bergwerk_colshape") != null &&
                (bool)shape.getData("bergwerk_colshape"))
            {
                Client player = TTRPG.Api.getPlayerFromHandle(entity);

                if (player.isInVehicle && player.vehicle.getData("job_bergwerk_bulldozer") != null)
                {
                    Vector3 markerPosition = (Vector3)shape.getData("position");

                    List <Vector3> markers = _alreadyUsedPositions.Get((int)player.getSyncedData("ID"));

                    bool found = false;

                    foreach (Vector3 position in markers)
                    {
                        if (position.DistanceTo(markerPosition) < 1)
                        {
                            markers.Remove(position);
                            found = true;
                            break;
                        }
                    }

                    if (found)
                    {
                        player.triggerEvent("job_bergwerk_destroyMarker", markerPosition);

                        if (markers.Count == 0)
                        {
                            player.vehicle.delete();
                            _alreadyUsedPositions.Remove((int)player.getSyncedData("ID"));

                            int money = _marker.Length * 42;
                            int newEp = (int)Math.Ceiling(_marker.Length * 0.5);

                            MoneyManager.ChangePlayerMoney(player, (float)money / 2, false, MoneyManager.Categorys.Job,
                                                           "BergwerksJob Barzahlung", "");
                            PayDayManager.AddIncomeToPayDay(player, (double)money / 2, PayDayManager.Category.Job,
                                                            true);
                            RpLevelManager.AddRpToPlayer(player, newEp, true);


                            player.sendChatMessage(
                                "~b~Vorarbeiter Karl sagt: Hier hast du schon mal die Hälfte deines Verdienstes auf die Hand: " +
                                (money / 2).ToString("C2") + "!" +
                                "Den Rest bekommst als Gehalt beim PayDay... Das Gesetz will es halt so :-/");
                        }
                        else
                        {
                            ChatHelper.SendChatNotificationToPlayer(player, "~b~Job Info",
                                                                    "~b~Sehr gut! Dann fehlen ja nur noch " + markers.Count + " Positionen.");
                        }
                    }
                }
            }
        }