Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 08.07.2009, 14:23   #1 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard Skripting und JIP

Hi,
Ich bins mal wieder tut mir leid, dass ich immer nur Frage und bis jetzt noch nicht anderen Helfen konnte. Aber hab mir in der letzten Zeit ein großes Wissen angeignet und werde Bald auch anderen Helfen können.

1. Skripting:
Also, ich möchte ein Skript erstellen, das bei Aktivierung (Ich habe einen Auslöser auf der Map, der als Bedingung Prüft ob das Fahrzeug besetzt ist) mehrere Dinge in einer bestimmten Reihenfolge ausführt.
Ich habs bis jetzt so versucht:
Zitat:

heli2 setFuel 0;
sleep 5;
[Man1] exec "skript2.sqs";
sleep 2;
heli2 setFuel 1;

Also er soll dem Heli den Sprit rausnehmen, damit man den Motor nicht starten kann, dann soll der Mann eine Animation über "skript2" ausführen und dann den Tank wieder auffüllen.

> Hat allerdings in meiner Form nicht funktioniert. Aber war ja klar

2. JIP
Also, dass die Taskstates nach einem respawn bzw. einem JIP stimmen hab ich noch nicht rausgefunden, aber ich denke, da wird sich schon irgendwann eine Lösung finden.
Jetzt mal was Anderes:

Habe auf der Map, sagen wir mal z.B. einen Auslößer, der wenn der Airport feindleer ist, Auslöst, dass neue Truppen nach einer bestimmten Zeit von außen auf den Airport nachrücken.
Macht das Spiel das selbst, dass der Spieler bei einem JIP, dann die gleichen Positionen der AI hat, wie ein Spieler, der die Mission schon von Anfang an Spielt ?

Danke schonmal
Gruß
Max

Geändert von N939 (08.07.2009 um 16:25 Uhr).
N939 ist offline  
Alt 08.07.2009, 16:26   #2 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

EDIT: zu 1.
Skript sieht jetzt so aus :

Zitat:

;Heliscript
_heli=_this select 0
_man=_this select 1

sleep 25;
_heli setFuel 0;
sleep 10;
[_man] exec "skript2.sqs";
sleep 5;
_heli setFuel 1;
sleep 5;
_heli action ["EngineOn",heli2]
sleep 10;
_man enableAI "Anim"

exit

und funktioniert, allerdings hält er die Delays nicht ein welche nötig wären, somit wird der Treibstoff auch nicht auf 0 gesetzt, da setFuel 0 und setFuel1 gleichzeitig ausgeführt werden und somit nichts nützen.
Der Auslöser ist wie folgt konfiguriert:
Aktivierung: Mehrfach
Bedingung: ! isNull driver heli2
Aktivierung: [heli2,man1] exec "heli1.sqs"

Habt ihr da noch einen Tipp für mich, 2. ist noch ungeklärt
N939 ist offline  
Alt 08.07.2009, 16:34   #3 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Zitat von N939 Beitrag anzeigen

Aber hab mir in der letzten Zeit ein großes Wissen angeignet...

- - -

Habt ihr da noch einen Tipp für mich, 2. ist noch ungeklärt


Einen Tipp hab ich da aufjedenfall: Wenn du schon gerade beim lernen bist, dann lern umhimmelswillen SQF anstatt SQS. Damit tust du dir leichter und hast mehr Möglichkeiten.

zu 2.
Wenn jemand joint bekommt er solche sämtliche Daten bezüglich auf der Map vorhandener Objekte/Einheiten vom Server übermittelt. Problematisch ist JIP nur in Bezug auf laufende Scripte und deren Variablen.
__________________
Tajin ist offline  
Alt 08.07.2009, 16:49   #4 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Ok ja hab ich allerding ist bei mir immer das prob. wenn ich eine SQF mache und dann in die initZeile des Objekts [heli2,man1] execVM "heli1.sqf" eingebe, dann sagt er immer Typ Script erwartet nichts oder so. Ich glaube das hängt damit zusammen, dass man XXX = [heli2,man1] execVM "heli1.sqf" eingeben muss allerdings ist mir noch nicht ganz klar was bei XXX reinkommt.
Ansonsten hast du eine idee warum er die Delays nich annimmt. Sobald ich in den heli steige führt der Soldat sofort die Anim aus und der heli startet die motoren

Zu 2. Ok gut zu Wissen, dann passt das. ja mit dem Briefing kämpf ich auch garede, wie viele andere auch und schaffe es einfach nicht, dass alle den selben Task Status bekommen egal ob respawn oder JIP. aber gut zurück zum thema und vielen dnak

Gruß
Max

Geändert von N939 (08.07.2009 um 16:52 Uhr).
N939 ist offline  
Alt 08.07.2009, 18:06   #5 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Zitat von N939 Beitrag anzeigen

XXX = [heli2,man1] execVM "heli1.sqf" eingeben muss allerdings ist mir noch nicht ganz klar was bei XXX reinkommt.

