mcbTrigger
» Siedler Map Source Forum » Siedler DEdK Script Forum » mcbTrigger
Seiten: 1
mcb
|
#1 04.10.2014 11:25 Beiträge: 1472 |
mcbTrigger
Ich habe den Trigger-Fix von Chromix verbessert und erweitert.
Fehler werden abgefangen und über das DebugWindow ausgegeben.
Aktuellste Version ist hier zu finden: https://github.com/mcb5637/s5CommunityLib/blob/master/fixes/mcbTrigger.lua
Der LowPriorityJob ist noch nicht groß getestet, bei mir funktioniert jedoch alles Fehlerfrei. Wenn jemandem ein Fehler auffällt, bitte mir mitteilen.
Edit: v2.3b
Dieser Beitrag wurde von mcb am 28.05.2019 um 18:16 editiert.
Kantelo
|
#2 05.10.2014 16:38 Beiträge: 357 |
Vielen Dank für diese ganze Funktionen.
Von Metatables hab ich zwar keine Ahnung aber die anderen beiden Sachen kann ich gut gebrauchen
mcb
|
#3 05.10.2014 17:07 Beiträge: 1472 |
Zitat von Kantelo:
Vielen Dank für diese ganze Funktionen.
Von Metatables hab ich zwar keine Ahnung aber die anderen beiden Sachen kann ich gut gebrauchen
Gerne
Metatables braucht man im normalen Script eher selten... Die einzigen Scripte die das Verwenden (und die ich kenne) sind Noigis Siedler-Schach, das AI-Script und meine newArmy.
mcb
|
#4 19.10.2014 11:51 Beiträge: 1472 |
Version 1.1 online:
- Anpassung auf yoqs LuaDebugger:
- Fehler werden im Debugger angezeigt, wenn aktiv
- DEBUG - Funktionen
Messoras
|
#5 13.12.2016 12:42 Beiträge: 84 |
Auf Linux kriege ich nach einer Cutscene, wenn ich versuche einen Job aufzumachen die Performance Meldung. Die Trigger Laufzeit ist knapp über 0.05...
Kann ich da was machen?
Gruß,
Messoras
____________________
Six feet of earth make us all equal.
Spielt Siedler 5 online mit mir, dank des neuen Siedler 5 MP Projekts von Kimichura.
mcb
|
#6 13.12.2016 14:14 Beiträge: 1472 |
Ich müsste da auch mal ne neue Version von schreiben. Die jetzige hat da so ein paar Schwächen (unter anderem die ziemlich aufwändige Implementierung des LowPriorityJobs).
Hast du den Debugger an? Der braucht ordentlich Laufzeit und eine realitätsnahe Messung ist kaum noch möglich.
Ansonsten kannst du mal mit mcbTrigger.DEBUG_SearchBadPerformanceTrigger() den Trigger suchen, der am langsamsten ist, und dir mit mcbTrigger.DEBUG_GetInfo(tId) ausgeben lassen, welcher das ist. (Dafür kannst du durchaus den Debugger nehmen, der macht nur alles gleichmäßig langsamer)
Messoras
|
#7 13.12.2016 15:16 Beiträge: 84 |
Zitat von mcb:
Ich müsste da auch mal ne neue Version von schreiben. Die jetzige hat da so ein paar Schwächen (unter anderem die ziemlich aufwändige Implementierung des LowPriorityJobs).
Hast du den Debugger an? Der braucht ordentlich Laufzeit und eine realitätsnahe Messung ist kaum noch möglich.
Ansonsten kannst du mal mit mcbTrigger.DEBUG_SearchBadPerformanceTrigger() den Trigger suchen, der am langsamsten ist, und dir mit mcbTrigger.DEBUG_GetInfo(tId) ausgeben lassen, welcher das ist. (Dafür kannst du durchaus den Debugger nehmen, der macht nur alles gleichmäßig langsamer)
Bin jetzt an einer Linux Maschiene ohne alles. Habe Siedler mit Wine zum laufen gebracht und wollte einfach ein bisschen basteln. Der Debugger geht leider gar nicht.
Ich weiß genau welcher Trigger zu langsam ist, nämlich der erste mit dem ich einen CustomNPC erstellen will. Ich durchschaue die Meldung allerdings nicht ganz.
Trigger runtime too long: 0.501..
Will der mir sagen, dass ein Durchlauf der Methode zu lange dauert, oder wie?
Gruß,
Messoras
____________________
Six feet of earth make us all equal.
Spielt Siedler 5 online mit mir, dank des neuen Siedler 5 MP Projekts von Kimichura.
mcb
|
#8 13.12.2016 15:39 Beiträge: 1472 |
Sie bedeutet, das alle Trigger (= SimpleJob) zusammen zu lange brauchen. (0.5 Sekunden ist schon verdammt viel. Auf so einen Wert komme ich höchstens wenn ich ne komplette Kürzeste-Wege Abfrage über die ganze Map mache...)
Was hast du denn alles für Jobs laufen? Die fiesen Performancefresser die ich kenne, fallen mir in deiner Comfort jetzt nicht auf... (Sowas wie über alle Entitys iterieren)
Messoras
|
#9 13.12.2016 17:34 Beiträge: 84 |
Zitat von mcb:
Sie bedeutet, das alle Trigger (= SimpleJob) zusammen zu lange brauchen. (0.5 Sekunden ist schon verdammt viel. Auf so einen Wert komme ich höchstens wenn ich ne komplette Kürzeste-Wege Abfrage über die ganze Map mache...)
Was hast du denn alles für Jobs laufen? Die fiesen Performancefresser die ich kenne, fallen mir in deiner Comfort jetzt nicht auf... (Sowas wie über alle Entitys iterieren)
Sry, hatte mich verschrieben. Es waren 0.0501.. und zwar auf einer neuen Testmap ohne andere Jobs.
Ich habe deine EntityFind Comfort, die das starten des TriggerFix verhindert hat jetzt bei meiner Map rausgenommen und habe da jetzt auch die Meldung mit ca 0.6.
Vielleicht fressen die Typabfragen zu viel Zeit?
Edit: Merkwürdig, ich habe nicht verändert, das ganze einfach mal neu gestartet und jetzt hat es funktioniert o.O
Gruß,
Messoras
____________________
Six feet of earth make us all equal.
Spielt Siedler 5 online mit mir, dank des neuen Siedler 5 MP Projekts von Kimichura.
Dieser Beitrag wurde von Messoras am 13.12.2016 um 17:41 editiert.
Settlerman
|
#10 19.12.2016 11:09 Beiträge: 238 |
Frage: Wenn ich jetzt den mcbTrigger verwende, kann ich dann auch einem SimpleJob Parameter übergeben, oder?
mcb
|
#11 19.12.2016 12:05 Beiträge: 1472 |
Ja, einfach:
StartSimpleJob(function(a, b, c) -- do something end, a, b, c)
mcb
|
#13 19.12.2016 12:32 Beiträge: 1472 |
StartSimpleJob sind nur 3 Zeilen:
StartSimpleJob = function(f, ...) return Trigger.RequestTrigger(Events.LOGIC_EVENT_EVERY_SECOND, nil, f, 1, nil, arg) end
Aber ohne den Rest davon könntest du keine tables oder Funktionen übergeben.
mcb
|
#14 28.05.2019 18:17 Beiträge: 1472 |
Keine Ahnung wann ich das hier zuletzt aktualisiert habe, aber ich hab wohl ein paar Versionen verpasst
Aktuellste Version ist 2.3b.
Seiten: 1