Informationen aus Statistikmenu nutzen
» Siedler Map Source Forum » Siedler DEdK Script Forum » Informationen aus Statistikmenu nutzen
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