Liebe Script-Spezialisten
Wie kann ich verhindern , dass meine Animation 2 x ausgelöst wird ?
Hier mal mein Script :
/********************************************************
* Script zum beladen und starten der Animation *
* Nach dem Tutorial im Auran-Forum. *
* Ursprünglich für Wasser, jetzt fuer Kohle. *
*********************************************************/
include "BaseIndustry.gs"
include "world.gs"
class anim_load isclass BaseIndustry
{
ProductQueue waterOutQueue;
bool AILoad;
Asset meAsset = GetAsset();
bool TriggerSupportsStoppedLoad(Vehicle vehicle, string triggerName) {
bool canLoad;
Train myTrain = vehicle.GetMyTrain();
canLoad = vehicle.CanLoadProductFromQueue(waterOutQueue);
if (canLoad) {
AILoad = (itc.GetTrainCommand(myTrain) == "LOAD" or itc.GetTrainCommand(myTrain) == "load");
if (AILoad) return true;
else if (myTrain.IsStopped()) return true;
}
return false;
}
void PerformStoppedLoad(Vehicle vehicle, string triggerName) {
// Load water
int spaceAvailable = waterOutQueue.GetQueueCount();
// Startet anim
SetMeshAnimationState("spin", true);
Sleep(10);
// Pause bevor der Wagen beladen wird
LoadingReport report = CreateLoadingReport(waterOutQueue, spaceAvailable);
report.sideFlags = LoadingReport.TOP_SIDE;
vehicle.LoadProduct(report);
Sleep(30);
// so lange dauert die Anim ( eigentlich 40, aber 10 + 30 = 40 )
SetMeshAnimationState("spin", false);
// World.PlaySound(meAsset, "start.wav" , 100.0, 70, 100.0f, me, "");
// World.PlaySound(meAsset, "end.wav" , 100.0, 70, 100.0f, me, "");
if (AILoad)
PostMessage(vehicle.GetMyTrain(), "HandleTrain", "Release", 1.0);
}
thread void waterFuelMain(void) {
Message msg;
Vehicle vehicle;
string triggerName;
wait()
{
// ?
on "Scriptlet-Enabled", "1": {
if (!scriptletEnabled) {
scriptletEnabled = true;
SetProcessEnabled("generate_water", true);
}
continue;
}
// ?
on "Scriptlet-Enabled", "0": {
if (scriptletEnabled) {
scriptletEnabled = false;
SetProcessEnabled("generate_water", false);
}
continue;
}
}
}
public void Init(void) {
inherited();
useGenericViewDetails = true;
// initialize queues
waterOutQueue = GetQueue("water");
AddAssetToIndustryProductInfo("water", "water", "generate_water", false);
waterFuelMain();
}
public void AppendDriverDestinations(string[] destNames, string[] destTracks) {
StringTable stringTable = GetAsset().GetStringTable();
destNames[destNames.size()] = stringTable.GetString("waterColumn");
destTracks[destTracks.size()] = "water_column";
}
};
Meine Anim dauert ca. 40 Sekunden.
Das erste Sleep (10) habe ich eingefügt , damit der Wagen nicht sofort beladen wird.
Das zweite ( 30 ) , damit die Anim bis Ende läuft.
Und jetzt kommt , was mich ärgert .
Sobald der Fahrregler wieder freigegeben wird , startet die Anim nochmals.
So schnell kann ich den Wagen nicht vom Trigger fahren !
Es wäre sehr nett , wenn mir jemand helfen könnte.
Gruss Tilo