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)

Settlerman
#12
19.12.2016 12:12
Beiträge: 238

Gut, danke! Genau nach sowas hab ich gesucht.

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

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum