Scripting:Flotten benennen

Aus STNE-Wiki

Wechseln zu: Navigation, Suche
fertige Scripte | Anleitungen und FAQ | Überblick über die Scripting-Sektion | Hilfen zum Arbeiten im Wiki


Inhaltsverzeichnis

Flotten-Benennung

--Moax 13:01, 25. Apr 2008 (W. Europe Daylight Time)== Skriptcode ==

Vorschlag 1.

VAR names[] AS String = {
'name1',
'name2',
'name3',
'name4'
}
VAR i AS Integer = 0
VAR Flotte AS new CMyFlotte( idDerFlotte );
VAR Ship as CMyShip
FOR ( EACH Ship IN Flotte.Ships )
{ 
   Ship.Name = '' & names[i]
   i = i + 1
}

Vorschlag 2.

von Positron

VAR i AS Integer = 1
VAR Flotte AS new CMyFlotte( idDerFlotte );
VAR Ship as CMyShip
FOR ( EACH Ship IN Flotte.Ships )
{ 
   Ship.Name = 'Name_' & i; // damit heisst das erste Schiff Name_1, das zweite Name_2 etc.
   i = i + 1;
}

Vorschlag 3.

von moax

Var i As Integer = 1;
Var Flotte As New CMyFlotte(79925);
Var Ship As CMyShip;
For (Each Ship In Flotte.Ships)
{
  If (i > 9) {
    Ship.Name = 'Prinz Eugen' & i;
  } Else {
    Ship.Name = 'Prinz Eugen 0' & i;
  }
  i = i + 1;
}

Vorschlag 4.

von moax

Var tag As String;
Var name As String;
Var i As Integer;
Var flotte As Integer;
tag = "K - ";
name = "Löwenzahn ";
i = 1;
flotte = 79939;
Var fleet As New CMyFlotte(flotte);
Var shiplist As CShipList;
shiplist = fleet.Ships;
shiplist.Reverse();
shiplist.Reverse();
Var ship As CMyShip;
For (Each ship In shiplist)
{ 
  If (i < 10) {
    ship.Name =  & tag & ' ' & name & ' 0' & i ;
    i = i + 1;
  }
  Else {
    ship.Name =  & tag & ' ' & name & ' ' & i ;
    i = i + 1;
  }
}
WriteLine('Bennenung der Flotte erfolgreich ausgeführt!');

Vorschlag 5: Benennung in NCC-Reihenfolge

von Luggage

Var tag As String;
Var title As String;
Var name As String;
Var i As Integer;
Var flotte As Integer;
tag = "USS"; // Schiffskennung (z.B. "USS") - optional
title = "Enterprise"; // Schiffsbezeichnung (z.B. "Enterprise")
flotte = 123456; // FlottenID. Siehe: http://wiki.stne.net/index.php?title=Scripting:FlottenIDErmitteln
If (tag = '') { name = title & ' '; }
Else { name = tag & ' ' & title & ' '; }
i = 1;
Var fleet As New CMyFlotte(flotte);
Var shiplist As CShipList;
shiplist = fleet.Ships;
Var ship As CMyShip;
Var firstship As CMyShip;
WriteLine('');
WriteLine('ooo/------------------------------------------------------------------------------------------------/');
WriteLine('oo/ Flottenbenennung nach NCC sortiert - erstellt von Luggage (7066) mit Hilfe von Licenser (45929)/');
WriteLine('o/ Warenspenden aus Dankbarkeit sind immer willkommen ;-) /---------------------------------------/');
WriteLine('/--------------------------------------------------------/');
WriteLine('');
WriteLine('Beginne Benennung der Flotte "' & fleet.Name & '" mit folgenden Parametern:');
WriteLine('Anzahl der Schiffe in Flotte: ' & shiplist.Count);
If (tag = '') { WriteLine('Keine Schiffskennung angegeben.'); }
Else { WriteLine('Schiffskennung: ' & tag); }
WriteLine('Schiffsbezeichnung: ' & title);
WriteLine('');
While (shiplist.Count > 0)
{
  firstship = shiplist.Item(0);
  For (Each ship In shiplist)
  { 
    If (ship.ShipID < firstship.ShipID)
    {
      firstship = ship;
    }
  }
  If (i < 10) {
    firstship.Name = name & '0' & i ;
    i = i + 1;
  }
  Else {
    firstship.Name = name & i ;
    i = i + 1;
  }
  shiplist.Remove(firstship);
  WriteLine(firstship.Name & ' (NCC: ' & firstship.ShipID & ') benannt - ' & shiplist.Count & ' Schiffe verbleiben.'); 
}
WriteLine('');
WriteLine('Alle Schiffe benannt.');

Bemerkungen

Kommentare

von Positron: Ich verstehe nicht ganz wofür dieses String-Array gut sein solle. Weil so muss man die Anzahl der "names" Parameter genauso gross oder mindestes so gross halten wie die Anzahl der Schiffe in der Flotte. Meist kommt es zu einer Fehlermeldung, wo der Index Ausserhalb des Arrays landet, weil ja nur zB 3 Namen im Array stehen aber es mehr als 3 Schiffe in der Flotte gibt. Sinnvoller ist es das Array komplett wegzulassen inklusive der names[i]-Angabe.. Hinzu kommt, das wenn man dann doch jeden Namen wieder einzeln für alle Schiffe einer Flotte(bis zu 80 Stk) einzeln eingeben muss, sich ein Script dafür erübrigt.

Mein Vorschlag für einen neuen Script-Code:

VAR i AS Integer = 1
VAR Flotte AS new CMyFlotte( idDerFlotte );
VAR Ship as CMyShip
FOR ( EACH Ship IN Flotte.Ships )
{ 
   Ship.Name = 'Name_' & i; // damit heisst das erste Schiff Name_1, das zweite Name_2 etc.
   i = i + 1;
}


von moax: Ich hab nun alle Varianten mal reingeben wobei ich die letzter bevorzuge.

Persönliche Werkzeuge