Thema: enum

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
  • Nabend.
    Ich habe eine kleine Frage:
    Ist das richtig:
    enum IRGENDWAS
    {
    KA[32],
    Float:KA2,
    KA3;
    }
    oder
    enum IRGENDWAS
    {
    KA[32],
    Float:KA2,
    KA3;
    };
    ?
    Ich meine jetzt den Strickpunkt am Schluss. Kann ich den weglassen oder ist er notwendig?
    Denn bis heute hab ich ihn immer weggelassen ohne Error beim compilen.
    Hat das irgendwelche Folgen?

  • enum IRGENDWAS
    {
    KA[32],
    Float:KA2,
    KA3
    };

    Nach dem letzten kannst du Komma machen oder nicht, aber nach } muss ein Strichpunkt sein.


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Das Problem ist, dass der Server manchmal zufällig crasht und ich finde einfach keine Bugs. Ich logge viel in der Serverlog und ich werde einfach nicht schlau. Nie ist bei einem Crash die selbe Situation. Eine Ausnahme: Bei einem Derby ist Server immer abgestürzt. Wieso?
    Wegen einer Variable mit einem enum. Ich habe vergessen, diese Variable (eine Integer) zu setzen, z.B. =5 oder =1. Diese Variable war dann für eine Multiplikation notwendig. Und was geschah? Server crasht jedes mal, wenn diese Variable multipliziert werden sollte.
    Weiter kommt allerdings hat alles, was vor dem Crash zuletzt geschah, etwas mit irgendwelche enums zu tun.
    Letztens ist der Server mitten in diesem Command gecrasht: PASTEBIN
    Woher weiss ich, dass er mitten in diesem Command gecrasht ist?
    Wegen den Crashs habe ich folgendes angewendet:
    public OnPlayerCommandText(playerid,cmdtext[]){if(OnPlayerCommandTextEx(playerid,cmdtext))printf("Erfolgreich!");return 1;}
    Alle Commands sind in OnPlayerCommandTextEx(...) und das return IMMER mit 0, wenn es keine Bugs gibt.
    Der Spieler benutzt "/erlaubnis hunter". Der Command war NICHT erfolgreich, Server crashte. Aus welchen Gründen auch immer.
    Nun würde mich interessieren: Was ist da der Bug?! Ich kein beim besten Willen keinen finden :S
    Weiter: Führt der Server verschiedene Sachen im Script gleichzeitig aus? Denn dann würde das für mich heissen, dass der Bug auch woanders sein kann.
    Wenn nicht, dann ist da irgendwo ein Bug, oder jemand hat den Server gecrasht.
    Weiter ist seltsam, dass der Server nur Abends crasht. :S
    Zusammenfassung: Kann es sein, dass ein enum den Server crasht oder dass jemand meinen Server crasht?

  • Zitat


    Eine Ausnahme: Bei einem Derby ist Server immer abgestürzt. Wieso?


    Ohne Source ist sowas immer schwer zu sagen.Kann viele Möglichkeiten haben.Meistens
    kommt es vor das in Datein geschrieben wird die nicht existieren oder wenn man über ein Array hinnaus schreibt.
    ( new Test[MAX_PLAYERS]; new var=2423; Test[var]=-1; )
    Das einzige was wirklich hilft ist den Server mit noch mehr Debug Nachrichten vollzupappen oder
    gleich ganze Teile zu entfernen damit man den Bereich wo der Fehler sein könnte von vorne rein
    eingeschränkt ist.Früher oder später findest du den Fehler / die Fehler dann sicherlich.


    Crasht der Server denn immer bei "/erlaubnis hunter" oder tat er das nur einmal?


    Zitat

    Führt der Server verschiedene Sachen im Script gleichzeitig aus? Denn dann würde das für mich heissen, dass der Bug auch woanders sein kann.


    Nein,tut er nicht.Pawn arbeitet alles einzelnt nacheinander ab.


    Zitat

    Zusammenfassung: Kann es sein, dass ein enum den Server crasht oder dass jemand meinen Server crasht?


    Ein Enum kann den Server nicht crashen,es ist eigentlich nichts Anderes als ein Array,Arrays crashen
    ja auch nicht.Vorrausgesetzt
    man benutzt sie richtig und nicht wie oben falsch.

  • Das mit dem Derby ist etwas, was ich eben lösen konnte (das wieso war irgendwie rhetorisch :X). Ich benutzte diese Variable: GivePlayerMoneyWithText(winner,MinigameInfo[DERBY][STARTED_PLAYER_COUNT]*3500);
    Ich hatte da vergessen für MinigameInfo[DERBY][STARTED_PLAYER_COUNT] eine Zahl zu setzen. Da crashte der Server. Als ich dann MinigameInfo[DERBY][STARTED_PLAYER_COUNT]++; gemacht habe, was notwendig war, crashte es nicht mehr.
    Seltsam ist, dass der Server (Linux) crashte, weil ich es nicht gesetzt hatte. Eigentlich sollte das doch einfach ==0 gewesen sein. Naja, es ist behoben.
    Wenn der Server nun alles einzeln,nacheinander ausführt, und im Command kein Bug ist, crasht dann einer also den Server? X(
    //Edit:

    Zitat

    Crasht der Server denn immer bei "/erlaubnis hunter" oder tat er das nur einmal?


    Ja. Nur das eine Mal. Ich habe einmal ein FS gemacht, das bei jedem Callback ein printf macht, um zu schauen, was Server crasht. Keine Regelmässigkeiten. Ausser das mit dem Derby, was offensichtlich war, da es immer dort crashte.
    Ich glaube, jemand crasht den Server -.-

  • Zu dem Semicolon ';'.
    Es ist ein Trennzeichen.
    Es kann am ende des Argumentes/Befehles stehen.
    PAWNO nutzt den zwangs Parameter.
    Im orginal PAWN wäre dies hier kein Problem:
    new x = 5 // Zu beachten das = kann auch in manchen Fällen entfernt werden!
    while x > 0 {
    --x
    }
    Ab Version 3.x muss bei der While die Argumentenklammer stehen.


    Folglich geht auch das bei PAWN(O):
    new x = 5; while(x > 0) {
    --x;
    }
    Das ; trennt also Befehle in mehreren Zeilen. ;)

  • ROOOOOOOOOOOOOOOOOOOOOOOOOOOFL!
    Der Bug beim Derby mit "ungesetzter" Variable die da =0 sein sollte: Es lag nicht daran!
    Ich bin durch Zufall auf etwas gestossen, was Server crashte: Beim Derby und auch gerade eben beim abliefern eines Fahrzeuges:
    stock GivePlayerMoneyWithText(playerid,amount)
    {
     new money=GivePlayerMoneyEx(playerid,amount);
      new string[32];
     if(money>0)
      format(string,sizeof(string),"~g~+$%d",money);
     else if(money<0)
      format(string,sizeof(string),"~r~-$%d",money*-1);
     GameTextForPlayer(playerid,string,0,1);
     return amount;
    } Ein Gametext mit leerem String!
    In der Funktion wird String nicht formatiert, wenn Betrag ==0, z.B. beim Derby. Beim /erlaubnis hunter genau das selbe. Ein Bug, den ich schon vor dem Post gefixt hatte, spuckte ebenfalls ein leeres String aus beim Gametext => CRASH!
    Ich habs! Ich hab die Lösung gefunden! SCHEISSE.
    => Leerer Gametext crasht Server!

  • Nicht umbedingt crasht etwas leeres:
    SendClientMessage(playerid, 4278190250, '\0');
    Crasht z.B. bei mir nicht.
    ('\0' kann auch eos in manchen PAWN Versionen heißen. Es ist das Ende von einem String. Es wird normaler Weise nie mitgeschrieben. ;x)
    Ich sollte vllt mal eine genaue Syntax von PAWN demnächst posten.

  • new string[128]; SendClientMessage(playerid,0xFFAAFFFF,string); crasht.
    Der GivePlayerMoney-Bug ist noch nicht ganz behoben, Server ist nochmals gecrasht. Und ich finde jetzt wirklich nichts-.-
    public GivePlayerMoneyEx(playerid,amount)
    {
    new money;
    if(GetPlayerMoneyEx(playerid)+amount>MAX_POCKET_MONEY)
    money=MAX_POCKET_MONEY-GetPlayerMoneyEx(playerid);
    else
    money=amount;
    PlayerInfo[PLAYER_MONEY][playerid]+=money;
    GivePlayerMoney(playerid,money);
    return money;
    }


    stock GivePlayerMoneyWithText(playerid,amount)
    {
    if(amount==0)
    return 0;


    new money=GivePlayerMoneyEx(playerid,amount);
    new string[32];
    if(money>0)
    format(string,sizeof(string),"~g~+$%d",money);
    else if(money<0)
    format(string,sizeof(string),"~r~-$%d",money*-1);
    GameTextForPlayer(playerid,string,0,1);
    return amount;
    }

    Wo kann es noch Probleme geben? Leer ist der String ja nicht mehr.