Einen schönen Sonntag Nachmittag,
vor ein paar Minuten wurde das Forendesign von NN verändert. Ich dachte mir diesbezüglich, dass wir vielleicht ein Forenspiel zur Einweihung machen.
Und zwar soll es in diesem Forenspiel um das scripten gehen.
Ich möchte mal schauen, wie lange wir diesen Thread fortführen können, um am Ende ein vollständiges Script durch alle Beiträge zu erhalten.
Ziel des Spiels soll eine möglich langes Script sein, mit vielen verschiedenen Ideen, etc.
Weiter unten stehen Regeln und Nebeninformationen.
Formales:
Damit wir im eifer des Gefechts nicht durcheinander zwischen Kommentaren und Beiträgen zum Forenspiel kommen, müssen die einzelnen Codeschnipsel in Inline-Code angezeigt werden.
Im WBB-Editor gibt es eine schöne Taste:
Damit kann schöner Inline Code erzeugt werden.
ich möchte euch bitten, keine Quellcode-Boxen in diesem Thread zu verwenden, da sonst eine (un-)Übersicht entsteht (da diese Boxen viel zu groß sind...):
Weiter zu den Regeln:
Regeln:
- Es dürfen keine Codeschnipsel vom selben Benutzer hintereinander gepostet werden. Sollte es jedoch passieren, wird nur der erste von den folgenden genutzt.
Beispiel:
Nutzer A postet einen Schnipsel.
Nutzer B postet einen Schnipsel.Nutzer B postet einen weiteren Schnipsel.Nutzer A postet einen Schnipsel. - Kommentare sind ausdrücklich erwünscht! Nur bitte verwendet bei der Abgabe von einem Codeschnipsel die Inline-Codes. Außerdem bitte keinen anderen Text außer den Inline-Code im Kommentar hinzufügen - denn dazu könnt ihr ja normal kommentieren.
- Es gelten bestimmte Regeln für den Inhalt, der Abgegeben werden kann (mehr dazu unten).
Sollte es am Ende Fehler im Script geben, werden diese natürlich korrigiert. Es wird alles repariert, bis der Code wieder funktioniert. Das heißt, dass Folgefehler in der Korrektur mit einbezogen sind.
Als Fehler definiere ich einen Fehler, welcher von Arma 3 selbst im Script entsteht.
Wichtig ist nun noch, dass ich eine Umgebung schaffe, in der wir das Forenspiel bearbeiten können - das heißt zum Beispiel irgendeine Umgebung, wie zum Beispiel ob es Dialoge gibt, oder eben nicht.
Hier sind die Einschränkungen zu jeder Inline-Code-Zeile:
Jeder einzelne Eintrag ist als einzelner Inline-Code-Eintrag zu betrachten. Kommentare, sowie Zeilenumbrüche können ohne Wertung platziert werden. Kommentare werden am Ende entfernt, bzw. nicht beachtet.
if (...) then { | Die if-Anweisung. Es darf nur das if-Statement mit der Anweisung gepostet werden. Das if-Statement wird ohne ; gepostet, da das ; ein einzelner Eintrag ist. |
} else { | } else { wird als einzelner Schlüsselbausatz betrachtet. |
}; | Die Schlussklammer wird als einzelnes gewertet (kann auch für andere Zwecke außer der if-Anweisung genutzt werden). |
try { | Der Anfangsteil des try-Ausdrucks. |
} catch { | Das catch wird als einzelner Eintrag gewertet. |
; | Das Semikolon wird als einzelner Eintrag bewertet. |
private _variable = <any> _variable = <any> variable = <any> |
Variablen Deklarationen werden als einzelnes betrachtet. Diese Anweisung darf keine anderen Anweisung, welche in dieser List aufgelistet sind, enthalten. Das ; ist (innerhalb) erlaubt. Am Ende darf jedoch kein Semikolon stehen. |
<any> <ein Bohemia Kommando> <any> <ein Bohemia Kommando> <any> <any> <ein Bohemia Kommando> <ein Bohemia Kommando> |
Die Kommandos von Bohemia Interactive, bzw. SQF werden als separate Anweisung angesehen. Mehrere Kommandos hintereinander wie z.B. call compile preProcessFileLineNumbers <string> ist erlaubt. Semikolons sind nicht erlaubt. |
with <namespace> do { | Die with-Anweisung darf verwendet werden. Es darf nur ein <namespace> angegeben werden und wird ansonsten wie z.B. das if angewandt. |
for [{}, { ... }, { ... }] do { | Diese Anweisung darf an sich so genutzt werden. Innerhalb der {} Klammern darf jeweils nur eine einzige Anweisung beinhalten. Semikolons erlaubt. Geschlossen wird die Anweisung separat. |
for <string> from <number> to <number> (step <number>) do { | Die zweite for Anweisung kann ohne Probleme erzeugt werden. Geschlossen wird separat. |
while { true } do { ... }; | Ist verboten. Darf nicht verwendet werden. |
while { |
Warum das "andere" while? Weil das true in der vorherigen Zeile für einen unendlich-loop sorgt. Könnte problematisch werden. Geschlossen wird separat. |
{ | Die eröffnende Klammer der forEach-Schleife ist separat. |
} forEach <array> | Wird als einzelnes betrachtet. |
switch (<any>) do { | " Geschlossen wird separat. |
case <any>: { ... }; | Wird als einzelnes betrachtet. |
Ich hoffe ich habe alles Grundlegendes aufgefasst. Sollten noch Verbesserungsvorschläge aufkommen, verbessere ich natürlich gegebenes.
Zur Umgebung:
Ich gehe bei diesem Forenspiel davon aus, dass es sich um eine Mission handelt, welcher einen Dialog und ein Display in der RscTitles Konfig besitzt.
Die description.ext hat folgende Eigenschaften:
class dieserEineDialog
{
idd = 1025;
name = "dieseEineControl";
movingEnable = false;
enableSimulation = true;
class controlsBackground {};
class controls {};
};
class RscTitles {
class diesesEineDisplay
{
idd = 1025;
name = "dieseEineControl";
movingEnable = false;
enableSimulation = true;
objects[] = {};
fadeout = 0;
fadein = 0;
duration = 999999999999999999999999999;
onLoad = "uiNamespace setVariable ['diesesEineDisplay', (_this select 0)];";
class controlsBackground {};
class controls {};
};
};
Alles anzeigen
Das wäre es eigentlich soweit. Zu sagen gilt nur noch, dass es keine extra Dateien gibt und der gesamte Start innerhalb der "init.sqf" stattfindet.
Dann bleibt nur noch zu sagen: Happy Coding!
Mit freundlichen Grüßen
Vincent
Edits:
- Sollten Abgaben nicht ganz dem entsprechen, was hier formal aufgeführt ist, dann kann das gerne auch für andere Nutzen verwendet werden.
- Sollte durch die Forenverzögerung etwas z.B. doppelt sein, dann darf die letzte Person mit dem doppelten Eintrag selbigen korrigieren.
- Es können auch Konfig Anfragen gemacht werden, aber nur bedingt. Von jedem Typ Konfig nur einen Eintrag.
- Inkludierungen (#include <path>;) können nicht verwendet werden, da wie schon gesagt keine extra Dateien erstellt werden dürfen.
Konfig-Edits: