Ergebnis 1 bis 10 von 10
  1. #1
    12 of 5 Avatar von fritz_98
    Registriert seit
    13.08.2008
    Beiträge
    19
    Downloads
    0
    Uploads
    0

    Böse Probleme mit ständigen Abstürzen

    Hallo miteinander!
    Ich arbeite gerade ein wenig an meiner neuen Map herum, soll eigentlich eine Kampagne werden (nach und nach). Allerdings befürchte ich, dass ich diese Idee wohl begraben muss...

    Es ist folgendermaßen: Meine Map soll ein paar besonderheiten haben:
    -Mann kann am Anfang seinen Ritter wählen...
    -Wenn dieser Stirbt, kann man Ihn in seiner Burg wiederbeleben, für ein kleines bisschen Geld...
    -Man kann den Ritter wie den normalen Held mit den "Held-Finden-Button"
    selektieren und zu Ihm springen...

    Allerdings gibt es ein Problem:
    Die ganze Map stürzt sang- und klanglos ab, ohne Fehlermeldung, ohne nichts, und zwar genau dann, wenn der Ritter tot ist, und die Leibeigenenkauffunktion umfunktioniert werden soll, genauso wie die "Hero-Buttons"!

    Ich kann noch tagelang weiter suchen, ohne was zu finden... Außerdem funktioniert das Ganze auch in ungefäher der Hälfte der Fälle. Ich bin ratlos...

    Kann auch sein, dass ich updaten muss, hab nur 1.05 auf'm Rechner, sonst fällt mir wie gesagt nichts ein...

    Hier ist der Ausschnitt aus dem Skript:

    Code:
    function CreateRitter()
       GUIAction_FindHero = function(_wer)
         if _wer == Entities.PU_Hero6 then
         posDiddi = GetPosition("ritter1")
         Camera.ScrollSetLookAt(posDiddi.X,posDiddi.Y)
         GUI.SelectEntity(GetEntityId("ritter1"))
       end 
       end
       GUITooltip_AOFindHero_Orig = GUITooltip_AOFindHero
       GUITooltip_AOFindHero = function(_hero)
         GUITooltip_AOFindHero_Orig(_hero)
         if _hero == FindHero1 then
           XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, "@color:180,180,180 Dieter Draufhau @cr @color:255,255,255 Springt zu Dieter Draufhau @cr und selektiert ihn" )
       end
       end
       ProtectRitter()
       StartSimpleJob("ControlRitter1")
       kostenGold = 499
       kostenGoldShow = 500
       warteZeit = 30
    end
    function ControlRitter1()
      if GetHealth("ritter1") < 50 then
        SetHealth("ritter1",100)
        StartSimpleJob("ControlRitter12")
        return true
      end
    end
    function ControlRitter12()
      if IsDead("ritter1") then
      MachNeu1()
      return true
      end
    end
    function MachNeu1()
       GUIAction_FindHero = function(_wer)
         if _wer == Entities.PU_Hero6 then
         posHaupt = GetPosition("player1")
         Camera.ScrollSetLookAt(posHaupt.X,posHaupt.Y)
         end
       end 
       GUIAction_BuySerf_Orig = GUIAction_BuySerf
       GUIAction_BuySerf = function()
         if GetGold(1) > kostenGold then
        AddGold(-kostenGoldShow)
        kostenGold = kostenGold + 100
        kostenGoldShow = kostenGoldShow + 100
         Message("Dieter Draufhau wird wiederbelebt...")
        StartCountdown(warteZeit,WiederBereit,false)
        GUIAction_BuySerf = GUIAction_BuySerf_Orig
        GUITooltip_BuySerf = GUITooltip_BuySerf_Orig
        GUIUpdate_BuildingButtons("Buy_Serf", Technologies.MU_Serf)
      else
        Message("Ihr habt nicht genug Taler!")
         end  
       end
       GUITooltip_BuySerf_Orig = GUITooltip_BuySerf
       GUITooltip_BuySerf = function()
           XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, "@color:180,180,180 Dieter Draufhau wiederbeleben @cr @color:255,255,255 Bezahlt "..kostenGoldShow.." Taler @cr um Dieter Draufhau wieder zu beleben" )
        XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomCosts, "Taler: "..kostenGoldShow.."" )
       end
       GUIUpdate_BuildingButtons("Buy_Serf", nil)
    end
    function WiederBereit()
        GUIAction_FindHero = function(_wer)
             if _wer == Entities.PU_Hero6 then
               posDiddi = GetPosition("ritter1")
               Camera.ScrollSetLookAt(posDiddi.X,posDiddi.Y)
               GUI.SelectEntity(GetEntityId("ritter1"))
          end
           end
        StartSimpleJob("ControlRitter1")
        Message("Dieter Draufhau ist wieder fit!")
         Sound.PlayGUISound(Sounds.Misc_so_signalhorn)
        RoCreateEntity(1,Entities.PU_LeaderHeavyCavalry2,GetPosition("posVorBurg"),"ritter1",180)
         warteZeit = warteZeit + 5
    end
    function ProtectRitter()
        gvProtectedUnits = {};
     table.insert( gvProtectedUnits, "ritter1");
        GameCallback_GUI_SelectionChanged_Orig = GameCallback_GUI_SelectionChanged;
        GameCallback_GUI_SelectionChanged = function()
            GameCallback_GUI_SelectionChanged_Orig()
            for i = 1,table.getn(gvProtectedUnits) do
                if GUI.GetSelectedEntity() == GetEntityId( gvProtectedUnits[i] ) then
              XGUIEng.ShowWidget( gvGUI_WidgetID.ExpelSettler, 0 ); 
        XGUIEng.ShowWidget( gvGUI_WidgetID.BuySoldierButton, 0 );
                    return;
                else
              XGUIEng.ShowWidget( gvGUI_WidgetID.BuySoldierButton, 1 );
                 XGUIEng.ShowWidget( gvGUI_WidgetID.ExpelSettler, 1 ); 
                end
            end    
        end  
    end
    -- falls der 2. Ritter gewählt wurde
    function CreateRitter2()
       GUIAction_FindHero = function(_wer)
         if _wer == Entities.PU_Hero6 then
         posBerni = GetPosition("ritter2")
         Camera.ScrollSetLookAt(posBerni.X,posBerni.Y)
         GUI.SelectEntity(GetEntityId("ritter2"))
       end 
       end
       GUITooltip_AOFindHero_Orig = GUITooltip_AOFindHero
       GUITooltip_AOFindHero = function(_hero)
         GUITooltip_AOFindHero_Orig(_hero)
         if _hero == FindHero1 then
           XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, "@color:180,180,180 Bernhard Bandit @cr @color:255,255,255 Springt zu Bernhard Bandit @cr und selektiert ihn" )
       end
       end
       ProtectRitter2()
       StartSimpleJob("ControlRitter2")
       kostenGold2 = 199
       kostenGold2Show = 200
       warteZeit2 = 10
    end
    function ControlRitter2()
      if GetHealth("ritter2") < 50 then
        SetHealth("ritter2",100)
        StartSimpleJob("ControlRitter22")
        return true
      end
    end
    function ControlRitter22()
      if IsDead("ritter2") then
      MachNeu2()
      return true
      end
    end
    function MachNeu2()
       GUIAction_FindHero = function(_wer)
         if _wer == Entities.PU_Hero6 then
         posHaupt = GetPosition("player1")
         Camera.ScrollSetLookAt(posHaupt.X,posHaupt.Y)
         end
       end 
       GUIAction_BuySerf_Orig = GUIAction_BuySerf
       GUIAction_BuySerf = function()
         if GetGold(1) > kostenGold2 then
        AddGold(-kostenGold2Show)
        kostenGold2 = kostenGold2 + 100
        kostenGold2Show = kostenGold2Show + 100
         Message("Bernhard Bandit wird wiederbelebt...")
        StartCountdown(warteZeit2,WiederBereit2,false)
        GUIAction_BuySerf = GUIAction_BuySerf_Orig
        GUITooltip_BuySerf = GUITooltip_BuySerf_Orig
        GUIUpdate_BuildingButtons("Buy_Serf", Technologies.MU_Serf)
      else
        Message("Ihr habt nicht genug Taler!")
         end  
       end
       GUITooltip_BuySerf_Orig = GUITooltip_BuySerf
       GUITooltip_BuySerf = function()
           XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, "@color:180,180,180 Bernhard Bandit wiederbeleben @cr @color:255,255,255 Bezahlt "..kostenGold2Show.." Taler @cr um Bernhard Bandit wieder zu beleben" )
        XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomCosts, "Taler: "..kostenGold2Show.."" )
       end
       GUIUpdate_BuildingButtons("Buy_Serf", nil)
    end
    function WiederBereit2()
        GUIAction_FindHero = function(_wer)
             if _wer == Entities.PU_Hero6 then
               posBerni = GetPosition("ritter2")
               Camera.ScrollSetLookAt(posBerni.X,posBerni.Y)
               GUI.SelectEntity(GetEntityId("ritter2"))
          end
           end
        StartSimpleJob("ControlRitter2")
        Message("Bernhard Bandit ist wieder fit!")
         Sound.PlayGUISound(Sounds.Misc_so_signalhorn)
        RoCreateEntity(1,Entities.CU_BanditLeaderSword,GetPosition("posVorBurg"),"ritter2",180)
         warteZeit2 = warteZeit2 + 5
    end
    function ProtectRitter2()
        gvProtectedUnits = {};
     table.insert( gvProtectedUnits, "ritter2");
        GameCallback_GUI_SelectionChanged_Orig = GameCallback_GUI_SelectionChanged;
        GameCallback_GUI_SelectionChanged = function()
            GameCallback_GUI_SelectionChanged_Orig()
            for i = 1,table.getn(gvProtectedUnits) do
                if GUI.GetSelectedEntity() == GetEntityId( gvProtectedUnits[i] ) then
              XGUIEng.ShowWidget( gvGUI_WidgetID.ExpelSettler, 0 ); 
        XGUIEng.ShowWidget( gvGUI_WidgetID.BuySoldierButton, 0 );
                    return;
                else
              XGUIEng.ShowWidget( gvGUI_WidgetID.BuySoldierButton, 1 );
                 XGUIEng.ShowWidget( gvGUI_WidgetID.ExpelSettler, 1 ); 
                end
            end    
        end  
    end
    Ich hab zugegebenermaßen etwas aus dem Wiki geholt und umgeschrieben
    (s. ProtectRitter1 u. 2() )

    €dit: Hab jetzt nach einigen Installationsproblemen... die neueste Version drauf. Resultat: Funktioniert immer noch nicht! Hab auch nach vielen Tests festgestellt, dass 'Bernhard Bandit' das schwarze Schaf is. Zwar funktionierts bei 'Dieter Draufhau' auch nur ganz selten, aber öfter als beim anderen...
    (Auch find ichs seltsam, dass bis jetzt noch keiner geantwortet hat)

    Gruß
    Fritz
    Geändert von fritz_98 (24.10.2008 um 09:16 Uhr)

  2. #2
    Planierer Avatar von Emzet
    Registriert seit
    17.05.2008
    Ort
    Solingen
    Beiträge
    47
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    Hallo Fritz!

    Ich habe deinen Code mal in eine Testmap eingefügt und mit ein paar Umwegen habe ich es geschafft, den Absturz zu reproduzieren. Nur stürzt die Map beim tot von 'Dieter Draufhau' ab.

    Bei 'Bernhard Bandit' geht der Absturz direkt nach dem Start los.

    Ich hab keine Ahnung woran das liegen könnte.

    Kannst du nicht vielleicht eine Testmap hier hochladen? Es kan vllt. sein, dass ich beim Entwickeln meiner Testmap etwas falsch gemacht habe.

  3. #3
    12 of 5 Avatar von fritz_98
    Registriert seit
    13.08.2008
    Beiträge
    19
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    Jupp, mach ich!

    Also... im Anhang findest du die Map!

    Bevor du sie startest, öffne sieim Edi und setz auf das Kreuzchen vor der Burg nen PU_LeaderHeavyCavalry2 mit Namen "ritter1" ODER nen CU_BanditLeaderSword1 und dem Namen "ritter2". Dann öffnest du das Skript und aktivierst EINE der beiden Ritterfuktionen. (Entsprechend dem gesetzten Ritter) Speichern... Starten und abwarten...
    Angehängte Dateien Angehängte Dateien

  4. #4
    Planierer Avatar von Emzet
    Registriert seit
    17.05.2008
    Ort
    Solingen
    Beiträge
    47
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    So, dass habe ich bekommen am Anfang des Games:

    Code:
    [ 2008/10/26 16:10:48 ] ERROR: DEBUG ERROR!
    Error: LUA_ERRRUN: [string "Data\Script\MapTools\Comfort.lua"]:1778: attempt to index local `_position' (a nil value)
    Dieser Error wird bei mir angezeigt, wenn ich die Map mit einer der beiden Ritter gewählt habe. Nachdem ich wieder im Game bin, sind die Hellebarden im Süden nicht da.

    Außerdem muss ich noch erwähnen, dass die Funktionen GetHealth(),StartCountdown() und RoCreateEntity() im Skript nicht vorhanden sind und ih das erstmal korrigieren musste.

    Aber ich habe keine Ahnung was der Error bedeuten soll.

    Gruß
    Emzet

  5. #5
    Lanzenträger Avatar von trabbi
    Registriert seit
    09.03.2006
    Beiträge
    4,968
    Downloads
    1
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    Zitat Zitat von Emzet Beitrag anzeigen

    Aber ich habe keine Ahnung was der Error bedeuten soll.
    Ein interner Fehler in den MapTools.
    Also kein Fehler im Script.
    trabbi
    Was ist Theorie, - Wenns klappen soll und es klappt nie
    Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum

  6. #6
    12 of 5 Avatar von fritz_98
    Registriert seit
    13.08.2008
    Beiträge
    19
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    Ups...! Da hab ich doch glatt die Komfortfunktionen vergessen! SRY!

    Nun aber zu dem Fehler... Da hab ich wohl ne Position vergessen oder falsch geschrieben. Ich kann mir auch denken, was das sein wird...

    Um den Ritter wiedererschaffen zu können, braucht man auch die entsprechende Entstehungsposition... Die scheine ich vergessen zu haben. Setz einfach dann noch ein ScriptEntity vor die Burgg (oder woanders hin) und benenn ihn einfach mit "posVorBurg".

    Ach ja.. und die Speerträger sind auch falsch gemacht. Das heisst nicht "PU_PoleArm3", sondern "PU_LeaderPoleArm3". Verzeihe mir bitte diese Fehler, bin heut glaub ich etwas zerstreut. (Muss die Müdigkeit sein...)

    Gruß
    Fritz

  7. #7
    Planierer Avatar von Emzet
    Registriert seit
    17.05.2008
    Ort
    Solingen
    Beiträge
    47
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    Ups...! Da hab ich doch glatt die Komfortfunktionen vergessen! SRY!
    Halb so wild, ich hab die schon selbst eingefügt.

    Ach ja.. und die Speerträger sind auch falsch gemacht. Das heisst nicht "PU_PoleArm3", sondern "PU_LeaderPoleArm3"
    Und den Aufruf habe ich längst auskommentiert.

    Um den Ritter wiedererschaffen zu können, braucht man auch die entsprechende Entstehungsposition... Die scheine ich vergessen zu haben. Setz einfach dann noch ein ScriptEntity vor die Burgg (oder woanders hin) und benenn ihn einfach mit "posVorBurg".
    Hab ich auch schon selbst gemacht.

    Nun aber erstmal zu den Abstürzen.

    Ich einen von den beiden 'Rittern' in die Richtung Feinde geschickt und niedermetzeln lassen. Der Tod der Ritter funktioniert problemlos und der Ritter lässt sich in der Burg wieder 'lebend kaufen', aber nach der Wartezeit stürzt die Map einfach ab.

    Was mir beim 'aufsuchen' des Helden aufgefallen ist:
    Ist der Held tot und drückt man dann beim 'Held aufsuchen-Button'(hoffe das heißt so) landet die Kamera direkt in der unteren Ecke der Map. Das kann unter Umständen unangenehm werden.

  8. #8
    12 of 5 Avatar von fritz_98
    Registriert seit
    13.08.2008
    Beiträge
    19
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    Hi Emzet!
    Zitat Zitat von Emzet
    'Held aufsuchen-Button'(hoffe das heißt so)
    Kannst du nennen wie du willst (glaube ich) mach ich schließlich auch.
    Zitat Zitat von Emzet
    Ich einen von den beiden 'Rittern' in die Richtung Feinde geschickt und niedermetzeln lassen. Der Tod der Ritter funktioniert problemlos und der Ritter lässt sich in der Burg wieder 'lebend kaufen', aber nach der Wartezeit stürzt die Map einfach ab.
    Was??? (auch )
    Da muss ich noch mal schauen...
    Vielleicht liegt das an einem der Aufrufe hier:
    Code:
        GUIAction_BuySerf = GUIAction_BuySerf_Orig
        GUITooltip_BuySerf = GUITooltip_BuySerf_Orig
        GUIUpdate_BuildingButtons("Buy_Serf", Technologies.MU_Serf)
    , die auch umgekehrt verwendet werden. Vielleicht sorgt einer von denen für das Problem. Werd ich gleich mal ausprobieren...

    Ein ganz, ganz dickes Dankeschön für deine Bemühungen !!

    Gruß
    Fritz

  9. #9
    Planierer Avatar von Emzet
    Registriert seit
    17.05.2008
    Ort
    Solingen
    Beiträge
    47
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen: gelöst!!

    Ich konnte nun das ominöse Absturzproblem lösen. Es lag (wahrscheinlich) an dieser Stelle (in beiden Ritter-skriptteilen):
    Code:
    StartSimpleJob("ControlRitter1")
        Message("Dieter Draufhau ist wieder fit!")
         Sound.PlayGUISound(Sounds.Misc_so_signalhorn)
        RoCreateEntity(1,Entities.PU_LeaderHeavyCavalry2,"posVorBurg","ritter1",180)
         warteZeit = warteZeit + 5
    Den SimpleJob("ControlRitter1") habe ich einfach hinter RoCreateEntity() verschoben und dann war Sense mit den Abstürzen

    Hier ist die Lösung zur Vermeidung dieser Abstürze:
    Code:
        Message("Dieter Draufhau ist wieder fit!")
         Sound.PlayGUISound(Sounds.Misc_so_signalhorn)
        RoCreateEntity(1,Entities.PU_LeaderHeavyCavalry2,"posVorBurg","ritter1",180)
         warteZeit = warteZeit + 5
      StartSimpleJob("ControlRitter1")
    und beim zweiten Ritter einfach:
    Code:
        Message("Bernhard Bandit ist wieder fit!")
         Sound.PlayGUISound(Sounds.Misc_so_signalhorn)
        RoCreateEntity(1,Entities.CU_BanditLeaderSword2,"posVorBurg","ritter2",180)
        StartSimpleJob("ControlRitter2")
         warteZeit2 = warteZeit2 + 5

    Damit sollte das Problem gelöst sein

    Gruß Emzet

  10. #10
    12 of 5 Avatar von fritz_98
    Registriert seit
    13.08.2008
    Beiträge
    19
    Downloads
    0
    Uploads
    0

    Standard AW: Probleme mit ständigen Abstürzen

    OH!
    Das war mir noch nie aufgefallen! Danke!

    Übrigens hab ich die Abstürze bei mir auch regeln können:

    Das
    GUIUpdate_BuildingButtons("Buy_Serf", Technologies.MU_Serf/nil)
    war der Störenfried und dazu noch absolut überflüssig!

    Tja, dann wars das jetzt mit faulenzen, jetzt muss ich wohl weitermappen...

    @Emzet noch mal ein Dankeschön, ich werd bei Problemen auf dich zurückkommen!

    Gruß
    Fritz

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Probleme mit IE und FF
    Von Uwe im Forum Technik Ecke
    Antworten: 9
    Letzter Beitrag: 03.07.2008, 13:33
  2. probleme mission 14
    Von Blacky007 im Forum Siedler 6 AeK Tipps und Tricks
    Antworten: 9
    Letzter Beitrag: 03.02.2008, 22:11
  3. Probleme mit der Siegbedingung
    Von JimKF im Forum Siedler 6 AeK Mapperecke
    Antworten: 24
    Letzter Beitrag: 22.01.2008, 11:03
  4. Probleme mit Mission 13
    Von Blacky007 im Forum Siedler 6 AeK Tipps und Tricks
    Antworten: 11
    Letzter Beitrag: 31.12.2007, 21:22
  5. Probleme mit den Kulteinrichtungen
    Von Unregistriert im Forum Kinder des Nils
    Antworten: 3
    Letzter Beitrag: 18.04.2005, 17:04

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •