Beiträge von Jeffry

    Zudem ist ein switch immer schneller als eine if-Abfrage..da per jumptable direkt an die Stelle gesprungen wird..

    Nein, nicht immer. Bei einer Abfrage ist die if-Variante - da korrigiere ich mich - zum Teil schneller, auch nicht immer. Es kommt drauf an, wie man die Abfrage macht. Interessanterweise, das ist mir grade aufgefallen, ist eine Abfrage if(x < 10) langsamer als if(x < 1).
    Hier aber zum Beispiel ist die if-Abfrage schneller:
    new a;
    a = 1;
    new t = GetTickCount();
    for(new i = 0; i < 10000000; i++)
    {
    if(a == 0) { }
    else { }
    }
    printf("if: %dms", GetTickCount()-t);
    t = GetTickCount();
    for(new i = 0; i < 10000000; i++)
    {
    switch(a)
    {
    case 0: { }
    default: { }
    }
    }
    printf("switch: %dms", GetTickCount()-t);


    Tatsächlich kommt es aber dann darauf an, wie viel Prozent Differenz er nimmt, ob es performanter ist oder nicht, daher würde ich sagen beide Varianten sind in Ordnung, wobei ich trotzdem die if-Variante bevorzuge, da sie schneller zu schreiben ist und der Performanceunterschied irrelevent gering ist.

    40% kannst du so festlegen:
    if(random(100) < 40)
    {
    //40% Chance hier zu landen
    }


    Du kannst auch 10 und 4 nehmen, ich habe es nur so zur Veranschaulichung gemacht.


    EDIT: Ein Switch lohnt sich da meiner Meinung nach nicht, da es nur eine Abfrage ist, die ist in dem Fall performanter.

    Solltest du aber, deswegen hast du ja den stock.
    Ersetze das mysql_connect in OnGameModeInit mit DL_ConnectMYSQL();


    Oder lasse es einfach wie es ist, und lösche den stock.

    Füge das ganz unten im Code ein:
    public OnFilterScriptExit()
    {
    return 1;
    }


    Und entferne das return 1 in Zeile 5 in dem ersten Code den du gepostet hast, im post drüber.

    Dann füge das bei OnGameModeInit ein:
    DL_ConnectMYSQL();


    Und schreibe den stock so:
    stock DL_ConnectMYSQL()
    {
    print("MYSQL Abfrage wird gestartet...");
    mdhandle = mysql_connect(db_host, db_user, db_db, db_pass);
    if(mysql_errno() == 0)
    {
    print("DL Abfrage: MYSQL Verbindung wurde erfolgreich hergestellt!");
    return 1;
    }
    else
    {
    print("DL Abfrage: MYSQL Fehler... Reconnect...");
    mdhandle = mysql_connect(db_host, db_user, db_db, db_pass);
    if(mysql_errno() == 0)
    {
    print("DL Abfrage: MYSQL Verbindung wurde erfolgreich hergestellt!");
    return 1;
    }
    else
    {
    print("____________________________________________________________");
    print("DL Abfrage: MYSQL Verbidnung kann nicht hergestellt werden!");
    print("DL_Whitelist wird beendet!");
    print("____________________________________________________________");
    OnFilterScriptExit();
    return 0;
    }
    }
    return 1;
    }

    Dann macht der stock aber keinen Sinn.
    Hast du vielleicht einen define von db_host und den anderen?
    Sowas hier?
    #define db_host "bla bla"

    Nein, das ist es nicht.
    In der Zeile nach der ich frage kommt "DL_ConnectMYSQL" vor, damit rufst du den stock ja auf.

    So, und jetzt poste bitte noch die Zeile, die DL_ConnectMYSQL aufruft (wird wohl bei OnGameModeInit stehen).

    if(killerid != INVALID_PLAYER_ID)
    {
    new wanted = GetPlayerWantedLevel(killerid) + 1;
    SetPlayerWantedLevel(killerid, wanted);
    new str[145];
    GetPlayerName(playerid, str, MAX_PLAYER_NAME);
    format(str, sizeof(str), "[Info] %s wird mit %d Wanteds gesucht.", str, wanted);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(SpielerInfo[i][pTeam] == TEAM_POLICE) //Anpassen, zu deiner Polizei-Abfrage
    {
    SendClientMessage(playerid, 0xFF0000FF, str);
    }
    }
    }

    Versuche es so:
    stock DL_ConnectMYSQL(db_host[], db_user[], db_pass[], db_db[])


    Ansonsten zeige mal, wie du die Funktion aufrufst.