Beiträge von Ternary

    Einleitung
    Hallo liebe Breadfishler. Nach langer Zeit nun endlich mal wieder was von mir.
    An dem Teil hier arbeite ich seit gestern.
    Es ist eine Include, mit dem man seine MySQL-Datenbank ganz einfach aus dem Gamemode heraus exportieren kann.


    Was ist das?
    Wie gesagt: Mit dieser Include kann man Tabellen aus der MySQL-Datenbank ganz einfach exportieren.
    Momentan ist das ganze noch in der BETA-Phase und nicht ganz so sicher. Man sollte sich nicht ausschließlich darauf verlassen, sondern sicherheitshalber noch manuell Backups anlegen.
    Für das Backup muss das Script einige Zeichen ersetzen, finden und löschen. Diese Zeichen können jedoch auch variieren. Ich habe versucht alle Möglichkeiten einzubauen, jedoch glaube ich nicht, dass ich das wirklich geschafft habe. Sollte das Script also irgendwann mal etwas total sinnloses auswerfen, dann meldet dies bitte hier.


    Funktionen
    Hauptfunktionen:
    [table=2]
    [*]Funktion
    [*]Beschreibung


    [*]MyDump:MyDumpExportInit(host[], user[], pw[], db[])
    [*]Initialisiert eine MySQL-Verbindung mit den angegeben Daten und erstellt gleichzeitig ein MyDump-Handle


    [*]MyDumpExportExit(MyDump:handle)
    [*]Schließt die MyDump-Verbindung


    [*]ExportTablesToFile(file[], MyDump:handle, IfNotExists = 1)
    [*]Exportiert die Tabellen der in dem Handle geöffneten Datenbank in die angegebene Datei. Ist der 3. Parameter 1 wird der IF NOT EXISTS-Zusatz hinzugefügt.


    [*]SetAutoExportTime(sec, MyDump:handle)
    [*]Setzt die Timerzeit für Auto-Export. Erst gültig, wenn der Auto-Export des Handles neugestartet wird.


    [*]SetAutoExportIfNotExists(num, MyDump:handle)
    [*]Wenn num = 1: Beim Auto-Export des Handles wird der IF NOT EXISTS-Zusatz verwendet. Falls 0, nicht. Sofort wirksam.


    [*]AutoExportTimerStart(MyDump:handle)
    [*]Startet den Auto-Export-Timer für das besagte Handle


    [*]AutoExportTimerStop(MyDump:handle)
    [*]Stoppt den Timer wieder
    [/table]



    Nebenfunktionen:
    Die Nebenfunktionen existieren zwar, sind für den normalen Gebrauch aber relativ unnötig.
    [table=2]
    [*]Funktion
    [*]Beschreibung


    [*]ExportTable(data_table[], MyDump:handle)
    [*]Gibt einen String mit dem CREATE TABLE-Inhalt der besagten Tabelle zurück


    [*]ExportContents(table[], File:fhandle, MyDump:handle)
    [*]Schreibt den Inhalt der angegebenen Tabelle (nicht Struktur!) in die angegebene Datei (Datei muss existieren)


    [*]SaveTables(MyDump:handle)
    [*]Lädt Liste mit den Tabellen der Datenbank in das Array MyDump_Table[MAX_TABLES];
    [/table]


    Optimale Verwendung
    Um die Verwendung besser zu erklären, habe ich ein Beispiel-Filterscript geschrieben. Link ist beim Downloadlink.


    Sachen, die noch zu beachten wären

    • Bevor MyDump.inc inkludiert wird, muss mysql.inc inkludiert werden.
    • MAX_TABLES ist standartmäßig auf 100. Indem man es VOR dem inkludieren anders definiert, lässt es sich einfach ändern
    • Es ist nicht zu 100% stabil. Also bitte nicht ausschließlich darauf verlassen.


    Downloads
    Beispielscript - Pastebin
    Include v1.1 - Pastebin
    Include v1.0 - Pastebin

    //Diese Funktion in alle Scripte
    stock DestroyVehicle2(vehicleid) {
    DestroyVehicle(vehicleid);
    CallRemoteFunction("OnVehicleDestroy", "i", vehicleid);
    }
    #define DestroyVehicle(%0) DestroyVehicle2(%0)


    //Das hier ist dann das Callback
    forward OnVehicleDestroy(vehicleid);
    public OnVehicleDestroy(vehicleid) {
    printf("Vehicle %d destroyed", vehicleid);
    return 0; //Am besten immer 0 returnen, damit das Callback auch in allen Scripten ausgeführt wird
    }

    Da hast du das Callback, auch wenn es unnötig ist, da du einfach in DestroyVehicle2 deine Abfragen reinmachen kannst.
    Jedenfalls wird beim Aufruf von DestroyVehicle(1); OnVehicleDestroy(1) aufgerufen.


    /edit 2x - Modifizierungen

    Hmm ein MTA-Server :)
    Da bin ich ja mal gespannt. Mit MTA bzw. Lua kann man ja viel mehr anstellen, als mit SAMP.
    Ich erwarte viel von euch, also erfüllt es auch :P


    Ich sehe es schon vor mir: Ein echt gestalteter Computer, Fahrzeuge mit anständigen aufschriften, wie z.B. Polizei statt LSPD.
    Macht was draus, dann habt ihr sicher auch Erfolg. MTA ist ein in Deutschland sehr unerforschtes Gebiet, vor allem in Richtung Reallife. Wenn ihr das gut umsetzt, könnt ihr sicher einige Leute hier weghauen.