HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   skript hilfe benötigt (https://hx3.de/editing-scripting-167/skript-hilfe-benoetigt-21106/)

showmaker 06.11.2011 12:57

skript hilfe benötigt
 
Hallo,

ich bin neu hier und benötige etwas hilfe beim skripten.

1.
ich benutze ein skript (grenadefix.sqf] weil im unsung mod ein bug steckt und man dann keine granaten werfen kann. mit dem skript klappt es bis einer respawnt...ich benötige einen befehl um das skript nach einem respawn wieder zu aktivieren. hier das skript aktiviert über die init.sqf:

player removeWeapon "Throw";
player removeWeapon "uns_Throw";

sleep 0.1;

player addweapon "Throw";
player addweapon "uns_Throw";

hint "Grenades fixed";

};


PS: ich benutze kein REVIVE skript...respawn nach 60sek. an dem gleichen ort wo gestorben!

2.
ich suche ein skript, mit dem ich funk sounds auf einen funker legen kann...diese sounds sollen durchgehen laufen aber nur dann zu hören sein wenn man näher an den funker kommt. die .ogg files habe ich schon und eine möglichkeit diese sounds über einen trigger zu starten...habe mich mit dem guide von Mr-Murray beschäftigt aber nach einigen versuchen dann aufgegeben :-(

ich hoffe ihr könnt mir bei beiden dingen helfen, sonst bekomme ich meine missionen nie fertig...

Vienna 06.11.2011 14:02

Ich nehme an es wird für die Bewaffnung nach dem Respawn ein Skript geben. An dessen Ende fügst du deine angeführten Zeilen dazu.


Den "Sound" bindest du mit diesem Befehl an den Funker: Funkername say ["Soundname",5];

http://community.bistudio.com/wiki/say


Der Sound muss in der description.ext vorhanden sein:

Code:

// Eigener Sound
class CfgSounds
{
 sounds[] = {};
  class MeinSound
  {
  // Name mit dem der Sound angesprochen wird. z.B. player say ["Soundname",5]
  name = "MeinSound";
  // Dateiname (mit Pfad), volume (muss auf 1 gestellt sein!), pitch (muss auf 1 gestellt sein!)                         
  sound[] = {"sounds\MeinSound.ogg", 1, 1}; 
  titles[] = {};
  };
};

Der Sound bricht ab, wenn der Funker tot ist. Der Sound sollte sehr lang sein. Sonst müsste man ihn mit einer Routine wiederholen.

showmaker 06.11.2011 20:38

Hey Vienna,

vielen Dank für die Info!
Das erste hab ich jetzt hinbekommen. Wie du gesagt hast mit einem weaponrespawn skript.

Das 2te ist eine echte Denksportaufgabe! Also wichtig ist schon, dass der sound mit einer Routine läuft und nicht unterbricht bzw. neu startet wenn der spieler respawnt. Das ding dabei ist, dass ich 31 ogg files habe. Also einzeln. Ich habe in dem guide von. Mr. Murray gelsesen, dass man diese auch shuffeln kann also per Zufall auslösen. Die ogg files habe ich in einem Ordner namens "sounds" die ogg files heißen "Radio1.ogg - Radio31.ogg"

Den Befehl für's wieder neu starten wenn gestorben müsste mit:
waitUntil {alive player};
funktionieren. So hat das mit dem ersten auch geklappt.

Ich werde natürlich weiter rumtüfteln und noch nen paar tausend Male in der Vorschau checken ob's klappt ;-). Da ich nicht so den größten Plan habe was das skripten angeht wäre es super wenn Du das etwas genauer beschreiben könntest wenn Du eine Lösung siehst. Vielen Dank!
Gruß Toby

Xeno 06.11.2011 21:47

*deleted*

Xeno

showmaker 08.11.2011 21:49

Hey Vienna,

ich habe jetzt folgendes hier in meiner discribtion sthen:

class Radio1
{
player say ["Radio1",5]
name = "Radio1";
sound[] = {"sound\Radio1.ogg", 0.010, 1.0};
titles[] = {};
};

Und das spiel schmiert ab...denke mal das liegt and dem:

player say ["Radio1",5] ...wo liegt der Fehler?

event. klappt ja eine Routine wenn ich diesen befehlt [Wenn er dann klappt) ebenfalls in die weapon respawn kopiere...so klappt das mit den Granaten ja auch!?

Buliwyf 08.11.2011 22:00

Mal abgesehen davon, dass da ein Semikolon am Ende der Zeile fehlt, hat das NIX in der Description.ext verloren! Das gehört in ein SQF-File oder in einen Auslöser oder was auch immer...

Ich lege Dir nahe Dich zunächst mit Editing-Grundlagen zu befassen:

ARMA Editing Guide
ARMA 2 Scripting Commands

Das sollte für den Anfang reichen. Im zweiten Link gibts oben links ein Suchfeld in das Du zB description.ext eingeben könntest... da kannst Dir anschauen was man dariin unterbringen kann, bzw. wozu die Datei gut ist...

:rolleyes:

showmaker 09.11.2011 10:55

jup...den guide von mr. murray hab ich...schau ich nochmal rein...muss ja nun nur noch diese skript sprache endlich mal raffen :motz:scheißen kompliziert...
vielen dank bis hierher...

showmaker 09.11.2011 21:23

So das klappt jetzt @Xeno...Du hast geschrieben:

Soll noch Lipsync dazu kommen muss der Sound auf jeden Fall dort abgespielt werden wo das Unit lokal ist.

Ich möchte den Sound wenn möglich erst hören, wenn ich nah genug am Funker stehe...also so auf Distanz dann Funkstille. Meintest Du das mit Unit lokal? Aktuell ist so, dass wenn ich z.B. 50 Meter entfernt bin den Funksound immer noch hören kann...schon wäre so ab 10 Meter dann leiser und ab 50 Meter Ruhe... Und eine Routine bekomme ich leider auch noch nicht hin:motz:

So schaut jetzt das Skript in meiner desciption aus:

// Eigener Sound
class CfgSounds
{
sounds[] = {Radio};

class Radio
{
name = "Radio";
sound[] = {\sounds\radio.ogg, db+0, 1.0};
titles[] = {Radio};
};
};

...und starte es über die Init der Unit mit:RTO say ["Radio",5];

Wenn Ihr mir jetzt noch bei der Routine und dem Sound auf Nähe lauter bzw. Entferung leiser hörbar nen Tip geben könntet wäre KLASSE:daumen: Event. 'n fade in, fade out Skript?

blessings
showmaker

Vienna 09.11.2011 23:03

sound[] = {\sounds\radio.ogg, 1, 1};

Nicht über 1 und ohne db. Kannst testen mit unter 1, was sich auf die Lautstärke auswirken müsste.

Das mit der abnehmenden Lautstärke bei Entfernung funktioniert leider nicht so real abfallend wie man es gerne hätte. Das war einmal besser. Da wurde wieder an einigen Rädchen zum Nachteil gedreht.

Xeno meint, dass der say-Befehl lokal ist, was bedeutet du musst dafür sorgen ihn auf den PCs aller Clients zu starten. z.B. eine globale Variablen auf True setzen und mit "publicVariable" an alle PCs übertragen, wo damit ein Auslöser den say-Befehl startet.

Man kann auch den gesamten Befehl (RTO say ["Radio",5];) mit einem "Befehl-Sender" übertragen. Ich habe das einmal hier in einem Beispiel gezeigt: http://hx3.de/editing-scripting-167/...75/#post338786
Im Beispiel gibt es vier Befehlsempfänger: an West, Ost, den Server oder an Alle.

showmaker 10.11.2011 09:51

@Vienna...ich habe den db drinnen gelassen aber auf -30 gesetzt da der sound am start echt übel laut war...und die .oog datei einige sekunden leer laufen lassen...also tonspur über goldwave 10 sek. vom start an blanko. so ist es jetzt ganz OK. wenn ich weiter weg gehe vom funker wird es eindeutig leiser :-) Ähm...Du meinst das so wie es jetzt ist nur ich den sound hören kann!? ok...über einen trigger wäre ja an und für sich nicht schlecht...da könnte ich ja wenn ich mehrere trigger platziere auch ganz klar den befehl mehrfach an verschiedenen positionen auf einer map ausführen...dann würde ich auch keine routine mehr benötigen :-) weil wenn der rto respawnt und der trigger ist auf mehrfach gesetzt sollte ja der sound erneut abgespielt werden. ich schau mir das später nach maloche nochmal genauer an...

