Scripting:MiniPortal
Aus STNE-Wiki
(Unterschied zwischen Versionen)
K |
|||
Zeile 119: | Zeile 119: | ||
} | } | ||
}</pre> | }</pre> | ||
+ | [[Kategorie:Scripting]] |
Aktuelle Version vom 2. Mai 2008, 20:45 Uhr
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); } }