Einfaches Asset-Menü/ Modtest

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Hallo zusammen,

    ich erstelle eine Mod mit mehreren Litfaßsäulenvarianten. Diese sollen im Asset-Menü in einer Untergruppe auswählbar sein. Die Ursprungsmod mit einer Säule habe ich via Model Editor ins Hauptprogramm bringen können, auch das Kategorieicon wurde im Assetfenster mit UI-Vorschaubildern angezeigt - soweit kein Problem. Im weiteren Schritt wollte ich die Varianten einbauen. Dazu habe ich u.a. die con-Datei geändert, wobei ich von vermutlich ähnlichen Mods Scriptbausteine übernommen habe.


    Ich erhalte folgende Meldungen:

    Model Editor: siehe jpg


    stdout.txt:

    __CRASHDB_CRASH__ struct lua::LuaException: ..\..\src\Lib\lua\State.cpp:402: void __cdecl lua::State::DoBuffer(const char *,int,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &): [string "G:/Steam/userdata/297617233/1066780/local/sta..."]:30: unexpected symbol near '}'

    Exception type: Lua exception


    Details:


    Error message: [string "G:/Steam/userdata/297617233/1066780/local/sta..."]:30: unexpected symbol near '}'


    File name: G:/Steam/userdata/297617233/1066780/local/staging_area/sab_Lit_V1_1/res/construction/asset/sab_Lit_V1.con


    Minidump: G:/Steam/userdata/297617233/1066780/local/crash_dump/97ef7873-794d-4525-b694-8f8bec80bfd4.dmp



    In file: ..\..\src\Lib\lua\State.cpp:402


    In function: void __cdecl lua::State::DoBuffer(const char *,int,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)



    In der con-Datei steht folgender Code:

    function data()


    return {

    type = "ASSET_DEFAULT",

    description = {

    name = _("Litfass V1"),

    description = _("")

    },

    availability = {

    yearFrom = 1950,

    },

    buildMode = "MULTI",

    categories = { "sabon" },

    order = 999,

    skipCollision = true,

    autoRemovable = true,

    updateFn = function(params)

    local result = { }


    local models = {

    "sab_Lit_V1_1.mdl",

    "sab_Lit_V1_2.mdl",

    "sab_Lit_V1_3.mdl",

    "sab_Lit_V1_4.mdl",

    "sab_Lit_V1_5.mdl",

    }


    result.models = { { id = models[params.model + 1], transf = unitMat, } }

    transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0.0, 1 }

    } }


    result.terrainAlignmentLists = { {

    type = "EQUAL",

    faces = { }

    } }


    return result

    end

    }


    end


    Da ich die Fehlermeldung nicht verstehe, wie muss ich den Code ändern?



    Zweites Thema/Frage, wo ich schon mal dabei bin: besteht die Chance, das UG ein strassenkompatibles eingleisiges Tramgleis rausbringt, das z.B. für Überlandbereiche durch Blockstellen wie beim Bahnbereich gesichert werden kann, so das die Bahnen nicht mehr ineinander durchfahren?


    Danke schon mal, sabon

  • Danke Yoshi, das Hauptprogramm läßt sich wieder starten.


    Die Meldung beim Model Editor ist aktuell:

    Exception type: struct io::OpenException


    Details:


    File name: asset/sab_Lit_V1_1.mdl


    In file: ..\..\train_fever\src\Lib\Util\io\FileIO.cpp:25


    In function: class std::vector<char,class std::allocator<char> > __cdecl io::ReadToEnd(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)

    ---------------------------------


    In der stdout:


    Error message: error: [string "G:/Steam/userdata/297617233/1066780/local/sta..."]:27: attempt to perform arithmetic on field 'model' (a nil value)

    stack traceback:

    =[C](-1): __add

    G:/Steam/userdata/297617233/1066780/local/staging_area/sab_Lit_V1_1/res/construction/asset/sab_Lit_V1.con(27): ?

    @res/config/base_config.lua(41): ?



    File name: G:/Steam/userdata/297617233/1066780/local/staging_area/sab_Lit_V1_1/res/construction/asset/sab_Lit_V1.con


    Key: game/config/ConstructWithModules


    Minidump: G:/Steam/userdata/297617233/1066780/local/crash_dump/51906959-96d8-4df0-8290-f433c8ec3fc2.dmp



    In file: ..\..\src\Lib\lua\State.cpp:592


    In function: void __cdecl lua::State::Call(int,int)


    ------------------------------

    Aktueller con-Text:

    function data()


    return {

    type = "ASSET_DEFAULT",

    description = {

    name = _("Litfass V1"),

    description = _("")

    },

    availability = {

    yearFrom = 1950,

    },

    buildMode = "MULTI",

    categories = { "sabon" },

    order = 999,

    skipCollision = true,

    autoRemovable = true,

    updateFn = function(params)

    local result = { }


    local models = {

    "sab_Lit_V1_1.mdl",

    "sab_Lit_V1_2.mdl",

    "sab_Lit_V1_3.mdl",

    "sab_Lit_V1_4.mdl",

    "sab_Lit_V1_5.mdl",

    }

    result.models = { { id = models[params.model + 1], transf = unitMat, } }


    result.terrainAlignmentLists = { {

    type = "EQUAL",

    faces = { }

    } }


    return result

    end

    }


    end

  • Deine Construction hat noch keinen definierten Parameter namens "model".

    https://www.transportfever2.co…tructionbasics#parameters


    Entsprechend ist der in Zeile 27 verwendete Wert params.model nicht vorhanden. Ein mathematisches Addieren auf "Nichts" ist nicht möglich.

  • Danke noch mal. Im Model Editor wird alles richtig angezeigt.


    Aber im Hauptprogramm hat es diese Meldung:


    Error message: [string "G:/Steam/userdata/297617233/1066780/local/sta..."]:29: unexpected symbol near '{'


    File name: G:/Steam/userdata/297617233/1066780/local/staging_area/sab_Lit_V1_1/res/construction/asset/sab_Lit_V1.con


    Minidump: G:/Steam/userdata/297617233/1066780/local/crash_dump/ae78f6f8-10d2-407b-a437-af5e856716ae.dmp


    --------

    con-Datei:

    Ich habe die Definition von der Beispielmod übernommen, weicht also etwas vom wiki-Eintrag ab.


    function data()


    return {

    type = "ASSET_DEFAULT",

    description = {

    name = _("Litfass V1"),

    description = _("")

    },

    availability = {

    yearFrom = 1950,

    },

    buildMode = "MULTI",

    categories = { "sabon" },

    order = 999,

    skipCollision = true,

    autoRemovable = true,

    updateFn = function(params)

    local result = { }


    local models = {

    "sab_Lit_V1_1.mdl",

    "sab_Lit_V1_2.mdl",

    "sab_Lit_V1_3.mdl",

    "sab_Lit_V1_4.mdl",

    "sab_Lit_V1_5.mdl",

    }


    result.models = { { id = models[params.model + 1], transf = unitMat, } }

    {

    key = "model",

    name = _("Model"),

    uiType = "ICON_BUTTON",

    uiType = "BUTTON",

    values = {

    "ui/construction/asset/sab_Lit_V1_1.tga",

    "ui/construction/asset/sab_Lit_V1_2.tga",

    "ui/construction/asset/sab_Lit_V1_3.tga",

    "ui/construction/asset/sab_Lit_V1_4.tga",

    "ui/construction/asset/sab_Lit_V1_5.tga",


    },

    },


    result.terrainAlignmentLists = { {

    type = "EQUAL",

    faces = { }

    } }


    return result

    end

    }


    end


    Was ist da falsch?

  • Ich will nun wirklich nicht bockig sein, aber ich bin das erste Mal mit einer con-Datei beschäftigt und mir raubt das Teil den letzten Nerv.


    Das ist der hauptsächlich aus der Konvertierung im Model Editor entstandene Code, mit dem die Mod funktioniert - aber ohne die Auflistung der Varianten im Asset Menü (das Gruppen-Icon wird aber angezeigt):


    function data()


    return {

    type = "ASSET_DEFAULT",

    description = {

    name = _("Litfass V1"),

    description = _("")

    },

    availability = {

    yearFrom = 1950,

    },

    buildMode = "MULTI",

    categories = { "sabon" },

    order = 999,

    skipCollision = true,

    autoRemovable = true,

    updateFn = function(params)

    local result = { }


    result.models = { {

    id = "asset/sab_Lit_V1_1.mdl",

    transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0.0, 1 }

    } }


    result.terrainAlignmentLists = { {

    type = "EQUAL",

    faces = { }

    } }


    return result

    end

    }


    end

    ------------------


    Das ist eine von vielen umgebauten Versionen und von einer Mod mit Asset-Sammlung adaptiert - das rot Markierte mag das Hauptprogramm nun nicht (mal abgesehen, das da einiges enthalten sein dürfte, was gar nicht gebraucht wird):



    function data()

    local function makeParams()

    return {

    {

    key = "residents",

    name = _("Residents"),

    values = { _("None"), _("None") }

    },

    {

    key = "Rcapacities",

    name = _("RCapacities"),

    values = { _(""), _(""), _(""), _(""), _(""), _("") }

    },

    {

    key = "clients",

    name = _("Clients"),

    values = { _("None"), _("None") }

    },

    {

    key = "Ccapacities",

    name = _("CCapacities"),

    values = { _(""), _(""), _(""), _(""), _(""), _("") }

    },

    {

    key = "model",

    name = _("Model"),

    -- uiType = "ICON_BUTTON",

    uiType = "BUTTON",

    values = {

    -- "ui/construction/asset/sab_Lit_V1_1.tga",

    -- "ui/construction/asset/sab_Lit_V1_2.tga",

    -- "ui/construction/asset/sab_Lit_V1_3.tga",

    -- "ui/construction/asset/sab_Lit_V1_4.tga",

    -- "ui/construction/asset/sab_Lit_V1_5.tga",

    },

    },

    {

    key = "terrain",

    name = _("Terrain"),

    values = { _("No"), _("Yes"), }

    },

    }

    end


    return {

    type = "ASSET_DEFAULT",

    description = {

    name = _("Litfass V1"),

    description = _("desc")

    },

    availability = {

    yearFrom = 1950

    },

    buildMode = "MULTI",

    categories = { "sabon" },

    skipCollision = true,

    autoRemovable = true,


    params = makeParams(),


    updateFn = function(params)

    local result = { }


    result.models = { {

    id = "asset/sab_Lit_V1_1.mdl, sab_Lit_V1_2.mdl, sab_Lit_V1_3.mdl, sab_Lit_V1_4.mdl, sab_Lit_V1_5.mdl"

    }


    result.terrainAlignmentLists = { {

    type = "EQUAL",

    faces = { }

    } }


    return result

    end

    }


    End

  • Bei den params bei model sind die Werte auskommentiert.

    Und wie gesagt, die models liste da mit id ist falsch, die kommt eigentlich oben, außerhalb der updateFn hin, das hat vorher eig gepasst.


    Für einfache Parameter kann ich ParamBuilder empfehlen, da sind auch einfache Beispiele vorhanden, wie für eine Liste mit Modellen.

  • @Vielen Dank Graf Romanic

    ich war gestern zum Schluß zu müde und habe die Abführungszeichen für die id-Parameter vergessen. Die zweite geschweifte Klammer hatte ich bei einem vorherigen Versuch enthalten gehabt, war aber auch nicht durchgekommen. Whatsoever ist jetzt enthalten. Komischerweise wollte das Programm dann noch am Schluß ein klein geschriebenes "end", dann ließ es sich wieder öffnen, aber die Assetanzeige funktioniert immer noch nicht. Ich bin noch am testen.


    @Vielen Dank auch VacuumTube,
    ich habe mir deinen ParmBuilder testhalber eingefügt und werden mit Fragen auf sich zukommen.

  • Hallo zusammen,

    meine ersten Assets stehen hoffentlich kurz vor dem Abschluss. Ich habe aber noch ein paar Fragen, damit die Mods fehlerfrei veröffentlicht werden können und hoffe auf eure Hilfe:


    A) Kiosk

    • Performance: In Cinema besteht die Versuchung, Details zu modellieren, die im Spiel kaum zu sehen sind. Bei den Rundungen habe ich so wenig Segmente gewählt, wie es mir optisch erträglich erschien. Dennoch: ist der Performanceverbrauch angemessen?
    • Ich habe pro forma für die Ziegelvariante eine Lod-Stufe definiert. Ich habe aber den Eindruck, dass sich da nicht viel tut. Falsches Scripting?
    • Normal Map: Hier sehe ich keine Veränderung auf der Wandfläche. Fehler in der Datei bzw. ist eine Normal Map bei so einem kleinen Modell überhaupt notwendig und ein höherer Kontrast bei der Textur tut es auch?
    • Habe ich etwas vergessen oder sollte geändert werden?

    B) Litfaßsäule V2

    • Zum einfacheren Platzieren sollte das Asset immer zur Maus bei der Platzierung ausgerichtet sein. Geht das – ich habe da eine Zeile in der Mdl im Kopf, aber beim experimentieren hat sich nix getan

    C) Asset-Menü

    • VacuumTube hat mir schon erklärt, wo die Vorschaubilder für den Assetbalken rein sollen und was bei der Namensgebung beachtet werden soll. Trotzdem werden die Dinger nicht angezeigt. Die Ursache wird ein dämlicher Fehler sein, aber trotzdem, what the hack ist da los?

    Der Download ist hier: Bitte um Mod-Test: Kiosk und Liffaßsäule. Danke schon mal für eure Hilfe.

  • sabon

    Hat den Titel des Themas von „1) Fehler bei Assetkategoriebildung 2)fehlende strassenkompatible Überlandtramgleise“ zu „Bitte um Modtest“ geändert.
BlueBrixx