Autor |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
kleine Scripthilfe bitte (itemcount in object) | |
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 |
|
chris_tm
Bard
Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37
|
|
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 |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
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 |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
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 |
|
chris_tm
Bard
Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37
|
|
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 |
|
Garak
Admin
Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256
|
|
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 |
|
chris_tm
Bard
Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37
|
|
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 |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
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 |
|
Garak
Admin
Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256
|
|
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 |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
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 |
|
Hephaistos
Verschollen
Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102
|
|
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 |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
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 |
|
Hephaistos
Verschollen
Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102
|
|
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 |
|
Manteau
Zürcher
Dabei seit: Oktober 2002
Geschlecht:
Herkunft: Zürich
Beiträge: 1994
|
|
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 |
|
|