Registrierung Häufig gestellte Fragen Suche Mitgliederliste Portal - Planet Skyrim.de Kalender Moderatoren und Administratoren Startseite
Morrowind&OblivionForum.de - PMM-Projects Network » The Elder Scrolls III: Morrowind » Morrowind Editor Help » kleine Scripthilfe bitte (itemcount in object) » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  kleine Scripthilfe bitte (itemcount in object)Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo

Ich brauche für meine aktuelle mod eine kleine Hilfe beim scripten. Es ist ansich ganz einfach, aber ich habs auch mithilfe von Scripting 4 Dummies nicht hingekriegt

Also ich hab zwei Truhen. Ich möchte, dass sobald ich in Truhe 1 den Gegenstand X lege, in Truhe 2 der Gegenstand Y erscheint!
Dies soll aber nur einmal geschehen, sprich danach bleibt der Gegenstand Y wo er ist (ausser man entfernt ihn ), egal was mit Truhe 1 oder Gegenstand X geschieht...


Das soll dann so aussehen: Ich lege in die eine Truhe ein Buch und dann erscheint in der zweiten Truhe ein Schlüssel.

Hoffe ihr könnt mir helfen!


__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

Dieser Beitrag wurde von Manteau am 03.08.2003, 16:01 Uhr editiert.

03.08.2003, 15:59 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
chris_tm
Bard



Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37

chris_tm ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich hab praktischerweise ein ganz ähnliches Script auf der Festplatte. Habs ein bischen abgeändert :

Begin my_chestscript

short controlvar

if ( controlvar == 1 )
... ...Return
elseif ( controlvar == 0 )
... ...if ( my_crate_01->GetItemCount, "my_buch_ID" >= 1 )
... ... ... ...my_crate_02->AddItem "my_Schluessel_ID" 1
... ... ... ...set controlvar to 1
... ...endif
endif

End

An welche der beiden Kisten man das Script hängt sollte egal sein.


__________________

Meine Site

03.08.2003, 17:06 Profil von Füge  deiner Freunde-Liste hinzu Email an chris_tm senden Homepage von chris_tm
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Habs zwar ähnlich gemacht, werds aber trotzdem mal versuchen mit deinem. Danke!


__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

03.08.2003, 17:36 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

So, hat geklappt (mit ein paar kleinen Änderungen).

Sieht jetzt wiefolgt aus:


---------------------------------------------------------------------------------------------
begin "truhe_key"

short controlvar

if (controlvar == 1)
return

elseif (controlvar == 0)

if ("nerevarine_truhe_buch"->getitemcount, "Der Meisterschütze" ==1)

set controlvar to 1

"Nerevarine_truhe_key"->additem "nerevarine_key1" 1



endif
endif

end


---------------------------------------------------------------------------------------------------

Funzt alles, bis auf etwas: In der Truhe erscheint nicht ein Schlüssel, sondern ca. 50 Schlüssel! Obwohl der itemcount auf eins steht. Und ich hab sogar die Zeile "set controlvar to 1" vor den additembefehl gesetzt damit es den befehl nur einmal ausführt, trotzdem taucht besagtes Problem auf.
Lösung?


__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

03.08.2003, 20:05 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
chris_tm
Bard



Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37

chris_tm ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Oh nein...den Fall hatte ich schon mal. Und ich hab nie rausgefunden, woran es eigentlich lag.
Bei mir hats immer normal funktioniert und bei dem anderen wurde die Kiste mit zig klonen gefüllt.

Das ganze hat sich damals von selbst erledigt, nachdem der Betreffende das script und alle am script beteiligten Objekte gelöscht hat und das Script "aus dem Gedächtnis heraus" neu getippt hat.

evtl. weiss ja Garak wie es zu so einem bug kommen kann....

Ansonsten kann ich nur vorschlagen mal die Zeilen:

if ( MenuMode == 1 )
Return
endif


unter

short controlvar

einzusetzen.

Obs was bringt weiss ich auch nicht...


__________________

Meine Site

03.08.2003, 20:54 Profil von Füge  deiner Freunde-Liste hinzu Email an chris_tm senden Homepage von chris_tm
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

würde das elseif ... zwar durch ein simples else ersetzen (welche werte sollte es den sonst noch annehmen??), aber wie es zu den 50 schlüsseln kommt, ist mir schleierhaft...

das menumode-teil verbessert nur die performance im menümodus...


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

03.08.2003, 22:45 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
chris_tm
Bard



Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37

chris_tm ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
würde das elseif ... zwar durch ein simples else ersetzen (welche werte sollte es den sonst noch annehmen??),


Da hast Du mich mal wieder als Programmiererleie geoutet, der auf solche Feinheiten nicht so achtet

Ich muss allerdings dazusagen, daß im Script so für Leute, die es mit dem Scripten nicht so haben wahrscheinlich leichter zu verstehen ist, was da warum passieren soll.

Das widerum bringt mich auch zu einer Frage, die ich eigentlich schon lange mal an Leute, die sich wirklich auskennnen (Garak+iladrion) stellen wollte:

Welche Auswirkungen hat man eigentlich zu befürchten, wenn man etwas "hölzern" scriptet, also z.B. mehr if/ endif Schleifen benutzt als nötig wären (statt "elseif" zu benutzen) oder wie hier ein "elseif" statt ein "else" ?

Ist das nur eine Frage der elegance oder hat es evtl. bei komplexeren Scripts Auswirkungen auf die Zuverlässigkeit (Bugs) oder Performance ?

