Hallo!
Mir will es nicht einleuchten, warum die Uhren unterschiedlich laufen!
- Das Script ist das selbe.
- Die Animation ist die selbe (60 Frames, 0-59).
- Die Eintraege in der Config.txt sind gleich.
Code
username "MV_S-Bahnuhr"
kind "scenery"
description "Clock of the 20s of the Berliner S-Bahn.
Technical Details:
Polys 1.758
Triangles 4.232
Vertices 2.417
Textures 4.097 Bytes"
description-de "Bahnsteiguhr der Berliner S-Bahn aus den zwanziger Jahren.
Performance Hinweise:
Polys 1.758
Triangles 4.232
Vertices 2.417
Textures 4.097 Bytes"
category-class "BU"
category-region "DE"
category-era "1920s"
contact-email "m_vogt@gmx.net"
author "Michael Vogt alias mick1960"
license "(C) by Michael Vogt
Dieses Trainz-Asset-Objekt ist Public Domain.
Ein Veraendern, Reskinnen oder aehnliches ist jederzeit erlaubt, solange die Ursprungsquelle genannt und die Lizenz nicht veraendert wird.
Weiterhin muss ein veraendertes Asset frei und ohne jedwede Anmeldung und ebenfalls auch auf der Auran DLS verfuegbar sein.
Das Paket beinhaltet ein Script (*.gs-Datei). Das Script darf ohne Genehmigung genutzt werden.
Der Autor verzichtet auf eine Verschlüsselung seiner Scripte.
Im Gegenzug ist eine Nennung des Autors des Scripts (callavsg) verpflichtend.
(© Pascal Wirtz (PascalW) alias callavsg, 27.10.2012)"
script "animatedclock.gs"
class "CAnimatedClock"
light 1
height-range -1,1
trainz-build 3.7
mesh-table
{
default
{
auto-create 1
mesh "uhr.im"
}
stundenzeiger
{
auto-create 1
mesh "stundenzeiger.im"
anim "stundenzeiger.kin"
att "a.stunde"
}
minutenzeiger
{
auto-create 1
mesh "minutenzeiger.im"
anim "minutenzeiger.kin"
att "a.minute"
}
sekundenzeiger
{
auto-create 1
mesh "sekundenzeiger.im"
anim "sekundenzeiger.kin"
att "a.sekunde"
}
}
thumbnails
{
1
{
width 240
height 180
image "thumbnail.jpg"
}
}
kuid <kuid:206616:100013>
kuid-table
{
}
Alles anzeigen
Und trotzdem zeigen beide Uhren eine unterschiedliche Zeit an. Hier ein kleiner Film, der das gut zeigt:
Und hier das Script:
Code
include "MapObject.gs"
include "World.gs"
class CAnimatedClock isclass MapObject
{
// Deklaration der ClockTimer-Methode
thread void ClockTimer(void);
// Haupteinsprungfunktion
public void Init(Asset pAsset)
{
// Dieses Objekt von der Trainz-Klasse "MapObject" erben lassen
// und dessen Init-Funktion mit dem Parameter des Typs Asset
// aufrufen, um dieses Objekt auch als MapObject verarbeiten zu können
inherited(pAsset);
// Timer starten
ClockTimer();
}
// Implementierung der ClockTimer-Methode
thread void ClockTimer(void)
{
// Den Sekundenzeiger einfach laufen lassen
SetMeshAnimationSpeed("sekundenzeiger", 0.033333);
StartMeshAnimationLoop("sekundenzeiger");
// Sekundliche Abfrage der Uhrzeit
while(1)
{
// Minuten und Stunden aus dem normierten Wert durch Trainz berechnen lassen
int iHours = HTMLWindow.GetHoursFromFloat(World.GetGameTime());
int iMinutes = HTMLWindow.GetMinutesFromFloat(World.GetGameTime());
if(iHours > 12) iHours = iHours - 12;
// Minuten auf den zeiger anwenden
if(iMinutes == 0) SetMeshAnimationFrame("minutenzeiger", 0.0f);
else if(iMinutes == 1) SetMeshAnimationFrame("minutenzeiger", 1.0338983050847f);
else if(iMinutes == 2) SetMeshAnimationFrame("minutenzeiger", 2.0677966101695f);
else if(iMinutes == 3) SetMeshAnimationFrame("minutenzeiger", 3.1016949152542f);
else if(iMinutes == 4) SetMeshAnimationFrame("minutenzeiger", 4.135593220339f);
else if(iMinutes == 5) SetMeshAnimationFrame("minutenzeiger", 5.1694915254237f);
else if(iMinutes == 6) SetMeshAnimationFrame("minutenzeiger", 6.2033898305085f);
else if(iMinutes == 7) SetMeshAnimationFrame("minutenzeiger", 7.2372881355932f);
else if(iMinutes == 8) SetMeshAnimationFrame("minutenzeiger", 8.271186440678f);
else if(iMinutes == 9) SetMeshAnimationFrame("minutenzeiger", 9.3050847457627f);
else if(iMinutes == 10) SetMeshAnimationFrame("minutenzeiger", 10.338983050847f);
else if(iMinutes == 11) SetMeshAnimationFrame("minutenzeiger", 11.372881355932f);
else if(iMinutes == 12) SetMeshAnimationFrame("minutenzeiger", 12.406779661017f);
else if(iMinutes == 13) SetMeshAnimationFrame("minutenzeiger", 13.440677966102f);
else if(iMinutes == 14) SetMeshAnimationFrame("minutenzeiger", 14.474576271186f);
else if(iMinutes == 15) SetMeshAnimationFrame("minutenzeiger", 15.508474576271f);
else if(iMinutes == 16) SetMeshAnimationFrame("minutenzeiger", 16.542372881356f);
else if(iMinutes == 17) SetMeshAnimationFrame("minutenzeiger", 17.576271186441f);
else if(iMinutes == 18) SetMeshAnimationFrame("minutenzeiger", 18.610169491525f);
else if(iMinutes == 19) SetMeshAnimationFrame("minutenzeiger", 19.64406779661f);
else if(iMinutes == 20) SetMeshAnimationFrame("minutenzeiger", 20.677966101695f);
else if(iMinutes == 21) SetMeshAnimationFrame("minutenzeiger", 21.71186440678f);
else if(iMinutes == 22) SetMeshAnimationFrame("minutenzeiger", 22.745762711864f);
else if(iMinutes == 23) SetMeshAnimationFrame("minutenzeiger", 23.779661016949f);
else if(iMinutes == 24) SetMeshAnimationFrame("minutenzeiger", 24.813559322034f);
else if(iMinutes == 25) SetMeshAnimationFrame("minutenzeiger", 25.847457627119f);
else if(iMinutes == 26) SetMeshAnimationFrame("minutenzeiger", 26.881355932203f);
else if(iMinutes == 27) SetMeshAnimationFrame("minutenzeiger", 27.915254237288f);
else if(iMinutes == 28) SetMeshAnimationFrame("minutenzeiger", 28.949152542373f);
else if(iMinutes == 29) SetMeshAnimationFrame("minutenzeiger", 29.983050847458f);
else if(iMinutes == 30) SetMeshAnimationFrame("minutenzeiger", 31.016949152542f);
else if(iMinutes == 31) SetMeshAnimationFrame("minutenzeiger", 32.050847457627f);
else if(iMinutes == 32) SetMeshAnimationFrame("minutenzeiger", 33.084745762712f);
else if(iMinutes == 33) SetMeshAnimationFrame("minutenzeiger", 34.118644067797f);
else if(iMinutes == 34) SetMeshAnimationFrame("minutenzeiger", 35.152542372881f);
else if(iMinutes == 35) SetMeshAnimationFrame("minutenzeiger", 36.186440677966f);
else if(iMinutes == 36) SetMeshAnimationFrame("minutenzeiger", 37.220338983051f);
else if(iMinutes == 37) SetMeshAnimationFrame("minutenzeiger", 38.254237288136f);
else if(iMinutes == 38) SetMeshAnimationFrame("minutenzeiger", 39.28813559322f);
else if(iMinutes == 39) SetMeshAnimationFrame("minutenzeiger", 40.322033898305f);
else if(iMinutes == 40) SetMeshAnimationFrame("minutenzeiger", 41.35593220339f);
else if(iMinutes == 41) SetMeshAnimationFrame("minutenzeiger", 42.389830508475f);
else if(iMinutes == 42) SetMeshAnimationFrame("minutenzeiger", 43.423728813559f);
else if(iMinutes == 43) SetMeshAnimationFrame("minutenzeiger", 44.457627118644f);
else if(iMinutes == 44) SetMeshAnimationFrame("minutenzeiger", 45.491525423729f);
else if(iMinutes == 45) SetMeshAnimationFrame("minutenzeiger", 46.525423728814f);
else if(iMinutes == 46) SetMeshAnimationFrame("minutenzeiger", 47.559322033898f);
else if(iMinutes == 47) SetMeshAnimationFrame("minutenzeiger", 48.593220338983f);
else if(iMinutes == 48) SetMeshAnimationFrame("minutenzeiger", 49.627118644068f);
else if(iMinutes == 49) SetMeshAnimationFrame("minutenzeiger", 50.661016949153f);
else if(iMinutes == 50) SetMeshAnimationFrame("minutenzeiger", 51.694915254237f);
else if(iMinutes == 51) SetMeshAnimationFrame("minutenzeiger", 52.728813559322f);
else if(iMinutes == 52) SetMeshAnimationFrame("minutenzeiger", 53.762711864407f);
else if(iMinutes == 53) SetMeshAnimationFrame("minutenzeiger", 54.796610169492f);
else if(iMinutes == 54) SetMeshAnimationFrame("minutenzeiger", 55.830508474576f);
else if(iMinutes == 55) SetMeshAnimationFrame("minutenzeiger", 56.864406779661f);
else if(iMinutes == 56) SetMeshAnimationFrame("minutenzeiger", 57.898305084746f);
else if(iMinutes == 57) SetMeshAnimationFrame("minutenzeiger", 58.932203389831f);
else if(iMinutes == 58) SetMeshAnimationFrame("minutenzeiger", 59.966101694915f);
else if(iMinutes == 59) SetMeshAnimationFrame("minutenzeiger", 61.0f);
// Stunden auf den Stundenzeiger anwenden
if(iHours == 0) SetMeshAnimationFrame("stundenzeiger", 0.0f);
else if(iHours == 1) SetMeshAnimationFrame("stundenzeiger", 5.1694915254237f);
else if(iHours == 2) SetMeshAnimationFrame("stundenzeiger", 10.338983050847f);
else if(iHours == 3) SetMeshAnimationFrame("stundenzeiger", 15.508474576271f);
else if(iHours == 4) SetMeshAnimationFrame("stundenzeiger", 20.677966101695f);
else if(iHours == 5) SetMeshAnimationFrame("stundenzeiger", 25.847457627119f);
else if(iHours == 6) SetMeshAnimationFrame("stundenzeiger", 31.016949152542f);
else if(iHours == 7) SetMeshAnimationFrame("stundenzeiger", 36.186440677966f);
else if(iHours == 8) SetMeshAnimationFrame("stundenzeiger", 41.35593220339f);
else if(iHours == 9) SetMeshAnimationFrame("stundenzeiger", 46.525423728814f);
else if(iHours == 10) SetMeshAnimationFrame("stundenzeiger", 51.694915254237f);
else if(iHours == 11) SetMeshAnimationFrame("stundenzeiger", 56.864406779661f);
else if(iHours == 12) SetMeshAnimationFrame("stundenzeiger", 0.0f);
// Anschließend eine Sekunde warten
Sleep(1.0f);
}
}
};
Alles anzeigen
Mick!