PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschiedene Tipps gesucht



Boïndil
28.05.2012, 17:46
Hallo, Leute,
ich bin ja dabei, sowas wie ein Camp zu erstellen, dass man an beliebigen Orten setzen und mit verschiedenen Objekten erweitern kann, von der Fackel über Werkstatt bis zu Befestigungen.
Dabei muss ich wieder über jeden Aspekt nachlesen und recherchieren und es kotzt mich langsam an, wie es kaum irgendwas in der Gamebryo gibt, das so funktioniert, wie man es erwarten würde.

Problem 1: Soweit so gut, habe es hingekriegt, dass z.B. eine Fackel ein Activator mit einem Script drauf ist. Wenn man im Bearbeitungsmodus ist, hat jedes Lager-Objekt ein Menu drauf, das je einen Button für Positionieren starten und beenden hat.
Dann bewegt sich das Objekt auch annähernd mit dem Player mit. Was aber überhaupt nicht klappt: Eigentlich sollte man denken, dass man das Objekt während der Positionierung wieder aktivieren kann, um das abzubrechen.
Geht aber gar nicht. Offensichtlich bewegt sich zwar das Objekt mit dem Player mit, aber der eigentliche Aktivator-Punkt bleibt genau da, wo das Objekt zum ersten Mal per PlaceAtMe gesetzt wurde.
Und das geht auch nicht mit persistenten Referenzen. Das Mesh bewegt sich, aber der Aktivator nicht. Vollkommen unbrauchbar.
Was ich dabei nicht verstehe, das Script setzt die Positionen ähnlich wie z.B. das Script der platzierbaren Mannequins. Und da klappt es problemlos, ich kann die Puppe jederzeit aktivieren.

Problem 2: Vorab: Wer das Render-Fenster des GECK verbrochen hat, sollte besser Fritten servieren gehen, das geht ja schon unter Körperverletzung. :baeh
Aber anyway: Ich habe ein neues Wasser erstellt mit einem neuen Wasser-Typ und dem Effekte des puren Wassers drauf, das habe ich im Default-Camp gesetzt, wirklich hübsche Stelle. Ich habe alle Radiation-Markers, Pools und das Sumpfgas, das es da gibt, um 1000 Meter versenkt und verschoben, disabled und auf Null gestellt. Es gibt keinen Mod, der die Zelle überschreibt und trotzdem habe ich +1 Verseuchung drauf, während mir die Anzeige sauberes Wasser ohne Verstrahlung anzeigt. Was kann da los sein?

Grüsse
Boïndil

Galerion
28.05.2012, 18:36
Na dann will ich doch auch mal versuchen jemanden zu helfen =)




Problem 1: Soweit so gut, habe es hingekriegt, dass z.B. eine Fackel ein Activator mit einem Script drauf ist. Wenn man im Bearbeitungsmodus ist, hat jedes Lager-Objekt ein Menu drauf, das je einen Button für Positionieren starten und beenden hat.
Dann bewegt sich das Objekt auch annähernd mit dem Player mit. Was aber überhaupt nicht klappt: Eigentlich sollte man denken, dass man das Objekt während der Positionierung wieder aktivieren kann, um das abzubrechen.


Hier wäre der Script sehr interessant wie du das machst, zum Beispiel mit?

Set XAchsePosition to ObjektREF.Getpos X
Set XAchse to XAchsePosition +2
ObjektREF.Setpos X XAchse

Oder mit einfachen Moveto Befehlen?

Ich habe durch unzählinge Bewegungs-Sequenzen erfahren das sich beim Typ "Activator" die Kollisions und auch die "Activate-Zone" nicht mitverschieben, aber lustigerweise funktioniert dies beim Typ "Doors" schon. Vielleicht einfach mal das Ding anders Importieren?



Problem 2: Vorab: Wer das Render-Fenster des GECK verbrochen hat, sollte besser Fritten servieren gehen, das geht ja schon unter Körperverletzung. :baeh

O.o ich liebe die Bedinung des Render-Windows ist nur reine gewöhnungs-Sache und wenn du mal die Short-Cuts raus hast gehts ordentlich ab.:mosh



Aber anyway: Ich habe ein neues Wasser erstellt mit einem neuen Wasser-Typ und dem Effekte des puren Wassers drauf, das habe ich im Default-Camp gesetzt, wirklich hübsche Stelle. Ich habe alle Radiation-Markers, Pools und das Sumpfgas, das es da gibt, um 1000 Meter versenkt und verschoben, disabled und auf Null gestellt. Es gibt keinen Mod, der die Zelle überschreibt und trotzdem habe ich +1 Verseuchung drauf, während mir die Anzeige sauberes Wasser ohne Verstrahlung anzeigt. Was kann da los sein?


Ich habes es in EF damals geschaft die Radioaktivität des Wassers abzudrehen, wie das jetzt genau gegangen ist weiß ich aber nicht genau, da müsste ich nachsehen. Hatte glaube ich aber irgendetwas mit einen Spell-Effekt zu tun der unter Water-Typ beim Wasser dabei ist. Wenn dus nicht findest, kann ich ja noch nachschauen.

Boïndil
28.05.2012, 18:58
Habe ich eben gemacht, da sollte es keine Radioaktivität drauf haben, das ist pures Wasser und so wird es mir auch angezeigt, wenn ich trinke. Nur beim schwimmen werde ich verstrahlt.

Das Pos-Script:

Set Angle To Player.GetAngle Z
If Angle <= 90
Set TrigAngle To 90 - Angle
Else
Set Trigangle To 450 - Angle
EndIf
Set PosX To Player.GetPos X + 100 * cos TrigAngle
Set PosY To Player.GetPos Y + 100 * sin TrigAngle
SetPos X PosX
SetPos Y PosY
Set PosZ To GetPos Z
Set Angle To Angle + 180
SetAngle Z Angle

Die Lösung habe ich gefunden und wie es üblich ist, ist es ein lächerlicher Hack.
Wieso das so ist, habe ich nicht verstanden, auf jeden Fall habe ich testweise einen persistenten Gartenzwerg-Aktivator an der selben Stelle mitlaufen lassen, wie die Fackel, die während der Positionierung nicht aktivierbar ist.
Seltsamerweise ist der Zwerg immer erreichbar und ich kann das auch so scripten, dass der als Aktivator zum Beenden der Bewegung dient und mit einer Null-Textur ist der auch unsichtbar.
Ist sowieso gar nicht schecht, auch wenn es anders gehen würde. Ein kleines oder niederes Objekt ist relativ schwer zu aktivieren und der Gartenzwerg hat immer eine komfortable Grösse.
Blöd ist nur, dass ich nicht verstehen kann, wieso es mit dem Zwerg geht und mit der Fackel nicht.

Von wegen Render-Fenster: In letzter Zeit zickt das grausam rum, alle Objekt-Begrenzungen verschwinden plötzlich, Marker sind nur sichtbar, wenn ich sie in der Ansicht-Option deaktiviere und wieder aktiviere.
Wenn ich ein Objekt mit dem Dialog bearbeite, wird die Position und Grösse erst nach Verlassen richtig angezeigt, usw. Es ist die wahre Hölle, selbst wen ich die wichtigen Shortcuts kenne.
Wer mal mit dem Render-Fenster von Cinema 4D hantiert hat, der weiss, wie ein mustergültiges Render-Fenster aussieht, das genau das macht, was ich will und mir blitzartig das Manipulieren von Objekten in extrem komplexen Szenen erlaubt. Das ist wie der Unterschied zwischen einem Ferrarri und einem schrottreifen Trabi.

Galerion
28.05.2012, 19:33
Bezüglich des Wassers habe ich einen neuen Water-Type gemacht, in diesem habe ich wie schon vermutet einen Spell Effect hinzugefügt und dort habe ich wahrscheinlich die Radioaktivität entfernt, wie ich genau das gemacht habe weiß ich auch nicht mehr. Habs aber gerade getestet und die RAD war auch bei schwimmen/tauchen weg. Eventuell einfach nen neuen Spell mal erstellen.

