Fraktions-System Gestaltung

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
  • Moin,


    ich bin gerade am überlegen, wie ich mein Fraktions-System


    am besten gestalten kann. Vorab;


    Der Spieler sollte die Möglichkeit haben, in allen Fraktionen gleichzeitig zu sein,
    dafür würde eine einzelne Variable (z.B PlayerInfo[playerid][pFraktion]) wohl nicht ausreichen.
    Ich habe mir bisher 2 vorgestellt.
    Auf dem Server gibt es 5 Fraktionen.


    1.)


    Ich verwende in meinem Spieler Enum, einen Array Namens pFraktion,


    dieser hat die Größe 6, damit ich die 0 im Array nicht verwenden muss.


    Das SAPD ist auf dem Server die Fraktions-ID 1.


    Ich würde nun also wenn ich den Spieler dieser Fraktion hinzufügen möchte,


    folgendes tun: PlayerInfo[playerid][pFraktion][1] = 1; // true,


    oder, wenn ich diesen entfernen möchte:


    PlayerInfo[playerid][pFraktion][1] = 0;//false


    Die andere Option wäre:
    2)
    Ich weise meinem Array, unabhängig von der Reihenfolge einfach Fraktions IDs zu,
    Beispiel: PlayerInfo[playerid][pFraktion][0] = 3; // "slot" 0 des Spieler Fraktions-Arrays ist nun


    die Fraktion 3 zugewiesen. Damit es nicht zu Überschreibungen kommt, würde ich jedesmal


    abfragen, ob die Fraktions-ID schon irgendeiner dieser "Slots" zugewiesen wurde.



    Ich hoffe mal, ihr konntet es einigermaßen verstehen.


    Was denkt ihr ? Was wäre besser?


    LG

  • Es kommt darauf an, wie komplex dein System sein wird. Grundsätzlich würde ich zu Version 1 tendieren, da das wesentlich einfacher von der Gestaltung ist.


    Ich würde grundsätzlich von Methode 2 abraten, wenn du nicht gerade hochkomplexe Systeme einplanst, die eine gewisse "Priorität" beachten und bewerten müssen. ^^
    Also wie gesagt, es ist rein von deinem Vorhaben abhängig. Wenn du näher erläuterst was du vorhast, kann man dir ggf. noch was anderes vorschlagen.


    LG

  • Vielleicht ist es zu viel des ganzen, aber ich würde da tendenziell auf bit flags zurück greifen.


    Einstieg in binäre Operatoren:
    https://forum.sa-mp.com/showthread.php?t=177523


    Erläuterung bit-flags in einem enum:
    https://forum.sa-mp.com/showthread.php?t=216730


    Es könnte dann folgend aussehen (ungetestet):


    Beispiel Funktion:



    Code
    stock IsPlayerCop(playerid) {
    return (playerInfo[playerid][pFactions] & FACTION_LSPD || playerInfo[playerid][pFactions][pFactions] & FACTION_FBI)
    }

    Sollte eigentlich funktionieren.

  • Beitrag von iiTzFabs ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Fail ().