Effekte einfrieren

» Siedler Map Source Forum » Siedler DEdK Script Forum » Effekte einfrieren

Seiten: 1

Tear1
#1
01.01.2014 23:53
Beiträge: 63

Effekte einfrieren

Ist es möglich Effektanimationen die per CreateEffect aufgerufen wurden einzufrieren? Ich würde nämlich sehr gern nur den unteren Teil vom GGL_Effects.FXTemplarAltarEffect benutzen. Die blaue Pyramide die entsteht.

Ist das irgendwie möglich?

____________________
Tear1 aka Tjuri

mcb
#2
02.01.2014 11:28
Beiträge: 1472

Nicht das ich wüsste. Vielleicht probierst du, das Model des Effekts einem Entity zuzuweisen. Das könnte eventuell helfen.

Tear1
#3
02.01.2014 16:33
Beiträge: 63

Wie meinst du das? Ich erstelle den effekt hiermit:

CreateEffect(1, GGL_Effects.FXTemplarAltarEffect, GetPosition("altar"))

.

Altar ist dabei die Entität XD_TempelAltar.

Der Effekt ist ihr dann doch zugewiesen wo weit ich das verstehe.
Klärst du mich auf was du meintest?

____________________
Tear1 aka Tjuri

Dieser Beitrag wurde von Tear1 am 02.01.2014 um 17:40 editiert.

mcb
#4
02.01.2014 16:51
Beiträge: 1472

Ich meinte das so:

local p = GetPosition("altar")
local id = Logic.CreateEntity(Entities.XD_Rock1, p.X, p.Y, 0, 0)
Logic.SetModelAndAnimSet(id, Models.Effects_XF_TemplarAltarEffect)


Das ist ein Stein, der aussieht wie der Effekt.

Flodder
#5
02.01.2014 17:06
Beiträge: 2608

Zitat von Tear1:
Ist es möglich Effektanimationen die per CreateEffect aufgerufen wurden einzufrieren? Ich würde nämlich sehr gern nur den unteren Teil vom GGL_Effects.FXTemplarAltarEffect benutzen. Die blaue Pyramide die entsteht.

Ist das irgendwie möglich?


Du meinst vermutlich den blauen "Strahl", der in dieser Animation gen Himmel aufsteigt?

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Tear1
#6
02.01.2014 17:36
Beiträge: 63

http://www.siedler-maps.de/screenshots/screenshot-3266.htm

Das Ding meine ich. wenn man mit der kamera dahin fährt taucht es zuerst auf, dann beginnt erst die strahl animation. deswegen das "einfireren" obwohl das ja nicht so einfach möglich ist. Vllt hat irgendwer eine ahnung wie es anders gehen könnte. Fände ich echt cool!

____________________
Tear1 aka Tjuri

bobby
#7
02.01.2014 18:37
Beiträge: 393

Ich habs mal mit dem Model ändern probiert.
Ergebnis war das der Effekt doppelt entstanden ist aber beim einen genau der Teil gefehlt hast den du willst

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Tear1
#8
02.01.2014 20:35
Beiträge: 63

Zitat von bobby:
Ich habs mal mit dem Model ändern probiert.
Ergebnis war das der Effekt doppelt entstanden ist aber beim einen genau der Teil gefehlt hast den du willst



und das der zweite halbe effekt nicht genau auf der position des anderen ist was ich nicht verstehe da sie eigentlich die selbe position haben. Auch fehlen die sich aussen um den strahl windenden partikel bei der Animation über dem altar die eigentlich vollständig wirkte.

ich habe keine ahnung was Logic.SetModelAndAnimSet macht und es steht auch nihct im wiki, ich kanns mir also nicht selbst erklären aber ein wenig unlogscih ist es schon

____________________
Tear1 aka Tjuri

mcb
#9
03.01.2014 11:30
Beiträge: 1472

Logic.SetModelAndAnimSet ändert das Aussehen (Model) eines Entity. Hier auf das des TemplarAltar-Effekt. Das ist sehr nützlich bei z.B. Feuereffekten (normale führen zum Abstrurz) oder bei Script-Projektilen wie bei meiner Tutorial-Map (Yukis "Eispfeil" ).
Bei anderen Effekten sind mir komische Verhaltensweisen aufgefallen, hättest auch Glück haben können

Flodder
#10
03.01.2014 12:05
Beiträge: 2608

Zitat von Tear1:
Ich würde nämlich sehr gern nur den unteren Teil vom GGL_Effects.FXTemplarAltarEffect benutzen.
Ist das irgendwie möglich?


Kannst Du Dir abschminken.

Ich hätte aber eine passende Alternative für Effekte über den Gräbern anzubieten:

CreateEffect(1, GGL_Effects.FXWeathermachineFakeFX, GetPosition("grab_1"))


Damit entsteht über "grab_1" die pulsierende, blauglitzerne Kugel, die normalerweise über der Wettermaschine zu sehen ist.
In diesem Fall dann eben ohne die Wettermaschine.

Kannst dann gerne auch zusätzlich über die anderen Gräber entstehen lassen.

Für >CreateEffekt< wird noch folgende Comfort-Funktion gebraucht (...solltest Du sie nicht sowieso schon haben):

