Ich hab auch Windows hier. Ich schaue mal wegen der stdout. Und ja...ich nehme an TPF2 wird mehr Goodies haben. Ich fuchse mich ja auch eher in die Themen ein, um für Q4 gewappnet zu sein.
Wegen dem Shellscript guck ich mal nach.
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
Ich hab auch Windows hier. Ich schaue mal wegen der stdout. Und ja...ich nehme an TPF2 wird mehr Goodies haben. Ich fuchse mich ja auch eher in die Themen ein, um für Q4 gewappnet zu sein.
Wegen dem Shellscript guck ich mal nach.
Hi @eis_os, besteht noch Bedarf an einem technisch versierten Tester auf MacOS?
Da ich selber auf einem Mac an Missionen arbeiten würde, wäre die CommonAPI-Console super praktisch. ![]()
Hi,
TPF fehlt es an Missionen. Endlich habe ich Zeit gefunden mich in das Thema einzuarbeiten.
Hier ein Vorgeschmack:
Das Video zeigt eine Mission die nichts anderes macht, als die Position eines Depots im gelben Kreis anzuzeigen. Das sind ja Infos die es braucht, um auf fremden Maps irgendwas zu lokalisieren.
Leider ist mir bis jetzt nicht bekannt, irgendwelchen Text irgendwohin auszugeben. Daher dieser Workaround.
Mod zum Download: http://momocat.de/gaming/tpf/mods/momocat_tc_1.zip
Ich habe auch mein Tooling soweit eingerichtet, dass ich relativ flott weiterarbeiten kann, sollte ich Zeit finden. Im Idealfall werden sogar Lexikonartikel entstehen, dann aber eher für TPF2. Ich hoffe von UG noch Schreibrechte fürs Wiki zu erhalten ( @tomdotio
), um dort Dinge zu dokumentieren.
Mfg,
Momocat
Zum Schluss noch die Mission
local TaskManager = require "TaskManager"
local missionutil = require "missionutil"
local function makeIntroTask(doneFn)
local info = {
name = _("Dummy Task"),
paragraphs = {
{ text = "Build a depot and check it's corrdinates. Delete it afterwards and build a new one." },
},
}
local function fn(taskManager, task)
task.setCompleted()
doneFn(taskManager)
end
info.options = { { _("End Mission!"), fn } }
info.optionsRightAlign = true
local task = missionutil.makeTask(info)
task.setProgressNone()
return task
end
local function makeListenTaskX(doneFn)
local info = {
name = _("X"),
paragraphs = {
{ text = "Listen X" },
{ type = "TASK", text = _("Pos X") }
},
}
local task = missionutil.makeTask(info)
task.init = function(taskManager, data)
local centerPoly = missionutil.makeCircleZone({0,0},2000)
local centerZone = {polygon = centerPoly, draw = true, drawColor = missionutil.colors.YELLOW}
taskManager:setZone("center",centerZone)
task.setProgressCount(0, 20000)
end
task.update = function(taskManager)
local depotList = game.interface.getEntities({pos={0,0},radius=2000}, {type = "VEHICLE_DEPOT"} )
if #depotList == 0 then
task.setProgressCount(0, 20000)
return
end
for i = 1, #depotList do
local depot = game.interface.getEntity(depotList[i])
local x = depot.position[1]
task.setProgressCount(x, 20000)
end
end
return task
end
local function makeListenTaskY(doneFn)
local info = {
name = _("Y"),
paragraphs = {
{ text = "Listen Y" },
{ type = "TASK", text = _("Pos Y") }
},
}
local task = missionutil.makeTask(info)
task.init = function(taskManager, data)
task.setProgressCount(0, 20000)
end
task.update = function(taskManager)
local depotList = game.interface.getEntities({pos={0,0},radius=2000}, {type = "VEHICLE_DEPOT"} )
if #depotList == 0 then
task.setProgressCount(0, 20000)
return
end
for i = 1, #depotList do
local depot = game.interface.getEntity(depotList[i])
local y = depot.position[2]
task.setProgressCount(y, 20000)
end
end
return task
end
local function makeMissionComplete(label)
local info = {
title = _("Mission completed!"),
name = _("Mission completed!"),
description = _("It's finally done!")
}
local function fn(taskManager, task)
missionutil.completeAllTasks(taskManager)
end
local task = missionutil.makeMissionCompleteTask(info, fn)
return task
end
function data()
local tm = TaskManager.new()
tm:register("messageIntro", makeIntroTask, missionutil.addTask("missionComplete"))
tm:register("missionListenX", makeListenTaskX, missionutil.addTask("missionComplete"))
tm:register("missionListenY", makeListenTaskY, missionutil.addTask("missionComplete"))
tm:register("missionComplete", makeMissionComplete)
local mission = missionutil.makeMissionInterface(tm)
mission.onInit(function()
tm:add("messageIntro")
tm:add("missionListenX")
tm:add("missionListenY")
end)
return mission
end
Alles anzeigen
Nächster kleiner Schritt ist getan. Ich habe die Tutorial-Map in meine eigene Dummy-Mission eingebunden.
Schritt 2 war irgendwie nicht intuitiv. Aber jetzt funktioniert die Mission.
Ich habe jetzt nochmal verstärkt in die Missionen von UG geschaut.
Ich habe auch eine Idee für eine kleine hübsche Mission. Ich schau malm ob ich deinen Mission Manager dazu verwenden kann.
Idee: Auf der Tutorial Map den Verkehr auf der Brücke zählen und den Spieler via Busverkehr diesen Verkehr unter ein Limit bringen lassen. Simpel aber als erste Mission gut genug.
Ich versuche ein offenes Repo bei der Entwicklung zu verwenden.
Nein, ich habe mich durch die Kampagnen und die Skripte dazu gewühlt um die Schnittstellen zu verstehen (res/Campaing/..., res/Scripts/TaskManager.lua, res/Scripts/missionUtil.lua).
Ich habe mich auch mal soeben nochmal durch die Dokus und andere Skripte gewühlt.
Ich glaube bevor hier irgendjemand Missionen/MissionManagerPlugins baut, muss man erstmal erklären, was alles so möglich ist. Ich denke da an die findPath-Funktion aus http://transportfever.com/wiki…e.interface.html#findPath
MIr juckt es eigentlich in den Fingern, die Original-Sourcen von Urban Games mal durchzugehen und die Funktionen zu beschreiben. Natürlich nur, falls das noch niemand gemacht hat. Ich glaube erst dann versteht man, was man an Missionen so bauen kann.
Und wenn die Möglichkeiten den Mod-Autoren so bekannt sind, dann könnte man z.B. ein Plugin für ein Lok-Paket bauen nach folgenden Muster:
oder Medallie fürs Transportieren von xxx Einheiten Ladung zu einer custom-Industrie.
Mal sehen, ob ich Dir da mit der Doku zu Seite stehen kann/will. ![]()
Hallo BR146. Das ist ja mal eine tolle Idee! Mir persönlich fehlen ja Maps mit tollen Missionen.
Mir als SW-Entwickler ist auch völlig klar warum, weil die Doku
ja sehr knapp sind. Man muss immer in existierenden Code schauen, um zu verstehen was wie geht.
Mal noch zwei Frage zum Schluss:
Ich glaube ich würde mal versuchen ein Plugin zu bauen, was eine Medallie für die erste Eisenbahnlinie vergibt. So als erweitertes Template. ![]()
Noch eine Verständnisfrage: Hast du eine Doku für den TaskManager und missionUtil irgendwo gefunden? Das sind doch Infrastrukturen sie man eventuell irgendwie braucht.
my 2 cents on this topic from a software developer active since 10 years:
The documentation of is not sufficient. If you look at steamapps/common/Transport Fever/res/campaign/tutorial/01/script.lua you find
As a developer I would like to see what APIs TaskManager and missionutil offer. But there is NO documentation about these guys.
So now I could ask @tomdotio where is the documentation of
?? I cannot find it in the wiki.
I am not surprised that nobody creates missions, because there is way to little documentation.
Another example:
Why do we need a TaskManager? In the linked example (http://www.transportfever.com/…operinfo:missionscripting) there should be comments all over the place. The comments should explain the motivation of using a TaskManager and what it does.
As long as not all the infrastructure for mission creation is not properly documented only insiders or very dedicated people like @osprey will manage to create missions. The situation has to improve!
sorry for my rant, but the lack of documentation really hurts the community here.
Habt ihr noch Probleme mit abbremsenden Zügen?
Mein aktuelles Save (vanilla, schwer) leidet an manchen Stellen darunter.
Gerade Linie 7 bremst an mindestens 3 Stellen einfach so ab.
http://momocat.de/hardtry4.sav
Interessant ist auch, dass manchmal nur ein schnellerer Zug vom Bremsproblem betroffen ist. So kachelt manchmal ein Dieselzug mit 140 über eine Stelle, wo eine E-Lok von 160 auf 90 km/h abbremst.
@tomdotio - Wird dieses Problem in TF (1) jemals gelöst werden?