Zu meinem Vorschlag, die klassische "ist der Player im Menü" Schleife zu benutzen :

Ich hatte das Script ursprünglich nicht für 2 sondern nur für eine Truhe/ Kiste geschrieben. Beim Test des Scripts musste ich feststellen, daß das Inventar eines Conainers, ganz im Gegensatz zum Inventar des Players , nicht upgedated wird, während man im Menü der Kiste ist, obwohl die klassischen "if ( MenuMode == 1 ) etc " Zeilen fehlten.

Es ist also etwas anders.........?!

Da der Fehler jetzt schon zum 2ten mal auftritt könnte da irgendwo der Hase begraben sein .....muss natürlich nicht......aber die Sache erlebe ich jetzt schon zum 2ten mal und ich kanns mir halt nicht erklären woran es liegen könnte.
Ich bin inzwischen schon soweit, daß ich glaube, daß das CS es nicht mag, wenn man ein Script zu oft verändert und nicht jedesmal 2mal auf speichern klickt (Aberglaube/ Paranoia ) das Script nicht mehr normal ausgeführt wird

Auf alle Fälle bin ich gespannt, wie sich da Prop diesmal löst........

Greets
chris


__________________

Meine Site

Dieser Beitrag wurde von chris_tm am 04.08.2003, 01:44 Uhr editiert.

04.08.2003, 01:44 Profil von Füge  deiner Freunde-Liste hinzu Email an chris_tm senden Homepage von chris_tm
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Also mit euren Tipps hats nicht gefunzt, da hab ich mir gedacht ich machs auf die billige tour und setzt einfach das Gewicht-limit der Kiste auf 1.0 (der schlüssel wiegt 1.0).... aber: Da waren mehr als ein Schlüssel drinn, obwohl dies eigentlich gar nicht möglich war! Aber dieses mal warens nur noch ca. 25 Also das macht echt keinen Sinn! Zumal die Gewichtsbeschränkung schon funktioniert hat (habs nacher getestet).


__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

04.08.2003, 11:52 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Original von chris_tm

Welche Auswirkungen hat man eigentlich zu befürchten, wenn man etwas "hölzern" scriptet, also z.B. mehr if/ endif Schleifen benutzt als nötig wären (statt "elseif" zu benutzen) oder wie hier ein "elseif" statt ein "else" ?

Ist das nur eine Frage der elegance oder hat es evtl. bei komplexeren Scripts Auswirkungen auf die Zuverlässigkeit (Bugs) oder Performance ?




keine eleganzfrage, sondern ein anderer logischer operator - eine if...elseif...else...endif - konstruktion ist eine ausschließende oder-Verknüpfung (d. H. nur der Block der ersten erfüllten bedingung wird ausgeführt), während ein if...endif...if...endif ein einschließendes Oder darstellt, also alle Blöcke von erfüllten bedingungen ausgeführt werden.
Im voliegenden beispiel wirkt sich elseif oder else nur ( minimal ) auf die Performance aus...

aber das mit den 25 schlüsseln ist mir immernoch schleierhaft...


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

04.08.2003, 13:47 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Toll, ein Rätsel auf dass es keine Lösung gibt... unter diesen Umständen kann ich mein PI nicht fertigstellen


__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

05.08.2003, 15:43 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Falls es immer die gleiche Anzahl Schlüsseln sind, kannst du die überzähligen ja immer noch per Script entfernen. Ist zwar nicht die feine Art, aber besser als nichts.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

05.08.2003, 15:59 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich habs irgendwie doch noch hinbekommen, bzw. es hat gefunzt, hinbekommen hab ich es nicht
Also mit deinem Trick Hephaistos ist es erst nicht gegangen, dann hab ich die Zeile mit dem removeitem einfach VOR die zeile additem gesetzt (frag mich nicht warum, es macht keinen Sinn) dann hats gefunzt... naja, mir egal, hauptsache es geht
Danke für die Tipps!


__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

06.08.2003, 11:53 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Also mit deinem Trick Hephaistos ist es erst nicht gegangen, dann hab ich die Zeile mit dem removeitem einfach VOR die zeile additem gesetzt (frag mich nicht warum, es macht keinen Sinn) dann hats gefunzt... naja, mir egal, hauptsache es geht

Klingt seltsam, so als würde das Script öfters als einmal durchlaufen. Kannst du das funktionierende Script mal hier rein stellen, das würde mich jetzt nämlich wirklich interessieren.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

06.08.2003, 12:36 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Manteau
Zürcher




Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994

Manteau ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

begin "truhe_key"

short controlvar
if ( MenuMode == 1 )
Return
endif


if (controlvar == 1)
return

else (controlvar == 0)

if ("nerevarine_truhe_buch"->getitemcount, "Der Meisterschütze" ==1)

set controlvar to 1

"Nerevarine_truhe_key"->removeitem "nerevarine_key1" 20

"Nerevarine_truhe_key"->additem "nerevarine_key1" 1





endif
endif

end

___________________________________________________________________

Das ist das ganze script. Wie gesagt, die Zeile ""Nerevarine_truhe_key"->removeitem "nerevarine_key1" 20" macht keinen Sinn, aber es funzt...




__________________
Alfing, Waldelf
Waldläufer, level 25
Mainskills: Schütze, Schleichen, Sicherheit, Alchemie, Leichte Rüstung
Gespielte Zeit: 66 Stunden

06.08.2003, 14:14 Profil von Füge  deiner Freunde-Liste hinzu Email an Manteau senden
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Design by: Garak - Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR