Ich brauche Hilfe

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
  • Hallo Community,
    Ich habe versucht zu machen das wenn man auf den server kommt eine nachricht für alle erschein : [Name] hat sich ins Spiel eingeklinkt!


    public OnPlayerConnect(playerid)
    {
    format(string, sizeof(string), "%s hat sich ins Spiel eingeklinkt!", plname);
    SendClientMessageToAll(0xAAAAAAAA, string);
    return 1;
    }
    }


    und wenn ich compiliere kommt ein warning

    C:\DOKUME~1\KOYOUN~1\Desktop\NE71B8~1\GAMEMO~1\gtarp.pwn(2857) : warning 225: unreachable code
    C:\DOKUME~1\KOYOUN~1\Desktop\NE71B8~1\GAMEMO~1\gtarp.pwn(44511) : warning 203: symbol is never used: "GetPointDistanceToPointExMorph"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    Header size: 9508 bytes
    Code size: 1639252 bytes
    Data size: 10416888 bytes
    Stack/heap size: 16384 bytes; estimated max. usage=4466 cells (17864 bytes)
    Total requirements:12082032 bytes


    2 Warnings.


    der warning " warning 203: symbol is never used: "GetPointDistanceToPointExMorph""


    is nich so schlimm


    Ich hab ein Häschen für dich!
    (\_/)
    (^.^)
    (u u)
    U--U

  • [MR]Max ist gar nicht mal so falsch...


    public OnPlayerConnect(playerid)
    {
    format(string, sizeof(string), "%s hat sich ins Spiel eingeklinkt!", plname);
    SendClientMessageToAll(0xAAAAAAAA, string);
    return 1;
    }
    Hast Du diesen Schnipsel wirklich ganz oben in der OnPlayerConnect
    Funktion stehen, dass wundert mich natürlich der Fehler nicht.


    Machs einfach mal so...


    public OnPlayerConnect(playerid)
    {
    new namestr[125];
    new spielername[MAX_PLAYER_NAME];

    format(namestr, sizeof(namestr), "%s hat sich ins Spiel eingeklingt.", spielername);
    SendClientMessageToAll(0xFFFFFFFF, namestr);

    ...

    return 1;
    }

  • 4#Future:
    namestr muss nicht die Größe 125 haben.
    " hat sich ins Spiel eingeklingt." hat 32 Zeichen.
    Dazu kommen für MAX_PLAYER_NAME 24. Das macht insgesamt 57 (Ein Zeichen ist EOS (End of String))
    Um ein Bisschen Puffer zu haben ist es sinnvoll den Array etwas größer zu nehmen, man weiß ja nicht ob die nächste Version größere Spielernamen akzeptiert.
    Also würde ich dir empfehlen 2^6 = 64 zu nehmen. Da ein Wert bei einem Array wieder für den Index im Arbeitsspeicher steht, ist die Größe 63 zu empfehlen.
    125-63 = 62. Wenn man dadurch 62kByte reduzieren kann, dann macht sich das auf den ganzen Gamemode durchaus bemerkbar.

  • Ich weiß nicht ob es eine Laune von Dir ist, mich vielleicht zu ärgern
    oder Dein "Wissen" über String Längen Preis zu geben, aber naja...


    Das der String nicht 125 Zeichen hat, kann ich tatsächlich auch lesen,
    aber ich mache mir nicht die Mühe und jedes Zeichen zu zählen, wobei
    das Problem selber sowieso damit nichts zu tun hat.


    Ob 125 oder 125000 Zeichen ist dem String sowieso schweiß egal,
    denn er kann sowieso nur die Zeichen verwenden, die ihm zustehen
    bzw. die in dem String definiert sind.


    Aber wenn Du wirklich so ein Erbsenzähler bist, dann bitte ;)

    Meiner Meinung nach völlig unangebracht und lächerlich, zu dem ich
    den Nutzern bei Ihren Problemnen helfen möchte und keine Beratungsstunde
    für String Längen gebe ^^

  • Du sollst den Usern auch nicht eine Beratungsstunde über Stringlängen geben.
    Was genau meinst du mit

    Zitat von 4#Future


    Ob 125 oder 125000 Zeichen ist dem String sowieso schweiß egal,
    denn er kann sowieso nur die Zeichen verwenden, die ihm zustehen
    bzw. die in dem String definiert sind.


    Wenn man einen String (in PAWN ist das ein IntegerArray) deklariert, dann wird dieser auch bei jedem Funktionsaufruf beziehungsweise beim Laden des Scriptes deklariert.
    Wenn du mir jetzt erzählen willst, dass du mal so locker flockig einen IntegerArray mit der Größe 125.000 deklarieren willst ohne an Performance einzubüsen, dann musst du schon etwas höheres als Gott sein.

  • Zitat

    Ob 125 oder 125000 Zeichen ist dem String sowieso schweiß egal,
    denn er kann sowieso nur die Zeichen verwenden, die ihm zustehen
    bzw. die in dem String definiert sind.


    Performencetests sind da vollkommen anderer Meinung.


    Das sollte funktionieren:

    public OnPlayerConnect(playerid)
    {
    new namestr[57];
    new spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, spielername, sizeof(spielername))
    format(namestr, sizeof(namestr), "%s hat sich ins Spiel eingeklingt.", spielername);
    SendClientMessageToAll(0xFFFFFFFF, namestr);

    ...

    return 1;
    }
    Die Stringlänge reicht.


    Edit: Char vergessen.

  • Man nennt es Beispiel oder in diesem Falle eher übertriebens Beispiel,
    um zu demonstrieren, was man meint (es ist keine Metapher ^^).


    Ich diskutiere da nicht herum...
    Klugscheißerei ignoiere ich grundsätzlich und daher ist das Thema auch
    für mich vom Tisch.


    Und ja ein Integer mit 125.000 Zeichen, macht den Server bestimmt
    mehr zuschaffen, als eines mit 125 Zeichen, aber war das denn die Frage?


    Nein, nein, nein... Thema beendet - ich gebe Dir Recht und habe meine Ruhe ;)
    Mit Klugscheißerei kommste bei mir nicht an.