Vienna 10.11.2011 14:56

Ein Trigger, der den Sound startet, kann natürlich auch durch Anwesenheit des RTO ausgelöst werden. Wenn es weitere solche Trigger gibt dann ist es möglich, dass ein noch nicht abgelaufener Sound überlagert wird.

showmaker 10.11.2011 15:38

genau! habs gerade mal getestet...ich dachte ich nehm mal nen trigger, mach die achsen weg so das dieser überall aktiv ist aber das hat nicht geklappt...also nehme ich einfach mehrer trigger...

ne, ne...der sound biginnt bei mir bei betreten eines erneuten trigger von vorn...aslo nicht überlagert...

hören jetzt auch andere user diesen sound wenn ich die mission dann mal online spielen möchte? mit trigger ist das dann global?

...naja...besser wäre schon ein skript iwie das global mit respawn funktion läuft aber das wird mir jetzt zu kompliziert und so langsam will ich auch mal wieder spielen und nicht nur die ganze zeit editieren :ugly:

Nochmal VIELEN DANKE für die ganzen Feedbacks!!!:daumen:

PS: wenn du event. noch etwas für mich haben solltet was ich nutzen kann zu diesem thema..."also was auch die weniger guten skripter raffen" bin ich dir auf aller jeden dankbar!!!

