(06.03.2016 02:03)Timeflyer schrieb: Ich leider nicht, weil vom Coden so gut wie Null Ahnung (auch nach zwei Wochen der Recherche über NML und GrfCodec und Specs usw... , verstehe nur weiterhin Bahnhof. lol , scheinbar liegt mir das nicht )
Versuch es doch mal mit einem praktischen Beispiel:
Code:
/*
* Dieser Block definiert die Basisdaten der NewGRF:
* http://newgrf-specs.tt-wiki.net/wiki/NML:GRF
*/
grf {
//Die grfid ist ein -hoffentlich- einmalige ID mit 4 Buchstaben bzw jeweils zwei Ziffern pro Buchstabe (und \ davor)
grfid: "TFW\01";
//Das ist der Name der GRF (der dann im Menü angezeigt wird). Es wird ein String mit entsprechendem Name in der lng-Datei referenziert.
name: string(STR_GRF_NAME);
//Die Beschreibung für das Menü. Ebenfalls ein String.
desc: string(STR_GRF_DESCRIPTION);
//Die Versionsnummer (am besten immer aufsteigend)
version: 0;
//Die älteste Versionsnummer, die noch kompatibel ist.
min_compatible_version: 0;
}
/*
* Spriteset: Dieser Block "schneidet" die einzelnen Sprites aus einer Grafikdatei aus.
* In der ersten Zeile wird in den runden Klammern der Name für den Block gesetzt, um den später verwenden zu können
* In der zweiten Zeile wird ein Sprite aus der Datei geholt.
* [x-Wert linke obere Ecke, y-Wert linke obere Ecke, Breite, Höhe, Verschub-X, Verschub-Y, Datei]
* http://newgrf-specs.tt-wiki.net/wiki/NML:Realsprites
*/
spriteset (spriteset_windrad) {
[0, 0, 114, 70, -57, -30, "gfx/windrad.png"]
}
/*
* Dieser Block setzt das Objekt zusammen.
* Auch hier wird in der ersten Zeile der Name eingesetzt. In den Klammern könnten Parameter gefordert werden.
* Im ground-Block wird ein Boden ausgewählt.
* Im building-Block wird ein Spriteset (von oben) eingesetzt.
* Die Bedeutung der Optionen gibt es hier: http://newgrf-specs.tt-wiki.net/wiki/NML:Spritelayout
*/
spritelayout layout_windrad() {
ground {
sprite :GROUNDSPRITE_SNOW;
hide_sprite :1;
}
building {
sprite :spriteset_matterhorn_purchase();
always_draw :1;
xextent :16;
yextent :16;
zextent :50;
zoffset :0;
}
}
/*
* Dieser Block ist für die ganzen Eigenschaften zuständig.
* Diese sind alle hier beschrieben http://newgrf-specs.tt-wiki.net/wiki/NML:Objects
*/
item (FEAT_OBJECTS, item_windrad) {
property {
class :"WIND";
classname :string(STR_CLASS_WIND);
name :string(STR_WINDRAD_NAME);
climates_available :bitmask(CLIMATE_ARCTIC, CLIMATE_TEMPERATE, CLIMATE_TROPIC);
size :[1,1];
build_cost_multiplier :0;
remove_cost_multiplier :0;
introduction_date :date(1900,1,1);
end_of_life_date :0xFFFFFFFF;
object_flags :bitmask(OBJ_FLAG_NO_FOUNDATIONS);
height :10;
num_views :1;
}
graphics {
default :layout_windrad;
purchase :layout_windrad;
additional_text :string(STR_WINDRAD_PURCHASE);
autoslope :CB_RESULT_AUTOSLOPE;
}
}
Das wäre der ganze Code für eine GRF mit einem einzelnen Objekt. Lese dir das mal durch und schreibe, an welcher Stelle ein Verständnis-Problem existiert.