Advertisement
Guest User

STNE Schiffsportal - Flottenadministration Script

a guest
Feb 2nd, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VBScript 76.15 KB | None | 0 0
  1. #UseInterface Web, ShipPortal;
  2.  
  3. /* STNE Schiffsportal - Flottenadministration Script:
  4.  * Script von Richard(DE1-72664)
  5.  * Dieses Script erlaubt eine Vielzahl von Schiffs und Flottenaktionen
  6.  * Copyright (C) ab [2010] [Björn Kremer](bjoern-kremer@gmx.net) aktualisiert: 2010-2015
  7.  * STNE Forums-Post zum Script: http://forum.stne.net/showthread.php?2062-Flottenverwaltung&p=13463#post13463
  8.  
  9.  * This program is free software; you can redistribute it and/or modify it under the terms of the
  10.  * GNU General Public License as published by the Free Software Foundation; either version 3 of the
  11.  * License, or (at your option) any later version.
  12.  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without  
  13.  * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU  
  14.  * General Public License for more details.
  15.  * You should have received a copy of the GNU General Public License along with this program; if
  16.  * not, see <http://www.gnu.org/licenses/>.
  17.  */
  18.  
  19. /* Hinweis
  20.  * Flottenaktion:
  21.  * Die Checkbox "Flottenaktion" gibt an ob die Aktionen als Flottenbefehl oder Einzelaktion  
  22.  * ausgeführt wird. Wenn der Flottenbefehl verwendet wird, wird nur 1KT ausgelöst(eigentlich).
  23.  * Bei einer Ausführung als Einzelaktion werden mehrere KTs ausgelöst, man umgeht jedoch das  
  24.  * Flottenlimit
  25.  *
  26.  *
  27.  */
  28.  
  29. /*
  30.  * Version: 2.6.1
  31.  */
  32.  
  33. //config
  34.  
  35. //Wenn das Script direkt aus der Script-Engine betrieben werden soll, können hier die IDs manuell gesetzt werden.
  36. If(MyShip is Null)
  37. {
  38.   MyShip = New CMyShip(1814787);//Ein eigenes Schiff
  39.   GuestUser = New CUser (72664);//Die Id von einem selber
  40. }
  41.  
  42.  
  43. //Output
  44. Var begrüßungsText As String = 'Willkommen im Schiffsportal ';
  45. Var deniedText As String = 'Derzeit sind keine Funktionen verfügbar.(Keine Rechte)';
  46.  
  47. //Zugriffsrechte
  48. Var allowedPlayer[] As Integer = { - 1}; // Allianzfremde Personen mit Zugriffsrechten
  49. Var allowAllianceDefault As Boolean = False;//Allianzmitglieder haben immer Zugang?
  50.  
  51. //Koordinaten (Unter Flugsteuerung angezeigt)
  52. Var CDestinations As New CEntryList();
  53.  
  54. CDestinations.Add("Nach Alwaid", "306|569")
  55. CDestinations.Add("Nach Bryant", "254|464")
  56.  
  57.  
  58.  
  59. //Verfügbare Flotte angeben{
  60.  
  61. Var possibleFleets As New CIntegerList();
  62.  
  63. //Automatisch alle Flotten anzeigen(Auskommentieren zum deaktivieren)
  64. possibleFleets = GetPossibleFleets();
  65.  
  66. //Manuell Flotten hinzufügen
  67. //possibleFleets.Add(111975);
  68.  
  69. //}
  70.  
  71.  
  72.  
  73. //Code, bitte ab hier nichts ändern!
  74. Var verwaltung As String = 'fleetSelector';
  75. Var debug As Boolean = True;
  76.  
  77. Var dienst As String = '';
  78. Var myFleetID As Integer;
  79. Var myFleet As CMyFleet;
  80.  
  81.  
  82.  
  83.  
  84.  
  85. Function Main() {
  86.   If (Request.Parameters.ContainsKey('Verwaltung'))
  87.  {
  88.     verwaltung = Request.Parameters.Item('Verwaltung');
  89.  }
  90.   If (Request.Parameters.ContainsKey('Dienst'))
  91.  {
  92.     dienst = Request.Parameters.Item('Dienst');
  93.  }
  94.   If (Request.Parameters.ContainsKey('fleetID'))
  95.  {
  96.     myFleetID = Request.Parameters.Item('fleetID');
  97.    myFleet = New CMyFleet(myFleetID);
  98.   }
  99.  
  100.   If (Request.Form.ContainsKey('Verwaltung'))
  101.  {
  102.     verwaltung = Request.Form.Item('Verwaltung');
  103.  }
  104.   If (Request.Form.ContainsKey('Dienst'))
  105.  {
  106.     dienst = Request.Form.Item('Dienst');
  107.  }
  108.   If (Request.Form.ContainsKey('fleetID'))
  109.  {
  110.     myFleetID = Request.Form.Item('fleetID');
  111.    myFleet = New CMyFleet(myFleetID);
  112.   }
  113.   Var bitAllowed As Boolean = False;
  114.   Var player As Integer;
  115.   // Überprüfe Einzelspieler
  116.   For (Each player In allowedPlayer) {
  117.     If (GuestUser.UserID = player) {
  118.       bitAllowed = True;
  119.     }
  120.   }
  121.  
  122.   // Überprüfe Allianzen
  123.   Var owner As CMyUser = New CMyUser(MyShip.UserID);
  124.   If (allowAllianceDefault and GuestUser.AllianceID = owner.AllianceID) {
  125.     bitAllowed = True;
  126.   }
  127.   If(GuestUser.UserID = MyShip.UserID){
  128.     bitAllowed = True;
  129.   }
  130.   // Überprüfen ob der Besuch Berechtigungen hat
  131.   If (bitAllowed = True) {
  132.     createView();
  133.   } Else {
  134.     accessDenied();
  135.   }
  136. }
  137.  
  138. //----------------------------------------------------------------------------
  139. //Wählt die Seite aus
  140. Function createView() {
  141.   If (verwaltung = 'SrsWare') {
  142.    zeigeSrsWare(True);
  143.   } ElseIf (verwaltung = 'SrsKampf') {
  144.    zeigeSrsKampf();
  145.   } ElseIf (verwaltung = 'manageTruemmer') {
  146.    manageTruemmer(True);
  147.   } ElseIf (verwaltung = 'beamTruemmer') {
  148.    beamTruemmer();
  149.   } ElseIf (verwaltung = 'extractTruemmer') {
  150.    extractTruemmer();
  151.   } ElseIf (verwaltung = 'flottenstatus') {
  152.    flottenstatus(False, False);
  153.   } ElseIf (verwaltung = 'flugkontrolle') {
  154.    flugkontrolleMain(CDestinations);
  155.   } ElseIf (verwaltung = 'kampfstatus') {
  156.    kampfstatus();
  157.   } ElseIf (verwaltung = 'wkfuellenMain') {
  158.    wkfuellenMain(True);
  159.   } ElseIf (verwaltung = 'wkfuellen') {
  160.    wkfuellen();
  161.    
  162.   } ElseIf (verwaltung = 'index') {
  163.    zeigeIndex();
  164.   } ElseIf (verwaltung = 'fleetPreview') {
  165.    fleetPreview();
  166.   } ElseIf (verwaltung = 'beam') {
  167.    BeamInterface();
  168.   } Else {
  169.     fleetSelector();
  170.   }
  171. }
  172.  
  173. //----------------------------------------------------------------------------
  174. //Erstellt die Seite für die Startseite
  175. Function zeigeIndex() {
  176.   Var form As New CHtmlForm(New CScriptUrl());
  177.   Response.Add(form);
  178.   form.Add(New CHtmlSeperator('Schiffsportal'));
  179.  form.Add(New CHtmlNewLine());
  180.  
  181.   Var user As New CUser(GuestUser.UserID)
  182.   form.Add(begrüßungsText);
  183.   form.Add(user.GetHtmlNameAndID(True));
  184.   form.Add('.');
  185.  form.Add(New CHtmlNewLine());
  186.  
  187.   form.Add(New CHtmlSeperator('Bitte wählt den Dienst aus:'));
  188.  
  189.   Var table As New CTable(7);
  190.   form.Add(table);
  191.  
  192.   Var row As CTableRow = table.AddRow();
  193.   // knopf 1 zum Auflisten der Waren
  194.   Var url As New CScriptUrl();
  195.   url.Parameters.Add('Verwaltung', 'SrsWare');
  196.  url.Parameters.Add('fleetID', myFleetID);
  197.  row.Cells.Item(0).Add(New CHtmlLinkButton('SRS Scan Ware', url, 'Zeigt die geladenen Waren aller Schiffe an.'));
  198.  // Knopf 2 zum Anzeigen der Kampfeinstellungen
  199.   url = New CScriptUrl();
  200.   url.Parameters.Add('Verwaltung', 'SrsKampf');
  201.  url.Parameters.Add('fleetID', myFleetID);
  202.  row.Cells.Item(1).Add(New CHtmlLinkButton('SRS Scan Kampf', url, 'Zeigt alle für den Kampf relevanten Informationen der Schiffe an.'));
  203.  // Knopf 3 zum Beamen der Waren aus Trümmerfeldern
  204.   url = New CScriptUrl();
  205.   url.Parameters.Add('Verwaltung', 'manageTruemmer');
  206.  url.Parameters.Add('fleetID', myFleetID);
  207.  row.Cells.Item(2).Add(New CHtmlLinkButton('Trümmer verwalten', url, 'Trümmerfelder verwalten'));
  208.  // Knopf 4 zum Anzeigen des Flottenstatus
  209.   url = New CScriptUrl();
  210.   url.Parameters.Add('Verwaltung', 'flottenstatus');
  211.  url.Parameters.Add('fleetID', myFleetID);
  212.  row.Cells.Item(3).Add(New CHtmlLinkButton('Flottenstatus', url, 'Zeigt alle wichtigen Informationen der Flotte an.'));
  213.  // Knopf 5 zum Anzeigen des Flottenstatus
  214.   url = New CScriptUrl();
  215.   url.Parameters.Add('Verwaltung', 'flugkontrolle');
  216.  url.Parameters.Add('fleetID', myFleetID);
  217.  row.Cells.Item(4).Add(New CHtmlLinkButton('Flugkontrolle', url, 'Zum Bewegen der Flotte mittels Autopilot.'));
  218.  // Knopf 6 zum Anzeigen des Flottenstatus
  219.   url = New CScriptUrl();
  220.   url.Parameters.Add('Verwaltung', 'wkfuellenMain');
  221.  url.Parameters.Add('fleetID', myFleetID);
  222.  row.Cells.Item(5).Add(New CHtmlLinkButton('Warpkern nachfüllen', url, 'Die Warpkerne der Flotte nachfüllen.'));
  223.  // Knopf 7 andere Flotte auswählen
  224.   url = New CScriptUrl();
  225.   url.Parameters.Add('Verwaltung', 'fleetSelector');
  226.  url.Parameters.Add('fleetID', myFleetID);
  227.  row.Cells.Item(6).Add(New CHtmlLinkButton('Flottenwahl', url, 'Eine andere Flotte auswählen.'));
  228.  
  229.  
  230.  
  231.   form.Add(New CHtmlNewLine());
  232.   form.Add(New CHtmlNewLine());
  233.  
  234.   If (debug = True) {
  235.     Response.Add('Debug mode active!');
  236.    Response.Add(New CHtmlNewLine());
  237.     Response.Add('Verwaltung: ');
  238.    Response.Add(verwaltung);
  239.     Response.Add(New CHtmlNewLine());
  240.     Response.Add('Dienst: ');
  241.    Response.Add(dienst);
  242.     Response.Add(New CHtmlNewLine());
  243.     Response.Add('Flotten ID: ');
  244.    Response.Add(myFleetID);
  245.     Response.Add(New CHtmlNewLine());
  246.     Response.Add('Flotte: ');
  247.    Response.Add(myFleet.NameAndID);
  248.     Response.Add(New CHtmlNewLine());
  249.     Response.Add(New CHtmlNewLine());
  250.   }
  251.  
  252. }
  253.  
  254. //----------------------------------------------------------------------------
  255. //Zeigt den Link zur Hauptseite an
  256. Function LinkZumIndex()
  257. {
  258.   Response.Add(New CHtmlBreak());
  259.   Var url As New CScriptUrl();
  260.   url.Parameters.Add('Verwaltung', 'index');
  261.  url.Parameters.Add('Dienst', '');
  262.  url.Parameters.Add('fleetID', myFleetID):
  263.  Response.Add(New CHtmlLinkButton('zurück zur Startseite', url, 'Zur Startseite'));
  264.  
  265.   url = New CScriptUrl();
  266.   url.Parameters.Add('Verwaltung', 'fleetSelector');
  267.  url.Parameters.Add('Dienst', '');
  268.  Response.Add(New CHtmlLinkButton('eine andere Flotte auswählen', url, 'Fleet Selector'));
  269.  
  270. }
  271.  
  272. Function AddResHeader(row As CTableRow, ware As Object, zaehler As Integer){
  273.  
  274.   Var goods As New CGoodsInfoEnumerator();
  275.  
  276.   While (goods.Next())
  277.   {
  278.     Var g As EGoodsType = goods.CurrentWarenInfo.GoodsType;
  279.    
  280.     Var wNull As Boolean = ware[g] is Null;
  281.     If (not wNull AND ware[g] > 0) {
  282.      
  283.       row.Cells.Item(zaehler).Add(goods.CurrentWarenInfo.Name);
  284.      
  285.       row.Cells.Item(zaehler).CssClass = 'buttonbody';
  286.      zaehler = zaehler + 1;
  287.     }
  288.   }
  289.  
  290. }
  291. Function GetMaxGood() As Integer{
  292.   Var maxArr As Integer = 0;
  293.   Var goods As New CGoodsInfoEnumerator();
  294.   While (goods.Next())
  295.   {
  296.     Var g As EGoodsType = goods.CurrentWarenInfo.GoodsType
  297.     If(maxArr < g){
  298.       maxArr = g ;
  299.     }
  300.   }
  301.   Return maxArr
  302.  
  303. }
  304. Function addBasicColInfos(myCurrentShip As CMyShip, index As Integer, row As CTableRow){
  305.   If(myCurrentShip.Sector.IsColonised){
  306.    
  307.     If(CheckAllowedColo(myCurrentShip.Sector.SectorID)){
  308.       Var col As New CColony(myCurrentShip.MapPosition.X, myCurrentShip.MapPosition.Y);
  309.       Var owner As New CUser(col.UserID);
  310.       row.Cells.Item(index + 1).Add(col.Name);
  311.       row.Cells.Item(index + 2).Add(owner.GetHtmlNameAndID());
  312.     }Else{
  313.       row.Cells.Item(index + 1).Add("???");
  314.       row.Cells.Item(index + 2).Add("???");
  315.     }
  316.    
  317.     row.Cells.Item(index).Add(myCurrentShip.GalaxyMapItem.GetImage());
  318.    
  319.    
  320.     row.Cells.Item(index + 3).Add(myCurrentShip.Sector.TypeName);
  321.   }
  322. }
  323.  
  324. //----------------------------------------------------------------------------
  325. //Zeigt den Lagerstand der Schiffe im SRS an
  326. Function zeigeSrsWare(showHeader As Boolean) {
  327.  
  328.   Var KoordsList As New CObjectList();
  329.   Var myCurrentShip As CMyShip;
  330.   Var wNull As Boolean ;
  331.   Var test As Integer = 0;
  332.   Var goods As CGoodsInfoEnumerator;
  333.   Var g As EGoodsType;
  334.   If(showHeader){
  335.     zeigeIndex();
  336.   }
  337.   Var warnSRS As Boolean = False
  338.  
  339.   //  myCurrentShip = New CMyShip(myFleet.Ships.Item(0).ShipID)
  340.   For (Each myCurrentShip In myFleet.Ships) {
  341.     If(not myCurrentShip.SRSIsActive){
  342.       warnSRS = True;
  343.     }
  344.     If( not KoordsList.Contains(myCurrentShip.MapPosition.InOrbit & myCurrentShip.MapPosition.X & "|" & myCurrentShip.MapPosition.Y & "#" & myCurrentShip.MapPosition.MapID)){
  345.       Response.Add(New CHtmlBreak()); Response.Add(New CHtmlBreak());
  346.      
  347.       KoordsList.Add(myCurrentShip.MapPosition.InOrbit & myCurrentShip.MapPosition.X & "|" & myCurrentShip.MapPosition.Y & "#" & myCurrentShip.MapPosition.MapID);
  348.      
  349.       Var ship As CShip;
  350.      
  351.       Var maxArr As Integer = GetMaxGood();
  352.      
  353.       Var ware[maxArr + 1] As Integer;
  354.      
  355.      
  356.       Var zaehler As Integer;
  357.      
  358.       // SRSList.Add(MyShip);
  359.      
  360.       Var resList As New CObjectList();
  361.      
  362.       //Gesamtmenge ermitteln
  363.       For (Each ship In myCurrentShip.SRS) {
  364.        
  365.         goods = New CGoodsInfoEnumerator();
  366.         While (goods.Next())
  367.         {
  368.          
  369.          
  370.          
  371.           g = goods.CurrentWarenInfo.GoodsType;
  372.           Var stNull As Boolean = ship.StockRoom is Null;
  373.           If ( not stNull AND ship.StockRoom.Amount(g) > 0) {
  374.            
  375.             If(ware[g] is Null){
  376.               ware[g] = 0;
  377.             }
  378.            
  379.             ware[g] = ware[g] + ship.StockRoom.Amount(g);
  380.             If(not resList.Contains(g)){
  381.               resList.Add(g);
  382.             }
  383.            
  384.           }
  385.          
  386.          
  387.         }
  388.       }
  389.      
  390.       Var mycol As CMyColony;
  391.       If(myCurrentShip.Sector.IsColonised){
  392.        
  393.        
  394.         If(CheckAllowedColo(myCurrentShip.Sector.SectorID)){
  395.           mycol = New CMyColony(myCurrentShip.MapPosition.X, myCurrentShip.MapPosition.Y);
  396.           goods = New CGoodsInfoEnumerator();
  397.           While (goods.Next())
  398.           {
  399.             g = goods.CurrentWarenInfo.GoodsType;
  400.             If (mycol.StockRoom.Amount(g) > 0) {
  401.               If(ware[g] is Null){
  402.                 ware[g] = 0;
  403.               }
  404.               ware[g] = ware[g] + mycol.StockRoom.Amount(g);
  405.               If(not resList.Contains(g)){
  406.                 resList.Add(g);
  407.               }
  408.             }
  409.            
  410.           }
  411.          
  412.         }
  413.       }
  414.      
  415.       Response.Add("Sektor: ");
  416.       If(myCurrentShip.MapPosition.InOrbit){
  417.         Response.Add("@");
  418.       }
  419.       Response.Add (myCurrentShip.MapPosition.X & "|" & myCurrentShip.MapPosition.Y & "#" & myCurrentShip.MapPosition.MapID));
  420.       Response.Add(myCurrentShip.GalaxyMapItem.GetImage());
  421.       If(CheckAllowedColo(myCurrentShip.Sector.SectorID)){
  422.        
  423.         Response.Add(" eigene Kolonie");
  424.        
  425.        
  426.       }
  427.       Response.Add(New CHtmlBreak());
  428.       Var tableWare As New CTable(resList.Count + 6);
  429.       Response.Add(tableWare);
  430.       Var row As CTableRow = tableWare.AddRow();
  431.       zaehler = 0;
  432.       zaehler = AddBasicShipHeader(row, zaehler)
  433.       Var tmpZ As Integer = zaehler;
  434.       //Warenname ausgeben
  435.       AddResHeader(row, ware, zaehler);
  436.      
  437.       //Waren pro schiff anzeigen
  438.       row = tableWare.AddRow();
  439.       For (Each ship In myCurrentShip.SRS) {
  440.         zaehler = 0;
  441.        
  442.         zaehler = AddBasicShipInfo(row, zaehler, ship);
  443.        
  444.        
  445.         goods = New CGoodsInfoEnumerator();
  446.         While (goods.Next())
  447.         {
  448.           g = goods.CurrentWarenInfo.GoodsType
  449.          
  450.          
  451.           stNull = ship.StockRoom is Null;
  452.           If (not stNull AND ship.StockRoom.Amount(g) > 0) {
  453.             row.Cells.Item(zaehler).Add(ship.StockRoom.Amount(g));
  454.            
  455.           }
  456.          
  457.          
  458.           wNull = ware[g] is Null;
  459.           If (not wNull AND ware[g] > 0) {
  460.             zaehler = zaehler + 1;
  461.           }
  462.         }
  463.        
  464.         Var url As New CScriptUrl();
  465.         url.Parameters.Add('Verwaltung', 'beam');
  466.        url.Parameters.Add('Dienst', 'beamFromShip');
  467.        url.Parameters.Add('DestShip', ship.ShipID);
  468.        url.Parameters.Add('Myhip', myCurrentShip.ShipID);
  469.        url.Parameters.Add('fleetID', myFleetID);
  470.        
  471.         row.Cells.Item(zaehler).Add(New CHtmlLinkButton('Von Schiff beamen', url, 'Von Schiff beamen'));
  472.        
  473.         url = New CScriptUrl();
  474.         url.Parameters.Add('Verwaltung', 'beam');
  475.        url.Parameters.Add('Dienst', 'beamToShip');
  476.        url.Parameters.Add('DestShip', ship.ShipID);
  477.        url.Parameters.Add('Myhip', myCurrentShip.ShipID);
  478.        url.Parameters.Add('fleetID', myFleetID);
  479.        
  480.         row.Cells.Item(zaehler + 1).Add(New CHtmlLinkButton('Zu  Schiff beamen', url, 'Zu Schiff beamen'));
  481.        
  482.         row = tableWare.AddRow();
  483.       }
  484.      
  485.       If(myCurrentShip.Sector.IsColonised){
  486.        
  487.         zaehler = tmpZ ;
  488.         addBasicColInfos(myCurrentShip, 0, row);
  489.         If(CheckAllowedColo(myCurrentShip.Sector.SectorID)){
  490.           mycol = New CMyColony(myCurrentShip.MapPosition.X, myCurrentShip.MapPosition.Y);
  491.           goods = New CGoodsInfoEnumerator();
  492.           While (goods.Next())
  493.           {
  494.             g = goods.CurrentWarenInfo.GoodsType;
  495.            
  496.             If(mycol.StockRoom.Amount(g) > 0){
  497.               row.Cells.Item(zaehler).Add(mycol.StockRoom.Amount(g));
  498.              
  499.             }
  500.            
  501.             wNull = ware[g] is Null;
  502.             If (not wNull AND ware[g] > 0) {
  503.               zaehler = zaehler + 1;
  504.             }
  505.            
  506.           }
  507.          
  508.         }Else{
  509.           goods = New CGoodsInfoEnumerator();
  510.           While (goods.Next())
  511.           {
  512.             g = goods.CurrentWarenInfo.GoodsType;
  513.             wNull = ware[g] is Null;
  514.             If (not wNull AND ware[g] > 0) {
  515.               zaehler = zaehler + 1;
  516.             }
  517.           }
  518.         }
  519.        
  520.        
  521.        
  522.         url = New CScriptUrl();
  523.         url.Parameters.Add('Verwaltung', 'beam');
  524.        url.Parameters.Add('Dienst', 'beamFromColo');
  525.        url.Parameters.Add('DestColoId', myCurrentShip.Sector.SectorID;
  526.        
  527.         url.Parameters.Add('Myhip', myCurrentShip.ShipID);
  528.        url.Parameters.Add('fleetID', myFleetID);
  529.        
  530.         row.Cells.Item(zaehler).Add(New CHtmlLinkButton('Von Kolonie beamen', url, 'Von Kolonie beamen'));
  531.        
  532.         url = New CScriptUrl();
  533.         url.Parameters.Add('Verwaltung', 'beam');
  534.        url.Parameters.Add('Dienst', 'beamToColo');
  535.        url.Parameters.Add('DestColoId', myCurrentShip.Sector.SectorID);
  536.        
  537.         url.Parameters.Add('Myhip', myCurrentShip.ShipID);
  538.        url.Parameters.Add('fleetID', myFleetID);
  539.        
  540.         row.Cells.Item(zaehler + 1).Add(New CHtmlLinkButton('Zu  Kolonie beamen', url, 'Zu Kolonie beamen'));
  541.        
  542.        
  543.         row = tableWare.AddRow();
  544.       }
  545.      
  546.       //  row.Cells.Item(0).ColumnSpan = 3;
  547.       row.Cells.Item(2).Add("Gesamt");
  548.       zaehler = tmpZ;
  549.       goods = New CGoodsInfoEnumerator();
  550.       While (goods.Next())
  551.       {
  552.         g = goods.CurrentWarenInfo.GoodsType;
  553.         wNull = ware[g] is Null;
  554.         If (not wNull AND ware[g] > 0) {
  555.           row.Cells.Item(zaehler).Add(ware[g]);
  556.           zaehler = zaehler + 1;
  557.         }
  558.       }
  559.       ;
  560.       row = tableWare.AddRow();
  561.       zaehler = 0;
  562.       zaehler = AddBasicShipHeader(row, zaehler)
  563.       AddResHeader(row, ware, zaehler);
  564.      
  565.      
  566.     }
  567.   }
  568.  
  569.  
  570.   If(warnSRS){
  571.     Var d As New CHtmlDiv();
  572.     d.Add("Scan möglicherweise unvollständig. Einige Schiffe haben ein deaktiviertes SRS!");
  573.     d.Style.Add('color', 'red');
  574.    d.Style.Add('font-size', '20px');
  575.    Response.Add(d);
  576.   }
  577.  
  578. }
  579. Function CheckAllowedColo(id As String) As Boolean{
  580.  
  581.   Var colos As New CColonyEnumerator();
  582.   While (colos.Next())
  583.   {
  584.     If(colos.CurrentColony.SectorID = id){
  585.       Return True;
  586.     }
  587.   }
  588.   Return False;
  589. }
  590.  
  591. Function AddBasicShipHeader(row As CTableRow, counter As Integer)As Integer{
  592.   counter = 0;
  593.   row.Cells.Item(counter).Add('Bild');
  594.  row.Item(counter).CssClass = 'buttonbody';
  595.  counter = counter + 1;
  596.   row.Cells.Item(counter).Add('Name');
  597.  row.Item(counter).CssClass = 'buttonbody';
  598.  counter = counter + 1;
  599.   row.Cells.Item(counter).Add('Besitzer');
  600.  row.Item(counter).CssClass = 'buttonbody';
  601.  counter = counter + 1;
  602.   row.Cells.Item(counter).Add('Klasse');
  603.  row.Item(counter).CssClass = 'buttonbody';
  604.  counter = counter + 1;
  605.   Return counter;
  606.  
  607. }
  608. Function AddBasicShipInfo(row As CTableRow, counter As Integer, ship As CBaseShip)As Integer{
  609.   Var user As New CUser(ship.UserID)
  610.   counter = 0;
  611.   row.Cells.Item(counter).Add(ship.Definition.GetImage()));
  612.   counter = counter + 1;
  613.   row.Cells.Item(counter).Add(ship.GetNameHtml()));
  614.   counter = counter + 1;
  615.   row.Cells.Item(counter).Add(user.GetHtmlNameAndID(True));
  616.   counter = counter + 1;
  617.   row.Cells.Item(counter).Add(ship.Definition.GetNameHtml());
  618.   counter = counter + 1;
  619.   Return counter;
  620.  
  621. }
  622. Function AddExtendedShipHeader(row As CTableRow, counter As Integer) As Integer{
  623.   row.Cells.Item(counter).Add('Alarm');
  624.  row.Item(counter).CssClass = 'buttonbody';
  625.  counter = counter + 1;
  626.   row.Cells.Item(counter).Add('Hülle');
  627.  row.Item(counter).CssClass = 'buttonbody';
  628.  counter = counter + 1;
  629.   row.Cells.Item(counter).Add('Schilde');
  630.  row.Item(counter).CssClass = 'buttonbody';
  631.  counter = counter + 1;
  632.   row.Cells.Item(counter).Add('Schildstatus');
  633.  row.Item(counter).CssClass = 'buttonbody';
  634.  counter = counter + 1;
  635.   row.Cells.Item(counter).Add('Waffen');
  636.  row.Item(counter).CssClass = 'buttonbody';
  637.  counter = counter + 1;
  638.   row.Cells.Item(counter).Add('Energie');
  639.  row.Item(counter).CssClass = 'buttonbody';
  640.  counter = counter + 1;
  641.   row.Cells.Item(counter).Add('EPS');
  642.  row.Item(counter).CssClass = 'buttonbody';
  643.  counter = counter + 1;
  644.   row.Cells.Item(counter).Add('Crew');
  645.  row.Item(counter).CssClass = 'buttonbody';
  646.  counter = counter + 1;
  647.   Return counter;
  648. }
  649. Function AddExtendedShipInfo(row As CTableRow, counter As Integer, ship As CBaseShip, srsActive As Boolean, own As Boolean)As Integer{
  650.   Var tmpShip As CShip;
  651.   If(srsActive){
  652.     tmpShip = ship;
  653.     If (tmpShip.AlertLevel = EAlertLevel.Red) {
  654.       row.Cells.Item(counter).Add('Rot');
  655.      row.Cells.Item(counter).Style.Add('color', 'red');
  656.    } ElseIf (tmpShip.AlertLevel = EAlertLevel.Green) {
  657.       row.Cells.Item(counter).Add('Grün');
  658.      row.Cells.Item(counter).Style.Add('color', 'green');
  659.    } Else {
  660.       row.Cells.Item(counter).Add('Gelb');
  661.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  662.    }
  663.   }Else{
  664.     row.Cells.Item(counter).Add('???');
  665.    
  666.   }
  667.   counter = counter + 1;
  668.   If(srsActive){
  669.     tmpShip = ship;
  670.     row.Cells.Item(counter).Add(tmpShip.Hull);
  671.    
  672.     If(tmpShip.Hull < tmpShip.Definition.Hull){
  673.       row.Cells.Item(counter).Style.Add('color', 'red');
  674.    }
  675.    
  676.   }Else{
  677.     row.Cells.Item(counter).Add("???");
  678.   }
  679.   row.Cells.Item(counter).Add('/');
  680.  row.Cells.Item(counter).Add(ship.Definition.Hull);
  681.   If(own){
  682.     Var tmpShip2 As CMyShip = tmpShip;
  683.     row.Cells.Item(counter).Add("(+" & tmpShip2 .Tick.ChangeHull & ")");
  684.   }
  685.   counter = counter + 1;
  686.   If(srsActive){
  687.     tmpShip = ship;
  688.     row.Cells.Item(counter).Add(tmpShip.Shields);
  689.     If(tmpShip.Shields < tmpShip.Definition.Shields AND tmpShip.Shields <> - 1){
  690.      
  691.       row.Cells.Item(counter).Style.Add('color', 'red');
  692.    }
  693.   }Else{
  694.     row.Cells.Item(counter).Add("???");
  695.   }
  696.   row.Cells.Item(counter).Add('/');
  697.  row.Cells.Item(counter).Add(ship.Definition.Shields);
  698.   If(own){
  699.    
  700.     row.Cells.Item(counter).Add("(+" & CType(ship, CMyShip).Tick.ChangeShields & ")");
  701.   }
  702.   counter = counter + 1;
  703.   If(srsActive){
  704.     tmpShip = ship;
  705.    
  706.    
  707.    
  708.     If (tmpShip.ShieldsActive = True) {
  709.       row.Cells.Item(counter).Add('Aktiviert');
  710.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  711.    } Else {
  712.       row.Cells.Item(counter).Add('Deaktiviert');
  713.    }
  714.    
  715.    
  716.    
  717.    
  718.   }Else{
  719.     row.Cells.Item(counter).Add('???');
  720.  }
  721.   counter = counter + 1;
  722.   If(srsActive){
  723.     tmpShip = ship;
  724.     If (tmpShip.WeaponsActivated = True) {
  725.       row.Cells.Item(counter).Add('Aktiviert');
  726.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  727.    } Else {
  728.       row.Cells.Item(counter).Add('Deaktiviert');
  729.    }
  730.   }Else{
  731.     row.Cells.Item(counter).Add('???');
  732.  }
  733.   counter = counter + 1;
  734.   If(srsActive){
  735.     tmpShip = ship;
  736.     row.Cells.Item(counter).Add(tmpShip.Energy);
  737.   }Else{
  738.     row.Cells.Item(counter).Add("???");
  739.   }
  740.   row.Cells.Item(counter).Add('/');
  741.  row.Cells.Item(counter).Add(ship.Definition.Energy);
  742.   counter = counter + 1;
  743.   If(srsActive){
  744.     tmpShip = ship;
  745.     row.Cells.Item(counter).Add(tmpShip.Eps);
  746.   }Else{
  747.     row.Cells.Item(counter).Add("???");
  748.   }
  749.   row.Cells.Item(counter).Add('/');
  750.  row.Cells.Item(counter).Add(ship.Definition.EPS);
  751.   counter = counter + 1;
  752.   If(srsActive){
  753.     tmpShip = ship;
  754.     row.Cells.Item(counter).Add(tmpShip.Crew) ;
  755.     If(own){
  756.      
  757.       row.Cells.Item(counter).Add("/" & CType(tmpShip.Definition, CMyShipDefinition).CrewBasis);
  758.       If(tmpShip.Crew < CType(tmpShip.Definition, CMyShipDefinition).CrewBasis){
  759.        
  760.         row.Cells.Item(counter).Style.Add('color', 'red');
  761.      }
  762.     }
  763.   }Else{
  764.     row.Cells.Item(counter).Add("???");
  765.   }
  766.  
  767.   counter = counter + 1;
  768.   Return counter;
  769. }
  770. Function BeamInterface(){
  771.   zeigeIndex();
  772.  
  773.   Response.Add(New CHtmlSeperator('Beamen'));
  774.  Response.Add(New CHtmlNewLine());
  775.   Response.Add('Hinweis: Jede Aktion wird von der kompletten Flotte ausgeführt. Beamen von/zu Schiff/Kolonie: Jedes Schiff in der Flotte beamt die eingegebene Menge vom/zum Ziel');
  776.  Response.Add(New CHtmlNewLine());
  777.   Response.Add(New CHtmlNewLine());
  778.  
  779.  
  780.   Var myshipid As Integer = 0;
  781.   If(Request.Parameters.ContainsKey('Myhip')){
  782.    myshipid = Request.Parameters.item('Myhip');
  783.  }
  784.   If(Request.Form.ContainsKey('Myhip')){
  785.    myshipid = Request.Form.item('Myhip');
  786.  }
  787.   Var params As CObjectHashTable();
  788.   Var myship As New CMyShip(myshipid);
  789.   If(Request.Parameters.item('Dienst') = 'beamFromShip' or Request.Form.item('Dienst') = 'doBeamFromShip' or Request.Parameters.item('Dienst') = 'beamToShip' or Request.Form.item('Dienst') = 'doBeamToShip'){
  790.    
  791.    
  792.     Var DestShipid As Integer = 0;
  793.    
  794.     If(Request.Parameters.ContainsKey('DestShip')){
  795.      DestShipid = Request.Parameters.item('DestShip');
  796.    }
  797.     If(Request.Form.ContainsKey('DestShip')){
  798.      DestShipid = Request.Form.item('DestShip');
  799.    }
  800.    
  801.     Var destShip As CShip;
  802.     Var tmpShip As CShip;
  803.    
  804.    
  805.     For (Each tmpShip In myship.SRS) {
  806.       If(tmpShip.ShipID = DestShipid){
  807.         destShip = tmpShip;
  808.       }
  809.     }
  810.    
  811.     params = New CObjectHashTable();
  812.    
  813.    
  814.     params.Add('DestShip', destShip.ShipID);
  815.    params.Add('Myhip', myship.ShipID);
  816.    params.Add('fleetID', myFleetID);
  817.    
  818.     If(Request.Form.item('Dienst') = 'doBeamFromShip' or Request.Form.item('Dienst') = 'doBeamToShip'){
  819.      DoBeam(destShip, Null, Request.Form.item('Dienst'))
  820.    }
  821.     If(Request.Parameters.item('Dienst') = 'beamFromShip' or Request.Form.item('Dienst') = 'doBeamFromShip'){
  822.      params.Add('Dienst', 'doBeamFromShip');
  823.      
  824.       Var resList As CObjectHashTable = New CObjectHashTable ();
  825.       Var goods As New CGoodsInfoEnumerator();
  826.       While (goods.Next())
  827.       {
  828.         Var g As EGoodsType = goods.CurrentWarenInfo.GoodsType;
  829.         Var stNull As Boolean = destShip.StockRoom is Null;
  830.         If ( not stNull AND destShip. StockRoom.Amount(g) > 0) {
  831.           resList.Add(g, destShip. StockRoom.Amount(g))
  832.         }
  833.        
  834.       }
  835.       Response.Add("Flotte beamt von Schiff ");
  836.       Response.Add(destShip.GetNameHtmlAndID());
  837.       GBeamInterface(resList, params);
  838.     }Else{
  839.       Response.Add("Flotte beamt zu Schiff ");
  840.       Response.Add(destShip.GetNameHtmlAndID());
  841.       params.Add('Dienst', 'doBeamToShip');
  842.      GBeamInterface(Null, params);
  843.     }
  844.   }ElseIf(Request.Parameters.item('Dienst') = 'beamFromColo' or Request.Form.item('Dienst') = 'doBeamFromColo' or Request.Parameters.item('Dienst') = 'beamToColo' or Request.Form.item('Dienst') = 'doBeamToColo'){
  845.    
  846.    
  847.     Var DestColoId As Integer = 0;
  848.    
  849.    
  850.     If(Request.Parameters.ContainsKey('DestColoId')){
  851.      DestColoId = Request.Parameters.item('DestColoId');
  852.    }
  853.     If(Request.Form.ContainsKey('DestColoId')){
  854.      DestColoId = Request.Form.item('DestColoId');
  855.    }
  856.    
  857.    
  858.     If(Request.Form.item('Dienst') = 'doBeamFromColo' or Request.Form.item('Dienst') = 'doBeamToColo'){
  859.      DoBeam(Null, DestColoId, Request.Form.item('Dienst'))
  860.    }
  861.     params = New CObjectHashTable();
  862.     params.Add('DestColoId', DestColoId);
  863.    
  864.     params.Add('Myhip', myship.ShipID);
  865.    params.Add('fleetID', myFleetID);
  866.    
  867.     If(Request.Parameters.item('Dienst') = 'beamFromColo' or Request.Form.item('Dienst') = 'doBeamFromColo'){
  868.      params.Add('Dienst', 'doBeamFromColo');
  869.      
  870.      
  871.       If(CheckAllowedColo(DestColoId)){
  872.         Var myColo As New CMyColony(DestColoId);
  873.         resList = New CObjectHashTable ();
  874.         goods = New CGoodsInfoEnumerator();
  875.         While (goods.Next())
  876.         {
  877.           g = goods.CurrentWarenInfo.GoodsType;
  878.          
  879.           If (myColo.StockRoom.Amount(g) > 0) {
  880.             resList.Add(g, myColo.StockRoom.Amount(g))
  881.           }
  882.          
  883.         }
  884.         Response.Add("Flotte beamt von Kolonie " & myColo.Name);
  885.       }Else{
  886.         resList = Null;
  887.         Response.Add("Flotte beamt von Kolonie " & DestColoId);
  888.       }
  889.      
  890.      
  891.       GBeamInterface(resList, params);
  892.     }Else{
  893.       params.Add('Dienst', 'doBeamToColo');
  894.      If(CheckAllowedColo(DestColoId)){
  895.         myColo = New CMyColony(DestColoId);
  896.         Response.Add("Flotte beamt zu Kolonie " & myColo.Name);
  897.       }Else{
  898.         Response.Add("Flotte beamt von Kolonie " & DestColoId);
  899.       }
  900.      
  901.      
  902.       GBeamInterface(Null, params);
  903.     }
  904.    
  905.   }
  906.   Response.Add(New CHtmlSeperator('SRS-Scan'));
  907.  zeigeSrsWare(False);
  908.  
  909. }
  910. Function DoBeam(destship As CShip, destColoId As String, direction As String){
  911.   Var myCurrentShip As CMyShip;
  912.   If (Request.Form.ContainsKey('chkFleetCommand'))
  913.  {
  914.     If (debug = True) {
  915.       WriteLine("FleetCommand " & myFleet.NameAndID);
  916.     }
  917.    
  918.     InnerDoBeam(myFleet.Action, destship, destColoId, direction);
  919.   }Else{
  920.     If (debug = True) {
  921.       WriteLine("NonFleetCommand");
  922.     }
  923.    
  924.     For (Each myCurrentShip In myFleet.Ships) {
  925.       If (debug = True) {
  926.         WriteLine("Schiff " & myCurrentShip.ShipID);
  927.       }
  928.       InnerDoBeam(myCurrentShip.Action, destship, destColoId, direction);
  929.      
  930.     }
  931.    
  932.   }
  933.   Var Span As New CHtmlDiv();
  934.   Span.Add("Vorgang abgeschlossen");
  935.   Span.Style.Add('color', '#FFCC00');
  936.  Response.Add(Span);
  937.   Response.Add(New CHtmlNewLine());
  938. }
  939. Function InnerDoBeam(manager As CBaseShipManager, destship As CShip, destColoId As String, direction As String){
  940.  
  941.   Var goods As New CGoodsInfoEnumerator();
  942.   While (goods.Next())
  943.   {
  944.     Var g As EGoodsType = goods.CurrentWarenInfo.GoodsType;
  945.     If(Request.Form.ContainsKey('ctrl_' & g) and Request.Form.item('ctrl_' & g) <> ""){
  946.      Var tmp As Integer = Request.Form.item('ctrl_' & g);
  947.      If(tmp > 0){
  948.         If(Request.Form.item('Dienst') = 'doBeamFromColo'){
  949.          manager.TransferFromColony(destColoId, tmp, g);
  950.         }ElseIf(Request.Form.item('Dienst') = 'doBeamToColo'){
  951.          manager.TransferToColony(destColoId, tmp, g);
  952.         }ElseIf(Request.Form.item('Dienst') = 'doBeamFromShip'){
  953.          manager.TransferFromShip(destship.ShipID, tmp, g);
  954.         }ElseIf(Request.Form.item('Dienst') = 'doBeamToShip'){
  955.          manager.TransferToShip(destship.ShipID, tmp, g);
  956.         }
  957.        
  958.        
  959.         WriteLine(direction & " " & g & " " & tmp);
  960.       }
  961.      
  962.     }
  963.   }
  964.  
  965. }
  966. Function GBeamInterface(resList As CObjectHashTable, params As CObjectHashTable){
  967.  
  968.  
  969.   Var beamTable As New CTable(3);
  970.   Var form As New CHtmlForm(New CScriptUrl());
  971.   form.Add(beamTable);
  972.   Response.Add(form);
  973.  
  974.   Var goods As New CGoodsInfoEnumerator();
  975.   While (goods.Next())
  976.   {
  977.     Var g As EGoodsType = goods.CurrentWarenInfo.GoodsType;
  978.    
  979.     If(resList is Null or resList.ContainsKey(g)){
  980.       Var row As CTableRow = beamTable.AddRow();
  981.      
  982.      
  983.       row.Cells.item(0).Add(g);
  984.       Var resListNull As Boolean = resList is Null;
  985.       If( not resListNull and resList. ContainsKey(g)){
  986.         row.Cells.item(1).Add(resList.Item(g));
  987.       }
  988.      
  989.       row.Cells.item(2).Add(New CHtmlInput('', "ctrl_" & g, EHtmlInputType.Text));
  990.    }
  991.   }
  992.   form.Add(New CHtmlInput('beam', 'Verwaltung', EHtmlInputType.Hidden));
  993.  
  994.   Var param As DictionaryEntry ;
  995.   For (Each param In params) {
  996.     form.Add(New CHtmlInput(param.Value, param.Key, EHtmlInputType.Hidden));
  997.   }
  998.  
  999.   form.Add(New CHtmlCheckBox (False, 'chkFleetCommand', 'Flottenaktion?'));
  1000.  form.Add(New CHtmlSubmitButton('Beamen', 'actionBeam', 'Beamen'));
  1001. }
  1002.  
  1003.  
  1004. //----------------------------------------------------------------------------
  1005. //Zeigt den Zustand der anwesenden Schiffe an
  1006. Function zeigeSrsKampf() {
  1007.  
  1008.   Var myCurrentShip As CMyShip
  1009.   Var KoordsList As New CObjectList();
  1010.  
  1011.   zeigeIndex();
  1012.   Var warnSRS As Boolean = False;
  1013.   //myCurrentShip = New CMyShip(myFleet.Ships.Item(0).ShipID);
  1014.   For (Each myCurrentShip In myFleet.Ships) {
  1015.     If( not myCurrentShip.SRSIsActive){
  1016.       warnSRS = True;
  1017.      
  1018.     }
  1019.    
  1020.     If( not KoordsList.Contains(myCurrentShip.MapPosition.InOrbit & myCurrentShip.MapPosition.X & "|" & myCurrentShip.MapPosition.Y & "#" & myCurrentShip.MapPosition.MapID)){
  1021.       Response.Add(New CHtmlBreak()); Response.Add(New CHtmlBreak());
  1022.       KoordsList.Add(myCurrentShip.MapPosition.InOrbit & myCurrentShip.MapPosition.X & "|" & myCurrentShip.MapPosition.Y & "#" & myCurrentShip.MapPosition.MapID);
  1023.       Var ship As CBaseShip;
  1024.       Var counter As Integer = 0;
  1025.       Var tableKampf As New CTable(12);
  1026.      
  1027.      
  1028.       // SRSList.Add(MyShip);
  1029.       Response.Add("Sektor: ");
  1030.       If(myCurrentShip.MapPosition.InOrbit){
  1031.         Response.Add("@");
  1032.       }
  1033.       Response.Add (myCurrentShip.MapPosition.X & "|" & myCurrentShip.MapPosition.Y & "#" & myCurrentShip.MapPosition.MapID);
  1034.       Response.Add(myCurrentShip.GalaxyMapItem.GetImage());
  1035.       If(CheckAllowedColo(myCurrentShip.Sector.SectorID)){
  1036.        
  1037.         Response.Add(" eigene Kolonie");
  1038.        
  1039.        
  1040.       }
  1041.       Response.Add(New CHtmlBreak());
  1042.       Response.Add(tableKampf);
  1043.       Var row As CTableRow = tableKampf.AddRow();
  1044.      
  1045.       counter = 0;
  1046.       counter = AddBasicShipHeader(row, counter);
  1047.       counter = AddExtendedShipHeader(row, counter);
  1048.      
  1049.       For (Each ship In myCurrentShip.SRS) {
  1050.        
  1051.         row = tableKampf.AddRow();
  1052.         counter = 0;
  1053.         counter = AddBasicShipInfo(row, counter, ship);
  1054.         counter = AddExtendedShipInfo(row, counter, ship, myCurrentShip.SRSIsActive, False);
  1055.        
  1056.       }
  1057.       counter = counter + 1;
  1058.       Response.Add(tableKampf);
  1059.      
  1060.       If(myCurrentShip.Sector.IsColonised){
  1061.         row = tableKampf.AddRow();
  1062.         addBasicColInfos(myCurrentShip, 0, row);
  1063.       }
  1064.      
  1065.       row = tableKampf.AddRow();
  1066.      
  1067.       counter = 0;
  1068.       counter = AddBasicShipHeader(row, counter);
  1069.       counter = AddExtendedShipHeader(row, counter);
  1070.      
  1071.     }
  1072.   }
  1073.   If(warnSRS){
  1074.     Var d As New CHtmlDiv();
  1075.     d.Add("Scan möglicherweise unvollständig. Einige Schiffe haben ein deaktiviertes SRS!");
  1076.     d.Style.Add('color', 'red');
  1077.    d.Style.Add('font - size', '20px');
  1078.    Response.Add(d);
  1079.   }
  1080.  
  1081. }
  1082. //----------------------------------------------------------------------------
  1083.  
  1084. //----------------------------------------------------------------------------
  1085. //Zugang verweigert
  1086. Function accessDenied() {
  1087.  
  1088.   Response.Add(New CHtmlNewLine());
  1089.   Response.Add(deniedText);
  1090.   Response.Add(New CHtmlNewLine());
  1091.  
  1092. }
  1093.  
  1094. //----------------------------------------------------------------------------
  1095. //Zeigt den Status der Flotte an
  1096. Function flottenstatus(Success As Boolean, preview As Boolean) {
  1097.   Var ship As CMyShip
  1098.   Var counter As Integer = 0;
  1099.   Var definition As CMyShipDefinition;
  1100.   If(not preview){
  1101.     zeigeIndex();
  1102.   }
  1103.   If(Success){
  1104.     Var Span As New CHtmlSpan();
  1105.     Span.Add("Die Aktion wurde ausgeführt");
  1106.     Span.Style.Add('color', '#FFCC00');
  1107.    
  1108.     Response.Add(New CHtmlNewLine());
  1109.     Response.Add(Span);
  1110.     Response.Add(New CHtmlNewLine());
  1111.    
  1112.   }
  1113.   Var tableKampf As New CTable(24);
  1114.   Response.Add(tableKampf);
  1115.   Var row As CTableRow = tableKampf.AddRow();
  1116.  
  1117.   counter = 0;
  1118.   counter = AddBasicShipHeader(row, counter);
  1119.   counter = AddExtendedShipHeader(row, counter);
  1120.  
  1121.   row.Cells.Item(counter).Add('Ionen - Level');
  1122.  row.Item(counter).CssClass = 'buttonbody';
  1123.  counter = counter + 1;
  1124.  
  1125.   row.Cells.Item(counter).Add('SRS');
  1126.  row.Item(counter).CssClass = 'buttonbody';
  1127.  counter = counter + 1;
  1128.   row.Cells.Item(counter).Add('LRS');
  1129.  row.Item(counter).CssClass = 'buttonbody';
  1130.  counter = counter + 1;
  1131.  
  1132.   row.Cells.Item(counter).Add('Computer');
  1133.  row.Item(counter).CssClass = 'buttonbody';
  1134.  counter = counter + 1;
  1135.   row.Cells.Item(counter).Add('Schadenskontrolle');
  1136.  row.Item(counter).CssClass = 'buttonbody';
  1137.  counter = counter + 1;
  1138.  
  1139.   row.Cells.Item(counter).Add('Reserve');
  1140.  row.Item(counter).CssClass = 'buttonbody';
  1141.  counter = counter + 1;
  1142.   row.Cells.Item(counter).Add('Warpkern');
  1143.  row.Item(counter).CssClass = 'buttonbody';
  1144.  counter = counter + 1;
  1145.   row.Cells.Item(counter).Add('Warpkern');
  1146.  row.Item(counter).CssClass = 'buttonbody';
  1147.  counter = counter + 1;
  1148.   row.Cells.Item(counter).Add('Gondeln');
  1149.  row.Item(counter).CssClass = 'buttonbody';
  1150.  counter = counter + 1;
  1151.   row.Cells.Item(counter).Add('Standort');
  1152.  row.Item(counter).CssClass = 'buttonbody';
  1153.  counter = counter + 1;
  1154.   row.Cells.Item(counter).Add('Bild');
  1155.  row.Item(counter).CssClass = 'buttonbody';
  1156.  counter = counter + 1;
  1157.   row.Cells.Item(counter).Add('Deflektor');
  1158.  row.Item(counter).CssClass = 'buttonbody';
  1159.  
  1160.   For (Each ship In myFleet.Ships) {
  1161.     definition = ship.Definition;
  1162.     row = tableKampf.AddRow();
  1163.     counter = 0;
  1164.     counter = AddBasicShipInfo(row, counter, ship);
  1165.     counter = AddExtendedShipInfo(row, counter, ship, True, True);
  1166.    
  1167.     row.Cells.Item(counter).Add(ship.ShieldsIonLevel);
  1168.    
  1169.     counter = counter + 1;
  1170.     If (ship.SRSIsActive = True) {
  1171.       row.Cells.Item(counter).Add('Aktiviert');
  1172.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  1173.    } Else {
  1174.       row.Cells.Item(counter).Add('Deaktiviert');
  1175.    }
  1176.     counter = counter + 1;
  1177.     If (ship.LRSIsActive = True) {
  1178.       row.Cells.Item(counter).Add('Aktiviert');
  1179.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  1180.    } Else {
  1181.       row.Cells.Item(counter).Add('Deaktiviert');
  1182.    }
  1183.    
  1184.     counter = counter + 1;
  1185.     If (ship.MainComputerIsActive = True) {
  1186.       row.Cells.Item(counter).Add('Aktiviert');
  1187.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  1188.    } Else {
  1189.       row.Cells.Item(counter).Add('Deaktiviert');
  1190.    }
  1191.     counter = counter + 1;
  1192.     If (ship.DamageControlActive = True) {
  1193.       row.Cells.Item(counter).Add('Aktiviert');
  1194.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  1195.    } Else {
  1196.       row.Cells.Item(counter).Add('Deaktiviert');
  1197.    }
  1198.    
  1199.    
  1200.     counter = counter + 1;
  1201.     row.Cells.Item(counter).Add(ship.EmergencyBattery);
  1202.     counter = counter + 1;
  1203.     row.Cells.Item(counter).Add(ship.WarpCore & "(+" & ship.Tick.ChangeWarpcore & ")");
  1204.    
  1205.     counter = counter + 1;
  1206.     If (ship.WarpCoreIsActive = True) {
  1207.       row.Cells.Item(counter).Add('Aktiviert');
  1208.      row.Cells.Item(counter).Style.Add('color', 'yellow');
  1209.    } Else {
  1210.       row.Cells.Item(counter).Add('Deaktiviert');
  1211.    }
  1212.    
  1213.    
  1214.     counter = counter + 1;
  1215.     row.Cells.Item(counter).Add(ship.FlightRange);
  1216.     row.Cells.Item(counter).Add(' / ');
  1217.    row.Cells.Item(counter).Add(definition.FlightRange & "(+" & ship.Tick.ChangeFlightRange & ")");
  1218.     counter = counter + 1;
  1219.     If (ship.MapPosition.InOrbit = True) {
  1220.       row.Cells.Item(counter).Add('@');
  1221.    }
  1222.     row.Cells.Item(counter).Add(ship.MapPosition.X);
  1223.     row.Cells.Item(counter).Add('|');
  1224.    row.Cells.Item(counter).Add(ship.MapPosition.Y & "#" & ship.MapPosition.MapID));
  1225.    
  1226.     counter = counter + 1;
  1227.     row.Cells.Item(counter).Add(ship.GalaxyMapItem.GetImage());
  1228.     counter = counter + 1;
  1229.    
  1230.     row.Cells.Item(counter).Add(ship.Deflector & "/" & ship.Definition.Deflector & "(+" & ship.Tick.ChangeDeflector & ")");
  1231.    
  1232.    
  1233.   }
  1234.   Response.Add(tableKampf);
  1235.   row = tableKampf.AddRow();
  1236.  
  1237.   counter = 0;
  1238.   counter = AddBasicShipHeader(row, counter);
  1239.   counter = AddExtendedShipHeader(row, counter);
  1240.  
  1241.   row.Cells.Item(counter).Add('Ionen - Level');
  1242.  row.Item(counter).CssClass = 'buttonbody';
  1243.  counter = counter + 1;
  1244.   row.Cells.Item(counter).Add('SRS');
  1245.  row.Item(counter).CssClass = 'buttonbody';
  1246.  counter = counter + 1;
  1247.   row.Cells.Item(counter).Add('LRS');
  1248.  row.Item(counter).CssClass = 'buttonbody';
  1249.  counter = counter + 1;
  1250.  
  1251.   row.Cells.Item(counter).Add('Computer');
  1252.  row.Item(counter).CssClass = 'buttonbody';
  1253.  counter = counter + 1;
  1254.   row.Cells.Item(counter).Add('Schadenskontrolle');
  1255.  row.Item(counter).CssClass = 'buttonbody';
  1256.  
  1257.   counter = counter + 1;
  1258.   row.Cells.Item(counter).Add('Reserve');
  1259.  row.Item(counter).CssClass = 'buttonbody';
  1260.  counter = counter + 1;
  1261.   row.Cells.Item(counter).Add('Warpkern');
  1262.  row.Item(counter).CssClass = 'buttonbody';
  1263.  counter = counter + 1;
  1264.   row.Cells.Item(counter).Add('Warpkern');
  1265.  row.Item(counter).CssClass = 'buttonbody';
  1266.  counter = counter + 1;
  1267.   row.Cells.Item(counter).Add('Gondeln');
  1268.  row.Item(counter).CssClass = 'buttonbody';
  1269.  counter = counter + 1;
  1270.   row.Cells.Item(counter).Add('Standort');
  1271.  row.Item(counter).CssClass = 'buttonbody';
  1272.  counter = counter + 1;
  1273.   row.Cells.Item(counter).Add('Bild');
  1274.  row.Item(counter).CssClass = 'buttonbody';
  1275.  counter = counter + 1;
  1276.   row.Cells.Item(counter).Add('Deflektor');
  1277.  row.Item(counter).CssClass = 'buttonbody';
  1278.  
  1279.  
  1280.  
  1281.   Response.Add(New CHtmlNewLine());
  1282.   Response.Add(New CHtmlNewLine());
  1283.   If(not preview){
  1284.     Var tableActions As New CTable(6);
  1285.     Response.Add(tableActions);
  1286.     Var tableActionsRow As CTableRow = tableActions.AddRow();
  1287.     tableActionsRow.Style.Add('vertical - align', 'top');
  1288.    // ALarmstufe ändern
  1289.     Var formAlert As New CHtmlForm(New CScriptUrl());
  1290.     Var tableAlert As New CTable(1);
  1291.    
  1292.     formAlert.Add(tableAlert);
  1293.     tableActionsRow.Cells.Item(0).Add(formAlert);
  1294.    
  1295.     Var rowAlert As CTableRow = tableAlert.AddRow();
  1296.     rowAlert.Cells.Item(0).Add(New CHtmlInput('kampfstatus', 'Verwaltung', EHtmlInputType.Hidden));
  1297.    rowAlert.Cells.Item(0).Add(New CHtmlInput('alarmstufe', 'Dienst', EHtmlInputType.Hidden));
  1298.    rowAlert.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1299.    
  1300.    
  1301.     rowAlert.Cells.Item(0).Add('Alarmstufe');
  1302.    rowAlert.Item(0).CssClass = 'buttonbody';
  1303.    
  1304.     rowAlert = tableAlert.AddRow();
  1305.     rowAlert.Cells.Item(0).Add(New CHtmlSubmitButton('Rot', 'Rot', 'Alarmstufe Rot'));
  1306.    
  1307.     rowAlert = tableAlert.AddRow();
  1308.     rowAlert.Cells.Item(0).Add(New CHtmlSubmitButton('Gelb', 'Gelb', 'Alarmstufe Gelb'));
  1309.    
  1310.     rowAlert = tableAlert.AddRow();
  1311.     rowAlert.Cells.Item(0).Add(New CHtmlSubmitButton('Grün', 'Grün ', 'Alarmstufe Grün'));
  1312.    
  1313.     rowAlert = tableAlert.AddRow();
  1314.     rowAlert.Cells.Item(0).Add(New CHtmlCheckBox (False, 'chkFleetCommand', 'Flottenaktion?'));
  1315.    
  1316.     // Schild ein-/ausschalten
  1317.     Var formShield As New CHtmlForm(New CScriptUrl());
  1318.     Var tableShield As New CTable(1);
  1319.     Var rowShield As CTableRow = tableShield.AddRow();
  1320.     formShield.Add(tableShield);
  1321.     tableActionsRow.Cells.Item(1).Add(formShield);
  1322.    
  1323.     rowShield.Cells.Item(0).Add(New CHtmlInput('kampfstatus', 'Verwaltung', EHtmlInputType.Hidden));
  1324.    rowShield.Cells.Item(0).Add(New CHtmlInput('schild', 'Dienst', EHtmlInputType.Hidden));
  1325.    rowShield.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1326.    
  1327.    
  1328.    
  1329.     rowShield.Cells.Item(0).Add('Schild');
  1330.    rowShield.Item(0).CssClass = 'buttonbody';
  1331.    
  1332.     rowShield = tableShield.AddRow();
  1333.     rowShield.Cells.Item(0).Add(New CHtmlSubmitButton('Aktivieren', 'on', 'Schild aktivieren'));
  1334.    
  1335.     rowShield = tableShield.AddRow();
  1336.     rowShield.Cells.Item(0).Add(New CHtmlSubmitButton('Deaktivieren', 'off', 'Schild deaktivieren'));
  1337.    
  1338.     rowShield = tableShield.AddRow();
  1339.     rowShield.Cells.Item(0).Add(New CHtmlCheckBox (False, 'chkFleetCommand', 'Flottenaktion?'));
  1340.    
  1341.    
  1342.    
  1343.     // Computer de-/aktivieren
  1344.     Var formLRS As New CHtmlForm(New CScriptUrl());
  1345.     Var tableLRS As New CTable(1);
  1346.     Var rowLRS As CTableRow = tableLRS.AddRow();
  1347.     formLRS.Add(tableLRS);
  1348.     tableActionsRow.Cells.Item(2).Add(formLRS);
  1349.    
  1350.     rowLRS.Cells.Item(0).Add(New CHtmlInput('kampfstatus', 'Verwaltung', EHtmlInputType.Hidden));
  1351.    rowLRS.Cells.Item(0).Add(New CHtmlInput('computer', 'Dienst', EHtmlInputType.Hidden));
  1352.    rowLRS.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1353.    
  1354.    
  1355.     rowLRS.Cells.Item(0).Add('Computer');
  1356.    rowLRS.Item(0).CssClass = 'buttonbody';
  1357.    
  1358.     rowLRS = tableLRS.AddRow();
  1359.     rowLRS.Cells.Item(0).Add(New CHtmlSubmitButton('Aktivieren', 'on', 'LRS aktivieren'));
  1360.    
  1361.     rowLRS = tableLRS.AddRow();
  1362.     rowLRS.Cells.Item(0).Add(New CHtmlSubmitButton('Deaktivieren', 'off', 'LRS deaktivieren'));
  1363.    
  1364.     rowLRS = tableLRS.AddRow();
  1365.     rowLRS.Cells.Item(0).Add(New CHtmlCheckBox (False, 'chkFleetCommand', 'Flottenaktion?'));
  1366.    
  1367.     (False, 'chkFleetCommand', 'Flottenaktion?'));
  1368.    
  1369.     // Schilde aufladen
  1370.     Var formShieldRec As New CHtmlForm(New CScriptUrl());
  1371.     Var tableShieldRec As New CTable(1);
  1372.     Var rowShieldRec As CTableRow = tableShieldRec.AddRow();
  1373.     formShieldRec.Add(tableShieldRec);
  1374.     tableActionsRow.Cells.Item(3).Add(formShieldRec);
  1375.    
  1376.     rowShieldRec.Cells.Item(0).Add('Schilde Aufladen');
  1377.    rowShieldRec.Item(0).CssClass = 'buttonbody';
  1378.    rowShieldRec = tableShieldRec.AddRow();
  1379.     rowShieldRec.Cells.Item(0).Add("Energie ");
  1380.     rowShieldRec.Cells.Item(0).Add(New CHtmlInput('', 'Wert', EHtmlInputType.Text));//w1
  1381.    rowShieldRec.Cells.Item(0).Add('');
  1382.    rowShield = tableShield.AddRow();
  1383.     rowShieldRec.Cells.Item(0).Add(New CHtmlInput('kampfstatus', 'Verwaltung', EHtmlInputType.Hidden));
  1384.    rowShieldRec.Cells.Item(0).Add(New CHtmlInput('schildeladen', 'Dienst', EHtmlInputType.Hidden));
  1385.    rowShieldRec.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1386.    rowShieldRec.Cells.Item(0).Add(New CHtmlSubmitButton('Schilde Aufladen', 'Schilde aufladen'));
  1387.    rowShieldRec = tableShieldRec.AddRow();
  1388.     rowShieldRec.Cells.Item(0).Add(New CHtmlCheckBox (False, 'chkFleetCommand', 'Flottenaktion?'));
  1389.    // Reserve Batterie entladen
  1390.    
  1391.     // Warpkern nachfüllen
  1392.     Var formWk As New CHtmlForm(New CScriptUrl());
  1393.     Var tableWk As New CTable(1);
  1394.     Var rowWk As CTableRow = tableWk.AddRow();
  1395.     formWk.Add(tableWk);
  1396.     tableActionsRow.Cells.Item(4).Add(formWk);
  1397.    
  1398.     rowWk.Cells.Item(0).Add('Warpkern füllen');
  1399.    rowWk.Item(0).CssClass = 'buttonbody';
  1400.    Var url As New CScriptUrl();
  1401.     url.Parameters.Add('Verwaltung', 'wkfuellenMain');
  1402.    url.Parameters.Add('Dienst', '');
  1403.    url.Parameters.Add('Wert', '');
  1404.    url.Parameters.Add('fleetID', myFleetID);
  1405.    rowWk = tableWk.AddRow();
  1406.     rowWk.Cells.Item(0).Add(New CHtmlLinkButton('Warpkern nachfüllen', url, 'Warpkern nachfüllen'));
  1407.    
  1408.    
  1409.     url = New CScriptUrl();
  1410.     url.Parameters.Add('Verwaltung', 'kampfstatus');
  1411.    url.Parameters.Add('Dienst', 'wkState');
  1412.    url.Parameters.Add('Wert', 'on');
  1413.    url.Parameters.Add('fleetID', myFleetID);
  1414.    rowWk.Cells.Item(0).Add(New CHtmlLinkButton('Aktivieren', url, 'Warpkern aktivieren'));
  1415.    
  1416.     url = New CScriptUrl();
  1417.     url.Parameters.Add('Verwaltung', 'kampfstatus');
  1418.    url.Parameters.Add('Dienst', 'wkState');
  1419.    url.Parameters.Add('Wert', 'off');
  1420.    url.Parameters.Add('fleetID', myFleetID);
  1421.    rowWk.Cells.Item(0).Add(New CHtmlLinkButton('Deaktivieren', url, 'Warpkern deaktivieren'));
  1422.    
  1423.    
  1424.     // Rohstoffe sammeln
  1425.     Var formRes As New CHtmlForm(New CScriptUrl());
  1426.     Var tableRes As New CTable(1);
  1427.     Var rowRes As CTableRow = tableRes.AddRow();
  1428.     formRes.Add(tableRes);
  1429.     tableActionsRow.Cells.Item(5).Add(formRes);
  1430.    
  1431.     rowRes.Cells.Item(0).Add('Rohstoffe sammeln');
  1432.    rowRes.Item(0).CssClass = 'buttonbody';
  1433.    
  1434.    
  1435.     rowRes = tableRes.AddRow();
  1436.    
  1437.     rowRes.Cells.Item(0).Add(New CHtmlInput('kampfstatus', 'Verwaltung', EHtmlInputType.Hidden));
  1438.    rowRes.Cells.Item(0).Add(New CHtmlInput('collectRes', 'Dienst', EHtmlInputType.Hidden));
  1439.    rowRes.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1440.    rowRes.Cells.Item(0).Add("Energie ");
  1441.     rowRes.Cells.Item(0).Add(New CHtmlInput('', 'Wert', EHtmlInputType.Text));
  1442.    rowRes.Cells.Item(0).Add(New CHtmlSubmitButton('Iridium sammeln', 'collectIri'));
  1443.    
  1444.     rowRes.Cells.Item(0).Add(New CHtmlSubmitButton('Deuterium sammeln', 'collectDeut'));
  1445.    rowRes.Cells.Item(0).Add("Erfordert Featurepack!");
  1446.     rowRes = tableRes.AddRow();
  1447.     rowRes.Cells.Item(0).Add(New CHtmlCheckBox (False, 'chkFleetCommand', 'Flottenaktion?'));
  1448.  }
  1449. }
  1450.  
  1451. //----------------------------------------------------------------------------
  1452. //Flugkontrolle der Flotte Hauptmenü
  1453. Function flugkontrolleMain(destinations As CEntryList) {
  1454.   zeigeIndex();
  1455.   If (dienst = 'fliege') {
  1456.    fliege(destinations);
  1457.   } Else {
  1458.     flugkontrolle(destinations);
  1459.   }
  1460. }
  1461.  
  1462. //----------------------------------------------------------------------------
  1463. //Flugkontrolle der Flotte Auswahlbildschirm
  1464. Function flugkontrolle(destinations As CEntryList) {
  1465.  
  1466.  
  1467.  
  1468.   Response.Add(New CHtmlSeperator('Flugkontrolle'));
  1469.  Response.Add(New CHtmlNewLine());
  1470.  
  1471.   Response.Add("Erfordert Featurepack!");
  1472.   Response.Add(New CHtmlNewLine());
  1473.   Response.Add(New CHtmlNewLine());
  1474.   Response.Add(New CHtmlNewLine());
  1475.   Response.Add('Fliege zu Punkt');
  1476.  Response.Add(New CHtmlNewLine());
  1477.  
  1478.   Var url As New CScriptUrl();
  1479.   Var row As CTableRow
  1480.   Var table As New CTable(1);
  1481.   Response.Add(table);
  1482.   Var destination As DictionaryEntry;
  1483.  
  1484.   For (Each destination In destinations) {
  1485.     row = table.AddRow();
  1486.     url = New CScriptUrl();
  1487.     url.Parameters.Add('Verwaltung', 'flugkontrolle');
  1488.    url.Parameters.Add('Dienst', 'fliege');
  1489.    url.Parameters.Add('Destination', destination.Value);
  1490.    url.Parameters.Add('Orbit', True);
  1491.    url.Parameters.Add('Flottenaktion', True);
  1492.    url.Parameters.Add('fleetID', myFleetID);
  1493.    row.Cells.Item(0).Add(New CHtmlLinkButton(destination.Key, url, destination.Key));
  1494.    
  1495.   }
  1496.  
  1497.   /*
  1498.   Var row As CTableRow = table.AddRow();
  1499.     url = New CScriptUrl();
  1500.     url.Parameters.Add('Verwaltung', 'flugkontrolle');
  1501.    url.Parameters.Add('Dienst', 'fliege');
  1502.    url.Parameters.Add('Destination', '306|569');
  1503.    url.Parameters.Add('Orbit', True);
  1504.    url.Parameters.Add('fleetID', myFleetID);
  1505.    row.Cells.Item(0).Add(New CHtmlLinkButton('Nach Alwaid', url, 'In den Orbit von Alwaid'));
  1506.    row = table.AddRow();
  1507.     url = New CScriptUrl();
  1508.     url.Parameters.Add('Verwaltung', 'flugkontrolle');
  1509.    url.Parameters.Add('Dienst', 'fliege');
  1510.    url.Parameters.Add('Destination', '254|464');
  1511.    url.Parameters.Add('Orbit', True);
  1512.    url.Parameters.Add('fleetID', myFleetID);
  1513.    row.Cells.Item(0).Add(New CHtmlLinkButton('Zum Flottenstützpunkt', url, 'In den Orbit von Bryant'));*/
  1514.  Response.Add(New CHtmlNewLine());
  1515.   Response.Add(New CHtmlNewLine());
  1516.   Response.Add('Fliege zu Koordinaten');
  1517.  Response.Add(New CHtmlNewLine());
  1518.  
  1519.   Var form As New CHtmlForm(New CScriptUrl());
  1520.   Var tableCoords As New CTable(2);
  1521.   Response.Add(form);
  1522.   form.Add(tableCoords);
  1523.   Var row2 As CTableRow = tableCoords.AddRow();
  1524.  
  1525.   row2.Cells.Item(0).Add('XY Koordinaten [x|y]');
  1526.  row2.Item(0).CssClass = 'buttonbody';
  1527.  row2.Cells.Item(1).Add(New CHtmlInput('000|000', 'Destination', EHtmlInputType.Text));
  1528.  row2 = tableCoords.AddRow();
  1529.   row2.Cells.Item(0).Add('In Orbit einfliegen');
  1530.  row2.Item(0).CssClass = 'buttonbody';
  1531.  row2.Cells.Item(1).Add(New CHtmlCheckBox(False, 'Orbit'));
  1532.  row2 = tableCoords.AddRow();
  1533.   row2.Cells.Item(0).Add('Flottenaktion');
  1534.  row2.Item(0).CssClass = 'buttonbody';
  1535.  row2.Cells.Item(1).Add(New CHtmlCheckBox(True, 'Flottenaktion'));
  1536.  row2.Cells.Item(1).Add(New CHtmlInput('fliege', 'Dienst', EHtmlInputType.Hidden));
  1537.  row2.Cells.Item(1).Add(New CHtmlInput('flugkontrolle', 'Verwaltung', EHtmlInputType.Hidden));
  1538.  row2.Cells.Item(1).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1539.  row2 = tableCoords.AddRow();
  1540.   row2.Cells.Item(0).Add(New CHtmlSubmitButton('Fliegen', 'Auf, auf und davon!'));
  1541.  
  1542. }
  1543.  
  1544. //----------------------------------------------------------------------------
  1545. //Der wirkliche Flug
  1546. Function fliege(destinations As CEntryList) {
  1547.  
  1548.   Var destination As String = '';
  1549.  Var orbit As Boolean = False;
  1550.   Var Flottenaktion As Boolean = False;
  1551.  
  1552.  
  1553.  
  1554.   If (Request.Parameters.ContainsKey('Destination'))
  1555.  {
  1556.     destination = Request.Parameters.Item('Destination');
  1557.  }
  1558.   If (Request.Parameters.ContainsKey('Orbit'))
  1559.  {
  1560.     orbit = Request.Parameters.Item('Orbit');
  1561.  }
  1562.   If (Request.Parameters.ContainsKey('Flottenaktion'))
  1563.  {
  1564.     Flottenaktion = Request.Parameters.Item('Flottenaktion');
  1565.  }
  1566.   If (Request.Form.ContainsKey('Destination'))
  1567.  {
  1568.     destination = Request.Form.Item('Destination');
  1569.  }
  1570.   If (Request.Form.ContainsKey('Orbit'))
  1571.  {
  1572.     orbit = Request.Form.Item('Orbit');
  1573.  }
  1574.   If (Request.Form.ContainsKey('Flottenaktion'))
  1575.  {
  1576.     Flottenaktion = Request.Form.Item('Flottenaktion');
  1577.  }
  1578.   Response.Add(New CHtmlNewLine());
  1579.   Response.Add(New CHtmlNewLine());
  1580.   Var RedAlert As New CShipList ();
  1581.  
  1582.   Var ship As CMyShip;
  1583.   For (Each ship In myFleet.Ships) {
  1584.     If (ship.AlertLevel = EAlertLevel.Red) {
  1585.       RedAlert.Add(ship);
  1586.       ship.Action.SetAlertLevel(EAlertLevel.Yellow);
  1587.     }
  1588.    
  1589.    
  1590.   }
  1591.  
  1592.   If(Flottenaktion){
  1593.     FliegeFlotte(destination, orbit);
  1594.   }Else{
  1595.     FliegeSingle(destination, orbit);
  1596.   }
  1597.  
  1598.   If (RedAlert.Count > 0) {
  1599.     For (Each ship In RedAlert) {
  1600.       ship.Action.SetAlertLevel(EAlertLevel.Red);
  1601.     }
  1602.    
  1603.    
  1604.   }
  1605.  
  1606.  
  1607.   flugkontrolle(destinations);
  1608.  
  1609. }
  1610. Function FliegeFlotte(destination As String, orbit As Boolean){
  1611.  
  1612.  
  1613.  
  1614.  
  1615.   myFleet.Action.FlyTo(destination);
  1616.   If (orbit = True) {
  1617.     myFleet.Action.EnterOrbit();
  1618.   }
  1619.   WriteSTNEColoredLine('Flugaktion ausgeführt. Typ: Flotte');
  1620.  
  1621.  
  1622.  
  1623. }
  1624. Function WriteSTNEColoredLine(text As String){
  1625.  
  1626.  
  1627.   Var Span As New CHtmlSpan();
  1628.   Span.Add(text);
  1629.   Span.Style.Add('color', '#FFCC00');
  1630.  Response.Add(Span)
  1631.   Response.Add(New CHtmlNewLine());
  1632. }
  1633. Function FliegeSingle(destination As String, orbit As Boolean){
  1634.   Var ship As CMyShip;
  1635.   For (Each ship In myFleet.Ships) {
  1636.     ship.Action.FlyTo(destination);
  1637.     If (orbit = True) {
  1638.       ship.Action.EnterOrbit();
  1639.     }
  1640.   }
  1641.   WriteSTNEColoredLine('Flugaktion ausgeführt. Typ: Single');
  1642.  
  1643.  
  1644.  
  1645. }
  1646.  
  1647. //----------------------------------------------------------------------------
  1648. //Kampfeinstellungen ändern
  1649. Function kampfstatus(){
  1650.   Var myCurrentShip As CMyShip;
  1651.   If (Request.Form.ContainsKey('chkFleetCommand'))
  1652.  {
  1653.     If (debug = True) {
  1654.       WriteLine("FleetCommand " & myFleet.NameAndID);
  1655.     }
  1656.     Var dockedTo As Integer = 0;
  1657.    
  1658.     For (Each myCurrentShip In myFleet.Ships) {
  1659.       If(myCurrentShip.DockedToShipID > 0){
  1660.         dockedTo = myCurrentShip.DockedToShipID ;
  1661.       }
  1662.     }
  1663.     InnerKampfstatus(myFleet.Action, dockedTo);
  1664.   }Else{
  1665.     If (debug = True) {
  1666.       WriteLine("NonFleetCommand");
  1667.     }
  1668.    
  1669.     For (Each myCurrentShip In myFleet.Ships) {
  1670.       If (debug = True) {
  1671.         WriteLine("Schiff " & myCurrentShip.ShipID);
  1672.       }
  1673.       InnerKampfstatus(myCurrentShip.Action, myCurrentShip.DockedToShipID);
  1674.      
  1675.     }
  1676.    
  1677.   }
  1678.   flottenstatus(True, False);
  1679. }
  1680. Function InnerKampfstatus(manager As CBaseShipManager, dockedToId As Integer) {
  1681.  
  1682.  
  1683.   Var wert As String;
  1684.  
  1685.   If (Request.Parameters.ContainsKey('Wert'))
  1686.  {
  1687.     wert = Request.Parameters.Item('Wert');
  1688.  }
  1689.   If (Request.Form.ContainsKey('Wert'))
  1690.  {
  1691.     wert = Request.Form.Item('Wert');
  1692.  }
  1693.  
  1694.   If (dienst = 'alarmstufe') {
  1695.    If(Request.Form.ContainsKey('Rot')){
  1696.      manager.SetAlertLevel(EAlertLevel.Red);
  1697.     }ElseIf(Request.Form.ContainsKey('Gelb')){
  1698.      manager.SetAlertLevel(EAlertLevel.Yellow);
  1699.     }Else{
  1700.       manager.SetAlertLevel(EAlertLevel.Green);
  1701.     }
  1702.    
  1703.   } ElseIf (dienst = 'schild') {
  1704.    If (Request.Form.ContainsKey('on')) {
  1705.      manager.ActivateShields(True);
  1706.     } Else {
  1707.       manager.ActivateShields(False);
  1708.     }
  1709.    
  1710.    
  1711.   } ElseIf (dienst = 'computer') {
  1712.    If (Request.Form.ContainsKey('on')) {
  1713.      manager.ActivateMaincomputer(True);
  1714.     } Else {
  1715.       manager.ActivateMaincomputer(False);
  1716.     }
  1717.    
  1718.   } ElseIf (dienst = 'wkState') {
  1719.    If (Request.Parameters.ContainsKey('Wert')) {
  1720.      If (Request.Parameters.Item('Wert') = "on") {
  1721.        manager.ActivateWarpCore(True);
  1722.       }ElseIf(Request.Parameters.Item('Wert') = "off"){
  1723.        manager.ActivateWarpCore(False);
  1724.       }
  1725.      
  1726.     }
  1727.    
  1728.   } ElseIf (dienst = 'schildeladen' AND wert <> "") {
  1729.    manager.SchildeAufladen(wert);
  1730.    
  1731.   } ElseIf (dienst = 'reserveentladen' AND wert <> "") {
  1732.    manager.ReserveBatterieEntladen(wert);
  1733.   } ElseIf (dienst = 'collectRes' AND wert <> "") {
  1734.    Var wert1 As Integer;
  1735.     wert1 = wert;
  1736.     manager.Undock();
  1737.     manager.DeactivateTractorBeam();
  1738.     If (Request.Form.ContainsKey('collectIri')) {
  1739.      
  1740.      
  1741.       manager.CollectOre(wert1);
  1742.      
  1743.      
  1744.       If (debug = True) {
  1745.         WriteLine("CollectOre " & wert);
  1746.       }
  1747.      
  1748.      
  1749.      
  1750.     }ElseIf(Request.Form.ContainsKey('collectDeut')) {
  1751.      
  1752.      
  1753.       manager.CollectDeuterium(wert1);
  1754.      
  1755.       If (debug = True) {
  1756.         WriteLine("CollectDeuterium " & wert);
  1757.       }
  1758.      
  1759.     }
  1760.     If(dockedToId > 0){
  1761.       manager.DockTo(dockedToId);
  1762.      
  1763.       If (debug = True) {
  1764.         WriteLine("Docken " & dockedToId);
  1765.       }
  1766.     }
  1767.    
  1768.   }
  1769.  
  1770.  
  1771. }
  1772. /*
  1773. Function LoadBattery(amount As Integer){
  1774.   Var ship As CMyShip;
  1775.   Var table As New CTable(1);
  1776.  
  1777.   For (Each ship In myFleet.Ships) {
  1778.     Var currAmount As Integer = amount
  1779.     Var row As CTableRow = table.AddRow();
  1780.     If(Ctype(ship.Definition, CMyShipDefinition) - ship.Energy < currAmount){
  1781.       currAmount = Ctype(ship.Definition, CMyShipDefinition) - ship.Energy;
  1782.     }
  1783.     If(ship.EmergencyBattery < currAmount){
  1784.       currAmount = ship.EmergencyBattery;
  1785.     }
  1786.    
  1787.     Response.Add(table);
  1788.     row.Cells.Item(0).Add("Die Reservebatterie von " & ship.Name & " wurde ")
  1789.     If(currAmount <> amount){
  1790.       row.Cells.Item(0).Add(" nur ")
  1791.     }
  1792.     row.Cells.Item(0).Add(" um " & currAmount & " aufgeladen ")
  1793.     ship.Action.ReserveBatterieEntladen(wert);
  1794.   }
  1795.  
  1796. }
  1797. */
  1798. //----------------------------------------------------------------------------
  1799. //Warpkern füllen Hauptseite
  1800. Function wkfuellenMain(showIndex As Boolean) {
  1801.   Var row As CTableRow ;
  1802.   If(showIndex){
  1803.     zeigeIndex();
  1804.   }
  1805.  
  1806.  
  1807.   //Hautptabelle erzeugen
  1808.   Var MainTable As New CTable(3) ;
  1809.   Response.Add(MainTable);
  1810.   Var MainTableRow As CTableRow = MainTable.AddRow();
  1811.  
  1812.   //1. Eintrag
  1813.   //Titel
  1814.   MainTableRow.Cells.Item(0).Add('Eigenes Schiffslager nutzen');
  1815.  MainTableRow.Item(0).CssClass = 'buttonbody';
  1816.  Var MainTableRow1 As CTableRow = MainTable.AddRow();
  1817.  
  1818.   //Eingabe
  1819.   Var form As New CHtmlForm(New CScriptUrl());
  1820.   Var table As New CTable(2);
  1821.   form.Add(table);
  1822.   MainTableRow1.Cells.Item(0).Add(form);
  1823.   row = table.AddRow();
  1824.   row.Style.Add('vertical - align', 'top');
  1825.  row.Cells.Item(0).Add(New CHtmlInput('wkfuellen', 'Verwaltung', EHtmlInputType.Hidden));
  1826.  row.Cells.Item(0).Add(New CHtmlInput('lager', 'Dienst', EHtmlInputType.Hidden));
  1827.  row.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1828.  row.Cells.Item(0).Add('Anzahl');
  1829.  row.Item(0).CssClass = 'buttonbody';
  1830.  row.Cells.Item(1).Add(New CHtmlTextBox('0', 'Wert'));
  1831.  row.Cells.Item(1).Add(New CHtmlSubmitButton('Max', 'FillFromStockMax'));
  1832.  
  1833.   row = table.AddRow();
  1834.   Var lb As New CHtmlListBox("fillingType");
  1835.  
  1836.   lb.Add(New CHtmlListBoxItem ("AM/Dilli/Deut", 0, True));
  1837.   lb.Add(New CHtmlListBoxItem ("Deut", 1, False)));
  1838.   lb.Add(New CHtmlListBoxItem ("Plasma", 2, False)));
  1839.  
  1840.   row.Cells.Item(0).Add(lb);
  1841.   row.Cells.Item(0).ColumnSpan = 2;
  1842.   row = table.AddRow();
  1843.   row.Cells.Item(0).Add(New CHtmlSubmitButton('Nachfüllen', 'FillFromStock'));
  1844.  row.Cells.Item(0).ColumnSpan = 2;
  1845.  
  1846.  
  1847.  
  1848.  
  1849.   //Fremdschiff/////////////
  1850.  
  1851.  
  1852.   //2. Eintrag
  1853.   //Titel
  1854.   MainTableRow.Cells.Item(1).Add('Von Lagerschiff laden');
  1855.  MainTableRow.Item(1).CssClass = 'buttonbody';
  1856.  //  MainTableRow1 = MainTable.AddRow();
  1857.  
  1858.   //Eingabe
  1859.   form = New CHtmlForm(New CScriptUrl());
  1860.   table = New CTable(2);
  1861.   form.Add(table);
  1862.   MainTableRow1.Cells.Item(1).Add(form);
  1863.   row = table.AddRow();
  1864.   row.Style.Add('vertical - align', 'top');
  1865.  row.Cells.Item(0).Add(New CHtmlInput('wkfuellen', 'Verwaltung', EHtmlInputType.Hidden));
  1866.  row.Cells.Item(0).Add(New CHtmlInput('ship', 'Dienst', EHtmlInputType.Hidden));
  1867.  row.Cells.Item(0).Add(New CHtmlInput(myFleetID, 'fleetID', EHtmlInputType.Hidden));
  1868.  row.Cells.Item(0).Add('Schiff - ID');
  1869.  row.Item(0).CssClass = 'buttonbody';
  1870.  row.Cells.Item(1).Add(New CHtmlInput("", 'shipID', EHtmlInputType.Text));
  1871.  row = table.AddRow();
  1872.   row.Cells.Item(0).Add('Anzahl');
  1873.  row.Item(0).CssClass = 'buttonbody';
  1874.  row.Cells.Item(1).Add(New CHtmlTextBox('0', 'Wert'));
  1875.  row.Cells.Item(1).Add(New CHtmlSubmitButton('Max', 'FillFromShipMax'));
  1876.  
  1877.   row = table.AddRow();
  1878.   row.Cells.Item(0).Add(New CHtmlSubmitButton('Nachfüllen', 'FillFromShip'));
  1879.  row.Cells.Item(0).ColumnSpan = 2;
  1880.  
  1881.   ///////////////
  1882.  
  1883.   Var Span As New CHtmlSpan();
  1884.   Span.Add("Aktion wird als Einzel-Aktion durchgeführt");
  1885.   Span.Style.Add('color', '#333333');
  1886.  Response.Add(Span)
  1887.   Response.Add(New CHtmlNewLine());
  1888.  
  1889.  
  1890.  
  1891. }
  1892.  
  1893. //----------------------------------------------------------------------------
  1894.  
  1895. Function DetectMaxWKFillingsStock(ship As CMyShip) As Integer{
  1896.  
  1897.   Return Math.Floor(ship.StockRoom.FreeStorage / 5) ;
  1898.  
  1899.  
  1900. }
  1901.  
  1902.  
  1903. Function DetectMaxWKFillings(ship As CShip, type As Integer) As Integer{
  1904.   Var stNull As Boolean = ship.StockRoom is Null;
  1905.   If(not stNull){
  1906.     If(type = 0){
  1907.       Var Deut As Integer = Math.Floor(ship.StockRoom.Amount(EGoodsType.Deuterium) / 2);
  1908.       Var AM As Integer = Math.Floor(ship.StockRoom.Amount(EGoodsType.Antimatter) / 2);
  1909.      
  1910.       Var fillings As Integer = ship.StockRoom.Amount(EGoodsType.Dilithium);
  1911.      
  1912.       If(Deut < fillings){
  1913.         fillings = Deut;
  1914.       }
  1915.       If(AM < fillings){
  1916.         fillings = AM;
  1917.       }
  1918.       Return fillings ;
  1919.     }ElseIf(type = 1){
  1920.       Var tmp As Integer = Math.Floor(ship.StockRoom.Amount(EGoodsType.Deuterium) / 2);
  1921.       Return tmp ;
  1922.     }Else{
  1923.       Return ship.StockRoom.Amount(EGoodsType.Plasma);
  1924.     }
  1925.    
  1926.   }Else{
  1927.     Return 0;
  1928.   }
  1929. }
  1930.  
  1931.  
  1932.  
  1933.  
  1934. //Warpkern füllen
  1935. Function wkfuellen() {
  1936.  
  1937.   zeigeIndex();
  1938.  
  1939.   Var wert As Integer = 0;
  1940.  
  1941.  
  1942.   Var Max As Boolean = False;
  1943.  
  1944.   If (Request.Form.ContainsKey('Wert') AND Request.Form.Item('Wert') <> "")
  1945.  {
  1946.    
  1947.     wert = Request.Form.Item('Wert');
  1948.    
  1949.   }
  1950.   If (Request.Form.ContainsKey('FillFromStockMax') or Request.Form.ContainsKey('FillFromShipMax'))
  1951.  {
  1952.     Max = True;
  1953.   }
  1954.  
  1955.   // Zum Nachfüllen das Schifflsager verwenden
  1956.   If (dienst = 'lager') {
  1957.    
  1958.     FillWKFromStock(wert, Max, Request.Form.Item('fillingType'));
  1959.    wkfuellenMain(False);
  1960.   }
  1961.  
  1962.   // Zum Nachfüllen ein Versorgungsschiff verwenden
  1963.  
  1964.   If (dienst = 'ship') {
  1965.    FillWKFromShip(wert, Max);
  1966.     wkfuellenMain(False);
  1967.    
  1968.   }
  1969.  
  1970.   // Zum Nachfüllen eine Kolonie nutzen
  1971.   If (dienst = 'kolonie') {
  1972.    Response.Add("Noch nicht implementiert!");
  1973.   }
  1974.  
  1975. }
  1976. Function BeamWKFillingsFromShip(amount As Integer, ship As CMyShip, supply As CShip, row As CTableRow){
  1977.   Var beamCapacity As Integer = CType(ship.Definition, CMyShipDefinition).BeamCapacity ;
  1978.   Var shipEPS As Integer = Math.Min(ship.Eps, ship.Energy);
  1979.  
  1980.   Var maxAmount As Integer = Math.Floor(shipEPS * beamCapacity / 25) * 5
  1981.  
  1982.   /*Var DilliBeamEps As Integer = Math.Ceiling(amount / beamCapacity);
  1983.   Var AMDeutBeamEps As Integer = 2 * Math.Ceiling((amount * 2) / beamCapacity);
  1984.   Var BeamEPS As Integer = DilliBeamEps + AMDeutBeamEps;
  1985. */
  1986.  
  1987.   If(maxAmount < amount){
  1988.     amount = maxAmount ;
  1989.     row.Cells.Item(0).Add(GetErrorSpan(ship.Name & ' hat nicht genug EPS. Reduziere Menge auf ' & amount));
  1990.  }
  1991.   If(amount > 0){
  1992.     row.Cells.Item(0).Add('Beame ' & amount & " WK-Ladungen und lade Warpkern");
  1993.    ship.Action.TransferFromShip(supply.ShipID, amount, EBeamResource.Dilithium);
  1994.     ship.Action.TransferFromShip(supply.ShipID, amount * 2, EBeamResource.Deuterium);
  1995.     ship.Action.TransferFromShip(supply.ShipID, amount * 2, EBeamResource.Antimatter);
  1996.     ship.Action.RefillWarpCore(amount, EWarpcoreFillType.dilliAmDeut);
  1997.   }
  1998.  
  1999. }
  2000.  
  2001. Function FillWKFromShip(wert As Integer, Max As Boolean) As Boolean{
  2002.  
  2003.   Var shipId As Integer = 0;
  2004.   Var supplyShip As CShip;
  2005.  
  2006.  
  2007.   If (Request.Form.ContainsKey('shipID') AND Request.Form.Item('shipID') <> "")
  2008.  {
  2009.    
  2010.     shipId = Request.Form.Item('shipID');
  2011.    
  2012.   }Else{
  2013.     Response.Add(GetErrorSpan("Bitte Schiffs-ID angeben"));
  2014.     Return False;
  2015.   }
  2016.  
  2017.  
  2018.   Var table As New CTable(2);
  2019.   Response.Add(table);
  2020.  
  2021.   Var ship As CMyShip;
  2022.   For (Each ship In myFleet.Ships) {
  2023.     Var row As CTableRow = table.AddRow();
  2024.     row.Cells.Item(0).Add("Schiff " & ship.Name);
  2025.     Var innerTable As New CTable(1);
  2026.     row.Cells.Item(1).Add(innerTable);
  2027.     Var innerRow As CTableRow = innerTable.AddRow();
  2028.     Var tmpWert As Integer = wert;
  2029.    
  2030.     If (not ship.SRS.ContainsShipID(shipId)) {
  2031.       innerRow.Cells.Item(0).Add(GetErrorSpan('Das Versorgungsschiff befindet sich nicht im selben Sektor!'));
  2032.      
  2033.     } Else{
  2034.      
  2035.       supplyShip = GetShipFromList(shipId, ship.SRS));
  2036.      
  2037.       Var base As CShip = Null;
  2038.       If(supplyShip.FreeDockingPorts(ship)){
  2039.         base = supplyShip;
  2040.         WriteLine("Schiff ist Basis");
  2041.       }Else{
  2042.         If(supplyShip.Docked){
  2043.           base = supplyShip.DockedTo;
  2044.           WriteLine("Supply Schiff ist angedockt...");
  2045.           If(not base.FreeDockingPorts(ship)){
  2046.             WriteLine("...aber keine Plätze mehr frei");
  2047.             base = Null;
  2048.           }
  2049.         }
  2050.       }
  2051.      
  2052.      
  2053.      
  2054.      
  2055.       If(base is Null){
  2056.       }Else{
  2057.         Var docked As Boolean = ship.Docked;
  2058.         If(not docked){
  2059.           ship.Action.DockTo(base.ShipID);
  2060.           innerRow.Cells.Item(0).Add("Docke an Basis " & base.Name & " an.")
  2061.         }
  2062.       }
  2063.       Var maxFillingStock As Integer = DetectMaxWKFillingsStock(ship);
  2064.       If(Max){
  2065.         innerRow.Cells.Item(0).Add("Max ausgewählt. Versuche " & maxFillingStock & " Füllungen zu laden");
  2066.         innerRow = innerTable.AddRow();
  2067.         wert = maxFillingStock ;
  2068.       }
  2069.       Var rounds As Integer = 0;
  2070.       Var counter As Integer = 0;
  2071.       While(counter < wert){
  2072.         innerRow.Cells.Item(0).Add("Durchlauf " & rounds);
  2073.         innerRow = innerTable.AddRow();
  2074.         tmpWert = wert - counter;
  2075.         If(tmpWert > maxFillingStock){
  2076.          
  2077.           tmpWert = maxFillingStock ;
  2078.         }
  2079.        
  2080.         Var existingFillings As Integer = DetectMaxWKFillings(supplyShip, 0);
  2081.         If(existingFillings < tmpWert){
  2082.           innerRow.Cells.Item(0).Add(GetErrorSpan('Auf dem Lagerschiff sind nicht genügend Ressourcen vorhanden. Reduziere auf ' & existingFillings));
  2083.          innerRow = innerTable.AddRow();
  2084.           tmpWert = existingFillings;
  2085.           If(tmpWert = 0){
  2086.             wert = - 1;
  2087.           }
  2088.         }
  2089.         If(tmpWert > 0){
  2090.           BeamWKFillingsFromShip(tmpWert, ship, supplyShip, innerRow);
  2091.           innerRow = innerTable.AddRow();
  2092.          
  2093.         }
  2094.         counter = counter + maxFillingStock;
  2095.         rounds = rounds + 1;
  2096.         innerRow = innerTable.AddRow();
  2097.       }
  2098.       If(not docked){
  2099.         ship.Action.Undock();
  2100.       }
  2101.     }
  2102.    
  2103.   }
  2104.   Return True;
  2105. }
  2106.  
  2107. Function GetShipFromList(id As Integer, list As CShipList) As CShip{
  2108.   Var ship As CBaseShip;
  2109.   // Überprüfe Einzelspieler
  2110.   For (Each ship In list) {
  2111.     If(ship.ShipID = id){
  2112.       Return ship;
  2113.     }
  2114.   }
  2115.   Return Null;
  2116. }
  2117. Function GetErrorSpan(text As String) As CHtmlSpan{
  2118.   Var Span As New CHtmlSpan();
  2119.   Span.Add(text);
  2120.   Span.Style.Add('color', 'Red');
  2121.  Return Span;
  2122. }
  2123.  
  2124. Function FillWKFromStock(wert As Integer, Max As Boolean, type As Integer) As Boolean{
  2125.  
  2126.   Var tableLager As New CTable(1);
  2127.   Var rowLager As CTableRow = tableLager.AddRow();
  2128.   Response.Add(tableLager);
  2129.   Var ship As CMyShip;
  2130.   For (Each ship In myFleet.Ships) {
  2131.     Var MaxFillings As Integer = DetectMaxWKFillings(ship, type);
  2132.     Var alert As Boolean = False;
  2133.     If(debug = True){
  2134.       WriteLine(' (Debug: MaxFillings = ' & MaxFillings & " )");
  2135.    }
  2136.     If (MaxFillings <= 0) {
  2137.       rowLager.Cells.Item(0).Add(GetErrorSpan('Auf ' & ship.Name & ' sind nicht genügend Ressourcen vorhanden.'));
  2138.      rowLager = tableLager.AddRow();
  2139.     } Else {
  2140.       Var TmpValue As Integer = wert;
  2141.      
  2142.       If(Max){
  2143.         TmpValue = MaxFillings ;
  2144.        
  2145.       }Else{
  2146.        
  2147.         If(MaxFillings < wert){
  2148.           TmpValue = MaxFillings ;
  2149.           alert = True;
  2150.         }
  2151.       }
  2152.       If(type = 0){
  2153.         ship.Action.RefillWarpCore(TmpValue, EWarpcoreFillType.dilliAmDeut);
  2154.       }ElseIf(type = 1){
  2155.         ship.Action.RefillWarpCore(TmpValue, EWarpcoreFillType.deuterium);
  2156.       }Else{
  2157.         ship.Action.RefillWarpCore(TmpValue, EWarpcoreFillType.plasma);
  2158.       }
  2159.      
  2160.       rowLager.Cells.Item(0).Add('Der Warpkern von ');
  2161.      rowLager.Cells.Item(0).Add(ship.Name);
  2162.       rowLager.Cells.Item(0).Add(' wurde ');
  2163.      If(alert){
  2164.         rowLager.Cells.Item(0).Add('nur ');
  2165.        rowLager.Cells.Item(0).Style.Add('color', 'red');
  2166.      }
  2167.       rowLager.Cells.Item(0).Add('um ');
  2168.      rowLager.Cells.Item(0).Add(TmpValue);
  2169.       rowLager.Cells.Item(0).Add(' Einheiten aufgeladen.');
  2170.      
  2171.      
  2172.       rowLager = tableLager.AddRow();
  2173.      
  2174.     }
  2175.   }
  2176.   Return True;
  2177. }
  2178.  
  2179. //----------------------------------------------------------------------------
  2180.  
  2181.  
  2182. //----------------------------------------------------------------------------
  2183. //Prüft ob die ganze Flotte im selben Sektor ist
  2184. Function fleetInSameSector() As Boolean {
  2185.   Var ship As CMyShip;
  2186.   Var sameSector As Boolean = True;
  2187.  
  2188.   For (Each ship In myFleet.Ships) {
  2189.     If (ship.MapPosition = myFleet.Ships.Item(0).MapPosition) {
  2190.     } Else {
  2191.       sameSector = False;
  2192.     }
  2193.   }
  2194.  
  2195.   Return(sameSector);
  2196. }
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202. //----------------------------------------------------------------------------
  2203. //Zeigt den Fleet Selector an
  2204. Function fleetSelector()
  2205. {
  2206.   Var id As Integer;
  2207.   Var form As New CHtmlForm(New CScriptUrl());
  2208.   Var fleet As CMyFleet;
  2209.   Response.Add(form);
  2210.   form.Add(New CHtmlSeperator('Schiffsportal'));
  2211.  form.Add(New CHtmlNewLine());
  2212.  
  2213.   Var user As New CUser(GuestUser.UserID)
  2214.   form.Add(begrüßungsText);
  2215.   form.Add(user.GetHtmlNameAndID(True));
  2216.   form.Add('.');
  2217.  form.Add(New CHtmlNewLine());
  2218.  
  2219.   form.Add(New CHtmlSeperator('Bitte wählt eine Flotte aus:'));
  2220.  
  2221.   Var table As New CTable(2);
  2222.   form.Add(table);
  2223.  
  2224.   Var row As CTableRow;
  2225.   Var url As New CScriptUrl();
  2226.  
  2227.   For (Each id In possibleFleets) {
  2228.     row = table.AddRow();
  2229.     row.Cells.Item(0).Add(CreateFleetSelectButton(id));
  2230.    
  2231.     url = New CScriptUrl();
  2232.     url.Parameters.Add('Verwaltung', 'fleetPreview');
  2233.    url.Parameters.Add('fleetID', id);
  2234.    fleet = New CMyFleet(id);
  2235.     row.Cells.Item(1).Add(New CHtmlLinkButton('Ansehen', url, 'Wenn man nicht genau weiß ob das die richtige Flotte ist.'));
  2236.    
  2237.   }
  2238.   If (debug = True) {
  2239.     Response.Add('Debug mode active!');
  2240.    Response.Add(New CHtmlNewLine());
  2241.     Response.Add('Verwaltung: ');
  2242.    Response.Add(verwaltung);
  2243.     Response.Add(New CHtmlNewLine());
  2244.     Response.Add('Dienst: ');
  2245.    Response.Add(dienst);
  2246.     Response.Add(New CHtmlNewLine());
  2247.     Response.Add(New CHtmlNewLine());
  2248.   }
  2249. }
  2250. Function CreateFleetSelectButton(id As Integer) As CHtmlLinkButton
  2251. {
  2252.   Var url As New CScriptUrl();
  2253.   url.Parameters.Add('Verwaltung', 'index');
  2254.  url.Parameters.Add('fleetID', id);
  2255.  Var fleet As New CMyFleet(id);
  2256.   Return New CHtmlLinkButton(fleet.Name, url, fleet.NameAndID);
  2257. }
  2258. //----------------------------------------------------------------------------
  2259.  
  2260. Function GetPossibleFleets() As CIntegerList {
  2261.   Var Fleets As New CFleetEnumerator();
  2262.   Var RetVal As New CIntegerList();
  2263.   While(Fleets.MoveNext){
  2264.    
  2265.     RetVal.Add(Fleets.CurrentFleet.FleetID)
  2266.   }
  2267.   Return RetVal;
  2268. }
  2269. Function fleetPreview(){
  2270.   fleetSelector();
  2271.   flottenstatus(False, True);
  2272. }
  2273.  
  2274. Function manageTruemmer(showScan As Boolean){
  2275.   zeigeIndex();
  2276.  
  2277.   Response.Add(New CHtmlSeperator('Aktionen'));
  2278.  Response.Add(New CHtmlNewLine());
  2279.   Var tableTruemmer As New CTable(2);
  2280.   Var row As CTableRow = tableTruemmer.AddRow();
  2281.   Response.Add(tableTruemmer);
  2282.  
  2283.  
  2284.   Var url As New CScriptUrl();
  2285.   url.Parameters.Add('Verwaltung', 'beamTruemmer');
  2286.  url.Parameters.Add('fleetID', myFleetID);
  2287.  row.Cells.Item(0).Add(New CHtmlLinkButton('Beamen aus allen Trümmern im Sektor', url, 'Beamt Waren aus Trümmerfeldern.'));
  2288.  
  2289.  
  2290.   url = New CScriptUrl();
  2291.   url.Parameters.Add('Verwaltung', 'extractTruemmer');
  2292.  url.Parameters.Add('fleetID', myFleetID);
  2293.  row.Cells.Item(1).Add(New CHtmlLinkButton('Alle Trümmer im Sektor extrahieren', url, 'Alle Trümmer im Sektor extrahieren'));
  2294.  
  2295.   Response.Add("Hinweis: Aktives SRS nötig!");
  2296.  
  2297.   Response.Add(New CHtmlNewLine());
  2298.   Response.Add(New CHtmlNewLine());
  2299.   If(showScan){
  2300.     Response.Add(New CHtmlSeperator('SRS - Scan'));
  2301.    zeigeSrsWare(False);
  2302.   }
  2303.  
  2304. }
  2305. Function extractTruemmer(){
  2306.   manageTruemmer(False);
  2307.   Response.Add(New CHtmlSeperator('Ergebnis'));
  2308.  Response.Add(New CHtmlNewLine());
  2309.  
  2310.   Var myCurrentShip As CMyShip;
  2311.   Var ship As CShip;
  2312.   Var row As CTableRow;
  2313.   Var tableTruemmer As New CTable(1);
  2314.   Response.Add(tableTruemmer);
  2315.   Var match As Boolean = False;
  2316.  
  2317.  
  2318.   For (Each myCurrentShip In myFleet.Ships) {
  2319.     If(myCurrentShip.SRSIsActive and myCurrentShip.Energy > 0 and myCurrentShip.Eps > 0 and myCurrentShip.Definition.HasWreckExtractor and myCurrentShip.StockRoom.FreeStorage(EGoodsType.Duranium) > 0){
  2320.       For (Each ship In myCurrentShip.SRS){
  2321.         If (ship.UserID = 3 and ship.Hull > 5){
  2322.           If(myCurrentShip.TractorToShipID <> ship.ShipID){
  2323.             myCurrentShip.Action.DeactivateTractorBeam();
  2324.           }
  2325.           myCurrentShip.Action.ActivateTractorBeam(ship.ShipID);
  2326.           myCurrentShip.Action.ExtractFromWreck(myCurrentShip.Energy);
  2327.           myCurrentShip.Action.DeactivateTractorBeam();
  2328.           row = tableTruemmer.AddRow();
  2329.           row.Cells.Item(0).Add('Extrahiere von: ' & ship.Name & '(' & ship.ShipID & ')');
  2330.          match = True;
  2331.          
  2332.         }
  2333.        
  2334.       }
  2335.     }
  2336.   }
  2337.   Var Span As New CHtmlDiv();
  2338.   Span.Add("Vorgang abgeschlossen");
  2339.   Span.Style.Add('color', '#FFCC00');
  2340.  Response.Add(Span);
  2341.   If( not match){
  2342.     Response.Add("Keine Trümmer gefunden oder keine Extraktoren vorhanden und einsatzbereit.");
  2343.   }
  2344.   Response.Add(New CHtmlNewLine());
  2345.   Response.Add(New CHtmlNewLine());
  2346.   Response.Add(New CHtmlSeperator('SRS - Scan'));
  2347.  zeigeSrsWare(False);
  2348. }
  2349. //Beamt Waren von Trümmerfeldern
  2350. Function beamTruemmer() {
  2351.   manageTruemmer(False);
  2352.   Response.Add(New CHtmlSeperator('Ergebnis'));
  2353.  Response.Add(New CHtmlNewLine());
  2354.   Var ship As CShip
  2355.   Var myCurrentShip As CMyShip;
  2356.   Var row As CTableRow;
  2357.   Var tableTruemmer As New CTable(1);
  2358.   Response.Add(tableTruemmer);
  2359.   Var match As Boolean = False;
  2360.   For (Each myCurrentShip In myFleet.Ships) {
  2361.     If(myCurrentShip.SRSIsActive){
  2362.       For (Each ship In myCurrentShip.SRS){
  2363.         If (ship.UserID = 3 and ship.StockRoom.Sum <> 0){
  2364.           Var goods As New CGoodsInfoEnumerator();
  2365.           While (goods.Next())
  2366.           {
  2367.             Var g As EGoodsType = goods.CurrentWarenInfo.GoodsType
  2368.             If (ship.StockRoom.Amount(g) > 0) {
  2369.               row = tableTruemmer.AddRow();
  2370.               row.Cells.Item(0).Add(ship.Name & '(' & ship.ShipID & ') enthält ' & ship.StockRoom.Amount(g) & ' ' & goods.CurrentWarenInfo.Name);
  2371.              
  2372.               myCurrentShip.Action.TransferFromShip(ship.ShipID, ship.StockRoom.Amount(g), g);
  2373.               match = True;
  2374.             }
  2375.           }
  2376.         }
  2377.       }
  2378.     }
  2379.   }
  2380.   Var Span As New CHtmlDiv();
  2381.   Span.Add("Vorgang abgeschlossen");
  2382.   Span.Style.Add('color', '#FFCC00');
  2383.  Response.Add(Span);
  2384.   If( not match){
  2385.     Response.Add("Keine Trümmer gefunden");
  2386.   }
  2387.   Response.Add(New CHtmlNewLine());
  2388.   Response.Add(New CHtmlNewLine());
  2389.   Response.Add(New CHtmlSeperator('SRS - Scan'));
  2390.  zeigeSrsWare(False);
  2391.  
  2392.  
  2393. }
  2394.  
  2395.  
  2396. Main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement