Pilgrims XD_Bomb1 sofort hochjagen

» Siedler Map Source Forum » Siedler DEdK Script Forum » Pilgrims XD_Bomb1 sofort hochjagen

Seiten: 1

mundn
#1
30.11.2018 19:23
Beiträge: 83

Pilgrims XD_Bomb1 sofort hochjagen

Hallo,
Gibt es eine Methode XD_Bombs sofort explodieren zu lassen (also ohne den 2,5 sekunden Delay)?
Oder gibt es eine andere Möglichkeit dies zu simulieren (ich meine nicht nur den Grafikeffekt, sondern auch den Schaden).

Edit: aufgrund einer tollen Internetverbindung wurde dieser Beitrag verdoppelt. Er gewinnt dadurch nicht an Bedeutsamkeit

____________________
Scripten bei Master pewe in DEdK Script-Wiki gelernt ich habe.

Dieser Beitrag wurde von mundn am 30.11.2018 um 19:36 editiert.

mcb
#2
30.11.2018 20:54
Beiträge: 1472

Die Bombe sofort explodieren lassen:
Kann ich vielleicht per Hook+mcbEMan einrichten, falls du sowas benutzt.
Simulieren:
1) Falls du weißt, wann es passieren soll, kannst du die Bombe 2.5 Sekunden vorher platzieren und unsichtbar machen.
2) Grafikeffekt + alle Entities im Gebiet per Script beschädigen funktioniert auch.

mundn
#3
30.11.2018 21:19
Beiträge: 83

(1) Fällt hier weg, da die Bombe explodieren soll, sobald die Kanonenkugel auftrifft.
Dann hätte ich noch eine weitere Frage:
Kann man die Aufprall-Position einer Kanonenkugel, eines Kanonenturms bestimmen? Und ist die Kanonenkugel eine eigene Entität, die man reproduzieren kann (mit eigener PlayerID)?
(2) will ich noch nicht nutzen, falls es eine elegantere Lösung gibt

____________________
Scripten bei Master pewe in DEdK Script-Wiki gelernt ich habe.

mcb
#4
30.11.2018 22:21
Beiträge: 1472

Kanonenkugeln sind wie Pfeile ein Grafikeffekt, mit dem Hook kannst du die auch selber verschießen. Rauszufinden wo die einschlägt ist aber nicht möglich.

warrior1024
#5
01.12.2018 00:47
Beiträge: 345

Mit diesem Code wird eine Bombe platziert, die nach einer Minute explodiert und 5-mal so groß wie eine normale Bombe ist:

function SW.RandomChest.Action.Bomb( _pId, _x, _y)
	if GUI.GetPlayerID() == _pId then
		Message("Darin war eine Bombe!")
	end
	local bombId = Logic.CreateEntity(Entities.XD_Bomb1, _x, _y, 0, 0)
	if bombId == 0 then return end
	S5Hook.GetEntityMem(bombId)[31][0][4]:SetInt(600) --wait a minute...
	S5Hook.GetEntityMem(bombId)[25]:SetFloat(5)
end


Dafür wird der S5Hook verwendet und ich bin mir nicht sicher, wie stabil der Kram mit Savegames läuft, da der Code nur im MP getestet wurde. Aber wenn die Bombe statt 600 Ticks Delay 0 Ticks Delay bekommt, sollte das kein Problem sein.

____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

mcb
#6
01.12.2018 02:08
Beiträge: 1472

Das sollte normal gespeichert werden, da es zum Entity-Objekt gehören und nicht zum Entitytyp.
(Scale wird mit Sicherheit gespeichert).

Ich würde allerdings empfehlen, die edits in extra Funktionen auszulagern, so wie ich das mit meiner mcbEMan Bibliothek gemacht habe, damit man die eventuell für die History-Edition updaten kann und du dann nicht überall in deinem Script Änderungen machen muss.

mundn
#7
01.12.2018 14:26
Beiträge: 83

da man nicht weiß, wo die Kugel einschlägt, hat sich der Gedanke erledigt.
Trotzdem Danke für die Vorschläge

____________________
Scripten bei Master pewe in DEdK Script-Wiki gelernt ich habe.

mcb
#8
01.12.2018 16:37
Beiträge: 1472

Da könnte man eventuell sogar rankommen, dazu müsste man "nur" die eine Funktion im entsprechenden vtable umleiten zu einer selbst geschriebenen Funktion im Hook, von da aus dann nen Aufruf nach Lua machen. Ergibt nen Lua Callback für alle Projektile.
Ich setz das mal auf die Hook Wunschliste die vielleicht eventuell realisiert wird

Seiten: 1

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

Impressum