Page 1 of 2 12 LastLast
Results 1 to 10 of 17

Thread: Positionsvergleich

  1. #1

    Positionsvergleich

    Hi,

    ich möchte die Position eines Schiffes mit der einer Colonie vergleichen.

    in CMyShip und CMyColonie finde ich dafür keinen Ansatz, der sich später in einer IF-Bedingung einbauen läßt.
    Gibt es dort eine Möglichkeit dafür?

    PS.:
    So funktioniert es leider auch nicht:

    Var Kolo1 As New CMyColony(12345);
    Var Ship1 As CBaseShip(123456);
    WriteLine('SectorID: ' + (CStr(Kolo1.SectorID)));
    WriteLine('SectorID: ' + (CStr(Ship1.Sector.SectorID)));

    Wie muss die vierte Zeile geschrieben werden?

    Schonmal danke, Quor
    Ich schreibe kompliziert, weil ich 102 Tasten habe.

  2. #2

    Re: Positionsvergleich

    WriteLine(Ship1.Sector.Coordinates.X & "|" & Ship1.Sector.Coordinates.Y);

    das sollte funktionieren, keine Ahnung ob das letztlich dein Problem löst

    Allerdings würde ich das Ship auch als New CMyShip deklarieren, weiß nicht was du da bauen willst^^
    Kann sein das es deshalb zu Problemen kommt

    lg

  3. #3

    Re: Positionsvergleich

    Var Kolo1 As New CMyColony(1234);
    Var Ship1 As New CMyShip(56789);

    WriteLine('SectorID: ' + (CStr(Kolo1.SectorID)));
    WriteLine('SectorID: ' + (CStr(Ship1.Sector.SectorID)));
    Du kannst natürlich auch über die Koordinaten vergleichen kommt auf das selbe hinnaus. Außerdem brauchst du nicht zu prüfen üb das schiff im Orbit ist oder nicht.

    WriteLine('Koords Kolo: ' & Kolo1.SRS.Item(0).MapPosition.ToString());
    WriteLine('Koords Shiff: ' & Ship1.SRS.Item(0).MapPosition.ToString());


    If (Kolo1.SRS.Item(0).MapPosition.ToString() = Ship1.SRS.Item(0).MapPosition.ToString())
    {
    WriteLine ('Test');
    }


    Gruß

  4. #4

    Re: Positionsvergleich

    Danke für die schnellen Antworten !!

    Leider löst das Script jetzt nen Bluescreen aus. Token "WriteLine". Es kann doch nicht sein, dass diese Funktion kaputt ist, oder??

    Var Kolo1 As New CMyColony(12345);
    Var Ship1 As New CMyShip(123456);

    WriteLine('Koords Kolo: ' & (CStr(Kolo1.SRS.Item(0).MapPosition));
    WriteLine('Koords Shiff: ' & (CStr(Ship1.SRS.Item(0).MapPosition));

    If (Kolo1.SRS.Item(0).MapPosition.ToString() = Ship1.SRS.Item(0).MapPosition.ToString())
    {
    WriteLine ('Test');
    }
    Else
    Ich schreibe kompliziert, weil ich 102 Tasten habe.

  5. #5

    Re: Positionsvergleich

    Wenn du die Koordinaten per Hand eingibst kannst du es auch wie folgt machen.

    If* (Schiff.MapPosition.X* <>* xxx or* Schiff.MapPosition.Y* <>* yyy)
    {
    WriteLine ('Test');
    }

  6. #6

    Re: Positionsvergleich

    If-Bedingung: If (Bedingung) {Wahr-Block} Else {Falsch-Block}

    du musst mindestens die { } setzen oder das Else ganz weglassen

  7. #7

    Re: Positionsvergleich

    Quote Originally Posted by quor
    Var Kolo1 As New CMyColony(12345);
    Var Ship1 As New CMyShip(123456);

    WriteLine('Koords Kolo: ' & (CStr(Kolo1.SRS.Item(0).MapPosition));
    WriteLine('Koords Shiff: ' & (CStr(Ship1.SRS.Item(0).MapPosition));
    Schon dieser Teil löst das Problem aus. Und leider auch wenn ich die andere Variante "ToString" benutze.

    Var Kolo1 As New CMyColony(68406);
    Var Ship1 As New CMyShip(549215);

    WriteLine('Koords Kolo: ' & Kolo1.SRS.Item(0).MapPosition.ToString());
    WriteLine('Koords Shiff: ' & Ship1.SRS.Item(0).MapPosition.ToString());
    Ich schreibe kompliziert, weil ich 102 Tasten habe.

  8. #8

    Re: Positionsvergleich

    hmm vlt hast du noch wo anders nen fehler bei mir funktioniert es in beiden varianten
    poste mal dein script und die fehlermeldung

  9. #9

    Re: Positionsvergleich

    Ich geb auch mal meinen Senf dazu weil ich n ähnliches Script habe, vielleicht hilfts dir was...

    Var PositionSoll As SMapPosition

    If(i = 0){
    PositionSoll = ship.MapPosition
    }

    If(ship.MapPosition <> PositionSoll){
    ScriptContext.WriteAppLog("Position von " & ship.Name & " stimmt nicht! " & ship.MapPosition & " statt " & PositionSoll & "!")
    }

    Zwar ist das nicht mit WriteLine, sondern aus einer Erweiterung für das Webinterface, aber sollte im Prinzip genauso funktionieren.
    Was mir jetzt grade noch auffällt: Du verwendest bei WriteLine 'Apostrophe'. Ich habe da überall "Anführungszeichen", kann sein dass beides funktioniert, aber wäre zumindest eine mögliche Fehlerquelle...

  10. #10

    Re: Positionsvergleich

    Ich benutze den Baustein im größeren Rahmen, eines kleinen Projects, habe es mal in die scriptbib gestellt, da es doch recht groß ist: Kolonie_Verkehr_Portal (d3)
    Ziel ist zunächst zu püfen, ob sich eines oder beide Schiffe im Orbit einer Kolonie befinden.

    Später kommt ein Auswahl button zu dem Schiff und Zielbutton, so dass dann vorherfestgelegte Routen geflogen werden können.

    Die fehlermeldung erscheint unten. Im eigentlichen Script ist der Token IF, sonst WriteLine. Welche Funktion hat eigentlich "Item(0)"
    ??

    Das script lauft als solches nicht:

    Var Kolo1 As New CMyColony(12345);
    Var Ship1 As New CMyShip(123456);

    WriteLine('Koords Kolo: ' & (CStr(Kolo1.SRS.Item(0).MapPosition));
    WriteLine('Koords Shiff: ' & (CStr(Ship1.SRS.Item(0).MapPosition));
    und eben auch so nicht

    Var Kolo1 As New CMyColony(68406);
    Var Ship1 As New CMyShip(549215);

    WriteLine('Koords Kolo: ' & Kolo1.SRS.Item(0).MapPosition.ToString());
    WriteLine('Koords Shiff: ' & Ship1.SRS.Item(0).MapPosition.ToString());
    ---
    Das Script hat einen Laufzeitfehler verursacht. Zeile: 4, Spalte: 1, Token: 'WriteLine', Script: 'Script 7584'

    [ArgumentOutOfRangeException: Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
    Parametername: index]
    bei System.Collections.ArrayList.get_Item(Int32 index)
    bei larne.scripting.Types.CCollectionBase.get_BaseItem (Int32 index) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptCollection.cs:Zeile 129.
    bei stne.Scripting.Types.CShipList.get_Item(Int32 Index) in d:\source\proximo\dev1\projects\stne\game\Scriptin g\Objects.cs:Zeile 1658.

    [TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht.]
    bei System.RuntimeMethodHandle._InvokeMethodFast(IRunt imeMethodInfo method, Object target, Object[] arguments, SignatureStruct& 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.cs:Zeile 2665.
    bei larne.scripting.TScriptObjectMemberNative.GetValue (TScriptContext Context, TCodeExpressionObjectMember CallExp, Object obj, Object[] Index) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.cs:Zeile 2656.
    bei larne.scripting.Expressions.TCodeExpressionObjectM ember.Get(TScriptContext Context) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.cs:Zeile 376.
    bei larne.scripting.Expressions.TCodeExpressionObjectM ember.Get(TScriptContext Context) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.cs:Zeile 346.
    bei larne.scripting.Expressions.TCodeExpressionObjectM ember.Get(TScriptContext Context) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.cs:Zeile 346.
    bei larne.scripting.Expressions.TCodeExpressionAddStri ng.Get(TScriptContext Context) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.cs:Zeile 1546.
    bei larne.scripting.Expressions.TCodeExpressionObjectM ember.GetParameters(TScriptContext Context, TScriptParameterInfo[] ParamInfo) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.cs:Zeile 312.
    bei larne.scripting.Expressions.TCodeExpressionObjectM ember.Get(TScriptContext Context) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptExpressions.cs:Zeile 374.
    bei larne.scripting.Commands.TCodeCommandExpressionCal l.Process(TScriptContext Context) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\ScriptCommands.cs:Zeile 80.
    bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.cs:Zeile 1194.

    [Exception: Das Script hat einen Laufzeitfehler verursacht. Zeile: 4, Spalte: 1, Token: 'WriteLine', Script: 'Script 7584']
    bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.cs:Zeile 1209.
    bei larne.scripting.TScriptContext.Execute(Int32 StartLine) in d:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.cs:Zeile 1246.
    bei larne.scripting.TScriptContext.Execute() in d:\source\proximo\dev1\projects\shared\larne.scrip ting\Script.cs:Zeile 1281.
    bei stne.TScript.ExecuteInternal() in d:\source\proximo\dev1\projects\stne\game\Core\Tem p3.cs:Zeile 1088.
    bei stne.TScript.ExecuteInQueue() in d:\source\proximo\dev1\projects\stne\game\Core\Tem p3.cs:Zeile 995.
    bei stne.wf_ScriptEdit.act_Execute() in d:\source\proximo\dev1\projects\stne\game\WebForms \ScriptEdit.cs:Zeile 606.
    bei stne.wf_ScriptEdit.ExecuteAction() in d:\source\proximo\dev1\projects\stne\game\WebForms \ScriptEdit.cs:Zeile 142.
    bei stne.TstneBasePage.CallExecuteAction() in d:\source\proximo\dev1\projects\stne\game\Core\Web Controls.cs:Zeile 211.
    bei stne.TstneGamePage.CallExecuteAction() in d:\source\proximo\dev1\projects\stne\game\Core\Web Controls.cs:Zeile 1029.
    bei stne.wf_ScriptEdit.Run() in d:\source\proximo\dev1\projects\stne\game\WebForms \ScriptEdit.cs:Zeile 98.
    bei stne.wf_Game.Page_Load(Object sender, EventArgs e) in d:\source\proximo\dev1\projects\stne\game\Game.asp x.cs:Zeile 142.
    bei System.Web.UI.Control.LoadRecursive()
    bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

    Assembly: larne.scripting.dll
    Time: 29.09.2012 17:54:02
    Server: DE3
    User-ID: 32018
    STNE-Version: 1.0.74.874
    Compiled at: 28.09.2012 01:46:24
    Compiled from: Proximo
    Ich schreibe kompliziert, weil ich 102 Tasten habe.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •