Gruppe tot/bewustlos aber Dlg erscheint ob man rasten will

#1
Meine Gruppe hat gegen so ein paar Räuber verloren, die 1. Stufe ist halt hart.

Lustig ist aber das der Nach-Kampf-Rast-Dialog erscheint auf dem Gruppe ist tot Schirm.

Ich hab dann aus Spaß gesagt ja ich will rasten.

Dann hat sich das Programm nur noch durch Fenster schließen beenden lassen.
Bild
Dateianhänge
nlthd_screenshot_035.png
nlthd_screenshot_035.png (2.5 MiB) 230 mal betrachtet
nlthd_screenshot_034.png
nlthd_screenshot_034.png (2.12 MiB) 241 mal betrachtet
nlthd_screenshot_033.png
nlthd_screenshot_033.png (1.2 MiB) 238 mal betrachtet

#2
Hindro du hast ein neues Bild zum Lagern im Gebirge erschaffen. :D

O.K., schauen wir uns mal den Code an. Das ist aus der globalfights.xml:

Code: Alles auswählen

	
		if (battleresult == "victory") startdlg("post_camp_fight");
Jeder camp_road hat diesen Script-Eintrag.

Das ist dann der Dialog dazu aus der de_dlgtext.xml:
[spoiler]

Code: Alles auswählen

	
		post_camp_fight
		1
		 0 ) return text;
    var res = rollCheck({"who":"best","which":"heilenwunde","type":"skill"});
  heiler = res.id;
  return text.replace( /{0}/g, getName( heiler ) );
}
]]>
		false
		post_camp_battle_req
		post_camp_battle_go
		post_camp_battle_rast
	
	
		post_camp_fight
		2
		
		true
		
	
	
		post_camp_fight
		3
		
		true
		
	
[/spoiler]
Der Dialog dürfte aber eigentlich nicht triggern, da es dazu in der globalfights.xml keinen Befehl gibt. Tot ist tot. Also auf den ersten Blick sehe ich nicht, woran das liegen könnte. Da wird also einfach bei Tot der Dialog getriggert, was natürlich nicht sein darf. Mal sehen, ob jemand mehr dazu sagen kann als ich. :)

Und Hindro, sollte wieder erwarten deine Gruppe noch ein Kampf nicht schaffen und du wieder das Problem haben, denk dann bitte an die output_log. Dadurch können wir bei solchen Problemen meistens besser erkennen, woran es liegt. :)

#3
Hier scheint sich was zu beißen: So wie ich den 2. Screenshot verstehe, sind alle bewusstlos - aber nicht tot. Damit sind sie handlungsunfähig, was das Game-Over erklärt. Aber offensichtlich nicht tot genug im Sinne von wirklich tot, um den Rast-Dialog zu verhindern. Dann scheint wieder "alle handlungsunfähig" zu greifen, und das Programm verheddert sich...

#4
[quote='DJ_rainbow','index.php?page=Thread&postID=113824#post113824']So wie ich den 2. Screenshot verstehe, sind alle bewusstlos - aber nicht tot.[/quote]
Gut aufgepasst. Vielleicht gibt es dadurch wirklich ein Problem. Ich weiß, das etwas wegen dieser Situation (alle handlungsunfähig) angepasst wurde (im Allgemeinen und nicht nur auf den Kampf bezogen). Ich meine, Mordbrenner hatte sich damit auseinandergesetzt. Er wird uns hier vielleicht weiterhelfen können.

#5
Hmmm, also sehr komisch ist, dass der Dialog kommt, obwohl Du den Kampf ja verloren hast. Damit sollte die Bedingung

Code: Alles auswählen

if (battleresult == "victory") startdlg("post_camp_fight");
definitiv nicht erfüllt werden.

Kann es sein, dass Du irgendwelche Mods aktiv hast, in dem Kämpfe vorkommen, wo "post_camp_fight" immer gestartet wird und nicht nur bei victory? Oder gibt es im Vanilla irgendeinen Zufallskampf, wo die Abfrage fehlerhaft ist?

#6
Kämpfe in einer MOD glaube ich nicht, denn die MODs die ich aktiv habe sind:
ankaufpreise30prozent (sollte keine haben)
anleitung_v1.0 (sollte keine haben)
campAttackprob (hat keine)
schwertdueleant (hat keine)

Was den Zufallskampf betrifft, ich war glaub ich irgendwo zwischen Rukian und Auplog.
Und ich hab das Logfile "gefunden".
Bild
Dateianhänge
output_log.txt
(1.24 MiB) 18-mal heruntergeladen

#7
[quote='Mordbrenner','index.php?page=Thread&postID=113965#post113965']Oder gibt es im Vanilla irgendeinen Zufallskampf, wo die Abfrage fehlerhaft ist?[/quote]
Ich habe das gerade noch mal gescheckt und es ist keine fehlerhaft.

Was passiert denn (lass den Kampf mal außen vor), wenn alle Helden bewusstlos sind. Was macht das Spiel dann? Und kann das irgendwie einen Kampf beeinflussen, wenn plötzlich im Kampf alle bewusstlos werden?

#8
2ter Beitrag in Folge.

[quote='Hindro','index.php?page=Thread&postID=113968#post113968']Kämpfe in einer MOD glaube ich nicht, denn die MODs die ich aktiv habe sind:[/quote]
Ich glaube, das es zurzeit keine einzige Mod gibt, die zusätzliche camp_road hinzufügt oder abändert. Das können wir eigentlich ausschließen.

