Beiträge von mickdermack

    Wenn ich mir das ansehe: Sehr wahrscheinlich wurde sie gesperrt, weil durch die Update-Funktion beliebiger Lua-Code auf dem Server ausgeführt werden kann.

    Nils:
    Mach lieber eine Textdatei oder ein PHP-Script, das die aktuelle Versionsnummer zurückgibt, und vergleiche die Versionsnummern im Script. Lua-Code von einem Server zu holen kann als eine Art Backdoor gesehen werden, und das MTA-Team ist, mit Grund, sehr empfindlich in dieser Hinsicht.

    Das, was zu sehen ist, ist kein Installationsvorgang, sondern lediglich ein paar Meldungen aus dem Kernel-Log. Steht vor dem Reboot irgendetwas besonderes dort?
    Was passiert allgemein vor dem Reboot?
    Was für Hardware ist das, auf der du die Installation versuchst?
    Kannst du einen anderen USB-Installer versuchen, wie z.B. Universal USB Installer?
    Kannst du via F6 die Optionen acpi=off, noapic und nolapic setzen, und dann versuchen, von dem Medium zu starten?
    Kannst du via F6 die Option nomodeset zu setzen, und dann versuchen, zu starten?

    Wenn ich deine Frage richtig verstanden hab: Ja, es ist möglich, eine Funktion dafür zu machen, und die öfter zu verwenden. Als symbolhaftes Beispiel:

    Lua
    function strafeSpieler(player, betrag)
        local geldNeu = -- Geld des Spielers holen und - betrag nehmen
        dbQuery(handle, "UPDATE spieler SET geld = ? WHERE name = ?", geldNeu, getPlayerName(player))
        -- Andere Dinge, die passieren sollen.
    end


    Diese Funktion kannst du in jedem Script verwenden.
    Wie dein Script diese Dinge handhabt kann ich als Außenstehender nicht wissen.

    Nicht unbedingt. Das Statement, das ich geschrieben habe erhöht das Geld in der Datenbank um 310. Das verhindert, dass du den alten Wert dafür wissen musst. Aber wenn du in deinem Script eine Variable für das Geld hast, ist es eventuell praktikabler, direkt den neuen Wert der Variable in die Datenbank zu schreiben.

    Im net-Modul (vor allem im Clientseitigen) werden sensible Dinge durchgefürt, wie z.B. Serialberechnung, Anticheat, globale Banns und Entschlüsseln von verschlüsselten Scripts. Deshalb wird der Quellcode nicht freigegeben.

    Was früher, bevor Oculus RakNet gekauft hat, noch ein Grund gewesen sein könnte: Lizenzprobleme eben wegen RakNet.

    Böse scheint das Script nicht zu sein (@Obercaptain Poof:), jedoch hat der Ersteller weder die englische Sprache ("After about 5 seconds the game will be kick!") noch die Trennung von Client und Server (Der Client bestimmt bei diesem Script, ob er nach zu vielen Fehlversuchen gekickt wird, und er sagt dem Server, wie viele Fehlversuche es bereits gegeben hat) richtig verstanden. Allgemein ist die Codequalität eher niedrig. Die Texte können ebenfalls nicht geändert werden, was es schwierig macht, das Script auf einem deutschen oder mehrsprachigen Server sinnvoll einzusetzen.

    @3nergy: Nein, die Fehlermeldung heißt nicht, dass keine Datenbankverbindung aufgebaut werden kann, sondern dass die Funktion 'mysql_connect' nicht existiert. Der Grund dafür kann ein nicht installiertes oder (siehe unten) beschädigtes MySQL-Modul sein.

    Der Fehler

    Code
    [2014-07-13 22:38:00] MODULE: Unable to find modules/mtamysql.so (...: ELF load command past end of file)!

    heißt sehr wahrscheinlich, dass die Datei beschädigt ist. Stelle sicher, dass sie in unbeschädigter Form auf deinem Computer vorliegt (oder lade sie im Zweifelsfall noch einmal herunter), und dass du sie, wenn du sie via FTP hochlädst, sie im Binärmodus (nicht im ASCII-Modus) überträgst.

    SuFu heißt Suchfunktion.

    Die Map insgesamt gefällt mir sehr gut. Es wird auf Licht-/Farbenspiele gesetzt, was mir, als jemand der Eyecandy liebt, zusagt. Das Bloom (bzw. auch Godrays?) im Video verbessert das ganze noch. Dass offensichtlich Gebäude verwendet wurden, stört mich nicht. In der abstrakten Kunst ist vieles erlaubt. Einziger Kritikpunkt ist, dass es an manchen Stellen (0:41 z.B.) etwas übertrieben hell wirkt.
    Verbesserungsvorschläge habe ich mangels Erfahrung im Mapping-, Ästhetik- und Race-Bereich leider keine. (Das ist außerdem meine erste Bewertung zu einer Race-Map)

    loadstring gibt als zweiten Rückgabewert den Fehler zurück, der aufgetreten ist, also lässt sich das in etwa so behandeln:

    Lua
    local func, err = loadstring(code)
    if func then
        -- Fehler die erst zur Laufzeit auftreten, müssten, falls gewünscht, mit pcall/xpcall gefangen werden
        func() 
    else
        -- Syntaxfehlerbehandlung hier, als Beispiel:
        outputChatBox(err)
    end

    Was noch zur Fehlerbehandlung nützlich sein könnte, wäre das zweite Argument der loadstring-Funktion.
    Um die Auswirkung zu zeigen, ein Auszug aus der Serverkonsole:

    Code
    run loadstring("xy()")()
    [20:34:16] Console executed command: loadstring("xy()")()
    [20:34:16] Error: [string "xy()"]:1: attempt to call global 'xy' (a nil value)
    
    
    run loadstring("xy()", "mein loadstring")()
    [20:34:45] Console executed command: loadstring("xy()", "mein loadstring")()
    [20:34:45] Error: [string "mein loadstring"]:1: attempt to call global 'xy' (a nil value)

    Hier mein Senf/Feedback:

    Positiv an dem Script zu vermerken ist:

    • Wesentlich bessere Codequalität als ein bestimmtes anderes vor Kurzem vorgestelltes Tool.
    • Es verwendet nicht chmod 777 als "Wunderwaffe", im Gegensatz zu diesem bestimmten Tool. (Danke, dass du/ihr diesen stilistischen und zugleich sicherheitskritischen Fehler nicht begangen hast/habt.)
    • Es scheint auf den ersten Blick nicht horribelst auf die Nase zu fallen, wenn man es nicht von /home aus ausführt, ebenfalls im Gegensatz zu obigem Tool.


    Was ich im mehr oder weniger negativen Sinne zu kritisieren habe (hauptsächlich kleinere Punkte):

    • Das Basisverzeichnis ist mehr oder weniger zwingend /home, was normalerweise Benutzerverzeichnissen vorbehalten ist. Direkt in /home kann auch üblicherweise nur root schreiben.
    • apt-get wird verwendet, ohne zu prüfen, ob der User root ist.
    • Nachdem festgestellt wurde, dass unzip nicht installiert ist, wird die Schriftfarbe zu spät zurückgesetzt, sodass die Ausgabe von apt-get rot ist.
    • Es wird nicht geprüft, ob z.B. beim Entpacken oder bei apt-get ein Fehler aufgetreten ist.
    • Das Tool fällt auf die Nase, wenn z.B. der Serverordner oder der Servername Leerzeichen enthält. Im zweiten Fall wird eine leere Konfigurationsdatei erstellt.
    • Das Script verwendet rm bzw. chmod mit dem Flag -r um Dateien zu löschen bzw. die Rechte von Dateien zu setzen. Das ist sinnlos, es sei denn, man erwartet, dass aus einer Datei plötzlich ein Ordner wird.
    • Das Script verwendet hostname --ip-address um die IP-Adresse zu bestimmen, auf die der Server binden soll, was zwar gut gehen mag, wenn der Hostname des Servers in die richtige IP auflöst, jedoch ist das bei einer Standard-Ubuntu-Installation oft nicht der Fall:

      Code
      michael@athene:~$ hostname --ip-address
      127.0.1.1
      michael@athene:~$ cat /etc/hosts
      127.0.0.1       localhost
      127.0.1.1       athene
      
      
      ....


      Hier würde ich eher die IP-Adresse vom Adapter eth0 holen, oder auf ein festes Einstellen der IP verzichten.

    • Die Regexes, die sed gefüttert werden sind etwas... eigenartig. z.B. <[\/\]servername> und <\/\servername> lassen sich durch die korrektere Variante <\/servername> ersetzen.
    • Rechtschreibung. Der Satz "Eine oder mehrer Datein konnten nicht herruntergeladen werden. Bitte Überprühfen Sie die Links in dieser Datei." ist quasi der Tiefpunkt.

    Wer hat eigentlich dieses Script erstellt, bzw. wieso ist es Kenni's script, wenn es von Andre Rohlf erstellt wurde?
    Sorry, dass ich so viele negative Punkte geschrieben habe... Ich bin besser im Kritisieren als im Loben, dafür versuche ich, meine Kritik sachlich und konstruktiv zu halten.

    Mögliche Alternativen inkludieren:

    • Sollten (nach Inspektion mit einem Hex-Editor) nur die ersten 512 Bytes der Partition beschädigt sein, kannst du versuchen, ein Image der Partition anzulegen, und im Image den letzten Block von 512 Bytes auf den ersten zu kopieren, und anschließend das Image zu mounten (Linux empfehlenswert). Im letzten Block befindet sich eine Kopie des ersten Blocks, wodurch ich schon einmal eine Partition retten konnte, bei der ich versehentlich die ersten 512 Bytes überschrieben hatte.
    • PhotoRec, könnte die Dateien aufgrund des Formats finden (möglicherweise jedoch als .doc o.Ä. abspeichern)
    • Selbst nach den Dateien via Hex-Editor o.Ä. suchen, wobei ich jedoch (nichts gegen dich) die Chancen eines Erfolgs nicht sehr hoch einschätze (Ausnahme: Die Dateien sind weder korrumpiert noch mehrfach fragmentiert, und du schaffst es, das Ende der Dateien zu finden. Was noch erschwerend dazu kommen würde: Das Format, und festzustellen, ob es eine falsche Datei ist, oder ob man beim extrahieren einen Fehler gemacht hat)
    • Eine Firma damit beauftragen, was aber tendenziell sehr teuer ist
    • Eine Privatperson, die sich damit auskennt, beauftragen


    Was ich auf die Schnelle über das Format herausgefunden habe:
    Die Design Pro Dokumente beginnen mit der Bytefolge "d0 cf 11 e0 a1 b1 1a e1", die selbe wie Office 97-2003 Dokumente, dürfte daher auch das selbe Format sein. Kurz vor dem Dateiende steht bei einer Beispieldatei, die ich angelegt habe "CPrintingInfo", kurz danach 0x1000 mal 0xFF.

    Eine Sache, die du versuchen könntest, wäre, die entsprechende Einstellung mit dem Registry-Editor (regedit.exe) zu bearbeiten.
    Ich hab im Screenshot den Pfad, zu dem du navigieren musst rot hervorgehoben, dort die Einstellung "customized-sa-files-request" via Doppelklick auf 1 ändern.
    Solltest du ein 32-Bit-Betriebssystem haben, lass den Teil "Wow6432Node" weg.

    EDIT: MTA sollte dazu beendet sein.

    Ich hatte einmal eine ähnliche Idee (und schon angefangen, sie zu implementieren), nur dass dabei jeder bannen könnte, aber wenn der Bann angefochten wird Beweise vorliegen müssten. Das ganze auch in etwas größerem Stil, mit Webinterface wo man seine Server registrieren könnte und mit einem Reputationssystem ähnlich wie MCBans. Ob ich das System dann selbst betrieben hätte, oder es an jemanden weitergegeben hätte, weiß ich nicht. Genau so wenig weiß ich, ob es gut funktioniert hätte. Aber egal.

    Alles in allem ist euer System nicht per se schlecht, durchaus interessant, nur sehr ausbaufähig.
    Wäre wirklich schön, wenn draus so etwas Großes wird, wie ich es mir bei meiner Idee vorgestellt habe.