bei XXX kannst du reinschreiben was du willst.
XXX ist dann eine Variable in der ein Verweis auf das Script abgespeichert wird das du gerade gestartet hast. Das erlaubt dir z.b. zu überprüfen ob das Script fertig abgelaufen ist und es erlaubt dir auch ein script von ausserhalb zu unterbrechen.

Was die Delays angeht. "sleep" ist ein SQF Befehl und funktioniert in SQS nicht.

SQF:
Code:
sleep 10;
SQS:
Code:
~10
__________________
Tajin ist offline  
Alt 08.07.2009, 18:27   #6 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Skript sieht so aus und is ne SQF:

Zitat:

_heli=_this select 0
_man=_this select 1

_heli setFuel 0.0;
sleep 5;
[_man] exec "skript2.sqs";
sleep 5;
_heli setFuel 1;
sleep 2;
_heli action ["EngineOn",heli2]
sleep 10;
_man enableAI "Anim"

exit

in der Ini das Auslösers steht:

Zitat:

heli = [heli2,Frau1] execVM "heli1.sqf"

Aber irgendwie funktioniert das nicht. Nach meiner meinung sollte er ja nun zuerst Fuel auf null setzen, dann warten, dann die Animation ausführen und dann wieder Fuel reinhauen, dann warten, dann Engine Aund dann, warten und, dann den man seine Animation beenden lassen. oder ?
N939 ist offline  
Alt 08.07.2009, 18:50   #7 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Zitat von N939 Beitrag anzeigen

Aktivierung: [heli2,man1] exec "heli1.sqs"

Ah ok dachte es wäre immernoch SQS.

Wie dem auch sei, bei SQF musst du im gegensatz zu SQS drauf achten das du jede Zeile mit einem ; beendest

Also vielleicht so:
Code:
_heli=_this select 0;
_man=_this select 1;

_heli setFuel 0.0;
sleep 5;
[_man] exec "skript2.sqs";
sleep 5;
_heli setFuel 1;
sleep 2;
_heli action ["EngineOn",heli2];
sleep 10;
_man enableAI "Anim";
Was macht skript2.sqs denn ?
__________________
Tajin ist offline  
Alt 08.07.2009, 18:59   #8 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

in der skript2.sqs ist die Animation gespeichert in einem loop muss ich dir nacher mal raussuchen is auf dem anderen PC, ja muss das mal testen is mir auch gerade aufgefallen, dass ja gar nicht überall das ; ist vielen Dank schonmal
N939 ist offline  
Alt 08.07.2009, 21:07   #9 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Ok super habs hinbekommen hab die Animation auch ncoh in das Skript eingebaut funktioniert super.

Vielen Vielen Dank hat mir sehr geholfen.
N939 ist offline  
Alt 09.07.2009, 14:32   #10 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

So hab noch ne Frage es geht um folgendes ich habe einige Fahrzeuge, die ein Skript ausführen (bsp. Tajin dein C130 Cargoskript) wenn ich die Fahrzeuge dann mit dem simple vehicle respawn Tool wieder spawnen lasse, dann gehen natürlich die Skripte auch nimmer. Hab schon alles versucht (Auslöser gesetzt, der Überprüft ob Fahrzeug noch lebt (!alive C130) und dann nochmal das Ausführt was bei der C130 in der Init steht) hat aber alles nicht funktioniert. bräuchte da wahrscheinlich ein skript, oder ?

Gruß
Max
N939 ist offline  
Alt 09.07.2009, 17:30   #11 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Hängt von dem Respawnscript ab das du benutzt, die wenigsten sind umfassend genug um die Objektnamen zu übernehmen, von der init-zeile ganz zu schweigen.

Wenn du willst probier dashier mal, ist allerdings nicht getestet hab ich gerade auf gut Glück zusammengeschrieben.

t-respawn.sqf
Code:
if (isServer) then {
 _obj = _this select 0;
_time = _this select 1;
_delay = _this select 2;
_count = _this select 3;
_init = _this select 4;
_name = vehicleVarName _obj;

_pos = getPos _obj;
_dmg = getDamage _obj;
_vup = vectorUp _obj;
_vdir = vectorDir _obj;
_fuel = fuel _obj;
_fire = canFire _obj;
_type = typeOf _obj;

_count = 0;

for [{_loop=0},{(_count >= _delay)},{_loop=_loop}] do 
{

    if ({alive _x} count crew _obj > 0) then {
        _count = 0;
    } else {
        if (!canMove _obj) then {
            _count = _count + 2;
        };
        if ((getPos _obj distance _pos) > 10) then {
            _count = _count + 1;
        };
        if (_fire != canFire _obj) then {
            _count = _count + 1;
        };    
        if (damage _obj > 0.95) then {
            _count = _count + 3;
        };    
    };
    sleep 1;
};

deleteVehicle _obj;
sleep _time;

if (_count != 0) then {
    _count = _count - 1;
    _new = _type createVehicle _pos;
    _new setPos _pos;
    _new setVectorDirAndUp [_vdir,_vup];
    _new setDamage _dmg;
    _new setFuel _fuel;
    _new setVehicleInit format ["nul=[this,%1,%2,%3,%4] execVM 't-respawn.sqf';%5 = this;%4",_time,_delay,_count,_init,_name];
    processInitCommands;
};
};
Aufrufen wie folgt:
nul=[this,respawnzeit,verzögerung,anzahlrespawns,init] execVM "t-respawn.sqf";

respawnzeit: Wieviel Zeit zwischen dem Löschen des alten Objekts und dem Erstellen des neuen vergeht.

verzögerung: Toleranzwert, wie schnell der Respawn stattfindet. z.B. wie lange das Fahrzeug herrenlos herumstehen muss bis der Respawn aktiviert wird. Überprüft Besatzung, Fahrtauglichkeit, Kampftauglichkeit, Schaden und Entfernung zum Startpunkt. Je mehr davon zutreffen, desto schneller erfolgt der Respawn.

anzahlrespawns: selbsterklärend, gibt an wie oft das Fahrzeug respawnen kann. Negativer Wert = unendlich.

init: hier kannst du Initbefehle reinschreiben die nach dem Respawn ausgeführt werden sollen




Hoffe es funktioniert :P
__________________

Geändert von Tajin (09.07.2009 um 18:16 Uhr).
Tajin ist offline  
Alt 09.07.2009, 19:19   #12 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 10:29 Uhr).
Xeno ist offline  
Alt 09.07.2009, 19:47   #13 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Nicht so voreilig.
Es wird deswegen an alle geschickt weil dort auch init-befehle enthalten sein können, die nicht nur den server betreffen.

Ich fand es sinniger das script je objekt laufen zu lassen. Wenn das alte Objekt verschwindet, endet auch sein script und für das neu respawnte Objekt wird ein neues gestartet. Kann man machen wie man will, ich hab mich diesmal für diese methode entschieden. Es ist unkompliziert, leicht editierbar/erweiterbar und sollte JIP-kompatibel sein. Kleinigkeiten ändern sich vielleicht noch.
__________________

Geändert von Tajin (09.07.2009 um 19:49 Uhr).
Tajin ist offline  
Alt 09.07.2009, 19:51   #14 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

Zitat von Tajin Beitrag anzeigen

Nicht so voreilig.
Es wird deswegen an alle geschickt weil dort auch init-befehle enthalten sein können, die nicht nur den server betreffen.

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 10:30 Uhr).
Xeno ist offline  
Alt 09.07.2009, 21:23   #15 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Naja, dann eben so:

Code:
if (isServer) then {
	_obj = _this select 0;
	_time = _this select 1;
	_delay = _this select 2;
	_times = _this select 3;
	_vinit = _this select 4;
	
	_pos = getPos _obj;
	_dmg = getDammage _obj;
	_vup = vectorUp _obj;
	_vdir = vectorDir _obj;
	_fuel = fuel _obj;
	_fire = canFire _obj;
	_type = typeOf _obj;
	
	_count = 0;
	
	for [{_loop=0},{(_count <= _delay)},{_loop=_loop}] do 
	{
	
		if ({alive _x} count crew _obj > 0) then {
			_count = 0;
		} else {
			if (!canMove _obj) then {
				_count = _count + 2;
			};
			if ((getPos _obj distance _pos) > 10) then {
				_count = _count + 1;
			};
			if (_fire && !canFire _obj) then {
				_count = _count + 1;
			};
			if (damage _obj > 0.95) then {
				_count = _count + 3;
			};
		};
		sleep 1;
	};
	
	_name = vehicleVarName _obj;
	if (_name == "") then {
		_name = "nul";
	};
	deleteVehicle _obj;
	sleep _time;
	
	if (_times != 0) then {
		_times = _times - 1;
		_new = _type createVehicle _pos;
		_new setPos _pos;
		_new setVectorDirAndUp [_vdir,_vup];
		_new setDamage _dmg;
		_new setFuel _fuel;
		nul=[_new,_time,_delay,_times,_vinit] execVM "t-respawn.sqf";
		_new setVehicleInit format["%1 = this;%2;this setVehicleVarName '%1'",_name,_vinit];
		processInitCommands;
	};
};
__________________

Geändert von Tajin (09.07.2009 um 21:49 Uhr).
Tajin ist offline  
Alt 09.07.2009, 21:31   #16 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 10:30 Uhr).
Xeno ist offline  
Alt 11.07.2009, 17:38   #17 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

So sorry war die letuzten Tage nich da, ich blick jez grad gar nich mehr durch , d.h. das Skript funktioniert noch nicht ist das richtig ?
N939 ist offline  
Alt 13.07.2009, 10:35   #18 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Tajin
 
Registriert seit: 17.01.2008
Beiträge: 267
Standard

Doch, funktioniert. Schau mal hier rein: Vehicle Respawn with Name & Init - Bohemia Interactive Forums
__________________
Tajin ist offline  
Alt 13.07.2009, 13:43   #19 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Ok danke probier ich gleich mal, danke schonmal
Max.
N939 ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

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