Genau, das ist ja der Plan Sagraner,
ich will kein Schiff fest definieren und die Eignerkontrolle habe ich entfernt,
aber mit
Code:
If(MyShip is Nothing)
{
Response.Add("Kein Schiffsportal!");
}
erreiche ich zwar, dass dem beliebigen Schiff, das das Kolonieportal benutzt, keine Fehlermeldung mehr erhält aber eben diese unerfreuliche Ausgabe.
Und eigentlich macht das Script derzeit ja auch nur Sinn, wenn es in einem Kolonieportal installiert ist.
In einem Schiffsportal braucht es nur an VP's installiert zu werden.
Ich glaube weiterhin, dass ich irgendwie das Schiff nicht richtig definiere, oder nicht verstehe, wie ich von einem "nicht-festgelegtem Schiff", das aber das Koloportal benutzt, den Namen herausbekomme.
Das ganze Script sieht jetzt übrigens so aus(Alles was unnötig ist mal rausgeschnitten):
Code:
#UseInterface Web, ColoniePortal, ShipPortal;
//Das Schiff, welches das Portal betritt, nutzt es auch
Var Ship1 As CMyShip = MyShip;
//Hier werden die Kolonien eingetragen
Var Kolo1 As New CMyColony(68406) = MyColony;
Var Kolo2 As New CMyColony(68407);
// unveränderliche Variablen
Var ScriptName As String = "Kolonie_Verkehr_Portal";
Var form As New CHtmlForm(New CScriptUrl()); //erstellt eine Form in die die ganzen Buttons usw. hineinkommen
Var tab As New CTable(7);
Var row As CTableRow = tab.AddRow(); //neue Zeile initialisieren
Var S As Integer;
Var Z As Integer;
Var SZ As Integer;
//----------------------------------------------------------------------
//Funktionen für die Routen zwischen den Kolonien und POI's
Function Ko1ko2()
{
Ship1.Action.LeaveOrbit();
Ship1.Action.Fly(1, EShipDirection.right);
Ship1.Action.Fly(2, EShipDirection.down);
Ship1.Action.Fly(1, EShipDirection.right);
Ship1.Action.EnterOrbit();
}
//----------------------------------------------------------------------
//Erstellt eine Form die alle Kolonien enthält,
//darunter je Schiff eine Zeile, bo sich das Schiff im Sektor einer Kolonie befindet.
form.Add(tab);
If(MyShip is Nothing)
{
Response.Add("Kein Schiffsportal!");
}
Else
{
If(Request.Form.ContainsKey('Menü1'))
{
//Prüft wo Schiff1 ausgewählt wurde
Var checkBoxS As String = "nicht ausgewählt";//gibt an ob sie angehackt ist, 1 bei true, nichts bei false
If(Request.Form.ContainsKey('Ship1Box1') and Kolo1.Coordinates.CompareTo(Ship1.MapPosition.Coords) = 0)
{
checkBoxS = "startet an";
row.Cells.Item(0).Add(Ship1.Name);
row.Cells.Item(1).Add(checkBoxS);
row.Cells.Item(2).Add(Kolo1.Name);
S = 100;
}
Else
{row.Cells.Item(0).Add(Ship1.Name + ' ' + checkBoxS);}
//weitere Startkolonieen auffüllen
//Prüft welche Kolonie das Ziel ist
Var checkBoxK As String = "Keine Kolonie ausgewählt";//gibt an ob eine Kolonie angehakt ist.
If(Request.Form.ContainsKey('ZBox1'))
{
checkBoxK = "und fliegt zu";
row.Cells.Item(3).Add(checkBoxK);
row.Cells.Item(4).Add(Kolo1.Name);
Z = 1;
}
ElseIf(Request.Form.ContainsKey('ZBox2'))
{
checkBoxK = "und fliegt zu";
row.Cells.Item(3).Add(checkBoxK);
row.Cells.Item(4).Add(Kolo2.Name);
Z = 2;
}
Else
{row.Cells.Item(1).Add(checkBoxK);}
//weitere Ziele auffüllen
SZ = S + Z;
form.Add('Hier muss weitergearbeitet werden.');//fügt einen Text hinzu
form.Add(New CHtmlBreak());
form.Add(New CHtmlTextBox(CStr(SZ), CStr(SZ));
form.Add(New CHtmlBreak());
form.Add(New CHtmlSubmitButton('OK', 'Menü2');//neuer Button, OK: Aufschrift des Buttons, name: Identifikationsname
}
ElseIf(Request.Form.ContainsKey('Menü2'))
{
//Funktionsaufruf für die einzelnen Routen
If(Request.Form.ContainsKey('101'))
{row.Cells.Item(0).Add('Von ' + Kolo1.Name + ' nach ' + Kolo1.Name + ' geflogen.');}
ElseIf(Request.Form.ContainsKey('102'))
{Ko1ko2(); row.Cells.Item(0).Add('Von ' + Kolo1.Name + ' nach ' + Kolo2.Name + ' geflogen.');}
Else
{row.Cells.Item(0).Add('Kein Flug möglich.');}
form.Add(New CHtmlBreak());
form.Add('Hier ist dann fertig');
}
Else
{
form.Add('Hier befindet sich das KolonieMenü');//fügt einen Text hinzu
form.Add(New CHtmlBreak());//fügt einen Zeilenumbruch hinzu
row.Cells.Item(0).Add('Name',);
row.Cells.Item(1).Add(Kolo1.Name);
row.Cells.Item(2).Add(Kolo2.Name);
row = tab.AddRow(); //Start und Ziel des ersten Schiffes
row.Cells.Item(0).Add(Ship1.Name);
If(Kolo1.Coordinates.CompareTo(Ship1.MapPosition.Coords) = 0)
{
row.Cells.Item(1).Add(New CHtmlCheckBox(True, 'Ship1Box1', 'Bringe Schiff') //fügt eine Checkbox hinzu, True/False = checked, Ship1Box ist der Key, BringeSchiff der angezeigete Text
}
Else
{
row.Cells.Item(1).Add(New CHtmlCheckBox(False, 'ZBox1', 'zur Kolonie.');
}
If(Kolo2.Coordinates.CompareTo(Ship1.MapPosition.Coords) = 0)
{
row.Cells.Item(2).Add(New CHtmlCheckBox(False, 'Ship1Box2', 'Bringe Schiff');
}
Else
{
row.Cells.Item(2).Add(New CHtmlCheckBox(False, 'ZBox2', 'zur Kolonie.');
}
form.Add(New CHtmlBreak());
form.Add(New CHtmlSubmitButton('OK', 'Menü1');//neuer Button, OK: Aufschrift des Buttons, name: Identifikationsname
}
}
Response.Add(form);//fügt form dem Fenster hinzu sodass sie angezeigt wird.