
Last changed: 28.05.2012 15:08
Completion: Beta (half done)
Date of publication: bald...
User niveau: Good
Translate to english
Wichtig: Kein Szenario. Dies ist ein Clonk Entwicklertool.
ID Indiz 
Das Indizierungstool für Clonk Objekte.
Download der Beta Version (0.2.1.1). Zur Verwendung wird das .Net Framework 3.5 bzw. unter Linux Mono 2.10.8 benötigt.
Bei Fehlern hier melden: Bugtracker
News:
V0.2.1.1: Temporärer Ordner von %temp%\ auf %temp%\ID_Indiz\ geändert. Vorteil: So werden beim Entpacken durch C4Group weniger Unterbrechungen verursacht.
V0.2.1.0: Aktueller Stand: Indizierung, Verwendung temprärer Ordner, Speicherung und Laden von Objektlisten, Suche, Check des Exit Codes von C4Group (Bei Fehlercode: Nachfrage zur Wiederholung)
V0.1.3.1: Jetzt kann man per Klick auf Registry-Check die C4Group Datei finden und die Schrift für IDs ist jetzt unproportional. Außerdem jetzt alles in Try-Catch Klauseln und Anzeige der Ergebnisanzahl.
Jeah V0.1.2.0! Jetzt läuft alles über Temporäre Ordner!
Juhu, die erste Verion (0.1) Hotfix (0.1.1.0) ist ferig! Download Here! WICHTIG: Die C4Group-Datei muss ausgewählt werden, ausgewählte C4D Archive werden (noch) NICHT in einen Temporären Ordner kopiert und NICHT wieder gepackt!
Deshalb nur KOPIEN zum Indizieren verwenden. Speicherung noch nicht fertig.
Jetzt als neues Projekt auf CCF! Wir befinden uns noch in der Planungsphase, aber hoffenlich haben wir das Zeug in einiger Zeit im Kasten!
Idee:
Welcher Entwickler hat sich nicht schonmal gefragt: "Was ist nochmal die ID von ...?" oder ein fremdes Script angeschaut, und sich gefragt: "Zu welchem Objekt gehört diese ID?"
Meine Meinung: Damit muss Schluss sein! Wer hat denn Lust, alle verwendeten Objektordner mühevoll zu durchsuchen, um eine popelige ID rauszufinden?
Deshalb meine Idee: Ein Programm, dass Objektordner selbstständig indiziert und Suchmöglichkeiten bietet.
Screen:
Hier ein kleiner Screenshot aus Version 0.2.0.0: (Es wurde Hazard.c4d indiziert, die vorher erstellte Objektliste von Objects.c4d verwendet und nach 'Bomb' gesucht.)
Am Aussehen hat sich von 0.2.0.0 zu 0.2.1.1 nichts geändert.

