Beiträge von Jeffry

    also so oder?

    Ja.


    mysql_pquery(handle,"SELECT * FROM "#DATENBANKTAG"_gangwar","OnQueryFinish","siii","SELECT * FROM "#DATENBANKTAG"_gangwar",_SQL_GANGZONE_LOAD,0,handle);


    Wobei das nur funktioniert, wenn du OnQueryFinish in der Zwischenzeit angepasst hast.
    Im Code oben hat dein OnQueryFinish nur einen Parameter ("i") und hier dann vier ("siii"). Eins der beiden wird nicht funktionieren.

    Gas[GangAutoInfo[h][cID]] = GangAutoInfo[h][cTank];
    zu:
    if(GangAutoInfo[h][cID] < sizeof(Gas)) Gas[GangAutoInfo[h][cID]] = GangAutoInfo[h][cTank];




    Edit: Am Plugin kann es das ganze eigentlich nicht liegen, denn eine ältere Script Version funktioniert ohne Probleme

    Dann kommt es drauf an, was du verändert hast.
    Da der Code meines Erachtens nach richtig ist, liegt es entweder wie gesagt an z.B. zu viel Speicherverbrauch, oder am Plugin.

    ch werde es wohl Updaten, aber ich möchte das vorher unbedingt noch Lösen, nennen wir es Ehrgeizig:P

    Wenn es ein Fehler im Plugin ist bekommst du das nicht gelöst.



    Ich verstehe nicht warum es geht wenn die Häuser Datenbank geleert ist und sobald sie beschrieben wurde er wieder nur bis Haus 5 lädt.

    Am Code liegt das nicht, maximal an einem Speicherzugriffsfehler, wenn zu viele Variablen verwendet werden. Das wäre dann der Fall, wenn es mit dem anderen Plugin auch auftritt.



    Und warum das Array gesprengt wird, verstehe ich jetzt auch absolut nicht.

    Poste bitte den Code aus genannter Zeile.

    [19:34:23] [debug] Attempted to read/write array element at index 65535 in array of size 2000
    [19:34:23] [debug] AMX backtrace:
    [19:34:23] [debug] #0 000b874c in public CreateGangAutos () at C:\Users\Name\Desktop\Script\gamemodes\IR.pwn:15257

    Hier wird das Array gesprengt, das ist der Fehler in CreateGangAutos.



    Edit: Jetzt wo der Server die Datenbank Einträge erstellt hat, kommt es wieder zum Problem das die Häuser nicht geladen werden...

    Da der Code meines Erachtens nach stimmt, ist meine Empfehlung, das Plugin zu wechseln, wie beschrieben.

    Inwiefern minimale Anpassungen?

    Ich habe das nur einmal gemacht, das ist soweit ich mich erinnern kann vor allem der Aufbau der Verbindung, der anders ist, sprich das mysql_init() fällt weg, und das mysql_connect ist anders angeordnet in seinen Parametern.
    Das geht recht schnell (<1h).


    Mache aber vorher ein Backup, falls danach noch weniger tut.

    @Jeffry was kann den sowas alles verursachen habe gehört wenn man Autoteile falsch abspeichert etc. kann sowas vorkommen?

    Das weiß ich nicht, sorry.


    Was du eben versuchen kannst ist, den Server lokal laufen zu lassen und nur selbst drauf zu gehen, dann weiß du sicher, dass von niemandem etwas gemacht wird.
    Tritt der Fehler dann wieder auf, liegt es am Code, wenn nicht, dann ziemlich wahrscheinlich nicht.

    Können diese ServerLogs eine Rolle Spielen zu diesen Fehler?

    Nein, um das zu verhindern muss an entsprechender Stelle abfragt werden, ob issuerid INVALID_PLAYER_ID ist.
    if(issuerid != INVALID_PLAYER_ID)
    {
    //... z.B.:
    PlayerInfo[issuerid][Hits]++;
    }
    Somit kann kein Array-Zugriff stattfinden, wenn issuerid ungültig ist, sprich der Spieler sich selbst verletzt hat.


    [warning] client exceeded 'ackslimit' 87.134.112.11:62367 (9014) Limit: 5000/sec

    Hierzu das ackslimit in der server.cfg erhöhen.



    Zu dem Fehler mit den fliegenden Autos:
    Das liegt mit wahrscheinlich nicht am Code, außer es wurde vom Ersteller etwas entsprechendes eingebaut.
    Prinzipiell könntest du es lokal auf deinem PC testen, ob da das Problem auch auftritt. Wenn nein, dann kommt es mit ziemlicher Sicherheit von einem externen Tool, welches auf den öffentlichen Server zugreift.
    Direkt helfen kann ich dir dazu aber nicht, da ich so etwas noch nie gehört oder gesehen habe.

    Am Code dürfte das nicht liegen, vor allem da es ja teilweise für einen kompletten Durchlauf (bis 5) funktioniert hat.
    Da auch keine Fehlermeldung vom crashdetect kommt, liegt das wohl am Plugin.


    Ich rate dir, auch unabhängig von dem Fehler, das Plugin von BlueG bzw. maddinat0r zu nutzen.
    Zu deinem Plugin passt das R5 ziemlich gut, da sind nur minimale Anpassungen notwendig.


    Link:
    MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)

    Dann versuche es bitte mal so:
    public LoadProperty()
    {
    printf("1: Start");
    new dest[256], val[512];
    mysql_query("SELECT * FROM `houses`");
    printf("2: mysql_query: SELECT * FROM `houses`");
    mysql_store_result();
    for(new i=0, j=mysql_num_rows(); i < j; i++)
    {
    mysql_fetch_row(dest);
    printf("3: val erstellt für i = %d", i);
    mysql_fetch_field("Owner", val); strmid(HouseInfo[i][hOwner], val, 0, strlen(val), 255);
    printf("4: Owner: %s", HouseInfo[i][hOwner]);
    mysql_fetch_field("Beschreibung", val); strmid(HouseInfo[i][hBeschreibung], val, 0, strlen(val), 255);
    mysql_fetch_field("Preis", val); HouseInfo[i][hPreis] = strval( val );
    mysql_fetch_field("HealUpgrade", val); HouseInfo[i][hHealUpgrade] = strval( val );
    mysql_fetch_field("ArmorUpgrade", val); HouseInfo[i][hArmorUpgrade] = strval( val );
    mysql_fetch_field("Lock", val); HouseInfo[i][hLock] = strval( val );
    mysql_fetch_field("Owned", val); HouseInfo[i][hOwned] = strval( val );
    mysql_fetch_field("Rooms", val); HouseInfo[i][hRooms] = strval( val );
    mysql_fetch_field("Rent", val); HouseInfo[i][hRent] = strval( val );
    mysql_fetch_field("Rentabil", val); HouseInfo[i][hRentabil] = strval( val );
    mysql_fetch_field("Kasse", val); HouseInfo[i][hKasse] = strval( val );
    //mysql_fetch_field("Date", val); HouseInfo[i][hDate] = strval( val );
    mysql_fetch_field("Level", val); HouseInfo[i][hLevel] = strval( val );
    mysql_fetch_field("VW", val); HouseInfo[i][hVW] = strval( val );
    mysql_fetch_field("Local", val); HouseInfo[i][hLocal] = strval ( val );
    printf("5: mysql_num_rows Ende");
    }
    mysql_free_result();
    printf("6: Fertig");
    return 1;
    }

    Du hattest die Schleife für die Fraktionsfahrzeuge in der Schleife für "MaxVeh" was wahrscheinlich 4 ist.
    Mache es so:
    Function LoseTank(vid)
    {
    new owner = GetPlayerIdFromName(GetPlayerCarOwner(vid));
    new vehmodel = GetVehicleModel(vid);
    for(new x = 0; x < MaxVeh; x++)
    {
    if(PlayerCar[owner][x][CarId] == vid)
    {
    PlayerCar[owner][x][Fuel] -= CarInfo[vehmodel-400][ci_CarGasConsume];
    return 1;
    }
    }
    for(new fc = 0; fc<sizeof(FactionCars); fc++)
    {
    if(vid == FactionCars[fc][fCarid])
    {
    FactionCars[fc][fFuel] -= CarInfo[vehmodel-400][ci_CarGasConsume];
    return 1;
    }
    }
    return 1;
    }