Beiträge von Goldkiller

    Bekomme es nicht mehr ganz zusammen, müsste aber in etwa so sein:

    War unter anderem Username im Discord unterwegs, weiß den Namen auch nicht mehr. Ist auch schon paar Monate her. Ich habe aber nicht gesagt wer ich wirklich bin. Lediglich, dass ich schon sehr lange im Forum angemeldet bin. Dann wurde mir vorgeworfen, ich bin ein karox oder satrox. Dieser Rocky Balboa hat eindeutige Nachrichten bekommen, dass ich einer der genanten User bin. Hat er mir ja gesagt.

    Stellt sich heraus, ich bin es doch nicht.


    Versprochen ist versprochen. Sagte, wenn ich mich wieder einlogge im Forum löse ich es auf.

    Shout out an den Discord User Rocky Balboa.

    Ja, anscheinend bin ich nicht dieser karox oder satrox. Hiermit löse ich mein versprechen ein, Dummkopf


    A:

    Ich weiß das du Karox bist, fang doch nicht wieder an mit dem Spiel wie 2019 xd

    Ich:
    ich bin definitiv nicht karox.wer auch immer das ist

    [...]
    A:
    hat mir heute einer geschrieben, aber ok.
    Alles klar Satrox, mehr habe ich nicht zusagen heute.

    [...]

    Ganz korrekt ist die Aussage zu global auch nicht.

    Code
    public OnPlayerDeath(playerid, killerid, reason)
    {
        new String[128] = "Local 1";
        if(playerid == killerid) {
            new String[128] = "Local 2"; // warning 219: local variable "String" shadows a variable at a preceding level
            SendClientMessage(playerid,-1,String); 
        }
        SendClientMessage(playerid,-1,String); 
        return 1;
    }

    Lokale Variable und trotzdem kommt die Warnung :-O

    Unabhängig davon ob Jemand die SQLite Variante nutzt, sind da paar Memory leaks. (Z. 82, Z.90, Z. 100).
    Wenn die INSERT-Statements ein Problem sind was die Laufzeit betrifft, dann würde ich mir mal Transactions ansehen ( Transaction, Begin, Commit, Autocommit mal als Keywords.)

    Damals, so 2006.
    Als gerade sa-mp 0.1b veröffentlich wurde, dieses Forum hier noch gar nicht existierte und wir das gta-action.com Reisebüro veranstaltet haben.
    Das Serverlimit war 32 Spielern (oder 50?), die Möglichkeiten zum individualisieren des Gamemodes sehr begrenzt (Scripting Funktionen / Callbacks) und die deutsche Szene entstand gerade erst. Wahrscheinlich dann auch zum Teil mit der Gründung dieses Forums, ausgegliedert aus gta-action.


    Mega gute Zeit gewesen. Was das für ein Highlight war, als 0.2a veröffentlicht wurde und es auf einen Schlag gefühlt 100 neue Funktionen gab und sie Sync für uns "perfekt" wurde. Viele Leute kennengelernt, von denen die meisten jetzt um die 30 sein dürften. Wie die Zeit verflogen ist. Wird bei mir immer in guter Erinnerung bleiben wird.

    Oder den vorletzten Return entfernen.

    Nicht so ganz. Dann würde nämlich immer im Anschluss an das setzen des Checkpoints (Z.16) dieser im direkten Anschluss entfernt werden (Z.21).


    Wenn du möchtest, dass immer wenn ein Spieler einen fs_cp betritt der aktuelle Checkpoint entfernt wird, solltest du das DisablePlayerCheckpoint in Zeile 8 verschieben.


    Eventuell entfernst du auch einfach immer dann den Checkpoint, wenn der Spieler einen Checkpoint betritt.Sprich, direkt am Anfang von OnPlayerEnterCheckpoint. Das hängt aber davon ab, was du noch so an Gamemode/Filterscript verwendest. Sonst kommen sich die Scripte noch in die Quere.

    for(new i, playername[MAX_PLAYER_NAME];i<GetMaxPlayers();i++) { if(GetPlayerName(i,playername,sizeof(playername))) { // Spielerid ist verbunden. Kein IsPlayerConnected notwendig }}


    --> playername ist aber leer, er würde nichts finden :( <-
    Und wüsste auch nicht wieso das mehr sinn macht als z.B einfach IsPlayerConnected().

    Das führt zu nichts, solange du dir nicht den [wiki]GetPlayerName[/wiki] Artikel ansiehst.

    Ajo, ist aber nicht Sinnvoll daraus direkt eine Funktion zu machen.
    Ich arbeite da einfach mit Makros, was denke mal sowieso viel Praktischer ist, für kleine Sachen.

    Selbst als Macro steigert es die Lesbarkeit. getAdmin() ist auch als extra Methode vorhanden, wieso also nicht auch für den Duty-Status ;)


    Und zu deiner Aussage "Mit dem Namen die Gültigkeit überprüfen", wenn ich den Online Status einer ID abfragen möchte geht es auch mit dem namen ja ?


    Ob das sooo sinnvoll ist, dass noch mit strings statt Nummern prüfen zu lassen, weis ich nicht.

    Zitat

    Return Values:
    The length of the player's name. 0 if player specified doesn't exist.
    The player's name is stored in the specified array.

    Heisst:

    for(new i, playername[MAX_PLAYER_NAME];i<GetMaxPlayers();i++) {
    if(GetPlayerName(i,playername,sizeof(playername))) {
    // Spielerid ist verbunden. Kein IsPlayerConnected notwendig
    }
    }


    Zu deinem verbessertem Code:
    Der war mMn vorher besser. getAdmin ist leider lowerCamelCase (zwar oben auch schon gewesen aber alles andere UpperCamelCase). Jetzt ist es auch nicht sicher im Umgang mit dem Index :/.

    Funktioniert aber nicht ganz, außer man testet nur mit sich selbst:

    ocmd:admins(playerid){ShowAllAdmins(playerid); return 1;}
    stock ShowAllAdmins(playerid)
    {
    new string[1024], str[20];
    for(new i, playername[MAX_PLAYER_NAME];i<GetMaxPlayers();i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(PlayerInfo[playerid][pAdminlevel] < 1)continue;// hier muss i statt playerid
    if(PlayerInfo[playerid][pAdmindienst] == 0) str = "{FF0000}Nein";// hier muss i statt playerid
    else if(PlayerInfo[playerid][pAdmindienst] == 1)str = "{69FF00}Ja";// hier muss i statt playerid
    GetPlayerName(playerid, playername, sizeof playername),// hier muss i statt playerid
    format(string, sizeof string, "%s\n%i. %s | %s | Dienst: %s", string, i+1, getAdmin(playerid), playername, str);// auch hier muss i statt playerid
    }
    ShowPlayerDialog(playerid, DIALOG_SHOW_ADMIN, DIALOG_STYLE_LIST, "Admins", string, "Jaman", "Jaman");
    return 1;
    }
    stock getAdmin(playerid)
    {
    new str[34];
    switch(PlayerInfo[playerid][pAdminlevel])
    {
    case 0: str = "Zivilist";
    case 1: str = "Moderator";
    case 2: str = "Administrator";
    case 3..5: str = "blabla";
    case 6: str = "Projektleiter";
    }
    return str;
    }

    Du könntest auch mit GetPlayerName prüfen, ob die Spielerid verbunden ist. Anstatt dort direkt Ja/Nein in der ShowAllAdmins herauszufinden, würde ich daraus eine eigene Funktion machen.
    // z.B.
    IsAdminOnDuty(playerid)