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.");
                        }
                    }
                }
            }
        }
        public void OnClientEvent(Client player, string eventName, params object[] arguments)
        {
            if (eventName.Equals("onClientStartLogin"))
            {
                string password = (string)arguments[0];

                MySqlCommand doesPlayerExistInDb = TTRPG.Mysql.Conn.CreateCommand();

                doesPlayerExistInDb.CommandText = "SELECT * FROM user WHERE Nickname = @nickname";
                doesPlayerExistInDb.Parameters.AddWithValue("@nickname", player.name);

                DataTable result = new DataTable();

                result.Load(doesPlayerExistInDb.ExecuteReader());

                string salt       = (string)result.Rows[0]["Salt"];
                string dbPassword = (string)result.Rows[0]["Password"];

                if (PasswordHelper.Hash(password, salt).Equals(dbPassword))
                {
                    // Password was correct and now Update fingerprint and last login
                    // before starting Login process
                    if (!DevServer.CheckDevServerLogin(player, result.Rows[0]))
                    {
                        MySqlCommand updateUserEntryCommand = TTRPG.Mysql.Conn.CreateCommand();
                        updateUserEntryCommand.CommandText =
                            "UPDATE user SET Last_Fingerprint = @fingerprint, Last_Login=current_timestamp() WHERE Nickname=@nickname";
                        updateUserEntryCommand.Parameters.AddWithValue("fingerprint",
                                                                       player.getSyncedData("fingerprint"));
                        updateUserEntryCommand.Parameters.AddWithValue("nickname", player.name);

                        updateUserEntryCommand.ExecuteNonQuery();

                        EnsureAllDatabaseTableEntries((Int32)result.Rows[0]["ID"]);
                        StartLoginProcess(player, result.Rows[0]);

                        player.setSyncedData("loggedin", true);
                        API.consoleOutput("Account " + player.name + "(" + player.getSyncedData("ID") + ") logged in.");
                        player.invincible = false;
                        PlayerSpawnManager.Spawn(player);

                        TTRPG.Api.exported.scoreboard.setPlayerScoreboardData(player, "ID", result.Rows[0]["ID"].ToString());
                        TTRPG.Api.exported.scoreboard.setPlayerScoreboardData(player, "Nickname", player.name);

                        MoneyManager.RefreshPlayerMoneyDisplay(player);
                        RpLevelManager.CalculateAndSetLevelOfPlayer(player);
                        RpLevelManager.RefreshPlayerRpAndLevelDisplay(player);
                        UpdatePlayerPlayTime.UpdatePlayerPlayTimeDisplay(player);
                    }
                }
                else
                {
                    player.sendNotification("System-Error", "Das Passwort, dass du eingegeben hast, ist fehlerhaft.",
                                            false);
                    player.triggerEvent("startLogin", player.name);
                }
            }
        }
        private void onClientEventHandler(Client player, string eventName, params object[] arguments)
        {
            if (eventName.Equals("stopFisherJob"))
            {
                _isUiOpen = true;
            }
            else if (eventName.Equals("payFisherJob"))
            {
                float money = (float)arguments[0];
                Int32 steps = (Int32)arguments[1];

                MoneyManager.ChangePlayerMoney(player, money, false, MoneyManager.Categorys.Job,
                                               "Fischerjob", "");

                RpLevelManager.AddRpToPlayer(player, steps, true);

                player.sendChatMessage(
                    "~b~Fischhändler Fritz sagt: Okay, diese Menge Fisch kaufe ich dir für " + money.ToString("C2") + " ab");
            }
        }