bitte helfen keine karte ladet sich mehr
Einen Error gibt es
Du bist in Begriff, OMSI WebDisk & Community zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
bitte helfen keine karte ladet sich mehr
Einen Error gibt es
Ich denke mal, dafür braucht der Bus erstmal eine K++ Matrix.
Nicht mal.
Ist es möglich bei dem Bus Krüger Bitmaps Ziele anzeigen zu lassen. Zum Beispiel Osnabrück.bmp
So nach den Script zu urteilen ist es möglich.
Allerdings können die Position der untere Hälfte variieren wegen der Liniennummernkasten rechts.
Für Fonts oder Bitmaps mit falscher Bit-Tiefe sieht das auch nicht nach aus.
Dafür sind einige Buchstaben klar zu erkennen.
Hast Du irgendwie eine Matrix Mod installiert?
weil er eine einzelne Außenschwenktür und VDV hat
aber direkt im Eingangspost der Marke MAN gefallen ist? ![]()
Ich finde es schade, dass das alles so schlimm geworden ist. Komplette Gleichschaltung. Da regiert offensichtlich der blanke Hass gegen die eigene Community.
Meinst eine Diktatur ohne Meinungsfreiheit gegen die Teammitgliedern?
Bei mir tut sich da nichts viel.
Um die 11,2MB.
Mit Delphi 7 bin ich um die 300KB wenn es funktionieren würde.
Ich hänge mal mein Testprojekt der mit Delphi 11 CE erstellt wurde an.
Edit: Nachdem ich in Delphi von Debug aus Release umgestellt habe ist die DLL nur noch 2MB hoch.
Finde ich persönlich bisschen viel wenn ich an BBS denke mit 1MB der wesentlich umfangreicher ist als ein Testobjekt.
In der Realität gibt es verschiedene Datensätze die zum Beispiel für jede Anzeige anders sein kann (Adressbasiert) oder das Front und Seite unterschiedlich sein können und die Heckanzeige das Text von der Seitenanzeige nimmt.
Und dann gäbe es noch eine Form wo man die Anzeige mittels Editor selbst gestalten kann.
Ich könnte in den Thematik genauer eingehen, aber glaube da werden viele nur Bahnhof verstehen.
In Omsi hängt es von der verwendeten Matrix und Hof Datei ab.
Zum Beispiel die Lawo Matrix von Cooper.
Ich empfehle dir diesen Wiki Eintrag Hofdatei
Bei dem Punkt "4.1. Aktuelle Strings der universellen Hofdatei" siehst Du welche Zeile in der Zieleintrag genutzt wird.
magst du mir vielleicht erklären wofür die erste Zeile steht, in deinem Beispiel die 6? In den meisten Hof-Dateien finde ich an der Stelle 4.
Das ist einfach ein Index Wert der besagt das in der [global_strings] 6 Einträge befindet.
Es soll wohl auch mit C++ oder C# Forms gehen da hab ich aber absolut kein Durchblick wie das Funktionieren soll.
C++ wenigstens.
Aber man könnte jetzt auch darüber streiten was am einfachsten ist.
Für den Visual C++ Editor gab es auch einen Zusatzmodul für den Plugin Framework den man leider nicht mehr downloaden kann.
Am Ende hängt es eh ab wie weit man sich mit der Materie beschäftigt.
die Fehlermeldung konnte ich eliminieren das liegt aber auch schon Jahre zurück den Code hab ich nicht mehr.
Das konnte ich heut' nachmittag dank die Hilfe vom Thomas beseitigen.
Entsprechend sehen die Einträge wie folgt aus:
library Test;
uses
ShareMem,
System.SysUtils,
System.Classes,
vcl.Forms,
TestU in 'TestU.pas' {Form1};
{$R *.res}
procedure PluginStart( AOwner: TComponent ); stdcall;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm := true;
Form1.Show;
end;
procedure PluginFinalize; stdcall;
begin
Form1.Free;
end;
procedure AccessVariable( varindex: word; var value: single; var write: boolean ); stdcall;
begin
case varindex of
0:
begin
Form1.Label2.Caption := floattostrF( value, ffFixed, 5, 1 ) + ' km/h';
Form1.Gauge1.Progress := round( value );
write := false;
end;
1:
begin
value := Form1.TrackBar1.Position / 30;
write := true;
end;
end;
end;
procedure AccessTrigger( triggerindex: word; var active: boolean ); stdcall;
begin
case triggerindex of
0:
begin
active := Form1.Button1.Default;
end;
end;
end;
procedure AccessSystemVariable( varindex: word; var value: single; var write: boolean );
begin
end;
procedure AccessStringVariable( varindex: word; str: PWideChar; var write: boolean );
begin
end;
exports
PluginStart,
AccessVariable,
AccessTrigger,
AccessSystemVariable,
AccessStringVariable,
PluginFinalize;
begin
end.
Alles anzeigen
unit TestU;
interface
uses
ShareMem, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
Vcl.Samples.Gauges;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Gauge1: TGauge;
Button1: TButton;
TrackBar1: TTrackBar;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Alles anzeigen
Dazu bin ich auf Delphi 11 CE gewechselt.
Bis auf das Button sowie die Systemvariablen und Strings funktioniert es auch soweit.
Hey,
Da ich selber am versuchen bin den Beispiel aus dem Wiki nachzubauen denke ich das hier ein guter Ort ist mit meinem Anliegen.
Das mit den Zugriffsverletzung hab ich auch und wollte daher mal nachhaken, ob es in der Zeit einen erfolgt gab?
Programmieren tu ich selbst mit Delphi.
Den Fehler konnte vorerst in der procedure PluginStart eingrenzen.
Allerdings frage ich mich wo da das Problem liegt.
procedure PluginStart(AOwner: TComponent); stdcall;
begin
form1 := TForm1.Create( AOwner );
form1.Show;
end;
Form1 ist noch recht nackig und beinhaltet keine Elemente.
Es ändert sich auch nichts daran wenn ich einfach irgendwas einfüge.
Beim erstellen der DLL kommt keine Fehlermeldung.
Kann es vielleicht an der Einstellung für das Form liegen oder ist einfach mein Delphi Version zu alt?
Einen plausiblen Grund hab ich sonst nicht.
Selbst für Lotus ist der Pluginstart und Pluginfinalize gleich.
So sieht es bei aus:
library Test;
uses
ShareMem,
SysUtils,
Dialogs,
Classes,
TestU in 'TestU.pas' {Form1};
{$R *.res}
procedure PluginStart(AOwner: TComponent); stdcall;
begin
form1 := TForm1.Create( AOwner );
form1.Show;
end;
procedure PluginFinalize; stdcall;
begin
form1.Free;
end;
procedure AccessVariable( varindex: word; var value: single; var write: boolean ); stdcall;
begin
end;
procedure AccessTrigger( triggerindex: word; var active: boolean ); stdcall;
begin
end;
procedure AccessSystemVariable( varindex: word; var value: single; var write: boolean );
begin
end;
procedure AccessStringVariable( varindex: word; str: PWideChar; var write: boolean );
begin
end;
exports
AccessVariable,
AccessTrigger,
AccessSystemVariable,
AccessStringVariable,
PluginStart,
PluginFinalize;
begin
end.
Alles anzeigen
Allerdings ist die Liniennummer irgendwie auf Y verschoben
Nein ist es nicht.
Der Zieltext glaub ich auch etwas.
Ja, aber das liegt daran, dass die Krueger+ eine vertikale Höhenzentrierung hat.
Hat man Zieltexte mit g, y, j etc. wird das Zieltext nach Oben verschoben.
Zu dem Skript der Krüger+ FlipDot, weil das einfach moderner und weiter ausgebaut ist.
Würde ich mal nicht so betiteln.
Es bietet einige Funktionen mehr als der Standard Krueger, aber dafür ist es ziemlich verbastelt.
Da arbeite ich lieber mit den Standard Krueger Script und passe entsprechend auf mein Vorhaben an.
Hier klappt alles gleich viel besser:
Hätte auch mit der Standard Krueger Script geklappt wenn man weißt wie und wo was angepasst werden muss.
Es dauert zwar, aber bei jeden Fehler lernt man auch dazu.
Aber bei den Krueger+ Script bin ich da raus.
Im Script muss auch die Startzeile angepasst werden.
Sowohl für die Liniennummer
'3.A.4 Bestimmen des Fonts der Linie (seite/hinten):
0 s2
(L.$.Matrix_Nr) (L.L.Font_16x9) s0 (M.V.TextLength) s1
l3 >
{if}
0 s2
(L.$.Matrix_Nr) (L.L.Font_16x7) s0 (M.V.TextLength) s1
l3 >
{if}
0 s2
(L.$.Matrix_Nr) (L.L.Font_11x5) s0 (M.V.TextLength) s1
l3 >
{if}
3 s2
(L.$.Matrix_Nr) (L.L.Font_9x4) s0 (M.V.TextLength) s1
{endif}
{endif}
{endif}
' l0: Schriftart, l1: Länge in Pixeln
'3.A.5 Berechnen der Sperrung:
l3 l1 - l6 / trunc 1 min s7
l1 l6 l7 * + s1
'3.A.6 Berechnen des Zentrierungsaufschlages (l5):
l3 l1 - 2 / trunc s5
'3.A.7 Schreiben:
0
l5
16 l2 +
l0
2
l7
(L.$.Matrix_Nr)
(M.V.STTextOut)
{endif}
Alles anzeigen
Im original Krueger Script startet die Linie für Seite/Hinten ab Zeile 16 und zusätzlich soll der s2 Wert für die Font berücksichtigt werden. Die 16 muss bei dir als 19 stehen
Für das Ziel ist folgender Eintrag zuständig:
'Schreiben des Zieles Front-Anzeige:
0 (S.L.Matrix_Ypos)
(M.L.Matrix_WriteTerminus)
'Und Schreiben des Zieles Seitenanzeige:
30 (S.L.Matrix_Xpos)
16 (S.L.Matrix_Ypos)
(M.L.Matrix_WriteTerminus)
Alles anzeigen
16 (S.L.Matrix_Ypos) gibt wieder die Startzeile an. Auch hier muss die 16 durch 19 ersetzt werden.
Das er bei manche Einzeilige Ziele nur Oben darstellt könnte an den S2 Wert liegen:
'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):
l4 {if}
9 s7
0 s2
(L.$.Matrix_TerminusL1) (L.L.Font_16x9) s0 (M.V.TextLength) s1
l3 >
{if}
7 s7
0 s2
(L.$.Matrix_TerminusL1) (L.L.Font_16x7) s0 (M.V.TextLength) s1
l3 >
{if}
5 s7
0 s2
(L.$.Matrix_TerminusL1) (L.L.Font_11x5) s0 (M.V.TextLength) s1
l3 >
{if}
4 s7
3 s2
(L.$.Matrix_TerminusL1) (L.L.Font_9x4) s0 (M.V.TextLength) s1
{endif}
{endif}
{endif}
{else}
7 s7
0 s2
(L.$.Matrix_TerminusL1) (L.L.Font_7x7) s0 (M.V.TextLength) s1
l3 >
{if}
0 s2
6 s7
(L.$.Matrix_TerminusL1) (L.L.Font_7x6) s0 (M.V.TextLength) s1
l3 >
{if}
0 s2
5 s7
(L.$.Matrix_TerminusL1) (L.L.Font_7x5) s0 (M.V.TextLength) s1
l3 >
{if}
0 s2
4 s7
(L.$.Matrix_TerminusL1) (L.L.Font_7x4) s0 (M.V.TextLength) s1
{endif}
{endif}
{endif}
{endif}
Alles anzeigen
Der erste Abschnitt von l4 bis {else] ist für Einzeilige Darstellung.
Bei diesen Eintrag...
wird das Font "Font_9x4" 3 Zeilen tiefer gestellt (s2 Wert) und hat eine maximal Spacing von 4 (s7 Wert).
Ich habe das bei mir so gelöst:
Meine Textur liegt bei 2048x1024px.
Die für 28x189px hat eine Texturauflösung von 4096x1024px.
Ein einzelner Dotsequment ist 16x16px groß.
ST Eintrag sieht dann so aus:
###################
Script-Texturen:
###################
0: Krüger-Speicher
[scripttexture]
256
64
1: Krüger-Flipdot-Alphakanal
[scripttexture]
2048
512
Alles anzeigen
Im Script sieht wie folgt aus:
[const]
Matrix_Width
189
[const]
Matrix_Height
28
[const]
Matrix_HxW
5292
[const]
Matrix_PixelFactor
8
[const]
Matrix_Baujahr
2022
[const]
Matrix_Fehlerpixel_pro_Jahr
0.001
Alles anzeigen
Mit die Einstellung habe ich auch eine 28x189 Anzeige.
Speziell bei Anpassung des ST Eintrag empfehle ich entweder vor OMSI Start die laststn:xyz.dds zu löschen oder das Fahrzeug neu zu platzieren.
Ich bin nicht ungeduldig nur wenn halt jemand mit mir schreibt die ganze zeit hin und her und dann bekomme ich keine Antwort denk ich mir halt.
Sollte damit ich gemeint sein, dann muss ich mich für den Anschein entschuldigen
Ich habe nirgends ausdrücklich erwähnt das ich dir ein Repaint erstelle bzw. für die Community im Anschluss zur Verfügung stelle.
Lediglich habe ich Punkte genannt, die bei Wünschen wichtig sind zu erfahren, um es auch einschätzen zu können. Schließlich kann so ein Repaint zwischen 30 Minuten oder mehrere Tage brauchen bis es fertig ist.
Außerdem habe ich auch Punkte erwähnt, die man im Repaint mitunter nicht berücksichtigen kann, weil dies durch den Erbauer nicht berücksichtigt wurde.
Da ich im Moment wieder an Zielanzeigen programmieren bin fehlt mir die Zeit und vor allem die Lust hinterher noch irgendwas für OMSI zu machen und sei es Mods, Repaints etc.
Nun gut, ist dennoch die Frage ob eine Rote LED Innenanzeige zur Standardausstattung gehörte.
Theoretisch könnte als Standard auch komplett Blank sein im Querkanal oder zumindest eine einfache Wagen Hält Leuchte.
Aber wäre durchaus eine Idee für 'ne Modifikation
Natürlich noch Sterne und richtige Bezeichnung (wird sicher als Mod kommen)
Gibt es sogar.
Die originale "Mercedes-Innenanzeige"
Worunter versteht man eine originale "Mercedes-Innenanzeige"?
Im Endeffekt ist das abhängig vom Kunden wie es haben will.
Hier hatten zum Beispiel ein Unternehmen lediglich eine Uhr und darunter Wagen Hält verbaut während der Kommunalbetrieb schon Lawo LCD Monitor hatte.
Zumindest weiß man um welchen Bus und Firma es sich handelt.
Für Repaint nach Vorbild zu erstellen ist es am Sinnvollsten das Originalfahrzeug von allen Seiten abzufotografieren.
Aber das wird wohl die wenigstens gelingen.
Es sei denn man arbeitet in der Firma, hat eine Kooperation etc.
Speziell wenn es um Figuren geht wie die Sternen, Mond an der Seite sind Nahaufnahmen Wertvoll um Detailgenau arbeiten zu können.
Dann ist die Frage wie sieht das Heck aus?
Im Internet wird man vermutlich Fotos finden wie der Bus von Vorne und Seitlich aussieht.
Wie man auf dem Bild erkennt, sieht man, dass gewisse Stellen Weiß geblieben sind.
Hier hängt es von ab, ob der Erbauer so etwas berücksichtigt hat oder das es ebenfalls in der gleichen Farben angepinselt ist.
Das kann also gut möglich sein wenn man die Stoßstange in Orange einfärbt das die Stellen, wo im Original Weiß sind, ebenfalls in Orange sind.
Fragen schön und gut, aber wie sollen wir Wissen was Du dir vorstellst?
Nachher sagt einer ja kann ich machen und sieht dann deine Bilder und springt wieder ab weil es vielleicht zu aufwendig ist.
Deswegen ist es angebrachter immer Bild(er) einzufügen bzw. auch zu verlinken.
Wenn es ein Repaint von einem Busunternehmen ist, hätte man wenigstens erwähnen können welchen Betrieb das sein soll. ![]()
Und wo hast Du nun genau Probleme?
Das ist genauso wie wenn ich den Busfahrer 20€ für ein Ticket gebe.
Da weiß er nach wie vor nicht welche von die 10 Ticketarten nun haben willst.
Du müsstest schon detaillierter dein Problem beschreiben.
Liegt es an den Export? Wird dein Repaint im Spiel Weiß angezeigt? Hast Du ein Chrome-Bus?
PS: Es gibt auch Repaint Templates unter OMSI 2\Addons\S41X LE Business\Templates\S415LE\
Für Paint.Net wird das PSD Plugin benötigt.