Kluger Kopf gesucht! Das neue Clone Id System.

  • Hallo zusammen,

    für CW:RP 3.0.0 gibt es ein neues Clone Id System. Hier einmal alle Änderungen im Überblick:

    • Spieler können / müssen keine Clone Id mehr selbst bestimmen.
    • Es kann jetzt pro Rang eingestellt werden, ob eine Clone Id existiert (nicht mehr nur pro Fraktion).
    • Man kann Rängen nun eine Custom (Lore) Id zuweisen, die statt der eigenen Clone Id genutzt wird.
    • Bessere Darstellung (XX-XXXX)

    Ich denke die Änderungen machen das System deutlich flexibler und leichter. Der Grund wieso man keine eigenen Ids mehr eingeben kann ist, dass die Validierung, ob die Id schon vergeben ist nur unnötig Zeit kostet und es Code technisch sehr doof zu implementieren ist (da die Validierung asynchron sein müsste). Meinungen gerne erwünscht!

    Die aktuelle Situation (EGM:RP):

    Aktuell ist es so, dass die Unique Id eines Charakters als Clone Id verwendet wird. Jeder Charakter hat eine einzigartige Id, die er beim Erstellen bekommt. Das ist einfach eine Zahl die hochzählt.

    Der erste erstellte Charakter hat die Id 1, der zweite die 2 und so weiter (aktuell sind wir bei CW:RP bei ca. 16000).

    Nun werden vor die Charakter Id einfach Nullen gepackt bis 6 Stellen erreicht sind und ein Minus nach 2 Stellen eingefügt (156 wird zu 00-0156).

    Das "Problem":

    Das System ist im Grunde genommen super, weil es flexibel, aber auch sehr leicht ist. Außerdem muss man für Charaktere wie Jedis etc keine Id mehr angeben und es spart die Validierung.

    Nun stört aber eine Sache: Die Ids sehen sich alle sehr ähnlich, da einfach nur hochgezählt wird. Die ersten Stellen der Id werden also besonders bei frischen Servern einfach nur aus Nullen bestehen. Das soll geändert werden!

    Wir haben zwar schon eine Lösung, aber vielleicht sind einige von euch ja kreativer. Wir suchen Ideen für einen Algorithmus, der eine Zahl aus maximal 6 Stellen in eine Clone Id im Format XX-XXXX verwandelt! Wichtig ist, dass die entstandene Clone Id komplett einzigartig ist. Keine Sorge, ihr müsst keinen Algorithmus programmieren, es reicht eine überlegte Antwort.

    Das ist tatsächlich keine leichte Aufgabe, aber vielleicht gibt es hier den ein oder anderen schlauen Kopf, dem was einfällt.

    Bei Fragen, fragt einfach!

    Mit freundlichen Grüßen,
    Pascal

  • Meine Idee wäre ein Datum. So kann es nicht sich ähneln und nicht das selbe sein. Mann nimmt dd-mm-ss, als Tag, Monat und Sekunde So ist jede ID einzgartig, man braucht keine Abfrage ob die ID schon vorhanden ist, aber die IDs werden alle ein wenig ähnlich aussehen

    "Nur ein Scheiss Dev" ~Gez. Ruben

  • Meine Idee wäre ein Datum. So kann es nicht sich ähneln und nicht das selbe sein. Mann nimmt dd-mm-ss, als Tag, Monat und Sekunde So ist jede ID einzgartig, man braucht keine Abfrage ob die ID schon vorhanden ist, aber die IDs werden alle ein wenig ähnlich aussehen

    Auch ein sehr interessanter Ansatz, der mir noch gar nicht in den Sinn kam. Problem ist, dass mehrere Charaktere zur gleichen Zeit (oder x Jahre später zum gleichen Tag, zur gleichen Minute) erstellt werden können, wodurch die Einzigartigkeit verloren geht.

  • Die Sekunde soll auich die Einzigartigkeit garantieren

    Evenutell geht milli Sekunden so schnell kommen sicher keine Anfragen

    Es gehen nur Sekunden und es kann in der gleichen Sekunde sein, dass mehrere Charaktere erstellt werden. Natürlich sehr selten, aber man muss für alle Eventualitäten gewappnet sein. Und selbst wenn du Sekunden machst hast du noch das Problem, dass du diese extrem große Zahl (z.B. 1521153575) auf 6 Stellen kürzen musst.

  • Meine Idee wäre ein Datum. So kann es nicht sich ähneln und nicht das selbe sein. Mann nimmt dd-mm-ss, als Tag, Monat und Sekunde So ist jede ID einzgartig, man braucht keine Abfrage ob die ID schon vorhanden ist, aber die IDs werden alle ein wenig ähnlich aussehen

    Jetzt klaut der mir meine Idee !

    Somebody: Whats a Witcher? New minecraft monster?

    *Music intensifies !!!!11111!!!!!!!

    Me: Silver for monsters, STEEL FOR HUMANS!

    tumblr_p7ajnfuNom1ujkkfno1_540.jpg

  • Man kann doch einfach einen Array nehmen der eine pro stelle random Zahl ausspuckt sollte die Reihenfolge vergeben sein startet er neu.

    Dann müsste man das bei jeder Charaktererstellung machen, für die Anfrage nach Verfügbarkeit jedes Mal eine SQL Query machen (die asynchron ist, weswegen das generell fast nicht möglich ist) und dann auch noch die ID an alle networken. Das macht wenig Sinn. Es soll wirklich aus der auf jedem Client vorhandenen ID eine Clone ID berechnet werden.

  • Die schwiergikeit dabei wäre die Zufälligkeit. Optimal löst man dass, indem man dafür sorgt das keine Anfrage gestellt werden muss ob diese ID schon existiert, damit hat man kein Networking und somit eine Schnelle Generation der ID.

    Das Datum bzw Uhrzeit ist etwas das uniqe ist und daher nicht öfters vorkommt, ich stimme zu solche Anfragen können theoretisch zur selben Zeit durchgeführt werden.

    Die Frage ist also was ist Uniqe also einmalig und kann nie den Selben Wert haben

    Meine Meinung, ist die chance auf Duplikation immer da wenn man nicht will das es gecheckt wird.

    Was man tun kann ist die Chance darauf zu minimieren. MeinVorschlag daher:

    Man nehme die Steam64ID und davon die letzten 6 Zahlen. DIe Chance auf duplikation ist daher ziemlich gering. Alternativ kann man es noch etwas verbessern in dem man von hinten an jede zweite zahl nimmt.

    Wenn man den parameter mit der Network abfgrage ausnimmt ist eine andere Lösung also eine wie diese unsinnig, da man einfach einen Random wert generieren lassen kann und dannn checkt ob dieser existert

    "Nur ein Scheiss Dev" ~Gez. Ruben

  • Ich würde es feiern, wenn man die Lore-Chars ihre ID in einem System eingespeichert werden und aus diesen ID eine neue "erschaffen" wird.Wäre das Möglich?

    Heißt sagen wir

    CT-7567

    Die 7 wird übernommen

    CT-21-0408

    Die 2 wird übernommen und so weiter und so fort.Würde ich voll geil finden.

    Discord-Verwaltung

    ✉ Konversation erstellen | obXucOj.png Boost#6544 | stpa38Z.png Steam-Profil

    Ehemaliger Communitymanager | Ehemaliger Superadmin |  Ehemaliger 104th Wolfpack Lieutenant Sauron | Ehemalig Hoher General Dean Kairos

    Post

    1BN5JlQ.png

    dhHg91u.jpg

  • Ich meine die Quersumme Von P4sca1(Zahlen bleiben Zahlen und Buchstaben =ASCII Wert) x die CID also die unique id des Charakters, Erweiterung wäre man teilt durch die Quersumme von oninoni und addiert dann die Quersumme von Konsti oder airfox, da müssten dann ziemlich interessante Zahlen rauskommen 😂

    Aktuelle Posten

    EGM:RP Developer

    Discord & Teamspeakbot Entwicklung

  • Man nimmt die letzten 4 Zahlen der Steam64ID,nimmt die zahlen von tag,monat,sekunde und addiert sie mit den 4 Zahlen der Steam64ID und lässt daraus zufällig 6 zahlen rausziehen.

    GOTT

    Source Map Creator, Lua-, Java-, C#-, Unity, Unreal- und Web-Developer!

    Founder of Alphavex.com

    Ehemalige Posten:


    TWD:RP Senior-Moderator

    CW:RP Admin

    TTT Admin

    Teamspeak Admin

    Military:RP Admin

    SWTOR:RP Developer
    TWD:RP Developer
    Einfach Minecraft Developer

    Prison:RP Serverleiter

  • Man nimmt die letzten 4 Zahlen der Steam64ID,nimmt die zahlen von tag,monat,sekunde und addiert sie mit den 4 Zahlen der Steam64ID und lässt daraus zufällig 6 zahlen rausziehen.

    das kann sich aber wieder überschneiden

    Aktuelle Posten

    EGM:RP Developer

    Discord & Teamspeakbot Entwicklung