Ich nutze c# mit der Bridge. Gibt es einen Weg, die eindeutige ID eines Clients zu erhalten.
Leider finde ich im WIKI nichts passendes dazu.
Client ID
- Simon
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Könntest ja mal zeigen was du vor hast normal, wenn du ein Void machst, kannst du dort den Parameter "Client" angeben.
-
Ich möchte ein Login-System machen. Dazu habe ich eine Klasse User, die ist aktuell noch ziemlich leer.
Aufjedenfall soll für jeden eingeloggten Client ein Objekt User erstellt werden, in welchem dann Daten verwaltet werden (Level, Geld, etc). Ich kann dann mit Hilfe des Objektes auf die Daten zugreifen.Ich muss nun aber jedem User-Objekt einem Client zuweisen.
Deswegen wollte ich eine Liste von allen User-Objekten machen, welche einem Client zugewiesen sind.
Sobald ein Event/Command aufgerufen wird, kann ich dann mit Hilfe des Clients das User-Objekt finden und die Daten lesen/schreiben.Es wäre sehr einfach, wenn es in irgendeiner Form (Am besten numerisch) eine ID gibt, die einen Clienten identifiziert.
Bisher habe ich eine sortedDictonaryList<Client,User>. Das Problem ist, das die Regel zur Sortierung beim Client implementiert werden muss. Ich möchte an dieser Klasse aber nichts verändern.
Mal Beispiel-Code:
Code: User.cs
Alles anzeigenpublic class User { public int level { get; set; } public User() { } public void loadUser() { } public void updateUser() { } }
Code: Main.cs
Alles anzeigenpublic class Main : Script { SortedDictionary<Client, User> users = new SortedDictionary<Client, User>(); [RemoteEvent("OnPlayerLoginAttempt")] public void OnPlayerLoginAttempt(Client client, string username, string password) { //[...] User user = new User(); users.Add(client, user); } [Command("level")] public void SetLevel(Client client, int level) { if (users.TryGetValue(client, out User user)) { Console.WriteLine($"Level vorher: {user.level}"); user.level = level; Console.WriteLine($"Level nachher: {user.level}"); } } }
Fehlermeldung: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: At least one object must implement IComparable.
-
Mach es so.
C
Alles anzeigenclass User { public int level { get; set; } public int fraktion { get; set; } public User(int level, int fraktion) { this.level = level; this.fraktion = fraktion; } } class XYZ { public void OnLogin(Client player) { User userInfo = new userInfo(1, 1); // int level, int fraktion // wenn du vielleicht noch was ändern willst userInfo.level = 2; // end player.SetData("UserInfo", userInfo); } public void OnXYZ(Client player) { if(!player.HasData("UserInfo")) return; User userInfo = player.GetData("UserInfo"); NAPI.Util.ConsoleOutput("Level: " + userInfo.level); NAPI.Util.ConsoleOutput("Fraktion: " + userInfo.fraktion); // neues level userInfo.level = 10; } }
-
Dankeschön, das hatte ich mitlerweile auch herausgefunden :D.
-
dennismitzwein
Hat das Thema aus dem Forum Scripting Base nach Scripting Base verschoben. -
breadfish.de
Hat das Thema geschlossen.