Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Script-Prob. wenn Objekt kopiert wurde
#1
Huhu! Ich wollte aus Dorenas „Arriba on Stick“ eine kleine NPC Demo stricken. Dabei ist mir aufgefallen, er nimmt keine Scriptänderungen mehr an, wenn man das Objekt kopiert hat.

Ein reproduzierbares Beispiel ist, man erzeugt einen Würfel, erstellt ein neues Script drin und kopiert den Würfel. Wenn man nun das Script im original Würfel ändert, speichert er es zwar, öffnet man das Script aber erneut, sind keine Änderungen drin.

In der Log Datei findet sich danach folgendes:
Code:
2014-07-10 19:23:08,325 WARN  - OpenSim.Region.Framework.Scenes.SceneObjectPartInventory [PRIM INVENTORY]: Couldn't stop script with ID f6c00fa8-cbfc-49e5-a518-7c644950d5b8 since it couldn't be found for prim Primitive, 0e8e9be4-b6e6-4d51-8527-584bc2f1876f at <140.188, 146.8413, 25.64234> in Testidream

2014-07-10 19:23:08,326 ERROR - OpenSim.Region.Framework.Scenes.SceneObjectGroup [PRIM INVENTORY]: Couldn't find prim ID a124053b-180d-4232-8801-2536551ef8c6 to update item New Script, f6c00fa8-cbfc-49e5-a518-7c644950d5b8

2014-07-10 19:23:08,327 ERROR - OpenSim.Region.Framework.Scenes.SceneObjectPartInventory [PRIM INVENTORY]: Couldn't start script with ID f6c00fa8-cbfc-49e5-a518-7c644950d5b8 since it couldn't be found for prim Primitive, 0e8e9be4-b6e6-4d51-8527-584bc2f1876f at <140.188, 146.8413, 25.64234> in Testidream

Die Viewer waren Firestorm u. Cool VL Viewer.
Zitieren
#2
Hmm, erinnert mich an ein ähnliches Problem, das Keve letztens berichtete : Nach Kopieren eines Objekts mit Shift-Drag waren Inhalte (Script / Animation) in der Kopie nicht vorhanden, im Original dafür aber doppelt.
Weiss nicht ob da ein Zusammenhang besteht ...
Mal sehen was Freaky dazu meint.
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Zitieren
#3
wirkt so als wenn da schon wieder irgendein paar alte Bugs zum Freilegen bereitlagen.

Allerdings muss man hier auch aufpassen, die Aktualisierung des Objekt-Inventars ist nicht so toll gemacht worden. Da kann tatsächlich beim Neuöffnen das falsche Skript geöffnet werden.
Tritt das Problem auch auf wenn man die Objektinventarliste schliesst und neu öffnet?
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#4
Ja, ich habe zwischen jedem Schritt das Objektfenster wieder geschlossen, um es einzugrenzen
Er scheint die UUIDs vom Original und der Kopie zu vertauschen.

Ich habe mal folgendes gemacht. Würfel mit Script erstellt.
Er hat die Nummer: 8091248d-ec93-4a65-a75e-a3f23146492b

Ihn mit der Shift Taste aus der Kopie herausgezogen, welche die Nummer b6e03dbe-6075-4ff8-a5b1-01985fa26dac hat.
Anschließend im Original das Script geändert.

In der Console erscheint nun:
Couldn't find prim ID b6e03dbe-6075-4ff8-a5b1-01985fa26dac to update item New Script, fb703d03-8bde-4654-80bf-5cf7edcbc560

Und tatsächlich, das geänderte Script ist nun in der Würfel-Kopie zu finden und nicht im Original wo ich es geändert habe.

@Anachron Zwei identische Scripte im Verzeichnis hatte ich auch schon. Konnte es aber nicht reproduzieren. Hat bestimmt die gleiche Ursache.
Zitieren
#5
Eigenartig ich musste zwei Kopien machen um den Fehler überhaupt mal hinzubekommen.

Ich sehe gerade in einer Kopie ist irgendwo eine doppelte UUID gelandet. Da muss ich mal nachschauen, was da passiert.

Wäre aber nicht die erste Ungereimtheit, die ich in dem Code freigelegt hätte.
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#6
Ich habe mal weitere Tests gemacht. Wenn man zwischen jedem Schritt den Viewer beendet oder gar wechselt, bleibt das Problem bestehen. Fährt man hingegen zwischendurch den Server runter und wieder hoch, sind es zwei getrennte Objekte wie es sein sollte. Es scheint da eine Variable erst in die DB geschrieben zu werden, die sich später, wenn sie im laufenden Betrieb noch verwendet wird, ändert. Oder eine zweifach Zuweisung, was man nie machen sollte: Man weist Variable a einen ermittelten Wert zu, und speichert sie. Dann ermittelt man den Wert nochmal für Variable b, mit der man arbeitet. In der Zwischenzeit hat sich der Wert aber geändert. Hätte man den Wert nur einmal ermittelt und von a nach b weitergereicht, gäbe es keine Probleme oder es würde sofort augenfällig falsch laufen... So was kommt recht häufig vor und ist eklig zu finden Undecided
Zitieren
#7
Das hab ich eh erwartet dass es nicht vom Viewer her kommt.

So trivial ist das nicht, da es hier um nicht neuzugewiesene UUIDs geht.

Die Variable landet nicht in der DB, da diese sich gegen doppelte UUIDs wehrt, da hier PRIMARY KEY(UUID) definiert ist.

Anmerkung: Wer den Duplicate-Code verbrochen hat, hat eigentlich einen Arschtritt verdient. Der Mist ist auch im Vanilla-Code drin.

Ein Objekt das so inklusive Scripte kopiert wird kann mit dem Code nur Probleme verursachen.

Es fehlen dort einige Teile Code so wie es ausschaut.

Also noch so ein halbfertiges ungetestetes Etwas was sich da wieder aufgetan hat.

Anmerkung: Moderne Tools sind recht gut im Finden solcher doppelter Zuweisungen oder uninitialisierter Variablen.
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#8
Hab die eigentliche Ursache gefunden, der ziemlich zerfledderte Code bezüglich des TaskInventory macht die Übersicht nicht einfach. So wurden dann fälschlicherweise die Original-Inventory Items in das neue Prim eingehängt.

Die Codeteile sind dort derartig verstreut, dass ein Überblick dort nur schwierig ist.

Gut nun kenne ich diese Funktion und kann auch darauf achten, dass der nicht nochmal ein Defekt passiert.

Nun ist dieses im Arriba auch wieder repariert.

Diese Funktion kennen wohl weit weniger als gedacht, der ist sehr früh bei der Überarbeitung der Locks im Objektinventarhandling reingekommen.
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#9
Vielen Dank Freaky.Smile
ich werde dann morgen nicht nur das Grid updaten, sondern zusätzlich auch die Arriba on stick Version.Wink

Edit:
Alle Updates erledigt. Grid,Gridversion und die Arriba on Stick sind nun auf der aktuellen Version.
Zitieren
#10
Super! Dann kann ich mit der NPC-Demo weitermachen <freu!> .. Manche Dinge lassen sich einfach besser zeigen, als beschreiben..... Dodgy
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste