S5Hook & GUI Editor

» Siedler Map Source Forum » Siedler DEdK Script Forum » S5Hook & GUI Editor

Seiten: Zurück 1 2 3 4 5 6 7 Nächste Seite

mcb
#76
04.11.2015 21:54
Beiträge: 1472

Ich glaube nicht, das es einen Grund gibt, das Entity für SCV nicht per Script zu erzeugen. Mein Loader macht nix anderes...
Die Kameraverschiebung ist dazu da, das ganze schneller zu laden. Mit meinem Loader hab ich bei mir nur ein Aufblitzen eines schwarzen Bildschirmes (Sprung zu 0/0), danach Lädt die veränderte GUI. Das dauert ungefähr 2 Ticks. Ohne diese Kameraverschiebung braucht es teilweise mehrere Sekunden, bis Hook und SCV einsatzbereit sind.

yoq
#77
04.11.2015 23:53
Beiträge: 91

Stimmt, hab mir die Sache gerade mal selber angesehen, bei mir sind es meist nur 3 ticks mehr wenn die Kamera woanders ist, und ich hab das nie bemerkt. Dürfte wohl daran liegen, dass ich immer nur mit kleinen Testmaps experimentiere
Evtl. lässt sich hier noch eine bessere Lösung ohne Wartezeit finden, mal sehen.

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

mcb
#78
05.11.2015 19:44
Beiträge: 1472

Mit dem Loader gehts ja relativ schnell, ist also nicht das Problem
Viel Interessanter fände ich es, Grafikeffekte mit Ziel (Pfeile, Kanonenkugeln...) verfügbar zu machen...

Kantelo
#79
05.11.2015 21:57
Beiträge: 357

Zitat von yoq:

Zum SCV Lademechanismus:
Was ist der Grund das "Opfer"-Entity fix in die Map einzubauen? Bei S5Hook erzeuge ich es einfach per Skript und hatte damit nie Probleme - auch ohne Kameraverschiebung, was spricht gegen diesen Ansatz?



Nein Grund gibt es dafür eigentlich keinen, ich hatte nur zum Zeitpunkt als ich die Funktionen geschrieben habe keine Ahnung von diesen Verzögerungen, da ich ähnlich wie du auch nur mit kleineren Maps experimentiert habe und mir das gar nicht aufgefallen ist.
Aber wie gesagt, mit mcbs loader wird es sowieso per Skript erstellt.

@mcb Meinst du die im Spiel vorhandenen zu verändern, oder wirklich komplett neue Effekte zu erstellen?

castleplayer
#80
05.11.2015 22:30
Beiträge: 243

Zitat von mcb:
Mit dem Loader gehts ja relativ schnell, ist also nicht das Problem
Viel Interessanter fände ich es, Grafikeffekte mit Ziel (Pfeile, Kanonenkugeln...) verfügbar zu machen...


Nur so als Idee:
Kann man dafür nicht einfach nen Schützen hinstellen, den Unsichtbar machen und angreifen lassen oder ist dann der Pfeil auch unsichtbar?

____________________
Wenn die KI immer frontal angreift, wofür steht dann Das I in Künstliche Intelligenz?
Das neueste vom Nebelvolk!

mcb
#81
05.11.2015 22:30
Beiträge: 1472

Ich meine das so: Du rufst z.B. S5Hook.EffectPos(pos1, pos2, GGL_Effects.FXArrow) und ein Pfeil (Wie vom Bogenschützen) fliegt von pos1 zu pos2.

Kantelo
#82
06.11.2015 00:14
Beiträge: 357

Tja, es gibt tatsächlich eine reine "Display" X,Y und Z-Koordinate für jede Entity und ich denke auch für jeden Effekt, die sich verändern lässt, solange die Kamera die Entity erfasst.
Damit könnte man theoretisch alles beliebig herumschweben lassen.
Nur kommt man an diese Koordinaten so dermaßen schwer ran, dass ich noch keinen Weg gefunden habe, das ins Spiel einzubinden.

Aber eigentlich muss es so eine Art Move Befehl für Effekte geben und zwar noch woanders, mal sehen...

mcb
#83
06.11.2015 00:28
Beiträge: 1472

Ich hab mal einem Entity einfach das Model eines Ballistabolzens gegeben. Dann über einen HiRes-Job bewegt. Auf meiner Testmap ohne Höhenunterschiede sah das halbwegs vernünftig aus. Nur auf einer richtigen Map fliegt das ganze unter Wasser weiter

yoq
#84
06.11.2015 12:05
Beiträge: 91

Zitat von mcb:
Ich meine das so: Du rufst z.B. S5Hook.EffectPos(pos1, pos2, GGL_Effects.FXArrow) und ein Pfeil (Wie vom Bogenschützen) fliegt von pos1 zu pos2.



Ist relativ einfach möglich - auch mit Aufprallanimation, ich sehe aber gerade dass das Damage-System schon im Effekt integriert wäre. Wird wohl eine größere Funktion...

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

castleplayer
#85
07.11.2015 00:22
Beiträge: 243

Zitat von mcb:
Ich hab mal einem Entity einfach das Model eines Ballistabolzens gegeben. Dann über einen HiRes-Job bewegt. Auf meiner Testmap ohne Höhenunterschiede sah das halbwegs vernünftig aus. Nur auf einer richtigen Map fliegt das ganze unter Wasser weiter


Tut es doch im richtigen Spiel auch (-> Old Kings Castle im Winter, wenn der erste Vorposten angreift) da fliegen die Kanonenkugeln der Kanonen auch unter dem Eis!

____________________
Wenn die KI immer frontal angreift, wofür steht dann Das I in Künstliche Intelligenz?
Das neueste vom Nebelvolk!

yoq
#86
07.11.2015 19:13
Beiträge: 91

v0.9
- Kein blinkender Cursor beim Start
- Projektileffekte:

S5Hook.CreateProjectile(   -- Creates a projectile effect, returns an effectID, 
                           -- which can be used with Logic.DestroyEffect()
                           
      int effectType,      -- from the GGL_Effects table
      float startX, 
      float startY, 
      float targetX, 
      float targetY 
      int damage = 0,      -- optional, neccessary to do damage
      float radius = -1,   -- optional, neccessary for area hit
      int targetId = 0,    -- optional, neccessary for single hit
      int attackerId = 0)  -- optional, used for events & allies when doing area hits

Single-Hit Projectiles:
    FXArrow, FXCrossBowArrow, FXCavalryArrow,
    FXCrossBowCavalryArrow, FXBulletRifleman, FXYukiShuriken, FXKalaArrow

Area-Hit Projectiles:
    FXCannonBall, FXCannonTowerBall, FXBalistaTowerArrow,
    FXCannonBallShrapnel, FXShotRifleman


Und nein, die Abschusshöhe kann nicht so einfach einstellt werden, die ist für jeden Effekt in config/effects.xml festgelegt.


____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

Zedeg
#87
07.11.2015 20:16
Beiträge: 428

Vorschlag für v0.9.1

Wäre es auch möglich, für einzelne Entitäten das Projektil zu verändern? Mit SCV geht es nur für Entitätenarten.

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

mcb
#88
07.11.2015 20:26
Beiträge: 1472

Funktioniert super, danke. Kann man irgendwie feststellen, wann der Effekt zuende ist? Sowas wie IsValid funktioniert nicht (wie auch, kann man ja nicht unterscheiden) Leider wird auch kein EntityHurtEntityTrigger aufgerufen...

yoq
#89
07.11.2015 21:17
Beiträge: 91

@Zedeg: Wäre theoretisch möglich, aber dadurch dass fast alles in S5 nach dem Schema Entity -> EntityTyp -> Eigenschaft aufgebaut ist läuft es meist darauf hinaus mitten in der Abschussfunktion einen Sprung aus dem Originalcode zu machen, in einer Liste nachsehen ob für dieses Entity eine Ausnahme besteht, und dann mit geänderten Werten wieder mitten in die Funktion zurückspringen. Es ist möglich (so gemacht bei CustomNames, MusicFix, CutsceneFix) aber recht aufwendig. Und dann wäre da noch der Performanceaspekt, bei einer größeren Schlacht fliegen schon mal 50 Abschüsse pro Sekunde statt.

@mcb: Hurt Trigger sollte eigentlich funktionieren, es muss allerdings die eID des angreifenden Entitys mitgegeben werden. Und die Entities müssen feindlich sein. Das feindliche Entity kann auch ein Stein sein, die playerID muss nur feindlich sein. Die Position wird allerding auch für das rote symbol in der Minimap verwendet. Ich vermute aber du willst sowas wie einen Aufprall-Callback?

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

mcb
#90
07.11.2015 21:29
Beiträge: 1472

Ein Callback wäre natürlich Ideal.
Hab beim Hurt-Trigger tatsächlich den Angreifer vergessen. Dann kan es natürlich nicht funktionieren Da ich aber sowieseo den Schaden per Trigger verteile, ist das nicht das große Problem. Wäre nur seltsam, wenn Drake ein Leuchtfeuer verschießt (deckt Zielposition auf) und ein Kampfsymbol auftaucht...
Eigentlich würde eine Funktion reichen, die mir sagt, ob der Effekt noch da ist. Da ich davon nicht allzuviele verwenden will kann man das per Job prüfen.

Zedeg
#91
07.11.2015 22:04
Beiträge: 428

Auch nicht weiter schlimm. Dann gibt es halt wie bisher einfach 'ne simple Giftwolke am Zielort.

P.S.: Wenn man zwei Töne mit Stream.Start aufruft, wird nur der letzte abgespielt. Könnte man so etwas wie S5Hook.PlaySound(path, volume) machen.

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

Dieser Beitrag wurde von Zedeg am 07.11.2015 um 22:16 editiert.

yoq
#92
09.11.2015 00:04
Beiträge: 91

v0.10
- Callback vor dem Auftreffen, mit return true kann das Auftreff-Event auch abgebrochen werden.
- bool S5Hook.IsValidEffect(effectID)

Derzeit auf der Wunschliste:
- parallel Audiostreams abspielen (wäre ein Kandidat für eine Implementation mit metatables)
- verschiedene (schnelle) Entity Iteratoren
- Interface für die XML Modifikationen

Wann ich Zeit dafür finde wird sich zeigen, jetzt stehen erstmal ein paar Klausuren an...

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

Dieser Beitrag wurde von yoq am 24.03.2016 um 14:11 editiert.

mcb
#93
09.11.2015 08:38
Beiträge: 1472

Klingt schon mal ganz gut. Muss aber noch ein paar Tage warten, bis ich Zeit habe das auszuprobieren...

Siedler1997
#94
10.11.2015 17:29
Beiträge: 132

Um nochmal auf die Abstürze zurückzukommen

Bisher war es so, dass ich sofort beim Beenden der Map, also klick auf den OK-Button (bei Spiel verlassen) bzw. Klick auf ein Savegame zum Laden sofort mit der Windows-Typischen Fehlermeldung auf dem Desktop gelandet bin.

Tja, neuerdings hab ich aber irgendwie garkeine Abstürze mehr (zumindest keine vom hook ausgelösten), was wohl entweder am Update liegt oder daran, dass ich aktuell nicht mehr so viel spiele. Vielleicht auch beides.

Sollte es aber wieder zu solchen Abstürzen kommen, kann ich gerne eine genaue Fehlermeldung bekannt geben, sofern Win10 mir denn mal Details ausspuckt. Die Option "mehr Details" o.ä. find ich nämlich irgendwie nicht mehr bei Win10:/

MfG
Siedler1997

____________________
"Sieh mal, ein dreiköpfiger Affe!"
- Guybrush Threepwood, ein mächtiger Pirat

mcb
#95
12.11.2015 16:36
Beiträge: 1472

Hey, hatte endlich Zeit das auszuprobieren. Läuft super, (kann nur dem callback keine Parameter übergeben, muss also etwas tricksen )
Allerdings heißt die Funktion S5Hook.IsValidEffect und nicht S5Hook.IsEffectValid, wie im Kommentar in der Datei angegeben...
Zu den Abstürzen: Mit der alten Version hatte ich zeitweise auch welche, mit 0.10 noch keinen.

(Interessant, hab nochmal ne alte Version reingeladen und bekam das hier:

Problemsignatur:
  Problemereignisname:	APPCRASH
  Anwendungsname:	settlershok.exe
  Anwendungsversion:	1.6.217.0
  Anwendungszeitstempel:	439d54a3
  Fehlermodulname:	StackHash_d936
  Fehlermodulversion:	0.0.0.0
  Fehlermodulzeitstempel:	00000000
  Ausnahmecode:	c0000005
  Ausnahmeoffset:	22000670
  Betriebsystemversion:	6.1.7601.2.1.0.768.3
  Gebietsschema-ID:	1031
  Zusatzinformation 1:	d936
  Zusatzinformation 2:	d936fdc17f75f7444ec38a0c7389e52f
  Zusatzinformation 3:	4cdb
  Zusatzinformation 4:	4cdb1591e2e0932a14801247f7e7f26a


Mit der neuen funktioniert alles)

yoq
#96
12.11.2015 19:55
Beiträge: 91

Ja, da der Callback nicht global gespeichert ist sondern an jedes Effekt-Objekt einzeln angehängt wird, habe ich mir die Parameterübergabe gespart da ja Closures möglich sind:

do
    local var = "foo" .. i .. "bar"
    S5Hook.CreateProjectile([...], function() Message(var); end)
end



Der Crash trat mit v0.6 auf nehme ich an?

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

mcb
#97
12.11.2015 20:21
Beiträge: 1472

Solange du nicht zwischen Abschuss und Aufprall speicherst und neu lädst, funktioniert das. Wenn aber gespeichert wird, werden upvalues (und metatables und coroutines) nicht mitgespeichert...

Stimmt, war 0.6 Mit 0.10 hatte ich noch keinen Absturz. (Nicht mal bei falschen Parametern )

yoq
#98
13.11.2015 00:16
Beiträge: 91

Ist aber eher ein theoretisches Problem, da nach dem Laden S5Hook & Callback ohnehin weg sind. Das Speichern von Projektilen scheint in S5 grundsätzlich nicht wirklich zu funktionieren, hab das mal mit einer normalen Kanone getestet und nach dem Laden fällt die gespeicherte Kugel einfach zu Boden, so als ob die Position gespeichert wurde aber nicht die Geschwindigkeit.

Sollte einmal ein wirklich schwer zu reproduzierender Crash auftreten könnt ihr mir einen ausführlichen Crashdump senden:
Nachdem Windows die Fehlermeldung gebracht hat, dort nichts anklicken und offen lassen, den Taskmanager öffnen und folgendes auswählen:

Das entstehende File ist allerdings recht groß (500MB+) und nach dem zippen immer noch etwa 100-200MB, was je nach Internetanschluss für manche wohl zu groß ist. Also eher für die Fälle bei denen Beschreibung oder Map die den Fehler auslöst nicht reicht.

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

mcb
#99
14.11.2015 21:09
Beiträge: 1472

Daran hatte ich gar nicht gedacht... Mein Parameter-teil ist dann wohl nutzlos
Was mir noch aufgefallen ist: Wenn man als Callback-Funktion nil (oder irgendwas anderes) übergibt, schmeißt der Debugger ne Fehlermeldung (attempt to call nil).

yoq
#100
26.05.2016 00:13
Beiträge: 91

Update: v1.1
- Starten ohne Verzögerung
- BigNum.lua wird nicht mehr benötigt

Daher hat sich die Initialisierung etwas geändert - gestartet wird nun mit InstallS5Hook(). Der Rückgabewert (true/false) gibt an ob S5Hook erfolgreich initialisiert wurde. Der bisherige Aufruf mit Callback funktioniert weiterhin für Kompatibilität mit bestehenden Skripten, der Callback wird einfach ohne Verzögerung direkt aufgerufen.

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

Seiten: Zurück 1 2 3 4 5 6 7 Nächste Seite

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

Impressum