blessington
showmaker

Vienna 10.11.2011 16:24

In diesem Thread (http://hx3.de/editing-scripting-167/...16/#post350324) sind drei Beispiele betreffend Sound enthalten.

Ich bin mir jetzt nicht mehr sicher, ob mit say der Sound nur lokal beim Aufrufenden oder global auf allen PCs spielt. Probiere es einmal aus.

showmaker 11.11.2011 10:27

also wenn ich den sound übern trigger auslöse ist er global...du hattest recht...dieser überlagert und das game stürzt sogar ab wenn ich den trigger mehrfach platziere und dieser erneut aktiviert wird wenn der sound noch läuft...habe jetzt 2 versch. sound.oog files und 2 sound einträge in der description [radio1 und radio2]...so gehts dann...muss die trigger dann nur abwechselnd platzieren...


auf Knopfdruck...das schaut interessant aus :-) werde ich mich am abend mal mit beschäftigen...also denne...schönen start ins wochenende!!! :daumen:

Vienna 11.11.2011 13:36

Liste der Anhänge anzeigen (Anzahl: 1)
Zum Absturz dürfe die Überlagerung nicht führen. Hier ein Beispiel für ein kleines Skript das unter Angabe der Unit, dem Soundnamen und der Soundlänge den Sound bis zum Tod dauernd wiederholt.

Aufrufbeispiel für den Mehrspielermodus in einem Mehrfach-Auslöser der auch nach dem Respawn den Sound bei der neuen Unit wieder startet:
Bedingung: alive Soldat1
Bei Akt.: temp = [Soldat1,"BlackAttack",80] execVM "Sound.sqf";

Sound.sqf
Code:

// Dauer-Sound an ein Objekt binden. Aufruf Lokal.      [Vienna 11.11.2011]
//
// Skript muss nach Tod/Zerstörung der Unit neu aufgerufen werden.
//
// Aufruf: [UnitName,"Soundname",Soundlänge] execVM "Sound.sqf";
//
// Aufrufbeispiel für Mehrfach-Auslöser:
// Bedingung: alive Soldat1
// Bei Akt.:  temp = [Soldat1,"BlackAttack",80] execVM "Sound.sqf";

//Lokale Variable
  private ["_unit","_sound","_dauer","_zeit"];

//Parameter übernehmen
 _unit  = _this select 0;
 _sound = _this select 1;
 _dauer = _this select 2;
 
//Schleife bis Unit tod/zerstört
  while {alive _unit} do
    {
      _unit say _sound;                        // Sound starten
      _zeit = time + _dauer;                  // Soundlaufzeit feststellen
      waitUntil {time > _zeit or !alive _unit} // warten bis Sound abgespielt oder Unit tod/zerstört
    }

Das Sktipt-Beispiel ist aus der Mission im Anhang. Zu beachten ist dabei der eigene Pfad des Skripts und der Sounddatei und natürlich auch deren Namen sowie der Soundlänge.

showmaker 16.11.2011 09:35

Sehr gut...VIELEN DANK!!! :daumen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119