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