Scripting:MiniPortal

Aus STNE-Wiki

Wechseln zu: Navigation, Suche

Der Script erschafft ein kleines Portal, das maximum Reparieren/Energie/Reserve/Plasmatorpedos/Quantentorpedos auf eine auswählbare Menge von Schiffen beamen kann.

Die Konfiguration ist einfach, zwei Beispiele sind angegeben im Code, es sollte recht selbsterklärend sein. Standardmäßig ist nichts erlaubt, trifft aber eine der Bedingungen zu, werden Berechtigungen gesetzt. Einfach für jede Berechtigung, die du neu anlegen willst, den entsprechenden Block kopieren und die Werte ändern.

// -------------------------------------------------------------------------
// "DIE BEER-WARE LIZENZ" (STNE-Version):
// FSE_Faldrian hat diesen Script geschrieben. Sofern du diesen Hinweis nicht
// veränderst, kannst du mit dem Script machen was du willst. Sollten wir mal
// aufeinander treffen und du denkst, dieser Script hat dir was gebracht,
// kannst du mir ein Bier ausgeben. Gruß, FSE_Faldrian
// --------------------------------------------------------------------------


#UseInterface Web, ShipPortal;

// Benutzerberechtigungen festlegen
Var validUser As Boolean = False;
Var darfTorpedos As Boolean = False;

If(GuestUser.UserID = 36705) { // Mich erlauben
  validUser = True;
  darfTorpedos = true;
}
If(GuestUser.AllianzID = 742) { // FWD erlauben - Darf keine Torpedos
  validUser = True;
}

If(validUser) {
  arbeite();
} Else {
  println("Moin moin!"); // <-- Text, der unauthorisierten Benutzern ausgegeben wird
}



Function println(text As String) {
  Response.Add(text);
  Response.Add(New CHtmlBreak());
}

// Hier wird die richtige Ansicht generiert
Function arbeite() {
  Var Kolonie As New CMyKolonie(MyShip.MapPosition.X, MyShip.MapPosition.Y);
  
  // Wenn etwas submitted wurde, den Request bearbeiten
  // Die Request.Form.Item("schiffe") enthält einen String mit einer Komma-separierten Liste der ausgewählten Item-Keys
  
  If(Request.Form.ContainsKey('schiffe')) {
    Var SchiffListe As String = Request.Form.Item("schiffe");
    While(SchiffListe.IndexOf(",") > - 1) {
      action(Integer.Parse(SchiffListe.Substring(0, SchiffListe.IndexOf(","))), Kolonie);
      SchiffListe = SchiffListe.Substring(SchiffListe.IndexOf(",") + 1);
    }
    action(Integer.Parse(SchiffListe), Kolonie); // Letztes Schiff auch bearbeiten
  }
  
  // Formular öffnen
  Var form As New CHtmlForm(New CScriptUrl());
  Response.Add(form);
  form.Add(New CHtmlBreak());
  
  // Liste der Schiffe zusammenstellen
  Var kasten As New CHtmlListBox("schiffe");
  kasten.Multiple = true;
  kasten.RowCount = 15;
  
  Var schiffe As IEnumerator;
  Var schiff As CShip;
  
  schiffe = Kolonie.SRS.GetEnumerator();
  While(schiffe.MoveNext()) {
    schiff = schiffe.Current;
    If(schiff.UserID = GuestUser.UserID) {
      kasten.Add(schiff.Name & " (" & schiff.ShipID & ")", schiff.ShipID);
    }
  }
  
  form.Add(kasten);
  form.Add(New CHtmlBreak());
  form.Add(New CHtmlBreak());
  
  
  
  // Buttons druntertun
  form.Add(New CHtmlSubmitButton("Reserveenergie maximal aufladen!", "Aufladen"));
  form.Add(New CHtmlSubmitButton("EPS vollmachen!", "Energie"));
  form.Add(New CHtmlSubmitButton("Reparieren!", "Reparatur"));
  
  If(darfTorpedos) {
    form.Add(New CHtmlSubmitButton("Max mögl. Plasmatorpedos hochbeamen", "Plasmatorp"));
    form.Add(New CHtmlSubmitButton("Max mögl. Quantentorpedos hochbeamen", "Quantentorp"));
  }
}


Function action(schiffId As Integer, Kolonie As CMyKolonie) {
  If(Request.Form.ContainsKey('Aufladen')) {
    Kolonie.Aktion.Werft_ReserveBatterieAufladen(schiffId, 60);
    println("Reserve wurde versucht aufzuladen. --> " & schiffId));
  }
  If(Request.Form.ContainsKey('Energie')) {
    Kolonie.Aktion.TransferiereZuSchiff(schiffId, 60, EBeamRessource.Energie);
    println("Energie wurde versucht zuzusenden. --> " & schiffId));
  }
  If(Request.Form.ContainsKey('Reparatur')) {
    Kolonie.Aktion.Werft_Reparieren(schiffId, 200); // 200 so als maximalwert... irgendwas großes eben
    println("Schiff wurde versucht zu reparieren. --> " & schiffId);
  }
  If(Request.Form.ContainsKey('Plasmatorp')) {
    Kolonie.Aktion.TransferiereZuSchiff(schiffId, 80, EBeamRessource.PlasmaTorpedos);
    println("Plasmatorpedos wurden versucht hochzubeamen. --> " & schiffId);
  }
  If(Request.Form.ContainsKey('Quantentorp')) {
    Kolonie.Aktion.TransferiereZuSchiff(schiffId, 80, EBeamRessource.QuantenTorpedos);
    println("Quantentorpedos wurden versucht hochzubeamen. --> " & schiffId);
  }
}
Persönliche Werkzeuge