Nicht mehr altern

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Nicht mehr altern

      Halloechen.

      Ich hatte zwar bereits eine Unterhaltung mit Fajeth darüber in der Steam Community, nun möchte ich's aber genauer geklärt haben, da es mich wurmt und ich nicht wirklich auf eine Lösung kam. Das Verändern von Scripts ist für mich komplettes Neuland, ich weiß nicht was ich brauche oder wie ich es tue, deshalb benötige ich es am Besten Schritt für Schritt - Würde sicher auch Leuten nach mir helfen, die gerne die selbe Funktion haben möchten

      Wie der Name des Beitrags schon sagt, möchte ich einen Mod haben oder etwas in den Scripten ändern (Sofern möglich, laut des Beitrages von Fajeth in der Steam Community ja schon) dass meine Charaktere bzw. zumindestens mein erster Char nicht weiter altert. Ich hatte unter der Residence.lua bereits probiert mit den Angaben von Fajeth zu arbeiten, der sagte "Get the scripts documentation (on gilde2.de for example) and look for a function called SetAge. Then put the line in a pinghour function (for example Scripts/Buildings/Residence.lua

      GetDynasty("", "MyDynasty")
      DynastyGetFamilyMember("MyDynasty", 0, "FamilyBoss")
      SetAge("FamilyBoss", 20)"

      Also änderte ich das Script und schrieb unter das Script

      function PingHour()
      GetDynasty("", "MyDynasty")
      DynastyGetFamilyMember("MyDynasty", 0, "FamilyBoss")
      SetAge("FamilyBoss", 20)
      end

      Ich weiß nicht, ob das einen Sinn ergibt, es falsch ist oder irgendwas anderes fehlt, aber das da tut soweit erst mal gar nichts. Ich hatte es gespeichert und das Spiel gestartet (Neues Savegame natürlich) und als die Uhr mitternacht schlug, war mein Char dann trotzdem irgendwann 23, das Alter wurde nicht zurück gesetzt und er altert nach wie vor.
      Hoffe hier kann jemand Abhilfe schaffen. Vielleicht Fajeth selber?

      Falls es wichtig ist - Ich habe eine gekaufte Version von Die Gilde 2 (Ohne Addons) allerdings bisher nichts gepatched, ist eine CD-Version, war zu faul bisher um patches zu suchen, wenn also Patches notwendig sind, tue ich das.

      Ja, mir ist durchaus bewusst, dass das Altern zum Spiel gehört und ich damit möglicherweise den Spielspaß zerstöre, allerdings hätte ich daran mehr Spaß, da mich dieses ständige Nachwuchs zeugen und dann wieder alles neu anlernen auf Dauer eher nervt und mich eher unproduktiv macht, weil mir schon InGame Jahre daran flöten gehen, die neue Frau zu finden, neuen Nachwuchs zu zeugen und anschließend wieder alles anzulernen.

      Ich danke mal im Voraus.
      Mit freundlichem Gruß
      Lighnoon
    • Fajeth wrote:

      Huhu und willkommen im Forum!

      Wie ich bei Steam sagte, ich schrieb aus dem Kopf und du solltest mal einen Blick in die The Guild 2 Script Documentation/ Die Gilde 2 Skriptdokumentation werfen.

      Dort sieht man dann nämlich, dass SetAge nicht ganz richtig ist, die Funktion heißt "SimSetAge"

      Damit sollte es dann gehen ...
      Das habe ich herausgefunden, leider ist das für mich fast schon mehr wirrwar als das was du da geschrieben hast. Wie ich sagte, ich habe noch nie irgendwelche Scripte editiert.

      function PingHour()
      GetDynasty("", "MyDynasty")
      DynastyGetFamilyMember("MyDynasty", 0, "FamilyBoss")
      SimSetAge("FamilyBoss", 20)
      end

      Also dann so?
    • Ja probier das mal so.

      Zur Erklärung:

      Gebäudescripte haben eine "Pinghour", das ist eine Funktion, die jede Stunde aufgerufen wird (immer etwa zur vollen Stunde).

      GetDynasty("", "MyDynasty") -- Das Objekt, dass diese Funktion ausführt (""), also deine Residenz, fragt nach der eigenen Dynasty und nennt sie "MyDynasty"

      DynastyGetFamilyMember ... -- Familienmitglieder sind durchnummeriert, dein Hauptcharakter ist Nr. 0. Den holen wir uns und nennen ihn "FamilyBoss"

      SimSetAge -- Das Alter dieses Charakters ("FamilyBoss") wird auf 20 gesetzt.

      Das passiert jede Stunde. Könnte man noch verfeinern, indem man abfragt, ob das überhaupt nötig ist, ihn auf 20 zu setzen (vielleicht ist er ja bereits 20)

      Das würde man dann so machen:
      if SimGetAge("FamilyBoss") > 20 then
      SimSetAge("FamilyBoss", 20)
      end

      (selbsterklärend?)

      LG
    • Okay, nach einigen jahren die daherzogen war der Typ nun immernoch 20, hat nun also geklappt. Danke für die Hilfe, ich habe mich in den letzten Tagen dumm und dämlich gesucht.

      @Fajeth - Funktioniert soweit ich herausgefunden habe nur bei Renaissance. Beim orginal Game, jedenfalls meiner Version gibt es keine Datei namens residence.lua und auch keinen "Buildings" Ordern. Ich habe es probiert einfach mal so in die CityPingHour.lua einzutragen, funktioniert dort aber nicht. Irgendeine Idee wo ich es dort hinzufügen kann dass es funktioniert?

      The post was edited 1 time, last by Lighnoon ().

    • Fajeth wrote:

      Gilde 2 ohne addons besitze ich "leider" nicht ^^
      Ich besitze ein Renaissance Version, diese ist aber englisch und wurde ehrlich gesagt nur irgendwann mal vor 100 Jahren als sie gerade rauskam von einem Freund auf weniger legaler Weise besorgt. Ich unterstütze Entwickler aber gern und hätte von daher lieber auf meine gekaufte AddOn Freie Version bestanden, zumal diese eben auch deutsch ist.
    • Guten Abend....
      ja ich weis ich buddel hier nun ein über 2 Jahre altes Thema aus aber vllt kann man mir ja doch helfen...
      Ich habe nämlich alles wie oben gemacht aber bei mir funktioniert es nicht?!.

      Ich habe Gilde2:Renaissance + Fajeth Modpack drauf (4.21 (Final) / 0.95 Modpack)
      Die Residence.lua sieht unten nun wie folgt aus?!

      function PingHour()
      GetScenario("World")
      if HasProperty("World", "messages") then
      if GetProperty("World", "messages") == 1 then
      -- if BuildingGetOwner("", "MyBoss") then
      MeasureRun("", "", "RandomEvents", false)
      return
      -- end
      function PingHour()
      GetDynasty("", "MyDynasty")
      DynastyGetFamilyMember("MyDynasty", 0, "FamilyBoss")
      SimSetAge("FamilyBoss", 20)
      if SimGetAge("FamilyBoss") > 20 then
      SimSetAge("FamilyBoss", 20)
      end
      end
      end
      end

      muss ich das gleiche nochmal irgendwo einfügen oder war es nur in die Residence.lua?
      denn mein Sim altert leider weiter *seufzt* würde das Spiel auch lieber ohne altern spielen.

      Sollte das ausgraben verboten sien bitte ich um Entschuldigung und ich werde ein neuen Thread aufmachen <3

      LG.Sala
    • Hallo Fajeth
      vor welchen pinghour? gibt ja zwei.. ich habe einfach unter dem normalen pinghour die Zeile von hier eingefügt kann aber gerne noch etwas mehr kopieren... aber ist richtig das das nur in der z.B. Residence.lua stehen muss oder?

      So sieht nun die komplette Residence.lua aus bei mir?!

      Display Spoiler

      --
      -- OnLevelUp is called everytime the building level was changed, even when the building is build the first time.
      -- This function is called bevor Setup
      -- attention: this function call is unscheduled
      --
      function OnLevelUp()
      local Check
      local Proto
      local CurrentLevel = BuildingGetLevel("")
      if CurrentLevel == 1 then -- verylow
      Check = Rand(2)
      if Check == 0 then
      return
      else
      Proto = 681
      end
      elseif CurrentLevel == 2 then -- low
      Check = Rand(5)
      if Check == 0 then
      return
      elseif Check == 1 then
      Proto = 655
      elseif Check == 2 then
      Proto = 656
      elseif Check == 3 then
      Proto = 657
      else
      Proto = 682
      end
      elseif CurrentLevel == 3 then -- lowmed
      Check = Rand(3)
      if Check == 0 then
      return
      elseif Check == 1 then
      Proto = 658
      else
      Proto = 659
      end
      elseif CurrentLevel == 4 then -- med
      Check = Rand(3)
      if Check == 0 then
      return
      elseif Check == 1 then
      Proto = 683
      else
      Proto = 684
      end
      else
      return
      end


      BuildingInternalLevelUp("", Proto)
      end


      function Run()
      end


      function Setup()
      end


      function PingHour()
      GetScenario("World")
      if HasProperty("World", "messages") then
      if GetProperty("World", "messages") == 1 then
      -- if BuildingGetOwner("", "MyBoss") then
      MeasureRun("", "", "RandomEvents", false)
      return
      -- end
      function PingHour()
      GetDynasty("", "MyDynasty")
      DynastyGetFamilyMember("MyDynasty", 0, "FamilyBoss")
      SimSetAge("FamilyBoss", 20)
      if SimGetAge("FamilyBoss") > 20 then
      SimSetAge("FamilyBoss", 20)
      end
      end
      end
      end
    • Probiere es doch mal vor dem ersten PingHour

      Übrigens. Sinngemäß hast du jetzt geschrieben:

      Display Spoiler
      function PingHour() ##Funktion
      GetDynasty("", "MyDynasty")
      ##Deine Dynastie finden

      DynastyGetFamilyMember("MyDynasty", 0, "FamilyBoss")
      ##Dein Familienmitglied, mitdem was gemacht werden soll, wird ausgewählt (0 ist Hauptcharakter)

      SimSetAge("FamilyBoss", 20)
      ##Hauptcharakter wird 20 (unabhängig, ob er es schon ist)

      if SimGetAge("FamilyBoss") > 20 then ->
      ##Wenn Hauptcharakter über 20

      SimSetAge("FamilyBoss", 20)
      ##setz Charakter auf Alter 20


      Mit anderen Worten: Entweder schreibst du
      SimSetAge("FamilyBoss", 20)

      oder
      if SimGetAge("FamilyBoss") > 20 then
      SimSetAge("FamilyBoss", 20)
    • kenn mich mit dem programieren nun nicht so genau aus.. wie genau meinst du das nun?!
      ich hab das so verstanden das ich dort nun geschrieben habe das er prüfen soll das sich der Hauptcharakter 20 ist wenn der dieses nicht ist soll er ihn auf 20 setzen. Wie bau ich das denn ein das VOR Pinghour einzusetzen also wo genau muss das genau hin dann?!
    • Lua Source Code: Residence.lua

      1. --
      2. -- OnLevelUp is called everytime the building level was changed, even when the building is build the first time.
      3. -- This function is called bevor Setup
      4. -- attention: this function call is unscheduled
      5. --
      6. function OnLevelUp()
      7. local Check
      8. local Proto
      9. local CurrentLevel = BuildingGetLevel("")
      10. if CurrentLevel == 1 then -- verylow
      11. Check = Rand(2)
      12. if Check == 0 then
      13. return
      14. else
      15. Proto = 681
      16. end
      17. elseif CurrentLevel == 2 then -- low
      18. Check = Rand(5)
      19. if Check == 0 then
      20. return
      21. elseif Check == 1 then
      22. Proto = 655
      23. elseif Check == 2 then
      24. Proto = 656
      25. elseif Check == 3 then
      26. Proto = 657
      27. else
      28. Proto = 682
      29. end
      30. elseif CurrentLevel == 3 then -- lowmed
      31. Check = Rand(3)
      32. if Check == 0 then
      33. return
      34. elseif Check == 1 then
      35. Proto = 658
      36. else
      37. Proto = 659
      38. end
      39. elseif CurrentLevel == 4 then -- med
      40. Check = Rand(3)
      41. if Check == 0 then
      42. return
      43. elseif Check == 1 then
      44. Proto = 683
      45. else
      46. Proto = 684
      47. end
      48. else
      49. return
      50. end
      51. BuildingInternalLevelUp("", Proto)
      52. end
      53. function Run()
      54. end
      55. function Setup()
      56. end
      57. function PingHour()
      58. GetScenario("World")
      59. if HasProperty("World", "messages") then
      60. if GetProperty("World", "messages") == 1 then
      61. -- if BuildingGetOwner("", "MyBoss") then
      62. MeasureRun("", "", "RandomEvents", false)
      63. return
      64. -- end
      65. end
      66. end
      67. -- Niemals altern: Alter des Spielercharakters auf 20 Jahre setzen
      68. if BuildingGetOwner("", "ResidenceOwner") and DynastyIsPlayer("ResidenceOwner") then
      69. if SimGetAge("ResidenceOwner") > 20 then
      70. SimSetAge("ResidenceOwner", 20)
      71. end
      72. end
      73. end
      Display All