Tutorial / Script wäre Klasse!
@sebi1106 Wieso bedrängt mich die Frage, ob das du auf dem Bild bist? xD
Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.
Tutorial / Script wäre Klasse!
@sebi1106 Wieso bedrängt mich die Frage, ob das du auf dem Bild bist? xD
Hallo ihr,
Ich habe Langeweile gehabt und habe daher mal ein Script geschrieben, welches Blaulichter aller Art erzeugen kann. Hier mal ein Vorgeschmack:
Bei Interesse oder genügend Anfragen, werde ich für das Script ein Tutorial machen.
Ansonsten noch einen wundervollen Montag .
Freue mich übrigens auch über Kritik!
Mit freundlichen Grüßen,
Vincent H.
---
Das hat er jetzt nicht gemacht <- Smiley...
Alles anzeigenIst ja auch komplett richtig so: LOCATION attachObject OBJECT
Guck mal hier:
Der Befehl attachObject ist ja auch nur für Locations und hat nichts mit irgendwelchen Klassennamen und Arma-Objekten zutun, welche an andere Objekte attached werden.
Das hier hatte ich geschrieben:
LG,
Anton
@Molaron Sorry hatte das überflogen. Hatte vorher nie "attachObject" aus den Arma - Funktionen beachtet. Aber gut zu wissen.
@script /Vincent /dev/null
Ich habe nicht behauptet, dass man mit attachTo eine Location attachen kann.
Mit dieser Aussage habe ich den Befehl attachObject gemeint, denn dieser ist ausschließlich dafür da.
LG,
Anton
@Molaron Das hast du aber mit dem "LOCATION attachObject OBJECT" ausgedrückt^^.
@STG_SilentF0x Schau dir mal den Befehl an. Ich meine das war der richtige: setVectorDir - Bohemia Interactive Community
@Molaron Achso und danke dafür. Ich habe mich vorher noch nicht mit dem konvertieren und ent-konvertieren von Positionen beschäftigt. Nur in der Theorie und nicht in Arma 3. Jetzt kenn' ich noch ne Variante.
Hab die CopLightsdatei von IxDeShina
So kleines Sachen wie IPad oder so kann ich ja. Nur so Sachen gehen bei mir noch nicht
@STG_SilentF0x Also im eigentlichen Sinne musst du eine "while"-Schleife machen, in der die Lichter, bzw. die Helligkeit immer hoch und runter geschaltet wird. Das hört sich kompliziert an, ist aber schlussendlich ganz einfach, da das Script von "IxDeShina" diese Möglichkeit von vielen aufleuchtenden Lichtern, nicht bietet.
Alles anzeigenKeine Ahnung, was sich derjenige beim Befehl attachObject gedacht hat...
Dieser Befehl hat den Sinn, eine Location an ein Objekt anzubinden. Der Syntax für attachObject ist auch komplett anders:
LOCATION attachObject OBJECTDer Befehl, der verwendet werden sollte, sollte folgender sein: attachTo
Folgendes Beispiel:Codecase "cop_offroad": { if(typeOf _vehicle == "C_Offroad_01_F") then { waitUntil {!isNil {_vehicle getVariable "Life_VEH_color"}}; _vehicle animate ["HidePolice", 0]; _vehicle animate ["HideBumper1", 0]; _vehicle setVariable["lights",false,true]; _object = "KLASSENNAME" createVehicle [0,0,0]; _object attachTo [_vehicle, [X,Y,Z]]; }; };
Hierbei sollte man beachten, dass in Zeile 9 X, Y und Z die Koordinaten in Relation zum Mittelpunkt des Fahrzeugs angeben.
Um damit leichter zurechtzukommen, gibt es Befehle wie:modelToWorld
worldToModel
selectionPositionIm 3DEN-Editor kann man so die Perfekte Position für das Objekt finden, welches man attachen möchte.
LG,
Anton
@Molaron Ich möchte nichts sagen, aber wenn er dort eine "Blaulicht-Leiste" haben möchte, dann ist er mehr-oder-weniger gezwungen attachTo - Bohemia Interactive Community zu nutzen. Achso und behaupte mal nicht, dass attachTo nur "location attachTo object2" ist. Deine Annahme mit "LOCATION" ist falsch, da man mit attachTo nur Objekte aneinander binden kann. Kein Objekt an eine Position.
Aber ansonsten hast du Recht, dennoch ist das noch irritierender als ich ohnehin schon mit meinen Aussagen bin^^.
Kenne mich damit nicht so wirklich aus. Bin recht neu. Wie kann ich das denn dann sonst machen?
@STG_SilentF0x Naja, dazu benötigst du ein wenig Erfahrung mit Lichtquellen und mit dem Befehl "attachTo". Dann müsstest du die "fn_sirenLights.sqf" neu schreiben oder eine neue Datei erstellen oder eben die "fn_sirenLights.sqf" bis zum Ende bearbeiten. Es ist eigentlich nicht schwer, nur man muss sich zuerst zurecht finden.
Es ist ja der Offroader für die Cops. Bei mir sind Bumper und Police Schriftzug zu erkennen.
case "cop_offroad":
@STG_SilentF0x Ob Cop Offroader hin-oder-her - es ist ja egal, ob "Police" auf dem Wagen zu erkennen ist, denn das gehört nicht zum Licht-Script.
Alles anzeigenHabe es so in der fn_vehicleAnimate.sqf stehen
case "cop_offroad":
{
if(typeOf _vehicle == "C_Offroad_01_F") then {
waitUntil {!isNil {_vehicle getVariable "Life_VEH_color"}};
};
_vehicle animate ["HidePolice", 0];
_vehicle animate ["HideBumper1", 0];
_vehicle setVariable["lights",false,true];
_vehicle attachObject ["obejektclasname"];
};So wie es mir gesagt wurde. Nur das Licht funktioniert dann nicht. Classname habe ich jetzt noch weggelassen. Wollte ein Licht hinzufügen, damit ich diese wie ein Suchscheinwerfer benutzen kann.
@STG_SilentF0x Das macht beim Offroader alles keinen Sinn. Zu mindestens gibt es die dort genannten Animationen nicht. Wenn du unbedingt ein Licht einfügen willst, dann füg einfach eine Lichtquelle per Objekt hinzu.
@STG_SilentF0x Ich weiß ja nicht was das Problem sein soll. Hier mal ein kleiner Rat:
Das mit dem
- Befehl ist korrekt. Es ist im Endeffekt egal, wo der Befehl ausgeführt wird. Ob Server oder Client, das Command ist Global, wenn das Objekt Global ist.
Aber um zurück zu kommen: Wenn es dir um das Blaulicht geht, dann musst du einen kleinen Teil in der Datei "core/cop/fn_sirenLights.sqf" hinzufügen. Dann sollte das Licht/Objekt hinzugefügt sein. Ansonsten kann ich auch mein eigenes Script, welches konfigurierbar ist, auf Anfrage hochladen und ein kurzes Tutorial machen.
MfG,
Vincent H.
Wir waren noch nie die GG-Community und werden auch nie eine sein
![]()
Hallo Vincent,herzlich Willkommen im Native Network.
Verkaufen von Scripts ist zwar Moralisch verwerflich, aber nicht verboten. Sonst stimme ich dir komplett zu
Grüße
Xylo
Naja,
Ich gehe davon aus, dass viele Abgänger von GG zu NN gewechselt sind - ist ein wenig ironisch gemeint. Deshalb dieser Titel^^.
Achso, und ich habe eben den Satz nochmal bearbeitet.
Hallo NN-Community oder vormals GG-Community,
Ich habe mich mal dazu entschlossen, einen kleinen Text aka Erklärung aka Ratgeber zu gestalten - wie sich jeder im Scripting verbessern kann, was man tun sollte und was nicht (bezogen auf Arma / Bohemia Ihhh) und wie man sich am besten selber helfen kann.
Aber nun gut. Erstmal ein Vorwort zu mir. Und btw. bitte lest den Beitrag vollständig, auch wenn dieser so gut es geht sortiert ist. Naja, ich versuche den Beitrag amüsant zu gestalten - also immer mitdenken^^.
Vorwort:
Ich bin Vincent. Ein Scripter, ein Linux-Liebhaber und bin mehr-oder-weniger fanatisch und perfektionistisch was Script's in SQF angeht. Oftmals könnte ich kotzen, was andere fabrizieren, in dem sie irgendwelche Code-Schnipsel zusammenjagen und sagen, sie haben alles selber gemacht oder noch besser - 'machen ellenlange Scripts die eigentlich viel kürzer geschrieben wären.
Ich finde Scripting super und kann zum Einsteigen sowohl auch als erweitertes Wissen gebraucht werden - nun muss man sagen, dass SQF einen sehr kleinen Horizont besitzt, was die Anwendungszwecke angeht. Aber dazu mehr weiter unten ;).
Der Einstieg in das scripting / programmieren:
Ich kann mich nur noch daran erinnern, was ich damals gemacht habe - ich verlange nicht, dass ihr genau das macht, aber nehmt es als Sinnbild.
Damals fing ich mit PHP an, da ich PHP nutzen musste, um Webanwendungen zu schreiben, und weniger interessiert an den "Compiler"-Sprachen wie C#, Java oder C++ war. Jetzt muss ich dazu sagen, dass PHP objektiv gesehen eine sehr einfache Programmiersprache ist, dennoch ist sie im Vergleich zu "Compiler"-Sprachen sehr langsam (ein normales Script braucht zum laden ca. ~0.09 sek - während ein "Compiler"-basiertes Script wesentlich, wirklich wesentlich schneller ist (> 1 ms, wenn nicht sogar schneller)).
Dabei habe ich eigentlich immer mit irgendwelchen Foren-, Stackoverflow- oder Blogbeiträgen gearbeitet, da ich denke, dass Videos in jeglicher Weise wenig Inhalt auf viel Zeit strecken - und man möchte doch eine Sprache schnell lernen, oder?
Wichtig ist dabei auch anzumerken, dass man es gar nicht erst versuchen sollte sich eine Sprache anzueignen, wenn man "keine Lust" hat, sich etwas durch zu lesen. Das trifft aber auf fast alles zu, auch auf die Schule.
Also halten wir fest: Es ist wichtig, dass man wirklich Spaß daran hat etwas im Bereich Scripting/Programmieren zu lernen. Ich verweise aber hierzu unten mal auf Quellen zum "lernen".
Man muss natürlich auch anmerken, dass es von Person zu Person unterschiedlich ist, wie schnell jemand Inhalte auffassen kann. Daher nicht aufgeben, wenn man etwas mal nicht sofort versteht.
Was ich persönlich auch empfehlen kann ist, sich Scripts durchzulesen oder zu überfliegen und versuchen zu verstehen - Wieso? Warum? Weshalb? - etwas überhaupt so funktioniert. Sowas hilft ungemein beim einprägen und ist dazu auch sehr praktisch: "man ist schon im Scripting selbst" - also Bildlich gesprochen - man scriptet ja noch nicht^^.
Wenn ihr mit dem scripting/programmieren beginnt müsst ihr euch, es ist auf jeden Fall wichtig um effizient zu arbeiten, in die Engine hineindenken können, dass heißt im eigentlichen Sinne, dass ihr wissen solltet, wie die Engine arbeitet, um Schlupflöcher, die z.B. die Leistung vom Clienten oder Server verringern finden könnt.
Hmm. Fällt mir noch etwas für Anfänger ein? Gerade nicht, aber ich werde den Beitrag, wenn es möglich ist, erweitern, um euch eine Vielfalt von Lernmöglichkeiten zu bieten.
Quellen:
Das SQF-Scripting im Allgemeinen:
SQF ist eigentlich eine sehr gemischte Sprache - dabei wurde die Sprache von PHP und C#, aber auch von C++ und Phyton oder Ruby beeinflusst, was sich im "Schreibfluss" bemerkbar macht. Jetzt ist natürlich wichtig zu erwähnen, dass SQF weder einen externen "Compiler" oder Programm zum ausführen benötigt, naja, ausgenommen sind alle Arma-Teile und die anderen Spiele-Titel von Bohemia Interactive, die dieselbe Arma-Engine nutzen. Das schränkt SQF zunächst ein, was sich z.B. beim Serverseitigen Scripting herausstellt (z.B. File-Management). Nun ist SQF auch nur für die Ingame-Arma-"programmierung" gedacht und soll nicht die Engine an sich "scriptbar" machen.
Der nutzen von SQF sollte aber jedem Glasklar sein - es ist eben zum "Scripting" gedacht, also z.B. einen Helikopter von A -> B schicken oder eine Animation ausführen, um sich auf einen Stuhl zu setzen. Ist zunächst nichts besonderes, aber man kann SQF auch wunderbar für andere Dinge nutzen, z.B. ein Framework wie Altis Life oder einen spaßigen Spielmodus wie KotH(King of the Hill) schrieben - basierend auf SQF, einer Scripting Sprache.
Dass ist jetzt ein sehr allgemeiner Teil. Aber ich habe nicht zu viel versprochen.
Weitere Tipps für Anfänger und erweiterte Scripter:
Also zunächst ist es wichtig, dass ihr eine "nette" Programmierumgebung, also IDE habt. Ich empfehle Visual Studio Code, da kann zur not auch mit GIT gearbeitet werden, bietet eine gute Übersicht und ist sehr stabil im Betrieb. Notepad++ ist zwar auch eine gute Lösung, ist aber manchmal blockierend (so geht es mir zu mindestens damit).
Das Ziel eines jeden Scripters/Programmierers sollte sein, die laufenden Scripts stätig zu verbessern, um auch das letzte Stückchen Performance zu ergattern. Ich weiß, dass einige IT'ler sagen werden "Never change a running system." aber ich sage "Make sure that the running system runs better than the running system."
Wenn etwas nicht funktioniert, dann schaltet mal "-showScriptErrors" als Parameter ein - hilft oftmals. Ansonsten gibt es LOOOOOOooooooooooooooooooooooooogggs.
Apropo Log's: Eine schöne weißheit aus der IT ist, dass man sämtlichen "scheiß", den man in Scripts ausprobiert loggen sollte. Ich meine jetzt nicht, dass ein "diag_log str "Script wurde gestartet";" dort stehen sollte, dennoch sollte man alle Möglichkeiten durch "If"-Anweisungen ausschildern.
D.h. z.B.:
damit man ein "Live"-Feedback davon bekommt, was man selbst eigentlich gerade "tut".
Die Sachen mit dem verkaufen und kaufen von SQF-Scripts... :
Um jetzt zu guter letzt nochmal auf einen besonderen Punkt zu sprechen zu kommen. Das verhandeln von Scripts. Das verhandeln von Scripts ist meiner Meinung nach das niederste was man bei SQF machen kann. Es ist eben so, dass es zu aller erst unglaublich moralisch verwerflich (danke an Xylometachlorid^^) ist, für "Open Source"-Content Geld zu verlangen; Andererseits geht es dann soweit, dass dieses Verhalten Arma zerstört. Auf unbewusster, sowie bewusster Weise.
Ich bin wie schon gesagt kein Fan davon und unterstütze das verkaufen, zu mindestens das öffentliche Anbieten von solchen Dingen in keinster Weise.
Nun muss man auch erwähnen, dass es in Ordnung ist, wenn der Dienst, also die Zeit die ein Scripter in seine Arbeit gesteckt hat, entlohnt wird. Aber bitte nicht in Form von statischen Produkten, da ist kein können gefragt und das Geld ist dabei zu unrecht investiert - zu mal viele Scripts auch ein unnatürliches Preis-Leistungs-Verhältnis haben.
Ich weiß, dass ich mich mit diesem Teil sehr weit aus dem Fenster lehne, aber bitte - Arma 3 ist eine Basis, die für jeden zugänglich ist - wieso dann Geld verlangen?
War das jetzt erstmal alles? Ja. Ich weiß es ist ein "wenig" Text, aber gewöhnt euch dran, dass sollte und ist gang-und-gebe in der IT.
Ich wünsche jedem noch einen schönen Tag und bedanke mich vorausschauend schon für die Kritik von euch.
Wenn ihr mehr von dieser Art Beitragen haben wollt, schreibt ne Antwort - andernfalls schreibt auch ne Antwort.
Der Hamburger, aber auch irgendwie nicht in Hamburg lebende Junge,
Mit freundlichen Grüßen,
Vincent H.
Und hier steht irgendeine Signatur. \/