Da immer noch kein gott verdammter Idiot auf die Idee gekommen ist, sich das SDK von Granny mal genauer anzuschauen, release ich den Scheiß mal:
1. Wenn ihr das SDK entpackt, ist da ein hübscher Ordner namens "preprocessor" drin
2. Öffnet diesen Ordner nicht!
3. Ok öffnet ihn doch!
4. Öffnet die preprocessor.sln
5. Fügt eine neue Datei(*.cpp) hinzu
6. Setzt euch ein wenig damit auseinander, dann kann da sowas rauskommen:
PHP Code:
#include "Metin2copyright.h"
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <string>
using namespace std;
static CommandRegistrar RegTouchVersion(eSingleFile_NoMultiRun,
Metin2copyright,
"Metin2copyright",
"Changes the Texture of Metin2 Files.");
bool Metin2copyright(input_file& InputFile,
key_value_pair* KeyValues,
granny_int32x NumKeyValues,
granny_memory_arena*)
{
char const* OutputFile = FindFirstValueForKey(KeyValues, NumKeyValues, "output");
char const* Mesh = FindFirstValueForKey(KeyValues, NumKeyValues, "mesh");
if (OutputFile == 0)
{
fprintf(stderr, "Metin2 Copyright: must specify an output file with \"-output <filename>\"\n");
return false;
}
char const* copy = FindFirstValueForKey(KeyValues, NumKeyValues, "copy");
if (copy == 0)
{
fprintf(stderr, "Metin2 Copyight: Please set a copyright with \"-copy <You Name>\"\n");
return false;
}
granny_file* File = InputFile.GrannyFile;
granny_file_info* Info = GrannyGetFileInfo(File);
if (Info == 0)
{
fprintf(stderr, "Metin2 Copyright: unable to obtain a granny_file_info from the input file\n");
return false;
}
#define NewGrannyCurrentGRNStandardTag (0x80000000 + 16)
printf("set tag to 0x%x\n" , NewGrannyCurrentGRNStandardTag2);
for(int i = 0; i<Info->MeshCount;i++)
{
string str = Info->Meshes[i]->Name;
size_t found;
found=str.find("Copyright");
if(found!=string::npos)
{
return false;
}
}
if(Mesh==0)
{
for(int i = 0; i < Info->MeshCount; i++)
{
Info->Meshes[i]->Name = copy;
printf(copy);
printf("\n");
}
}
else
{
Info->Meshes[atoi(Mesh)]->Name = copy;
printf(copy);
}
// Write out the converted Info
granny_int32x FinalSectionCount = File->SectionCount;
if (FinalSectionCount < GrannyStandardSectionCount)
FinalSectionCount = GrannyStandardSectionCount;
granny_file_builder *Builder = GrannyBeginFile(FinalSectionCount,
NewGrannyCurrentGRNStandardTag,
GrannyGRNFileMV_Old,
GrannyGetTemporaryDirectory(),
"Prefix");
granny_file_data_tree_writer *Writer =
GrannyBeginFileDataTreeWriting(GrannyFileInfoType, Info,
GrannyStandardDiscardableSection, 0);
GrannyPreserveFileSectionFormats(Builder, File);
GrannyPreserveObjectFileSections(Writer, File);
GrannyWriteDataTreeToFileBuilder(Writer, Builder);
GrannyEndFileDataTreeWriting(Writer);
bool success = GrannyEndFile(Builder, OutputFile);
if (!success)
{
fprintf(stderr, "Metin2 Copyright: failed to write to %s\n", OutputFile);
}
return success;
}
7. In die Datei Metin2Copyright.h kommt folgendes:
PHP Code:
#include "preprocessor.h"
bool Metin2copyright(input_file&, key_value_pair*, granny_int32x,
granny_memory_arena*);
#done
Have fun & so
Ich werde dazu keinen Support geben, wenn ihr Hilfe braucht, lest die Dokumentation!
Achja, da ist auch eine elegantere Methode dabei, um den 0x80000015/Runtime error zu fixxen, ergibt sich von meinem vorgegebenen Code!