Informationen aus Statistikmenu nutzen

» Siedler Map Source Forum » Siedler DEdK Script Forum » Informationen aus Statistikmenu nutzen

Seiten: Zurück 1 2

Kalle
#26
24.03.2011 17:20
Beiträge: 1150

...der Trigger hat aber ein Logik-Problem (siehe auch meine Map):

Wenn Du Einheiten besitzt, die im Wesen durch Upgrade verändert werden (Beispiel Bogenschützen -> Upgrade auf Armbrust), dann werden diese Einheiten von Siedler "gekillt" und durch neue Einheiten ersetzt.

Aber der Trigger erfasst diese als "verlorene Einheit", also auch, wenn es überhaupt keinen Feindkontakt gibt....

Der Score-Zähler aus der Statistik zählt jedoch richtig. Leider habe ich noch keine Idee, wie ich den "Wechsel der Figur durch Upgrade" aus der Statistik rausrechnen kann (ohne imensen Aufwand zu betreiben...).

____________________
Lieber Siedeln statt (fern)sehen.....

Noigi
#27
24.03.2011 19:09
Beiträge: 772

Zitat von Kalle:
...der Trigger hat aber ein Logik-Problem (siehe auch meine Map):

Wenn Du Einheiten besitzt, die im Wesen durch Upgrade verändert werden (Beispiel Bogenschützen -> Upgrade auf Armbrust), dann werden diese Einheiten von Siedler "gekillt" und durch neue Einheiten ersetzt.

Aber der Trigger erfasst diese als "verlorene Einheit", also auch, wenn es überhaupt keinen Feindkontakt gibt....

Der Score-Zähler aus der Statistik zählt jedoch richtig. Leider habe ich noch keine Idee, wie ich den "Wechsel der Figur durch Upgrade" aus der Statistik rausrechnen kann (ohne imensen Aufwand zu betreiben...).



Aloha!

Die Problematik hat Anarki in seinem Vorschlag doch schon bedacht. Es werden nur Kills für diejenigen Entities registriert, die unmittelbar vorher im "LOGIC_EVENT_ENTITY_HURT_ENTITY"-Callback aufgetaucht sind.

Ich würde das über zwei Trigger und realisieren. Das "LOGIC_EVENT_ENTITY_HURT_ENTITY"-Callback füllt seine Ziele in einen table, der zehtelsekündlich wieder geleert wird. Das "LOGIC_EVENT_ENTITY_DESTROYED"-Callback prüft dann nur noch, ob die zerstörte Entity im table steht (-> +1 kill) oder nicht.

Das würde nur noch in extremen Randfällen zu Fehlverhalten führen, z.B. wenn der Spieler eine Einheit entlässt, die weniger als 0.1 Sekunden vorher ge"hurtet" worden ist.

Ein weiteres Problem ist aber, dass manche Schadenseffekte (Pilis Bombe und der Dieb-Sprengsatz z.B.) kein Hurt-Trigger-Callback auslösen. Wenn man mit diesen Gegener erledigt, würden die Kills wieder nicht angerechnet.

Anarki
#28
24.03.2011 20:10
Beiträge: 518

Zitat von Noigi:

Ein weiteres Problem ist aber, dass manche Schadenseffekte (Pilis Bombe und der Dieb-Sprengsatz z.B.) kein Hurt-Trigger-Callback auslösen. Wenn man mit diesen Gegener erledigt, würden die Kills wieder nicht angerechnet.


Werden sie denn in der Statistik angerechnet?
Aber ich glaube das ist zu vernachlässigen

"Wenn Du Einheiten besitzt, die im Wesen durch Upgrade verändert werden (Beispiel Bogenschützen -> Upgrade auf Armbrust), dann werden diese Einheiten von Siedler "gekillt" und durch neue Einheiten ersetzt."
Direkt an die Problematik hatte ich zwar nicht gedacht, aber versteht sich von selbst wie Noigi erklärt hat, weil eben mit dem "LOGIC_EVENT_ENTITY_HURT_ENTITY"-Trigger gearbeitet wird (statt EntityDestroyed).

In diesem Sinne... eigentlich garnicht soooo schwer.
Übrigens sollte in den Table der "HurtEntityID" noch eine darauf verweisende "Damager-SpielerID", damit dann die Kills richtig zugeordnet werden

Übrigens: Speichern großer Datenmengen in Tables um z.B. später zu Exportieren ist kein allzu großes Problem.
Siehe auch meine MP-Maps mit Statistik-Export über die Debug-Meldungen. Mit Excel lässt sich dann sowas machen
Spielstatistik Export MP-Spiel

____________________
Siedler V Tool: Selbstextrahierende Maps erstellen
Bitte testen und kommentieren

totalwarANGEL
#29
01.04.2011 20:05
Beiträge: 2123

Fehlpost

...

____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.

Play4FuN
#30
16.02.2018 11:52
Beiträge: 704

Auch wenn das Thema ewig alt ist

... nur der Vollständigkeit halber (falls das wer braucht), hier die sehr viel einfachere Variante um zu checken, welcher Spieler wie viele Einheiten getötet und verloren hat:

Victims = 0
Kills = 0
GameCallback_SettlerKilledOrig = GameCallback_SettlerKilled
GameCallback_SettlerKilled = function(a,b)
	GameCallback_SettlerKilledOrig(a,b)
	-- a = hurter
	-- b = hurt
	if b == 1 then
		Victims = Victims + 1
		Message("Spieler Opfer: "..Victims)
	elseif a == 1 then
		Kills = Kills + 1
		Message("Spieler kills: "..Kills)
	end
end


Hier nur für Spieler 1, aber das kann natürlich beliebig auf alle 8 Spieler angewandt werden

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Seiten: Zurück 1 2

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

Impressum