Globale Infotexte vom Autopilot mit denen vom Courseplay kombinieren

  • Hallihallo,


    da diese Frage nicht direkt zum Support für den Courseplay zählt, stell ich die Frage mal separat. Also gut, folgendes:


    Ich habe dem Autopilot für Mähdrescher Dank(!) der codes vom Courseplay beigebracht, dass er wie der Courseplay auf dem Bildschirm Infos anzeigt (in diesem Fall "Steckt im Verkehr fest" und "Korntank ist voll"), selbst wenn man nicht im Drescher sitzt.


    Das Problem besteht nun darin, dass sich die Meldungen des Courseplay und des Autopiloten auf dem Bildschirm überschneiden. Die einzelnen Meldungen der verschiedenen Autopiloten werden zwar untereinander angezeigt, allerdings werden sie über die Meldungen des Courseplay einfach drüber gelegt. Der Grund ist meiner Meinung nach, weil die "Arbeiter" des Courseplay und die des Autopiloten ja im Prinzip in unterschiedlichen tables (auch wenn sie den gleichen Namen "working_course_players" haben) abgespeichert werden.


    Besteht die Möglichkeit, dass man diese beiden tables irgendwie verknüpft?


    Oder bin ich da ganz auf dem Holzweg und es hat mit diesem table garnix zu tun?


    Ich hoffe ihr habt eine Idee, denn die Meldungen des AP möcht ich sehr ungern an eine andere Stelle im Bildschirm verschieben... sieht ja scho a weng besser aus, wenn alle Meldungen unten links im Bildschirm stehen ;)

  • Hab jetzt eine Lösung gefunden, die meiner Meinung nach allerdings nicht ganz optimal ist:


    Der AP speichert seine Arbeiter einfach mit in dem table working_course_players {} der Courseplay ab. Soweit funktioniert es einwandfrei.


    Damit er das macht, steht in der load-function des AP:
    [lua]courseplay.working_course_players = {};[/lua]



    Jetzt kommt es aber logischerweise zu Problemen, wenn sich die aacourseplay.zip nicht im mods-Ordner befindet.


    Irgendwie müßte der AP also beim Laden abchecken, ob die aacourseplay.zip vorhanden ist oder nicht.
    Wenn sie vorhanden ist, nimmt er das table des Courseplay (courseplay.working_course_players = {}) und wenn nicht nimmt er das eigene table (working_course_players = {})


    Hab es schon folgendermaßen mit einigen Variablen des Courseplay ausprobiert, z.B.:
    [lua]if courseplay.recordnumber ~= nil then
    courseplay.working_course_players = {};
    else
    working_course_players = {};
    end;[/lua]


    Leider ohne Erfolg, die Meldungen wurden übereinander gelegt, was wohl darauf deutet, dass der AP das eigene table und nicht das des Courseplay nimmt.


    Hat jemand eine Idee, wie man das Abchecken "Courseplay da oder nicht" realisieren könnte?

  • Ich habe jetzt nicht die letzten Änderungen von Courseplay verfolgt, aber es mutet etwas komisch an, dass es die Variable courseplay.recordnumber überhaupt geben soll. Es hatte bisher jedes Courseplay-Fahrzeug seine eigene recordnumber. Könnte self.recordnumber in dem Kontext funktionieren?

  • Die Variable "recordnumber" war auch nur ein Beispiel. Habe einfach in der base.lua des Courseplay (V1.2 wenn ich mich nicht täusche) nach Variablen gesucht, die beim Laden des Courseplay einen Wert zugewiesen bekommen und damit nicht nil sind.
    Der Gedanke war also: ist diese Variable nicht nil, muß der Courseplay vorhanden sein. Der AP kann also das table "working_course_players" des Courseplay nutzen. Ist diese Variable nil, ist der Courseplay mit hoher Wahrscheinlichkeit nicht vorhanden. Der AP nimmt das eigene table "working_course_players".


    Mit self.recordnumber funktioniert es leider auch nicht, selbst wenn die courseplay-Spezi im Drescher eingetragen ist. Aber Danke für deinen Tip, Bastian82 ;)


    gibt es noch weitere Ideen?

  • Das habe ich ja alles verstanden und auch die Idee dahinter akzeptiert. So ähnlich macht es Courseplay übrigens auch beim Erkennen von manchen Anbaugeräten.


    Zum Verständnis, Du bist Dir sicher, dass Courseplay und AP hiermit in die selbe Table geschrieben haben?[lua]courseplay.working_course_players = {};[/lua] Es kommt mir nämlich etwas seltsam vor, dass Du hier eine neue Courseplay-Table anlegst.


    Ansonsten könntest Du als Bedingung auch dies mal testen: [lua]courseplay.add_working_player ~= nil[/lua]Das müsste als Test gehen, ob es die Methode add_working_player gibt, was ja nur der Fall ist, wenn Courseplay da ist.


    Funktioniert Courseplay 1.2 überhaupt mit Deinem Drescher? Die Unterstützung für Drescher kam ja erst später.

  • @ gotch tom hi tom erstmal ein riesen lob für den autopilot ist ne mega sache wie der funktioniert... nun mal ne frage machst du noch eine version die man für den schlepper nehmen kann??? z.B.: zum grasmähen oder zum schwaden???

  • Bin mir nicht zu 100% sicher, dass Courseplay und AP mit der Zeile in das gleiche table geschrieben haben, ich schließe es nur daraus, da es ja funktioniert.

    Leider hab ich noch nicht ganz begriffen, was es nun genau mit dem "self" und den anderen tables (wie in diesem Beispiel "courseplay") vor den Variablen in den Zeilen auf sich hat. Vielleicht kann mir jemand dazu einen Hinweis geben, wo ich Informationen finde... oder es versuchen mir zu erklären?


    Hier jedenfalls ein paar Ergebnisse meiner Tests:
    Wenn die aacourseplay.zip im mods-Ordner ist, funktionierts mit folgenden Zeilen in der load-Funktion einwandfrei:
    [lua]courseplay.working_course_players = {};[/lua]
    oder
    [lua]self.working_course_players = {};[/lua]
    oder
    [lua]if courseplay.add_working_player ~= nil then
    self.working_course_players = {};
    else
    working_course_players = {};
    end;[/lua]


    Der Text überlappt mit der Zeile:
    [lua]working_course_players = {};[/lua]




    Ist die aacourseplay.zip jedoch nicht vorhanden, lädt der Spielstand nicht bis zu Ende...
    Bei den Zeilen
    [lua]28 if courseplay.add_working_player ~= nil then
    29 self.working_course_players = {};
    30 else
    31 working_course_players = {};
    32 end;[/lua]
    steht folgende Fehlermeldung in der Log.txt:

    Zitat

    C:/Users/TOM/Documents/My Games/FarmingSimulator2011/mods/CLAAS_Lexion770TTAP/APCombine.lua(28) : attempt to index global 'courseplay' (a nil value)

    Bei der Zeile
    [lua]33 courseplay.working_course_players = {};[/lua]
    steht im Prinzip die gleiche Fehlermeldung in der Log.txt:

    Zitat

    C:/Users/TOM/Documents/My Games/FarmingSimulator2011/mods/CLAAS_Lexion770TTAP/APCombine.lua(33) : attempt to index global 'courseplay' (a nil value)

    Weitere Kombinationsmöglichkeiten werd ich jetzt mal noch ausprobieren... vielleicht fällt bei mir ja noch der Groschen :D




    Larsseine: Das steht noch in den Sternen, vor hab ich es aber...

  • Naja, ich war vielleicht etwas auf dem Holzweg, als ich dachte man müsse prüfen, ob der Drescher Courseplay hat. Das dürfte ja fast egal sein. Die Frage ist eher, ist Courseplay als Spezialisierung vorhanden.


    Jedenfalls muss die Fehlermeldung kommen, weil es courseplay nicht gibt. Du könntest mal probieren zuerst auf courseplay ~=nil zu prüfen.


    self ist - zumindest bei Courseplay - das Fahrzeug, welches die Spezialisierung Courseplay ausführen soll. Da werden für jedes Fahrzeug halt eigene Variablen definiert, z.B. eben recordnumber, die werden dann immer mit self.[...] angesprochen. working_course_players dürfte dagegen aber eine globale Variable der Courseplay-Klasse sein.

  • Heijeijei... ich glaub heut Abend bekomm ich es nicht mehr hin zu verstehen warum wieso weshalb, aber glücklicherweise funktioniert es mit der Abfrage ob courseplay ~=nil ist. Werd mir morgen nochmal deinen Post durchlesen, vielleicht check ich da a bissle mehr und brauch nicht all zu viel nachfragen, heut Abend geht einfach nix mehr ;)


    Ich bedanke mich aber auf jeden Fall schonmal bei dir für deine Tips und Informationen, Bastian82! Mercí :D

  • Nabend,
    das Problem was vorhanden ist und was nicht hatte ich beim Courseplay auch schon :)
    Und dank Sven777b konnte ich es so lösen.
    um sicherzustellen ob der Courseplay verbaut ist kannst du folgende Abfrage nutzen.


    if SpecializationUtil.hasSpecialization(courseplay, self.specializations) then
    -- Courseplay vorhanden
    end



    Gruß
    Wolverin0815

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!