• Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

All Activity

This stream auto-updates   

  1. Yesterday
  2. Hallo erst mal, ich(Unity Anfänger) arbeite gerad an einem Virtuellen Haus, durch das man sich bewegen kann. folgendes Problem habe ich: wenn ich zu nah an den Wänden komme, kann ich teilweise Durchlaufen bzw. Durchsehen. ich habe verschiedene Collider und Rigidbody versucht leider kein Erfolg gehabt ich nutze "OculusUtilities" von Unity ich hoffe mir kann jemand Helfen. Mit freundlichen Grüßen Oskopnir
  3. Hallo, ich versuche die Position von Object Cube über Script zu verändern. Editor schimpft : has not bin assigned und markiert im VS die Zeile mit " newPos = new Vector3( 0, 1, 0); " Ich weiß das ich Cube im Editor auf den Script ziehen muss, dann klappt auch alles. meine Frage ist geht das zuweisen auch ohne Editor, nur über Script? MfG using System.Collections; using System.Collections.Generic; using UnityEngine; public class Zugriff_von_aussen : MonoBehaviour { public Cube_Rotate Cube_Control_von_aussen; public Transform Cube_Transform; // Use this for initialization void Start () { Vector3 newPos = Cube_Transform.position; newPos = new Vector3( 0, 1, 0); Cube_Transform.position = new Vector3 (0, 5, 6); } // Update is called once per frame void Update () { } }
  4. Ich hab das jetzt nicht nochmal überprüft, aber soweit ich weiß hast du bei dem Color Constructor zwei Hauptmöglichkeiten.. entweder drei Floats, in einer Range zwischen 0f bis 1f, oder drei Ints zwischen 0 und 255 Kurzgesagt, mach einfach mal die 'f' weg..
  5. Grüße! Ich versuche seit geschlagenen 30 min die Farbe eine Buttons mit Script hin zu bekommen. Leider hilft mir die Unity Erklärung nicht viel weiter und meistenteils wird zur Farberklärung nur per vordefinierter Farbe gearbeitet (.red oder .green). Habe nun das hier, erzeugt aber einen Fehler: ZahlAnzeige.GetComponent<Button>().colors.normalColor = new Color(122f, 122f, 122f); Warum gibt er mir das als Fehler aus, ich weiße ihm doch eine neue Farbe zu? Danke!
  6. Hi, das Design wirkt super und die Schriftgröße ist auch okay. Was ich ändern würde, aber das ist Geschmackssache, bzw nicht gang und gäbe. Man kann die Menü-Buttons auch z.B. links in Richtung Bildschirmrand verschieben. Viele haben so einen großen Klingelkasten und ich sehe öfters, dass die eine Hand vom Handy wegnehmen müssen um einen Button in der Mitte zu drücken. Würde mich nerven... Aber wie gesagt... Geschmackssache und nicht gang und gäbe.
  7. Hi, dein erster Absatz wirft ein paar Fragen auf und sollte in einzelne Aufgaben oder Teile zerlegt werden. Frage: Wie stellst Du dir das mit der Werbung vor? Das habe ich nicht verstanden. Soll der Spieler dein Spiel werben um Power-Up's zu erhalten, oder Werbung schauen? Die Informationen zu den jeweiligen Power-Up's usw solltest Du auf einen Server speichern.
  8. Funktioniert, danke!
  9. Ich will, dass mein Spiel die Power Ups der Spieler erhält (durch Einkauf oder Werbung) stapelt bzw anhäuft wie in einem Inventar. Diese sollen im Hauptmenu angezeigt werden können mit Icons und in der Spielszene soll man sie dann benutzen können durch Buttons (genau das gleiche Prinzip in in Angry Birds). Ich brauche kein Inventar sondern nur das, was ich oben erwähnt habe. Ach ja, da es ein 2D Online spiel wird, soll ich sie auf einem Server speichern oder auf dem Gerätespeicher?
  10. Zurücksetzen müsste so gehen: private float resetTimeStamp = 0f; private void Reset() { resetTimeStamp = Time.time; } private void Update() { timer = Time.time - resetTimeStamp; int stunden = Mathf.FloorToInt(timer / 60f / 60f); int minuten = Mathf.FloorToInt(timer / 60f); int sekunden = Mathf.FloorToInt(timer - minuten * 60 - stunden * 60 * 60); Debug.Log(string.Format("{0:00}:{1:00}:{2:00}", stunden, minuten, sekunden)); }
  11. Ach so, ok, schau ich mir mal an. Mal noch eine Frage, auch wenn sie vermutlich recht einfach zu beantworten ist. Wie kann ich den Timer wieder auf 0 setzen? Reicht es dazu aus, die Variablen wieder auf 0 zu setzen?
  12. Hatte ich doch schon was zu geschrieben, siehe oben.
  13. Erst mal Danke für die Antwort, ZerOCool. Das Script funktioniert ohne Probleme. Leider habe ich immer noch das Problem das der Text herum wackelt, da zum Beispiel die 1 wesendlich schmaler ist als die 9. Man könnte nun mit drei Textanzeigen arbeiten. Aber gibt es da auch einen eleganteren Weg? Nagut möglichkeit wäre auch den Text nicht zu zentrieren und anstelle dessen ihn linksbündig zu machen. Da ist aber auch wieder das Problem wenn von 00:00:59 auf 00:01:00 gewechselt wird, es wieder eine Breitenänderung gibt.
  14. Ist es möglich ein importiertes Material eines FBX Objektes durch ein Substance Material zu ersetzen ?

    Wichtig dabei ist das das Ursprungsmaterial ersetzt wird damit bei weiteren FBX Imports mit dem gleichen Material automatisch das Substance Material verwendet wird.

     

    Jemand eine Ahnung ?? 

    1. malzbie

      malzbie

      So ne Technik gibt's glaub ich nicht.
      Aber wenn du einmal ein Substance Mat geschaffen hast und dem FBX Mesh zugewiesen hast, dann kannst du das Mesh nachträglich ruhig verändern und die FBX File immer überschreiben. Die Verbindung zum Mesh (prefab) bleibt erhalten.
      Man kann FBX auch ohne Material ex-importieren.

    2. Harlyk

      Harlyk

      Hey Malzbie, ja das weiß ich es geht nur darum das ich anschließend mehrere FBX Dateien importieren wollte (mit dem gleichen Mat) und nicht jedem das Material erneut zuweisen möchte, dies sollte durch den Ersetzungsvorgang automatisiert werden. Schade das sowas nicht geht.

    3. malzbie

      malzbie

      Ach so.

      Du ich glaube dises Sache geht, denn ich habe (von Cinema4D raus) immer die FBXe eportiert und da wurde dann ein unbenanntes Mat mit exportiert. Diesem No-Name Mat hatte ich dann irgendwann einmal ein UV Muster gegeben und seitdem sind alle neuen Objekte, die so rein kommen, mit dem veränderten Mat bestückt.
      Probier's mal aus.

  15. OK ich werds mal testen! EDIT: So, ich habs mal ausgetestet, die Klammer war es leider nicht, hätte mir viel Arbeit erspart. Ich musste es wirklich so machen, wie es malzbie schon schrieb, in extra Variablen packen, irgendwie ist er mit GetComponent und GetComponentInChildren nicht zurecht gekommen. Jetzt klappts, vielen Dank euch beiden!
  16. Schau mal, ob daß dein Problem löst. Ansonsten musst du einen Monospace Font verwenden, oder es gibt wohl auch einen Tag bei TextMeshPro, der einen Text in Monospace verwandelt: http://digitalnativestudios.com/textmeshpro/docs/rich-text/#mspace private void Update() { float timer = Time.time; int stunden = Mathf.FloorToInt(timer / 60f / 60f); int minuten = Mathf.FloorToInt(timer / 60f); int sekunden = Mathf.FloorToInt(timer - minuten * 60 - stunden * 60 * 60); Debug.Log(string.Format("{0:00}:{1:00}:{2:00}", stunden, minuten, sekunden)); }
  17. Ich denke da fehlt an einer bestimmten Stelle noch eine Klammersetzung, da er vermutlich das ToString() auf das GO "zahlAnzeige1" und nicht auf die Zahl selbst bezieht. Hier mal ein Versuch einer Klammersetzung: steuerung.zahlAnzeige1.GetComponentInChildren<Text>().text = (steuerung.zahlAnzeige1.GetComponent<Zahlenwert>()).zahlenwert.ToString(); Aber ist auch ziemlich unleserlicher Code und ich würde es lieber "entwirren", indem du noch einmal eine Hilfsvariable erzeugt, z.b. wie Malzbie es vorgeschlagen hat.
  18. Scheinbar mag er das GetComponent in der Zuweisung nicht. Hast du mal versucht dein Zahlenwert Script vorher einer Variablen zuzuweisen? Also: Zahlenwert werte; werte=steuerung.zahlAnzeige1.GetComponent<Zahlenwert>(); und dann einfach werte.zahlenwert dem Text zuzuweisen. Ob mit ToString() oder einfach mal so oder auch als ""+zahlenwert . Oder vielleicht liegt es auch an dem Bezeichner Zahlenwert als Scriptname und zahlenwert als Variable. Vielleicht hast du dich ja irgendwo verschrieben. Ich persönlich würde niemals eine Variable so nennen wie das Script heisst und nur einen Buchstaben groß oder klein schreiben. Sowas verwirrt schon sehr.
  19. Grüße Ich habe mir einen kleinen Timer gebaut: private void Update() { if (pause == false) { timer = Time.time; stunden = Mathf.FloorToInt(timer); minuten = Mathf.FloorToInt(timer / 60f); sekunden = Mathf.FloorToInt(timer - minuten * 60); zeitAnzeige.text = string.Format("{00:00:00}:{00:01:00}:{00:00:02}", stunden, minuten, sekunden); } } Das gute Stück funktioniert sogar, jedoch nur in der Anzeige Minuten und Sekunden. Ich finde den Fehler einfach nicht, sehr ihr ihn? Des weiteren ich lasse den Timer in einem GUI Text anzeigen, jedoch sieht das zur Zeit recht unschön aus, da die Anzeige bei jeder Änderung der Zeit hin und her wackelt, bedingt durch die unterschiedlich breiten Zahlen. Gibt es da hier eine Möglichkeit, dies zu unterbinden? Danke schon mal und Grüße von Kojote
  20. Grüße! Ich habe gerade ein Problem mit der ToString Methode. Ich habe folgende vor mir: private Steuerprogramm steuerung; steuerung.zahlAnzeige1.GetComponentInChildren<Text>().text = "?"; // FUNKTIONIERT steuerung.zahlAnzeige1.GetComponentInChildren<Text>().text = steuerung.zahlAnzeige1.GetComponent<Zahlenwert>().zahlenwert.ToString(); Ich beziehe die Daten aus einer anderen Klasse, dazu nutze ich die Variable "steuerung". Wenn ich den Text in der zweiten Zeile ändere, funktioniert es ohne Probleme. Wenn ich die dritte Teile nutzen will und hier auch den Text ändern will, kommt statt einer Zahl die in der Komponente "Zahlenwert" hinterlegt ist, folgendes: Zahl Anzeige 1 (Zahlenwert) Ich wandle doch einfach nur einen Integer Wert in String um, in einer anderen Zeile, funkionirt dies auch: summeAnzeige1.text = summe1.ToString(); Sehr ihr den Fehler?
  21. Moin Moin! Geld ist Zeit also nur ein kleines Update: Das "Inventory UI" ist nahezu fertig. Vieles ist bereits auf etliche Konflikte getestet und bietet alle gewohnten Funktionen. Stacken, splitten, sortieren usw. Es gibt verschiedene Implementierungen für "Kisten". Da wären Slots und einfache Container(Grid View). Beide sind über zwei Enums (Type und subType) einschränkbar, für z.B. Equipment oder Useables. Alles wird zentral in einer Dictionary verwaltet. Ein paar Dinge sind mehrfach in unterschiedlicher Ausführung, wie z.B. das Hover-Menue und der Selektor. (Leider kein Bild) Spannender: Netcode. Ich habe begonnen eine erste Implementierung nach Link zu realisieren. Läuft ganz gut -> Client-Prediction fertig. Server-Reconciliation fertig. Entity-Interpolation fertig. Server-Prediction ist (right now) in arbeit. (Bild - oben rechts) Noch spannender: Die theoretischen Probleme der Voxelfarm-Implementierung konnte ich beseitigen. Die arbeiten am autoritativen "Climpmap View" laufen. Gerne würde ich mehr schreiben und auch eine spielbare Demo zeigen. Doch ich nutze momentan jede Sekunde möglichst effizient. Vielleicht in 1-2 Monaten. Mit freundlichen Grüßen (jegliches Design, ist, wenn überhaupt, durch Zufall entstanden. Alles Free-Assets. Ähnlichkeiten zu Minecraft sind nicht gewünscht und werden später wegfallen)
  22. Last week
  23. Also, mal grundsätzlich: "Never trust the client!" - Der Client sollte keinen Hash generieren. Sondern den Hash generiert der Server und schickt ihn an den Client und der Client authorisiert sich damit am Server. - Den Hash würde ich auch rein zufällig generieren lassen und nicht aus Daten, die man theoretisch in Erfahrung bringen könnte (also Username, Passwort, etc). - Soweit ich das sehe, schickst du das Passwort im Klartext durchs Netz. Das sollte man, wenn möglich, schon gleich auf dem Client hashen. - Und das Passwort NIEMALS im Klartext in der DB speichern. (sieht so aus, als machst du das) - Warum du "WHERE username LIKE ?" machst, ist nicht nachzuvollziehen. Ich glaube, du solltest dich erst mal ein bisschen in Client/Server Kommunikation (mit Schwerpunkt PHP) aufschlauen, bevor du das "produktiv" einsetzt. Du kannst mich da gerne mal direkt anhauen. Das führt im Forum wahrscheinlich etwas zu weit und ist ja auch thematisch eher nicht so passend.
  24. Ich kenne das nur über Baldurs Gate, ja da gibt es andere Werte aber ich habe mir da schon einfach zum Level angepasst etwas einfallen lassen.
  25. Hallo Zusammen, ich versuche gerade folgendes umzusetzen: Ich möchte unterschiedliche Charakter-Körperteile zu einem neuen Charaktern zusammensetzen. Hierbei sollen ihre individuellen Animiationen weiterhin funktionieren. Mit "zusammensetzen" meine ich --> es werden Kopf / Hände / Körper / Füße / Flügel .... von verschiedenen Charakter radom ausgetauscht und es entsteht ein neues Wesen. Wenn man zb. einen Troll und ein Spinnenwesen mischt entsteht zb. ein: Troll Kopf / Troll Körper / Spinnenfüsse / Spinnenarme - Wesen Dieses neue Troll-Spinnen-Wesen kann erneut mit einem anderen Charakter vermischt werden. Dadurch entsteht wieder ein neues Wesen. Spinnen-Troll-Wesen vermischen mit Adler = z.B. ein Spinnen-Troll-Wesen mit Flügeln und Krallen-Füßen usw. hoffe ihr versteht wie ich das meine. Bevor ich jetzt loslege wollte ich euch fragen wie ihr an die Sache rangehen würdet. Vielleicht hat der ein oder andere sowas oder ähnliches schonmal gemacht. Meine Vorgehensweise wäre wie folgt: 1. Jeder Charakter einzeln modeln / riggen / animieren 2. Jeden Charakter in Parts zerschneiden (Kopf / Körper / Arme / Füße / Sonstige Teile wie Schwanz, Flügel usw.) 3. Alle Parts einzeln rausspeichern immer mit dem gesamten Rig 4. Alle Animationen rausspeichern 5. In Unity die einzelnen Charakter-Parts wieder zusammenbauen 6. mit Mechanim Generic die Animatinen definieren Wenn nun ein Charakter mit einem anderen gemischt wird, werden sozusagen 2 Rigs ineinander gesteckt. Alle Parts die nicht benötigt werden, werden dann ausgeblendet. Dabei bleiben Animationen erhalten. Im schlimmsten Fall (also wenn 5 unterschiedliche Charakter gemischt werden) stecken 5 Rigs ineinander wovon man jeweils nur die entsprechenden Parts sieht. Ob das so gut ist weiß ich nicht, also was die Performance angeht. Ich bin mir nicht sicher ob das der richtige Weg ist oder ob es vielleicht einen besseren Workflow gibt. Freue mich auf Antwort. Gruß
  26. Hallo zusammen, ich habe relativ wenig Ahnung wenn es um die Sicherheit von Datenbank zugriffen geht. Ich habe mir folgendes gedacht. Ich erstelle ein Hash was sich aus Username,Passwort,Salt, und einem Timestamp von der Datenbank zusammensetzt. Also bevor man Scripte aufruft, die wichtige Funktionen haben wird erst mal der Timestamp geholt von dem letzden Datenbank zugriff. C# public init_regist init_regist; public hash_test hash_test; public void OnTriggerEnter(Collider Other) { StartCoroutine(server_ts(init_regist.Username,init_regist.Passwort)); } public IEnumerator server_ts( string Username,string Passwort) { WWWForm form = new WWWForm(); form.AddField("username", Username); form.AddField("passwort", Passwort); WWW webRequest = new WWW("http://hostin(.................).net/last_login.php", form); yield return webRequest; if (webRequest.text != null) { hash_test.last_login_ts = (int.Parse(webRequest.text)); hash_test.createhashtest (); } else { Debug.Log(webRequest.text); } } php: <?php $servername = "hahah"; $un = "hihihi"; $pw = "hohoho"; $dbname = "hehehe"; $eingelogt =false; $username = $_POST["username"]; $passwort = $_POST["passwort"]; $last_login_server= 0; $conn = new mysqli($servername, $un, $pw, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $param = $username; $stmt = $conn->prepare("SELECT passwort FROM i(...)t WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($passwort2); while ($stmt->fetch()) { if($passwort2==$passwort) { $eingelogt = true; }else{ echo "error"; $stmt->close(); $conn->close(); } } $param = $username; $stmt = $conn->prepare("SELECT last_login FROM i(...)t WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($last_login_server); while ($stmt->fetch()) { echo ($last_login_server); } $conn->close(); ?> Nachdem das C# Script den Timestamp hat wird der Hash in Unity generiert. Und zum Server geschickt. public init_regist init_regist; public hash_helper hash_helper; public trigger_ts trigger_ts; public static int last_login_ts; static string salt = "|husdhuisdh"; public void createhashtest() { string securehash = init_regist.Username+init_regist.Passwort+salt+last_login_ts ; string hash = hash_helper.Md5Sum (securehash); Debug.Log (hash); StartCoroutine(sichere_con(init_regist.Username, init_regist.Passwort, hash)); } public IEnumerator sichere_con( string Username, string Passwort, string hash) { WWWForm form = new WWWForm(); form.AddField("username", Username); form.AddField("passwort", Passwort); form.AddField("hash", hash); WWW webRequest = new WWW("http://hos(.......)h_test.php", form); yield return webRequest; if (webRequest.text != null) { Debug.Log("securehash php :" +webRequest.text); } else { Debug.Log(webRequest.text); } } zum Php Script: <?php $servername = "........"; $un = "....."; $pw = "......."; $dbname = "......"; $eingelogt =false; $username = $_POST["username"]; $passwort = $_POST["passwort"]; $csharphash= $_POST["hash"]; $salt= "|husdhuisdh"; $last_login_server= 0; $last_login_server_neu= time(); $belastung=0; $securehash= "test"; $conn = new mysqli($servername, $un, $pw, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $param = $username; $stmt = $conn->prepare("SELECT passwort FROM i(.....)t WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($passwort2); while ($stmt->fetch()) { if($passwort2==$passwort) { $eingelogt = true; }else{ echo "falsches PW"; $stmt->close(); $conn->close(); } } $param = $username; $stmt = $conn->prepare("SELECT last_login FROM i(....)t WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($last_login_server); while ($stmt->fetch()) { $securehash = $_POST["username"].$_POST["passwort"].$salt.$last_login_server; if (md5($securehash) === ($csharphash) ) { //DO STUFF! echo "ES KLAPPT"; }else{ $stmt->close(); $conn->close(); } } $stmt = $conn->prepare("UPDATE i(....)t SET last_login=? WHERE username = ?"); $stmt->bind_param('ss', $last_login_server_neu, $username); $stmt->execute(); $conn->close(); ?> Und zuletzt noch die Hash helper Class womit der Hah erzeugt wird. public string Md5Sum(string strToEncrypt) { System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding(); byte[] bytes = ue.GetBytes(strToEncrypt); // encrypt bytes System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] hashBytes = md5.ComputeHash(bytes); // Convert the encrypted bytes back to a string (base 16) string hashString = ""; for (int i = 0; i < hashBytes.Length; i++) { hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, '0'); } return hashString.PadLeft(32, '0'); } Ich merke grade das es sehr viel Code ist, sorry aber wollte lieber mal den kompletten ablauf posten. Ist das mit dem Hash + Timestamp so in Ordnung? Reicht das als Sicherheit aus??
  27. Jo. Gern geschene. Kurze anmerkung noch: HP gibt es bei AD&D nicht. Hab ich ganz vergessen. Dort wird alles über die Konstitution und Stärke und andere Dinge geregelt. Da musst du dir also wohl eigene Gedanken machen. Aber das ist ja auch nicht so schlimm.
  1. Load more activity