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); } }
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"); } }