Beiträge von Jeffry

    Dann lade dir das crashdetect Plugin herunter: http://forum.sa-mp.com/showthread.php?t=262796 Füge das Plugin in deinen Server ein, und erstelle im /pawno/ Ordner eine Datei "pawn.cfg". Dort schreibst du "-d3" rein und speicherst sie. Dann öffnest du die pawno.exe und öffnest darüber deinen Code. Kompiliere ihn und starte dann den Server mit der neuen amx Datei. Dann poste was im Server Log steht, wenn du den Befehl eingibst.

    Damit die Tabs in der Liste richtig formatiert werden musst du DIALOG_STYLE_TABLIST verwenden, anstatt DIALOG_STYLE_LIST.



    Um das "/" Zeichen nicht mit anzuzeigen mache:


    C
    format(stra,sizeof(stra),"%s%25s%s%s\n",stra,DialogHandy[i][0],DialogHandy[i][4],DialogHandy[i][2]);


    zu:


    C
    format(stra,sizeof(stra),"%s%25s%s%s\n",stra,DialogHandy[i][0][1],DialogHandy[i][4],DialogHandy[i][2]);


    Und:



    C
    format(stra,sizeof(stra),"%s%25s%s%s\n",stra,DialogHandy[i][1],DialogHandy[i][5],DialogHandy[i][3]);

    zu:


    C
    format(stra,sizeof(stra),"%s%25s%s%s\n",stra,DialogHandy[i][1][1],DialogHandy[i][5],DialogHandy[i][3]);


    Die Doppel-Tabs kannst du dann wahrscheinlich zu einem einzelnen Tab ändern, wenn du DIALOG_STYLE_TABLIST verwendest.

    Versuche es so:

    Du musst die Funktion überall dort hin schreiben, wo du den Server mit GMX beendest.
    Wenn du den Server "hart" schließt (exit-Befehl, oder X drücken bei Windows), oder wenn der Server abstürzt, dann wird OnGameModeExit eh nicht aufgerufen.


    Du darfst den Server dann nur nicht mit /rcon gmx beenden, aber das machst du ja wahrscheinlich sowieso nicht, wenn du extra einen Befehl dafür gemacht hast.

    Welches MySQL Plugin und welche Version nutzt du?
    Es gab mal den Fehler in älteren Versionen, dass mysql_close den Server zum abstürzen gebracht hat, wenn es bei OnGameModeExit aufgerufen wird.

    Ok. Erhöhe im Enum das cFarbe auf 11, anstatt 10.


    Und dann versuche es mal so:

    C
    printf("cFarbe: %s", Clan[Spieler[playerid][Gang]][cFarbe]);
    format(str, sizeof(str),"Ausgewählter Farbcode: %s",Clan[Spieler[playerid][Gang]][cFarbe]);
    ShowPlayerDialog(playerid, DIALOG_CLAN_FARBE_ACCEPT, DIALOG_STYLE_MSGBOX, "Clanfarbe akzeptieren",str,"Akzeptieren","Zurück");
    printf("str1: %s", str);
    format(str, sizeof(str),"Ausgewählter Farbcode: 0x%s",Clan[Spieler[playerid][Gang]][cFarbe]);
    printf("str2: %s", str);
    format(Clan[Spieler[playerid][Gang]][cFarbe], 11,"0x%s",Clan[Spieler[playerid][Gang]][cFarbe]);
    printf("str3: %s", str);
    SendClientMessage(playerid, COLOR_GREY, str);

    Was steht dann im Log?

    Zwecks dem MAX_PLAYER_NAME:
    Das braucht man hier nicht zwangsläufig, da es nicht der Spieler-Name ist der ausgegeben wird, sondern der Rang-Name, und der ist ja benutzerdefiniert lang.


    Zwecks dem switch:
    Ein switch ist bei zwei oder drei Möglichkeiten langsamer als eine if-else Verknüpfung. Ab wann genau es sich rentiert kommt immer auf die Abfrage selbst an.
    Wenns dann aber mal 10 sind oder so, dann würde ich auch den switch empfehlen.

    Das ", 0" am Ende von format in dem stock kannst du weg lassen, format funktioniert auch ganz ohne die Parameter für die Platzhalter.


    Allerdings brauchst du bei der Methode die du vor schlägst jedes mal eine Variable. Geschickter zum benutzen ist es so:

    C
    stock AdminrankName(playerid) {
    	new name[16] = "Unbekannt";
    	new adminrank = PlayerInfo[playerid][pLevel];
    	if(adminrank == 0) name = "Spieler";
    	else if (adminrank == 1) name = "Supporter";
    	else if (adminrank== 2) name = "Administrator";
    	return name;
    }


    Dann kannst du es einfach so verwenden:


    C
    format(string,sizeof(string),"%s %s hat von %s den Adminrang in %i geändert.",AdminrankName(playerid),aName,pName,a_level);