function CreateEffect( _player, _type, _position ) 
	assert( type( _player ) == "number" and _player >= 1 and _player <= 8 and type( _type ) == "number", "fatal error: wrong input: _player or _type ( funktion CreateEffect() )" );
	assert( (type( _position ) == "table" and type( _position.X ) == "number" and type( _position.Y ) == "number" ) or type( _position ) == "number" or type( _position ) == "string", "fatal error: wrong input: _position ( funktion CreateEffect() )" );
	if type( _position ) == "table" then 
		assert( _position.X >= 0 and _position.Y >= 0 and _position.X < Logic.WorldGetSize() and _position.Y < Logic.WorldGetSize(), "error: wrong position-statement ( funktion CreateEffect() )" );
		local effect = Logic.CreateEffect(_type, _position.X, _position.Y, _player);
		return effect;
	elseif type( _position ) == "string" then 
		local id = GetEntityId( _position );
		assert( not IsDead(id), "error: entity is dead or not existing ( funktion CreateEffect() )" );
		local position = GetPosition( id );
		local effect = Logic.CreateEffect( _type, position.X, position.Y, _player );
		return effect;
	else 
		assert( not IsDead( _position ), "error: entity is dead or not existing ( funktion CreateEffect() )" );
		local position = GetPosition( _position );
		local effect = Logic.CreateEffect( _type, position.X, position.Y, _player );
		return effect;
	end;
end;


Vielleicht kannst damit ja was anfangen.

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Fire_Bird
#11
03.01.2014 12:13
Beiträge: 719

Ähm, entschuldige Flodder, dass ich dich da ein bisschen korrigieren muss, aber der Effektcode verbraucht ziemlich viel Platz und man kann einen Effekt auch einfacher erstellen:

local pos = GetPosition("Position")
Logic.CreateEffect(EFFEKT,pos.X,pos.Y,1)



EFFEKT und Position anpassen, Beispiel (aus dem Wiki):

local pos = GetPosition("bombe")
Logic.CreateEffect(GGL_Effects.FXExplosionPilgrim,pos.X,pos.Y,1)



Die 1 gibt den Spieler an, das hat nur eine Auswirkung auf die Die - Effekte (Farbe)

Flodder
#12
03.01.2014 12:28
Beiträge: 2608

Zitat von Fire_Bird:
Ähm, entschuldige Flodder, dass ich dich da ein bisschen korrigieren muss, aber der Effektcode verbraucht ziemlich viel Platz und man kann einen Effekt auch einfacher erstellen:

local pos = GetPosition("Position")
Logic.CreateEffect(EFFEKT,pos.X,pos.Y,1)



EFFEKT und Position anpassen, Beispiel (aus dem Wiki):

local pos = GetPosition("bombe")
Logic.CreateEffect(GGL_Effects.FXExplosionPilgrim,pos.X,pos.Y,1)



Die 1 gibt den Spieler an, das hat nur eine Auswirkung auf die Die - Effekte (Farbe)


Umpff...
Mir ging es bei meinem Muster nicht um`s "Vereinfachen", sondern um`s Verstehen! Dabei dachte ich schwerpunktmässig an "Neumapper."

Dass es noch einfacher geht, als das oben von Dir dargebotene Muster ist Dir doch klar, oder?

Extrem gekürzt würde für solch eine Positionsbestimmung samt Effekt nur eine einzige Zeile reichen.

Aber:
Versteht das dann auch jeder, der sich gerade im Skripten übt?
Ich denke: Wohl eher nicht.

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Tear1
#13
03.01.2014 12:36
Beiträge: 63

@Fire_Bird @Flodder ich kann beide möglichkeiten verwenden ist ja beides nicht schwer . Und das pos.X der x wert von pos ist habe ich seit mcb`s kommentar auch verstanden

@Flodder Danke für den Effekt ich probiers sofort aus

@mcb ja sowas hab ich mir schon gedacht, sieht auf jeden fall lustig, werde das bestimmt mal öfter benutzen wenns brauchbar sein könnte !

____________________
Tear1 aka Tjuri

bobby
#14
03.01.2014 12:55
Beiträge: 393

Zitat von Flodder:
Dass es noch einfacher geht, als das oben von Dir dargebotene Muster ist Dir doch klar, oder?


Logic.CreateEffect(GGL_Effects.FXExplosionPilgrim,GetPosition("bombe").X,GetPosition("bombe").Y,1)




____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Flodder
#15
03.01.2014 14:09
Beiträge: 2608

Zitat von bobby:

Logic.CreateEffect(GGL_Effects.FXExplosionPilgrim,GetPosition("bombe").X,GetPosition("bombe").Y,1)



Auch nicht schlecht, bobby.

Es geht sogar noch kürzer (Muster):

Logic.CreateEffect( GGL_Effects.FXWeathermachineFakeFX, 59200,3000, 0 );


Braucht keinen Comfort-code.

Erklärung:
Falls "bombe" auf der Map als Skriptentität liegt, kann man deren X,Y-Koordinaten auslesen und in den obigen Befehl einfügen. Danach kann die Skripentität auf der Map gelöscht werden. (...wäre ja sonst nur Platzverschwendung )

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Tear1
#16
03.01.2014 17:34
Beiträge: 63

Ist die

GGL_Effects.FXWeathermachineFakeFX

immer so hoch, oder hab ich was falsch gemacht?

Wenn alles rigtig ist kann ich den Effekt runtersetzten? Gibt ja leider keine z koordinate

____________________
Tear1 aka Tjuri

SGM_Panzer
#17
03.01.2014 17:53
Beiträge: 322

Hi

Der Effekt ist immer so hoch, ich verwende ihn auch bei meiner Map "Thunderball" (siehe Signatur) und deren Fortsetzung, "Crystal Thunderball", welche noch nicht fertig ist.

____________________
GameForce meets Youtube!

Maps in Arbeit (Klick):

Crystal Thunderball
- Scriptphase

bobby
#18
03.01.2014 18:00
Beiträge: 393

Naja... du könntest das Gelände absenken

@Flodder:

Logic.CreateEffect(11, 59200, 3000, 0)


GGL_Effects.FXWeathermachineFakeFX ist auch nichts weiter als eine Variable in der eine Zahl gespeichert ist.
Kürzer gehts jetzt aber nicht mehr

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Seiten: 1

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

Impressum