Anleitung zur Benutzung der Beta Version:
- Pfad der C4Group Datei per '...' Button auswählen oder per Registry suchen lassen (keine Garantie ^^)
- Gepackte Objektordner per 'Objektordner hinzufügen' auswählen. / Objeklisten hinzufügen (im Auswahlfenster muss der Dateityp geändert werden).
- Nachdem alle ausgewählt sind auf 'Start' klicken. Es können sich mehrfach C4Group Fenster öffnen und schließen. Das Programm kann zeitweise nicht reagieren.
- Sobald im unteren Teil des Fensters eine Liste erscheint ist die Indizierung abgeschlossen. Alle Objekte sind nach ID sortiert.
- Zum Suchen in die Suchleiste einen Begriff eingeben und auf Suchen klicken (Auf Groß/Kleinschreibung achten.
Zum Anzeigen aller Objekte Suchleiste leeren und auf Suchen klicken.
Technik:
Das Programm sollte ganz einfach die ausgewählten Objektordner in einen temporären Ordner zu kopieren, mit C4Group zu entpacken und dann die Defcores zu durchforsten und einzulesen.
Später sollte auch noch eine Speicherfunktion hinzukommen, damit das nicht bei jedem Programmstart durchgeführt werden muss (Bzw. eine Differenzierte Einlesung, für Pakete, die sich verändert haben).
Basieren sollte das natürlich auf einer gängigen Programmiersprache: (Habe mich jetzt für C# entschieden.)
- Vorschlagen würde ich
VB.Netoder C#, da ich mich mit beiden gut auskenne. Leider kann ich keine Datenbanken verwenden, kenne mich aber gut mir Dateien aus, und könnte einfache Listenspeicherung verwenden. C und C++ muss ich leider ablehnen, da ich nix davon beherrsche.Java wäre für mich auch nicht das Beste. Zwar kenne ich mich mit der Programmierstruktur und dem Grundlegenden aus, kann allerding User Interfaces nur für Android schreiben. Da müsste das jemand für mich übernehmen.
Unter der Haube:
Hab mir da schon einige Gedanken gemacht (sonst würd ich's nicht hier her stellen ;) ).
Indizierung: (jetzt mal allgemein formuliert)
void OrdnerEinlesen (string Path)
{if(HatUnterordner(Path))
for(string Unterordner of AlleUnterordner(Path))
OrdnerEinlesen(Unterordner);
if(DateiExistiert(DefCore.txt))
{
FileStream f = new Filestream(DefCore.txt);
Einlesen, Bla bla bla...
}
}
Ja, ich hab absichtlich teilweise Relative Pfade verwendet, um es Übersichtlich zu halten.
Nun... So In etwa stelle ich mir das vor. Hoffe ich bekomme Rückmeldung, evtl. einige motivierte Tester und viele Abnehmer.
19.08.2012 19:56, ![]() | |
Die Idee ist gut, gefällt mir! |
02.07.2012 11:47, ![]() | |
Ich vote erst einmal o, da ich denn Sinn dieses Tools nicht ganz sehe. Klar, es soll IDs herausfinden. Doch ich habe nie länger als ein paar Sekunden gebraucht, eine ID herauszufinden. Auch kenne ich mittlerweile viele auswendig. Vlt. ändert sich mein Vote noch zu + wenn es fertig und wirklich gut zu gebrauchen ist. Aber erstmal ist mir die Idee nicht gut genug. |
30.05.2012 14:41, ![]() | |
Finde ich eine sehr gute Idee und hoffe, dass diese auch sehr bald umgesetzt wird. |
Ich teile constantins meinung^^
String filename = "foo.c4d";
// Datei öffnen
System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
// BinaryReader platzieren
System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
// FileSize?
long length = new System.IO.FileInfo(filename).Length;
// Datei in buffer einlesen
byte buffer[] = br.ReadBytes((Int32)length);
// aufräumen
fs.Close();
fs.Dispose();
br.Close();
// c4g-header magic!
MemScramble(buffer);
// GZipStream platzieren und einlesen
GZipStream gs = new GZipStream(new MemoryStream(buffer), CompressionMode.Decompress);
// GZipStream in MemoryStream kopieren
System.IO.MemoryStream ms = new System.IO.MemoryStream();
gs.CopyTo(ms);
// ms ist der MemoryStream zur entpackten c4group
// Die kannst du nun, entsprechend der Dokumentation, einlesen
// Beispiel:
byte[] bAuthor = new byte[32];
ms.Read(bAuthor, 40, 32);
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
String author = enc.GetString(bAuthor);
(Syntax-Highlighting hier)
Aber Achtung - ungetesteter Code! Ich würde mir vorher eine Kopie der Gruppe anlegen.
Last change: 04.06.2012 01:55
also /script ...
Ich kann höchstens noch das Inhaltsverzeichnis lesen... Ich lad mir mal den CR sourcecode runter und schau mir das an...
PS. Habs mir runtergeladen... Hab auch dieses MemScramble Dings gefunden und im Quellcode gibts jede Menge Methoden wie FileExtract, ExplodeDirectory und so...
aber ich weiß nicht genau was ich damit anfangen soll ;)
Muss ich das ganze Zeug in meinen Quellcode einfügen? Wie verwende ich das?
Last change: 01.06.2012 09:13
Last change: 26.05.2012 15:35
z.B. /script CreateObject(GetID(this(Feuerstein)))?
Nutze die Macht!
http://www.clonk.de/docs/de/sdk/script/fn/GetID.html
@ den Rest, den du geschrieben hast: Ernsthaft? Vielleicht solltest du das nochmal nachprüfen .
Last change: 24.05.2012 22:54