Edit 01:
Eventuell kanns auch daran liegen das mein RAD-Freies Wasser in ner anderen Worldspace ist als wie im Wasteland. Checke mal das Flag im World Space Window mit "Use Water Data".

Desweiteren liegts wahrscheinlich daran das die Fackel kein HAVOK Item ist und der Gartenzwerg schon, bin mir aber auch nicht sicher, da ich Scripte noch nie in dieser Form gemacht habe.

Edit 02:
Naja das Rendner-Window hat schon ein paar Macken das stimmt schon, ich persöhnlich finde das vom CryEngine-SDK auch tausendmal besser, aber man muss halt das zu schätzen wissen was man bekommt. Und sooo schlimm ist es ja dann auch wieder nicht :P

Boïndil
29.05.2012, 07:11
Wenn ich den Gartenzwerg als Camp-Objekt wie die Fackel platziere, dann funktioniert es ebenfalls nicht, das mit Havok habe ich mir auch zuerst gedacht.
Könnte es daran liegen, dass sich der Aktivator nur mit dem Mesh verschiebt, wenn man extern "ObjectRef.SetPos" verwendet, statt im eigenen Script nur "SetPos"?

Das mit dem Wasser sehe ich mir an, das könnte es sein, denn der Spell hat kein RAD drauf, das würde man ja auch beim Trinken sehen. Passiert eben nur, wenn man ins Wasser geht.

Edit:
Ist übrigens extrem, wieviel Zeit man in ein Spiel aus der Steinzeit investieren kann, vor allem, wenn einem das Gebastel so wie mir gefällt.
Schreibe gerade die Scripte um, dass der (unsichtbare) Gartenzwerg als Controller dient, während man das eigentliche Objekt bewegt. Ich hoffe, dass es wirklich daran liegt, dass das Spiel Probleme mit Aktivatoren hat, wenn sie sich im eigenen Script per "SetPos" verschieben.
Wenn es nämlich nicht daran liegt und die Aktivatoren nach dem Ende des Positionierens unbrauchbar bleiben, werde ich vorerst kapitulieren und andere Dinge angehen.

Boïndil
29.05.2012, 10:46
Ich gebe es langsam auf, das geht mir inzwischen dermassen auf den Sack.
Die Radioaktivität verschwindet auf keinen Fall, egal wo ich was definiere.
Die Aktivatoren sind anschliessend ganz einfach nicht mehr verwendbar, egal was ich tue und welche Meshes ich verwende.

Beim Wasser könnte es daran liegen, dass ich schon mal da war. Überschrieben wird garantiert nichts und der Mod ist auch an letzter Stelle, an dem kann es also nicht liegen. Möglicherweise schreibt Fallout irgendwelche Objekt-Koordinaten in den Save. Hatte das nämlich auch schon, dass ich ein Objekt im Editor verschob und es im Spiel ganz einfach am selben Ort blieb. Vielleicht passiert das mit den Radiation-Markers da.

