Arrays setzen

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,
    man kennt es, dass man beim Disconnecten immer die Variablen löschen sollte bzw. auf 0 setzen sollte.
    Bei Arrays muss man scheinbar jedes mal jedes Array einzeln setzen. D.h.


    accounts[playerid][Geld] = 0;
    accounts[playerid][Sonstiges] = 0;


    Nun wollte ich mal wissen, ob es vielleicht ne Möglichkeit gibt, die nicht alle auf 0 zu setzen, sondern theoretisch das ENUM auszuwählen und alle Variablen für einen Spieler auf 0 zu setzen.
    Wäre nett.


    LG

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Ja das ist möglich.
    Aber dann solten auch alle Werte normale Integers sein.
    Sobald ein String oder ein array oder float oder sonst was in dem Enum sind wird es einen
    Server crash (Nicht komplettabsturz nur an der Stelle) geben.



    for(new j = 0; j < sizeof(ENUMNAME); j++)
    {
    Variable[playerid][ENUMNAME:j] = 0;
    }


    Grüße

    ik bin der vito c:

  • Ja das ist möglich.
    Aber dann solten auch alle Werte normale Integers sein.
    Sobald ein String oder ein array oder float oder sonst was in dem Enum sind wird es einen
    Server crash (Nicht komplettabsturz nur an der Stelle) geben.


    Den Letzten Teil glaube ich dir nicht. Wieso sollte es dann Crashen ? Darf man etwa einem String (Array) oder Float nicht den Wert 0 zuweisen ?
    Es wird mit Sicherheit nicht crashen.

  • Mit sizeof vom enum-Name funktioniert es nicht.


    So kannst du es machen, ohne dass es Fehler gibt:
    enum Test {
    meinInt,
    Float:meinFloat,
    meinString[10],
    Text3D:meinLabel,
    Text:meinTD
    }
    new Variable[MAX_PLAYERS][Test];


    public OnFilterScriptInit()
    {
    new playerid = 0;
    format(Variable[playerid][meinString],10,"Hi");
    printf("meinString: %s",Variable[playerid][meinString]);
    for(new j = 0; j < sizeof(Variable[]); j++)
    {
    Variable[playerid][Test:j] = 0;
    printf("Teil %d gelöscht.", j);
    }
    printf("meinString: %s",Variable[playerid][meinString]);
    print("Passt alles.");
    return 1;
    }


    Wie du siehst, stürzt nichts ab:


    Warum sind das 14 Teile?
    Darum:
    enum Test {
    meinInt, //0
    Float:meinFloat, //1
    meinString[10], //2,3,4,5,6,7,9,8,10,11
    Text3D:meinLabel, //12
    Text:meinTD //13
    }