Beiträge von Jeffry

    Das sind viel zu viele Zeichen.


    168 Zeichen, ohne dass die Platzhalter ausgefüllt worden sind. Das ist zu viel. Entweder du machst es in 2 Zeilen, oder du machst die Farben weg.
    Maximum ist 144 Zeichen. Mehr wird nicht angezeigt. Wenn du mehr anzeigen willst, siehst du gar nichts mehr, daher msg auf 144 lassen.

    @Mr.Reese: Das ist falsch was du da machst. Mit strings geht weder ein switch, noch kannst du strings über "==" vergleichen. Außerdem fehlen bei den case's die geschwungenen Klammern, einen break darfst du in PAWN nicht verwenden, das machst du in Java.



    Manyula: Die case's in einem switch können nur Konstanten beinhalten, keine Variablen. Daher geht das hier nicht. So wie du es hast ist es gut.


    switch(wert)
    {
    case 0: //...
    case 1: //...
    case 2: //...
    default: //...
    }


    0 / 1 / 2 / ... / default sind Konstanten, damit geht es. BF_WEAPON[0] ist eine Variable, damit geht es nicht.

    Dort wo er gekickt wird, für "noch gebannt":
    new ts = SpielerInfo[playerid][pTBan] - gettime();
    new d = ts / 86400;
    ts -= d * 86400;
    new h = ts / 3600;
    ts -= h * 3600;
    new m = ts / 60;
    ts -= m*60;
    new s = ts;
    new msg[144];
    format(msg, sizeof(msg), "Du bist noch %d Tag(e) / %d Stunde(n) / %d Minute(n) / %d Sekunde(n) gebannt.", d, h, m, s);
    SendClientMessage(playerid, 0xFF0000FF, msg);

    Das kannst du ja in einem extra Stat speichern. Der Timestamp muss bleiben, sonst geht dein ganzer Code nicht mehr.


    Das Zurücksetzen:
    SpielerInfo[playerid][pTBan] = 0;
    Danach musst du den Spieler natürlich auch wieder speichern.

    for(new i=0; i<MAX_PLAYERS; i++) SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );


    Geht allerdings nur, wenn du zuvor SetPlayerColor irgendwann verwendet hast. Falls du bei OnPlayerConnect/OnPlayerSpawn dem Spieler die Farbe gibst passt das, dann hast du keine Probleme.

    Stimmt doch alles!


    Du speicherst den Timestamp des Unbans.
    wert = gettime() + (60*zeit);


    Ebenso fragst du ihn ab, also passt doch alles. Ich verstehe immer noch nicht wo dein Problem ist, das funktioniert so.


    Teste es doch mal.

    Das wird dann wohl der Timestamp sein. Poste doch mal den Code mit dem du den Spieler zeitlich begrenzt bannst und mit dem du TBan speicherst.

    for(new i = 0; i < MAX_PLAYERS; i++){ShowPlayerNameTagForPlayer(playerid, i, true);}


    Hier musst du playerid und i vertauschen, also i muss vorne stehen.
    Dann sieht man dich auch wieder.

    return 1;


    Das gehört nicht in die Schleifen. Beides mal raus machen.


    Ebenso müssen die Nachrichten die du innerhalb der Schleifen hast, und das Abziehen des Geldes vor bzw nach die Schleifen (ist egal), da du sonst 500 Nachrichten bekommst.

    Sofern ich das am Handy beurteilen kann, nicht immer ganz. So wäre es allgemein sicherer (keine Bugs):
    Function SetPlayerToTeamColor(playerid)
    {
    if(PlayerInfo[playerid][pMember] > 0)return SetPlayerColor(playerid,TeamFarbenArray[PlayerInfo[playerid][pMember]]);
    if(PlayerInfo[playerid][pLeader] > 0)return SetPlayerColor(playerid,TeamFarbenArray[PlayerInfo[playerid][pLeader]]);
    return SetPlayerColor(playerid,-1);//Falls Zivi
    }


    Außer du hast Member und Leader auf dem gleichen Wert, viele vergessen das aber und setzen nur eines davon auf den Wert der Fraktion.


    Aber generell natürlich, ja.

    @xChicagoBulls:
    Der Grund warum du es andersherum schreiben sollst ist Folgender:


    Du fragst oben ab:
    Member=0 oder Leader=0
    Dort hört er immer auf, wenn du mit else arbeitest, da er ja entweder in der Fraktion Member ist, oder Leader ist, also ist eines von beidem immer 0, wegen der Standardinitialisierung von 0.


    Wenn du, so wie du es jetzt machst die else alle weg machst, dann setzt er dir erst die Farbe zu Zivil und anschließend zu der Farbe die du eigentlich hast. Funktioniert zwar, ist aber kein schöner Stil, vor allem wenn du mal mit etwas arbeitest was man sieht (zum Beispiel Nachrichten) klappt das so nicht mehr.


    Daher solltest du es so machen wie du in deiner Antwort auf meinen ersten Post bereits angefangen hast.

    Fange oben mit der höchsten Zahl an, nicht mit der kleinsten.


    24
    23
    22
    .
    .
    .
    1
    0


    Du kannst auch versuchen nur die Abfrage auf Zivi (0) nach ganz unten zu setzen, sollte auch gehen, falls du die Werte nicht selbst undefined setzt.