Und auch das mit dem Zwerg verstehe ich ganz einfach nicht. Der funktioniert während dem Positionieren hervorragend und kann auch aktiviert werden und wenn ich das tue, bleibt das Objekt am Ort. Was der Zwerg aber anschliessend an "MoveTo wlwNullCellMarkerRef" nicht begreift, begreif ich nicht, der bleibt da und ist nicht mehr aktivierbar, bis ich ihn erneut als Controller für ein anderes Objekt aufrufe. Wird mir der Zwerg angezeigt, obwohl er sich am Null-Punkt befindet? Dann könnte ich ihn nicht deaktivieren.
Die Scripte müssten in der Theorie problemlos funktionieren, aber anschliessend schlägt die Realität zu :-(

Edit:
Es ist tatsächlich kaum zu fassen: :mad: Wenn ich mir merke, wo ein Fass per PlaceAtMe zum ersten Mal hingestellt wurde, dann das Fass bewege und an einem anderen Ort abstelle, dann bewegt sich offensichtlich nur das sichtbare Mesh.
Gehe ich zurück und schlage da in die Luft, wo sich das Fass zuerst befunden hat, dann hört man nämlich die Aufschläge auf ein Fass, obwohl es unsichtbar ist. Aktivieren kann ich das Fass allerdings an beiden Stellen nicht mehr.

Boïndil
29.05.2012, 14:09
Hah!!!! Man muss halt das Kleingedruckte auf der GECK-Seite auch lesen, z.B. zum Befehl MoveTo(was aber auch für SetPos gilt, was dort natürlich nicht steht):
"This function works as expected for Actors. For most other object types, like containers and activators, the object's coordinates are updated but its world art is not. "
Bedeutet, dass man dieses abgef**** Verhalten damit umgehen muss, dass man das positionierte Objekt Disabled und dann wieder Enabled.
Das darf aber anscheinen nicht hintereinander passieren, sonst nützt es nichts, mit einer Verzögerung von 3 Sekunden klappts sicher, aber ich versuche natürlich, soweit wie möglich runter zu gehen. Dann lässt sich das Objekt auch wieder problemlos aktivieren.

Das war übrigens auch das Problem mit dem Zwerg, den ich zur Null-Zelle verschieben liess, während die sogenannte World Art am selben Platz blieb und sogar ein Hindernis war.

Das sind einfach so die Dinge, die wie bei Beth üblich, nicht das tun, was ein mustergültiger ;-) Programmierer als minimale Anforderung an eine Funktion bezeichnen würde. Sorry, SetPos und MoveTo sind keine fertigen Funktionen, wenn man davon ausgeht, dass diese eine Objekt an einen anderen Ort bewegen sollen.
Ist ja ein Wunder, dass man nicht auch noch TextureSetRef.Move To MeshRef, SoundRef.MoveTo MeshRef und CollisionGeometry.MoveTo MeshRef anwenden muss, damit alles am selben Ort ist ;-)

Galerion
29.05.2012, 21:36
"This function works as expected for Actors. For most other object types, like containers and activators, the object's coordinates are updated but its world art is not. "
Bedeutet, dass man dieses abgef**** Verhalten damit umgehen muss, dass man das positionierte Objekt Disabled und dann wieder Enabled.
Das darf aber anscheinen nicht hintereinander passieren, sonst nützt es nichts, mit einer Verzögerung von 3 Sekunden klappts sicher, aber ich versuche natürlich, soweit wie möglich runter zu gehen. Dann lässt sich das Objekt auch wieder problemlos aktivieren.


Hast dus nun hinbekommen das es funktioniert? Vielleicht kann dir ja noch dieser Script-Befehl was nützen, aber ich glaube du musst ihn auf die ganzen Celle anwenden. http://geck.bethsoft.com/index.php/Reset3DState

Ja, oft ist das GECK schon sehr umständlich in solchen Sachen. Man müsste mal einen Beth-Programmierer einen solchen Script mit seinen eigenen Mitteln machen lassen. :o

Boïndil
29.05.2012, 21:58
Ich könnte den Job mindestens so gut, wenn ich die Pfeifen von Engine-Programmierern selbst befragen könnte(z.B. was sie geraucht haben), statt mühsam Infos zusammen kratzen zu müssen ;-) Der Eintrag zu Reset3DState ist auch so ein gutes Beispiel für die Nützlichkeit der GECK-Seite.
Sollte jetzt alles klappen, man braucht halt nur Geduld. Aber der nächste Kack kommt bestimmt...

alceleniel
30.05.2012, 07:39
@Boindil: Bitte unterlasse es beleidigend zu werden, das gilt auch für nicht anwesende Personen.

Boïndil
30.05.2012, 08:25
Hast du schon mal ins GECK gschaut? ;-)

alceleniel
30.05.2012, 14:26
Geschaut ja, aber Tipps kann ich dir da bestimmt keine geben.