Beiträge von Ifko[nator]
-
-
Fahrzeuge zurücksetzen kennst du?
-
Du könnstest einen Baum expotieren, ihm mit Notepad++ eine neue Textur zuweisen und wieder in die Map impotieren. Das kannst du auch mit mehreren gleichzeitig machen, musst halt nur die gewünschten Bäume aufeinmal expotieren.
MFG Ifko
-
Das sieht doch schon sehr gut aus. Hab nix zu bemängeln..
MFG Ifko
-
Das geht aber auch einfacher dome.. Einfach die 'fruit_denisty.png.' aus dem Savegame löschen fertig. Wenn man ein Feld gegrubbert, gepflügt oder gesät hat, dann muss man auch noch zusätzlich die 'cultivator_denisty.png' löschen.
-
Echt jetzt? Das wird getestet...
-
@supershorty: Mit einem Miststreuer kann man nicht abkippen..
Willst du dir Kuh-Mist ercheaten? Falls ja mach mal das:
Öffne die vehicles.xml deines aktuellen Savegames. Idealerweise mit Notepad++. Dann sucht du dort mit der Suchfunktion (Strg +F, bei Notepad++), nach 'manureHeapFillLevel'. Die Zahl dahinter ist dann der Füllstand. Einfach mit der gewünschten Menge tauschen. Bild:
Beachte aber, das es einen maximalen Füllstand beim Kuhmisthaufen gibt. Trägst du in der vehicles.xml nun mehr ein, wird der Füllstand ingame auf den maximalen Füllstand zurückgesetzt.
MFG Ifko
-
Sehr schön! Da erledigt:
-
-
Naja faulheit war ein Grund, der entscheidende war aber, das ich mich mehr mit dem Scripten beschäftigen will. Da testet man halt so einiges aus.
-
Huhu @all,
ich habe hier ein Video, wo man eine etwas erweitete Version des 'automaticUnloadForBaleLoaders' Scriptes sieht. Man kann nun wählen, ob der volle oder halbvolle Ballensammelwagen automatisch entleert wird. Auch sieht man nun, das die kleine Platte, die die Ballen stackt, nicht mehr runtergeht, wenn der Ballenwagen das automatische Abladen aktiviert.
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Diese Version ist aber auch schon wieder veraltet...
Inzwischen hat man schon die Möglichkeit, selber einstellen zu können, bei wievielen Ballen der Ballensammelwagen automatisch ablädt. Kleine Vorschau:
Denke dazu mach ich auch noch ein Vid. Wenn es interessiert, hier mal die vorläufige Version des Scriptes: (Für den globalen Modus erstellt, ist also nicht für den 'händischen' einbau geeignet, da einem sonst alle Texte für das Hilfefenster fehlen)
AutomaticUnloadForBaleLoaders.lua
[lua]
--[[
AutomaticUnloadForBaleLoaders
Spezi damit die zwischen manuellen und automatischen Abladen eines Ballensammelnwagens, (gewählte Ballenanzahl, halbvoll oder voll), hin und her schalten kann.Author: Ifko[nator]
Datum: 27.03.2015Version: v1.0
History: v1.0 - initial implementation -- GLOBAL VERSION!
]]AutomaticUnloadForBaleLoaders = {};
function AutomaticUnloadForBaleLoaders.prerequisitesPresent(specializations)
return SpecializationUtil.hasSpecialization(BaleLoader, specializations);
end;function AutomaticUnloadForBaleLoaders:load(xmlFile)
BaleLoader.update = Utils.appendedFunction(BaleLoader.update, AutomaticUnloadForBaleLoaders.baleLoaderUpdate);
BaleLoader.getAllowsStartUnloading = Utils.overwrittenFunction(BaleLoader.getAllowsStartUnloading, AutomaticUnloadForBaleLoaders.getAllowsStartUnloading);
BaleLoader.draw = Utils.overwrittenFunction(BaleLoader.draw, AutomaticUnloadForBaleLoaders.baleLoaderDraw);
BaleLoader.moveToTransportPosition = Utils.overwrittenFunction(BaleLoader.moveToTransportPosition, AutomaticUnloadForBaleLoaders.moveToTransportPosition);
self.automaticUnloadBaleLoader = false;
self.unloadFullBaleLoader = true;
self.unloadHalfFullBaleLoader = false;
self.choiceNumBales = false;
self.chosenNumBales = 2;
end;function AutomaticUnloadForBaleLoaders:delete()
end;function AutomaticUnloadForBaleLoaders:mouseEvent(posX, posY, isDown, isUp, button)
end;function AutomaticUnloadForBaleLoaders:keyEvent(unicode, sym, modifier, isDown)
end;function AutomaticUnloadForBaleLoaders.moveToTransportPosition(self)
if not self.automaticUnloadBaleLoader then
self:playAnimation("baleGrabberTransportToWork", -1, Utils.clamp(self:getAnimationTime("baleGrabberTransportToWork"), 0, 1), true);
self:playAnimation("closeGrippers", 1, Utils.clamp(self:getAnimationTime("closeGrippers"), 0, 1), true);
if self.startBalePlace.count == 1 then
self:playAnimation("bale1ToOtherSide", 0.5, nil, true);
end;
end;
end;function AutomaticUnloadForBaleLoaders:baleLoaderUpdate(dt)
if self:getIsActive() then
if self:getIsActiveForInput()
and self.fillLevel < self.capacity
and self.grabberMoveState == nil
then
if InputBinding.hasEvent(InputBinding.TOGGLE_AUTOMAIC_UNLOAD_BALELOADER_BUTTON) then
self.automaticUnloadBaleLoader = not self.automaticUnloadBaleLoader;
end;
if InputBinding.hasEvent(InputBinding.TOGGLE_UNLOAD_HALF_FULL_BALELOADER_BUTTON) and self.automaticUnloadBaleLoader and not self.choiceNumBales then
if self.unloadFullBaleLoader then
if self.fillLevel <= (self.capacity / 2) then
self.unloadFullBaleLoader = false;
self.unloadHalfFullBaleLoader = true;
else
self.unloadFullBaleLoader = true;
self.unloadHalfFullBaleLoader = false;
end;
else
self.unloadFullBaleLoader = true;
self.unloadHalfFullBaleLoader = false;
end;
end;
if InputBinding.hasEvent(InputBinding.CHOICE_NUM_BALES) and self.automaticUnloadBaleLoader then
if self.choiceNumBales then
self.choiceNumBales = false;
self.unloadFullBaleLoader = true;
else
self.choiceNumBales = true;
if self.unloadFullBaleLoader then
self.unloadFullBaleLoader = false;
elseif self.unloadHalfFullBaleLoader then
self.unloadHalfFullBaleLoader = false;
end;
end;
end;
if self.choiceNumBales and self.automaticUnloadBaleLoader then
if InputBinding.hasEvent(InputBinding.SET_NUM_BALES) then
if self.chosenNumBales < self.capacity then
self.chosenNumBales = self.chosenNumBales + 1;
else
self.chosenNumBales = 2;
end;
end;
end;
end;
if self.automaticUnloadBaleLoader then
if not self.choiceNumBales then
if self.unloadFullBaleLoader then
if self.fillLevel == self.capacity then
--## baleloader is full - rotate platform to unload
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_BUTTON_EMPTY));
end;
elseif self.unloadHalfFullBaleLoader then
if self.fillLevel >= (self.capacity / 2) then
--## baleloader is half full - rotate platform to unload
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_BUTTON_EMPTY));
end;
end;
else
if self.fillLevel >= self.chosenNumBales then
--## baleloader has the number of bales, they are chosen, loaded - rotate platform to unload
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_BUTTON_EMPTY));
end;
end;
if self.emptyState == BaleLoader.EMPTY_WAIT_TO_REDO then
--## platform is completely rotatet - drop bales
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_DROP_BALES));
end;
if self.emptyState == BaleLoader.EMPTY_WAIT_TO_SINK then
--## bales are dropped - rotate platform back
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_BUTTON_EMPTY));
end;
if self.emptyState == BaleLoader.EMPTY_NONE and not self.isInWorkPosition then
--## platform is rotatet back and grabber is not in work postion - move grabber to work position
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_BUTTON_WORK_TRANSPORT));
end;
else
if self.fillLevel == self.capacity
and self.emptyState == BaleLoader.EMPTY_NONE
and self.grabberMoveState == nil
and self.rotatePlatformDirection == 0
and self.isInWorkPosition
then
--[[##
automatic unload is deactivated,
baleloader is full,
baleloader state is 'none',
grabber is not moving,
stackplatform is set down,
and grabber is in work position
-
move grabber to transport position
]]
g_client:getServerConnection():sendEvent(BaleLoaderStateEvent:new(self, BaleLoader.CHANGE_BUTTON_WORK_TRANSPORT));
end;
end;
end;
end;function AutomaticUnloadForBaleLoaders:baleLoaderDraw()
if self:getIsActiveForInput()
and self.fillLevel < self.capacity
and self.grabberMoveState == nil
then
if self.automaticUnloadBaleLoader then
g_currentMission:addHelpButtonText(BaleLoader.STOP_AUTOMATIC_UNLOAD, InputBinding.TOGGLE_AUTOMAIC_UNLOAD_BUTTON);
if not
((self.emptyState >= BaleLoader.EMPTY_TO_WORK
and self.emptyState <= BaleLoader.EMPTY_ROTATE2
) or self.emptyState == BaleLoader.EMPTY_SINK
) then
if not self.choiceNumBales then
g_currentMission:addHelpButtonText(BaleLoader.START_CHOICE_NUM_BALES, InputBinding.CHOICE_NUM_BALES);
if self.unloadFullBaleLoader then
if self.fillLevel < (self.capacity / 2) then
g_currentMission:addHelpButtonText(BaleLoader.UNLOAD_HALF_BALELOADER, InputBinding.TOGGLE_UNLOAD_HALF_FULL_BALELOADER_BUTTON);
end;
g_currentMission:addExtraPrintText(BaleLoader.FULL_UNLOAD_ACTIVATET);
elseif self.unloadHalfFullBaleLoader then
g_currentMission:addHelpButtonText(BaleLoader.UNLOAD_FULL_BALELOADER, InputBinding.TOGGLE_UNLOAD_HALF_FULL_BALELOADER_BUTTON);
g_currentMission:addExtraPrintText(BaleLoader.HALF_FULL_UNLOAD_ACTIVATET);
end;
else
g_currentMission:addHelpButtonText(BaleLoader.STOP_CHOICE_NUM_BALES, InputBinding.CHOICE_NUM_BALES);
g_currentMission:addHelpButtonText(BaleLoader.SET_NUM_BALES, InputBinding.SET_NUM_BALES);
g_currentMission:addExtraPrintText(string.format(BaleLoader.CHOSEN_NUM_BALES_DO_UNLOAD, self.chosenNumBales));
end;
end;
else
g_currentMission:addHelpButtonText(BaleLoader.START_AUTOMATIC_UNLOAD, InputBinding.TOGGLE_AUTOMAIC_UNLOAD_BUTTON);
end;
end;
if self.emptyState == BaleLoader.EMPTY_NONE then
if self.grabberMoveState == nil and not self.automaticUnloadBaleLoader then
if self.isInWorkPosition then
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_TRANSPORT, InputBinding.IMPLEMENT_EXTRA);
else
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_WORK, InputBinding.IMPLEMENT_EXTRA);
end;
end;
if BaleLoader.getAllowsStartUnloading(self) then
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_UNLOAD, InputBinding.IMPLEMENT_EXTRA3);
end;
else
if self.emptyState >= BaleLoader.EMPTY_TO_WORK and self.emptyState <= BaleLoader.EMPTY_ROTATE2 then
g_currentMission:addExtraPrintText(BaleLoader.BALELOADER_UP);
elseif self.emptyState == BaleLoader.EMPTY_CANCEL or self.emptyState == BaleLoader.EMPTY_SINK then
g_currentMission:addExtraPrintText(BaleLoader.BALELOADER_DOWN);
elseif self.emptyState == BaleLoader.EMPTY_WAIT_TO_DROP then
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_READY, InputBinding.IMPLEMENT_EXTRA3);
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_ABORT, InputBinding.IMPLEMENT_EXTRA2);
elseif self.emptyState == BaleLoader.EMPTY_WAIT_TO_SINK then
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_SINK, InputBinding.IMPLEMENT_EXTRA3);
elseif self.emptyState == BaleLoader.EMPTY_WAIT_TO_REDO then
g_currentMission:addHelpButtonText(BaleLoader.BALELOADER_UNLOAD, InputBinding.IMPLEMENT_EXTRA3);
end;
end;
end;function AutomaticUnloadForBaleLoaders.getAllowsStartUnloading(self)
if self.automaticUnloadBaleLoader then
if self.unloadFullBaleLoader then
return self.fillLevel == self.capacity and (self.rotatePlatformDirection == 0 or self.rotatePlatformDirection == 1) and self.grabberMoveState == nil;
elseif self.unloadHalfFullBaleLoader then
return self.fillLevel >= (self.capacity / 2) and (self.rotatePlatformDirection == 0 or self.rotatePlatformDirection == 1) and self.grabberMoveState == nil;
elseif self.choiceNumBales then
return self.fillLevel >= self.chosenNumBales and (self.rotatePlatformDirection == 0 or self.rotatePlatformDirection == 1) and self.grabberMoveState == nil;
end;
else
return self.fillLevel > 0 and self.rotatePlatformDirection == 0 and self.frontBalePusherDirection == 0 and not self.grabberIsMoving and self.grabberMoveState == nil and self.emptyState == BaleLoader.EMPTY_NONE;
end;
end;function AutomaticUnloadForBaleLoaders:update(dt)
end;function AutomaticUnloadForBaleLoaders:draw()
endfunction AutomaticUnloadForBaleLoaders:loadFromAttributesAndNodes(xmlFile, key, resetVehicles)
if not resetVehicles then
local automaticUnloadBaleLoader = Utils.getNoNil(getXMLBool(xmlFile, key .. "#automaticUnloadBaleLoader"), self.automaticUnloadBaleLoader);
local unloadFullBaleLoader = Utils.getNoNil(getXMLBool(xmlFile, key .. "#unloadFullBaleLoader"), self.unloadFullBaleLoader);
local unloadHalfFullBaleLoader = Utils.getNoNil(getXMLBool(xmlFile, key .. "#unloadHalfFullBaleLoader"), self.unloadHalfFullBaleLoader);
local choiceNumBales = Utils.getNoNil(getXMLBool(xmlFile, key .. "#choiceNumBales"), self.choiceNumBales);
local chosenNumBales = Utils.getNoNil(getXMLFloat(xmlFile, key .. "#chosenNumBales"), self.chosenNumBales);
self.automaticUnloadBaleLoader = automaticUnloadBaleLoader;
self.unloadFullBaleLoader = unloadFullBaleLoader;
self.unloadHalfFullBaleLoader = unloadHalfFullBaleLoader;
self.choiceNumBales = choiceNumBales;
self.chosenNumBales = chosenNumBales;
end;
return BaseMission.VEHICLE_LOAD_OK;
end;function AutomaticUnloadForBaleLoaders:getSaveAttributesAndNodes(nodeIdent)
local attributes =
'automaticUnloadBaleLoader="' .. tostring(self.automaticUnloadBaleLoader) ..
'" unloadFullBaleLoader="' .. tostring(self.unloadFullBaleLoader) ..
'" unloadHalfFullBaleLoader="' .. tostring(self.unloadHalfFullBaleLoader) ..
'" choiceNumBales="' .. tostring(self.choiceNumBales) ..
'" chosenNumBales="' .. tostring(self.chosenNumBales) ..
'"';
return attributes, nil;
end;
[/lua]MFG Ifko
-
Das hängt aber auch vom Strohschwad ab.. Bei Gerste, so wie im Vid, passt es genau.. Bei Weizen ist der Ballen etwas zu schnell fertig.. Roggen- und Haferstroh und andere Multifruit Strohsorten sind nochmal ein anderes Thema, da hier jeder Mapper eine andere Werte für 'windrowLiterPerSqm', (das ist der Wert für die Strohmenge da nun wirklich lieg), angeben könnte. Etwas schneller werde ich den Abladevorgang also noch machen. Das ist aber feinarbeit..
Zuerst will ich es noch schaffen, das die kleine Platte, die die Ballen stackt, nicht mehr runtergeht, wenn der Ballenwagen voll und das automatische Abladen aktiviert ist. Damit wäre ein reibungsloser Abladevorgang möglich. Nun ist es ja noch so, das die die kleine Platte sich zuerst wieder senkt und dann gleich wieder hebt, wenn der Ballenwagen voll ist. Das sieht man eigendlich sehr gut im Vid. Ist einfach unnötig, daher will ich das raus haben.. Zeit is Geld.
Und genau das hab ich eben geschafft! So langsam wirds mit den luas..
Feinschliff steht noch an.. Text 'Ballen entlanden' aus dem Hilfefenster entfernen, wenn das automatische Abladen aktiviert ist, da sich der Ballenwagen dann nur im vollen zustand abladen lässt. Das geschieht dann ja automatisch, und somit ist der überflüssing. Ist das automatische Abladen deaktiviert, dann wird der Text selbstverständlich wieder in der Hilfebox sein..
MFG Ifko
-
Lustig. Und wie sollte man das umsetzten? Kenne keinen Weg, schließe mich also aus.
-
Habe schlechte Nachrichten, was das Script für die Schwader betrifft.. Leider kann ich das nicht umsetzten, geht wohl doch nicht so einfach, wie gedacht..
Nur damit ihr Bescheid wisst..
Edit:
Aber ich will euch mal das hier zeigen:
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Ballensammelwagen lädt vollkommen automatisch ab. Er geht danach auch wieder automatisch in die Arbeitsposition. Das ganze ist zwar nicht vollkommen real, zumindest sah ich das noch nicht, aber es spart Sprit.
Ballen muss man auch nimmer zusammen suchen und dadurch vergisst man keinen.. Wie oft lag bei mir beim Grubbern noch einer auf dem Feld.. Sollte das Feld zu uneben sein, kann es natürlich passieren, das der Stroß umfällt..
Das ganze ist wieder nur eine reine spielerei meinerseits..
MFG Ifko
-
Gut, dann müssen die Types falsch gewählt gewesen sein. Nur damit wir auch den Grund kennen, warum es bei dir nicht ging.. Nun mach ich aber zu.
-
Bild davon? Würde mich nun interessieren..
-
Das is doch mein IHC
Was hast du nur gemacht?
Woher weißt du das? Ist doch so gut getarnt..
Ich sag nur: Testen... Hab mich einwenig gespielt... xD
-
Könnte es sein, das du die UserAttribute mit dem falschen Type erstellt hast? Was anderes fällt mir da nicht ein... Aber gut das es nun geht..
Ich lass noch offen, solltest noch was sagen wollen..
-
Hmmm wenn die Indexe stimmen, bin ich nun auch Ratlos.. Leider..
-