PDA

View Full Version : System.Exception: Das Script hat einen Laufzeitfehler verurs



ProjektWolf
03-02-2012, 20:01
Hallo...

...ich wende mich auch mal an die gesamte Script-Öffentlichkeit. Da ich selbst nur ein Laie bin auf dem Gebiet.

Mit größter Freude und Euphorie habe ich das Bar-Script aus der Bibliothek "gekrall" und in meine Schiffchen und Stationen eingebaut. Um so mehr ich die Steuerung verstanden hatte, um mehr Möglichkeiten eines genialen RP taten sich auf.

Nach mittlerweile über 4 funktionierende Bars... mit mehreren Personen, und Storys wollte ich nun eine 5te eröffnen. Ich legte dazu eine neue Person an und begann, deren Story zu erstellen. Nach den Bedingungen und einem darauf folgenden Text, wollte ich diese erste Funktion testen...

Effekt:

System.Exception: Das Script hat einen Laufzeitfehler verursacht. Zeile: 10, Spalte: 1, Token: 'If', Script: 'Bar2' ---> System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
bei stne.Scripting.Types.CDataNodeParser.ParseString(C DataNodeList& ParentList, Int32 Level) in D:\source\proximo\dev1\projects\stne\game\Scriptin g\Objects.vb:Zeile 4144.
bei stne.Scripting.Types.CDataNodeParser.ParseString(C DataNodeList& ParentList, Int32 Level) in D:\source\proximo\dev1\projects\stne\game\Scriptin g\Objects.vb:Zeile 4246.
bei stne.Scripting.Types.CDataNodeParser.FromString(St ring Expression) in D:\source\proximo\dev1\projects\stne\game\Scriptin g\Objects.vb:Zeile 4413.
bei stne.Scripting.Types.CDataNodeList.FromString(Stri ng Expression) in D:\source\proximo\dev1\projects\stne\game\Scriptin g\Objects.vb:Zeile 3648.
bei stne.TScriptStorage.get_DataNodeList() in D:\source\proximo\dev1\projects\stne\game\Scriptin g\Scripting.vb:Zeile 2184.
bei stne.Scripting.Types.CDataNodeStorage.get_Items() in D:\source\proximo\dev1\projects\stne\game\Scriptin g\Objects.vb:Zeile 4660.
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.RuntimeMethodHandle._InvokeMethodFast(IRunt imeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
bei System.RuntimeMethodHandle.InvokeMethodFast(IRunti meMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
bei System.Reflection.RuntimePropertyInfo.GetValue(Obj ect obj, Object[] index)
bei larne.scripting.TScriptObjectMemberNative.GetValue Internal(TScriptContext Context, Object obj, Object[] Index) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.vb:Zeile 2604.
bei larne.scripting.TScriptObjectMemberNative.GetValue (TScriptContext Context, TCodeExpressionObjectMember CallExp, Object obj, Object[] Index) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.vb:Zeile 2595.
bei larne.scripting.Expressions.TCodeExpressionObjectM ember.Get(TScriptContext Context) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.vb:Zeile 342.
bei larne.scripting.Expressions.TCodeExpressionObjectM ember.Get(TScriptContext Context) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.vb:Zeile 314.
bei larne.scripting.Expressions.TCodeExpressionOperato rEquals.Get(TScriptContext Context) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.vb:Zeile 908.
bei larne.scripting.Commands.TCodeCommandIf.Process(TS criptContext Context) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptCommands.vb:Zeile 322.
bei larne.scripting.TScriptContext.ExecuteInternal() in D:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.vb:Zeile 1271.
--- Ende der internen Ausnahmestapelüberwachung ---
bei larne.scripting.TScriptContext.ExecuteInternal() in D:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.vb:Zeile 1281.
bei larne.scripting.TScriptContext.Execute(Int32 StartLine) in D:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.vb:Zeile 1314.
bei larne.scripting.TScriptContext.Execute() in D:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.vb:Zeile 1348.
bei stne.TScript.ExecuteInternal() in D:\source\proximo\dev1\projects\stne\game\Temp3.vb :Zeile 1066.
bei stne.TScript.ExecuteDirect() in D:\source\proximo\dev1\projects\stne\game\Temp3.vb :Zeile 982.
bei stne.TScript.EnsureExecuted() in D:\source\proximo\dev1\projects\stne\game\Temp3.vb :Zeile 1114.
bei stne.TPortal.GetControlScript(IShipPlanet Guest) in D:\source\proximo\dev1\projects\stne\game\Lib.vb:Z eile 4012.
bei stne.TPortal.GetControl(IShipPlanet Guest) in D:\source\proximo\dev1\projects\stne\game\Lib.vb:Z eile 3978.
bei stne.wf_Portal.pg_Main() in D:\source\proximo\dev1\projects\stne\game\Portal.v b:Zeile 106.


Seither taucht dieser Fehler in allen Bar´s auf.
Ist es möglich, das ich vielleicht irgendetwas erstellt habe, was dieses Script bei mir durcheinander bringt?

Bspw. der Name der neu angelegten Person... der Sonderzeichen enthielt? .... Narissa Graham-Par'Tok

Wäre echt toll, wenn mir mal jemand helfen könnte. Denn die Möglichkeiten für gutes RP in diesem Script sind einfach gigantisch.


mfg
René

Elchi
04-02-2012, 17:33
Versuch mal

If* (BarDaten.Items.ContainsKey('Personen')* =* False){

in

If* (not BarDaten.Items.ContainsKey('Personen')){

zu ändern.
Wenn sich die Zeile in der Fehlermeldung auf 13 ändert kannst du entweder alle anderen "If(... = false)" Zeilen nach dem oben gennanten Schema ändern oder Sargi fragen, ob er das für dich macht.
Wenn nicht lösche das Script und hole es dir neu aus der Scriptbibliothek (deine Daten werden dabei nicht gelöscht).

lg
Elchi

ProjektWolf
06-02-2012, 00:42
Ich habe mir das Script neu gezogen und eine andere Datenbank generiert.
Ich kann zwar nicht auf die alten Daten zurückgreifen und muss meine Storys wieder neu anlegen. Aber zumindest funktioniert die Bar wieder.

Jetzt ist es mir wichtig, sicherzustellen, das ich solche Schäden nicht nocheinmal verursache. Erstmal ein paar Grundlegende Fragen...

...ich versuche mir jetzt anzugewöhnen, die Datenbanken der Bar mir in einer Textdatei zur Sicherheit abzuspeichern - falls das was bringt. Was mir auffällt ist, das sich diese Datenbank ganz schnell gewaltig vergrößert... meine Frage dazu...
Gibt es ein Limit, was man da an Daten reinstopfen kann? Also spielt die Menge der angegebenen Urls für Bildmaterial und/oder die Textmenge und eine äußerst vielseitige Vernetzung bei mehreren Scrips und Personen eine Rolle?

Nicht das ich ein Gigantischen Datensalat verursache - für den der Script nicht ausgelegt ist oder so....
... oder spielen Datenmengen keine wirkliche Rolle, solange bestimmte Parameter eingehalten werden?

mfg
René

Arakis
13-02-2012, 12:17
Es hat damit nichts zu tun. Der oben genannte Fehler besagt, dass eine einen Strukturellen Schaden in der Datenbank gibt, verursacht durch einen fehlerhaften Schlüssel oder Wert. Dies sollte normalerweise nicht passieren. Da mir bisher aber noch kein Spieler gesagt hat, welcher Schlüssel/Wert zum "Absturz" der Datenbank führt, kann ich auch keinen "Selbstschutz" einbauen. Der Schlüssel wird für gewöhnlich auf Gültigkeit überprüft, der Wert sollte "alles" akzeptieren.

PS: Wir sprechen von der Script-"Datenbank" des jeweiligen Scripts, nicht von der STNE-Datenbank.

Lieben Gruß,
Sebastian

Sargraner
15-02-2012, 10:55
Die Apostrophe fängt das Script jetzt ab. Es gibt aber noch viele Sonderzeichen.

Arakis, das Problem tritt auf wenn in dem Key Zeichen auftreten wie ',_ usw.