#9
Hurra, ein log :)

Also:

Code: Alles auswählen

Executing PostBattleScript for orkueberfall:
var battleresult = 'fleeordie';
startdlg("post_camp_fight");
und folgende Mods sind aktiv:

Code: Alles auswählen

Loaded 4 packages for Usermod

- ankaufpreise30prozent, ContentInfo(ContentFolder: ankaufpreise30prozent, ContentType: Usermod, CombinedSettingsFileName: ankaufpreise.xml, LoadVersion: 0, LoadOrder: 0, AssetBundles: [])

- anleitung_v1.0, ContentInfo(ContentFolder: anleitung_v1.0, ContentType: Usermod, CombinedSettingsFileName: anleitung.xml, LoadVersion: 0, LoadOrder: 5, AssetBundles: [])

- campattackprob, ContentInfo(ContentFolder: campattackprob, ContentType: Usermod, CombinedSettingsFileName: campattackprob.xml, LoadVersion: 0, LoadOrder: 2, AssetBundles: [])

- schwertduelant, ContentInfo(ContentFolder: schwertduelant, ContentType: Usermod, CombinedSettingsFileName: schwertduelant.xml, LoadVersion: 0, LoadOrder: 10, AssetBundles: [])
Fehlt bei dem orkueberfall die Abfrage im postbattleskript?

#10
3ter Beitrag in Folge.

Es gibt 3x "game over" in der output_log. Doch nur beim ersten sieht es so aus, das hier das PostBattleScript ausgeführt wurde:

[spoiler]

Code: Alles auswählen

Executing game over
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

TimeController.paused set to True
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Found handler for mood_desert: MoodCtrl (MoodController)
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

No Asset Bundle found for mood_desert
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Finalizing Battle, forced is False
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Setting Journey Buttons to True with journey [Journey: maptext_rt_road, Pos 10,61%, Dir 1, moving False, route rukian-fangbodi], route DSA.Model.TravelRoute route type land
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

CurrentControl is NOT null, using executePostBattleScript
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Executing PostBattleScript for orkueberfall:
var battleresult = 'fleeordie';
startdlg("post_camp_fight");
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Executing post_camp_fight [1]
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

rollCheck: actorchar 'Forgrimm' can't act
 
(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)

Call to processtext( 0, ... und nachdem der letzte Angreifer zusammenbricht, atmet {0} tief durch. "Ich glaube wir haben gewonnen. Zeit die Rüstung abzulegen, damit ich einen Blick auf eure Wunden werfen kann." ) execution error: Jurassic.JavaScriptException: TypeError: undefined cannot be converted to an object

at Jurassic.TypeConverter.ToObject (Jurassic.ScriptEngine,object) 
at (wrapper dynamic-method) object.processtext (Jurassic.ScriptEngine,Jurassic.Compiler.Scope,object,Jurassic.Library.FunctionInstance,object[]) 
at Jurassic.Library.UserDefinedFunction.CallLateBound (object,object[]) 
at Jurassic.ScriptEngine.CallGlobalFunction (string,object[]) 
at Jurassic.ScriptEngine.CallGlobalFunction (string,object[]) 
at LocationView.enginereturn (string,object[]) 
[/spoiler]
Und was hier merkwürdig ist, das "Forgrimm can't act" angezeigt wird.

#11
[quote='Lares','index.php?page=Thread&postID=113973#post113973']Und was here merkwürdig ist, das Forgrimm can't act angezeigt wird.[/quote]
Nö, das ist nicht merkwürdig, denn er ist ja ohnmächtig und damit can't act. Da ist ja eine "best"-rollcheck und die findet niemanden, da alle k.o. sind.

Was merkwürdig ist, ist, dass trotz fleeordie der dialog gestartet wird.

#12
[quote='Mordbrenner','index.php?page=Thread&postID=113972#post113972']Fehlt bei dem orkueberfall die Abfrage im postbattleskript?[/quote]
Also bei den beiden Orküberfällen steht folgendes in der globalfights.xml:

Code: Alles auswählen

	
		startdlg("post_camp_fight");

Code: Alles auswählen

	
		startdlg("post_camp_fight");
Dann wäre hier der Fehler, das nicht im Script steht, wann er den Dialog starten soll.

#14
[quote='Mordbrenner','index.php?page=Thread&postID=113977#post113977']Dann ist das ein Bug, dass hier die if-Abfrage fehlt.[/quote]
Sehe ich auch so. Bug erkannt. Sehr schön. :)

#17
Ich habe beim Bug auch vermerkt, das bei einer Korrektur wir sicherheitshalber alle Kämpfe in der globalfights.xml gegenchecken. Vielleicht wurde das auch noch bei einigen anderen Kämpfen falsch eingetragen.

#18
[quote='Hindro','index.php?page=Thread&postID=113979#post113979']Die Frage ist doch wieso ist battleresult 'fleeordie' und nicht 'lost'.[/quote]
Ich meine, es ist so gelöst, dass bei "alle handlungsunfähig" sowieso immer und automatisch das Game Over ausgelöst wird. Somit braucht man kein battleresult für "lost", denn welches Script solltest Du dann noch ausführen wollen?
Man muss halt dann nur aufpassen, dass man im Post-Fight-Script immer auf "victory" prüft. Und das ist hier nicht der Fall.

Aber MB kennt sich damit wirklich am besten aus. Vielleicht liege ich auch falsch... :S
Gesperrt

Zurück zu „Fixed Bugs“

cron