PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wieviel muss man nicht im Hirn haben...


[CCG]Cyborg
04.02.2014, 10:12
...um einem Spiel in der vierten Generation immer mehr und mehr Befehle zu verpassen von denen die eine Hälfte mittlerweile entweder völlig obsolet ist, oder von einem anderen Befehl mindestens genauso miterledigt werden könnte?
Wenn ich ein Auto in einem Script erzeugen will kann ich dies lokal tun, bei einem Mann geht dies nicht... wenn ich einem Gegenstand in einem Script welches ich mehrfach nutze einen Namen geben will bekommt er eine kack Nummer. Wenn ich das selbe mit einem Mann oder nem Hund machen will kann ich Kot wie: "name = This" in seine Init schreiben... aber weil es in verf..."" stehen muss kann die Scriptinstanz dies so nicht nutzen oder fortwährend abfragen. Herr Gott wer hat dieses Game so dermaßen Assi verpfuscht das nur Nerds da durchblicken? Oder woran liegt es das im Steam Workshop alle von "Nicht Nerds" gemachten Missionen dermaßen verbugt sind? Sooo ich werd jetzt mal wieder ne Stunde zum fenster rauswerfen weil ich versuche Bohemias Gehirnwindungen zu entwirren.... AAAA ---sorry musste mal raus----

JoeJoe87577
04.02.2014, 10:54
:streichel: sooo nu komm, wir setzen uns jetzt hin und dann sagst du allen die hier im Raum sitzen warum du dieses Spiel spielst. Währenddessen hole ich mir einen Kaffee

[CCG]Cyborg
04.02.2014, 11:18
:motz: Darf ich mal fünf Minuten HASS schieben...BITTE

Ich erklär mich kurz mal :
das billigste vom billigsten lässt sich bei dem Spiel nicht realisieren.


_Wache = _this select 0;

"Alsatian_Sandblack_F" createUnit [position _Wache,groupdogs,"this attachTo [_Wache, [0.5,0.2,0.0]];this playmove 'Dog_Run'; nul = [this] execVM 'dogdead.sqf'"];


Toll, Hund bei Fuß, der Playmove wird einfach ignoriert...switch ebenso!

Das Dogdead script? da scheißt er gleich ganz drauf...Scriptfehleranzeige o.ä? fehlanzeige....

_dog = _this select 0;

while {alive _dog} do {
if ({!alive _dog} count [_dog] == 1) then {detach _dog};
sleep 3;
};


Ich mein billiger geht es doch nimmer....

Gruß Cyborg

Kaffee? Gute Idee....Mooooment ;)

T-800a
04.02.2014, 12:20
guardDog.sqf

private [ "_w", "_d", "_sPos" ];
if ( ! isServer ) exitWith {};
_w = _this select 0;
_sPos = [ ( getPos _w ) select 0, ( getPos _w ) select 1, 1 ];

_d = createAgent [ "Alsatian_Sandblack_F", _sPos, [], 0, "FORM"];

[ _d, _w ] spawn
{
private [ "_d", "_w" ];
_d = _this select 0;
_w = _this select 1;

while { alive _d } do
{
_d moveTo getPos _w;
sleep 5;
};
};


Init deiner Wache:
0 = [ this ] execVM "guardDog.sqf";

Lester
04.02.2014, 12:33
Cyborg;467779']...um einem Spiel in der vierten Generation immer mehr und mehr Befehle zu verpassen von denen die eine Hälfte mittlerweile entweder völlig obsolet ist, oder von einem anderen Befehl mindestens genauso miterledigt werden könnte?Das hat bis auf wenige ausnahmen etwas mit Kompatiblität zu tun.

Cyborg;467779']Wenn ich ein Auto in einem Script erzeugen will kann ich dies lokal tun, bei einem Mann geht dies nicht... Sowas braucht man üblicherweise auch nicht, das mit dem Auto ist genaugenommen schon etwas fragwürdig, gedacht ist das Lokale Erzeugen z.B. um beim Spieler etwas darzustellen wie es aussehen könnte,
dann wird das globale Objekt erzeugt. (Für Bauscripte sehr interessant)

Cyborg;467779']wenn ich einem Gegenstand in einem Script welches ich mehrfach nutze einen Namen geben will bekommt er eine kack Nummer.So ist das mit erstellten Objekten, das ist kein Hexenwerk wo man sich nicht mit etwas Übung gewöhnen könnte.

Cyborg;467779']Wenn ich das selbe mit einem Mann oder nem Hund machen will kann ich Kot wie: "name = This" in seine Init schreiben... aber weil es in verf..."" stehen muss kann die Scriptinstanz dies so nicht nutzen oder fortwährend abfragen.Beim createunit kann man eine Initzeile übergeben und dort auch das This nutzen.
Grundsätzlich läßt sich das This aber immer nur dann nutzen wo 100% sichergestellt ist ,dass das eine(aktuelle) Objekt gemeint ist.
In Auslöser gibt es z.B. dafür das thislist, von woanders läßt es sich dann mit list Auslösername

Cyborg;467779']Herr Gott wer hat dieses Game so dermaßen Assi verpfuscht das nur Nerds da durchblicken? Oder woran liegt es das im Steam Workshop alle von "Nicht Nerds" gemachten Missionen dermaßen verbugt sind?Mit etwas Mühe kann man da schon viel erreichen, wer mehr will muß sich mehr Mühe geben, das ist auf dem Arbeitsmarkt auch ncihts anderes.
Das sich Leute einfach zu fein sind sich etwas Mühe zu geben und alles was sie gerne hätten auf dem Silbertablett ohne einen Handschlag zu machen erwarten ist nicht Problem des Herstellers.


Beim Modding ist das nichts anderes, da leicht zu behebende Fehler einfach ignoriert weil man die ohne -showscripterrors ja eh nicht sieht und ggf. die rpt ja auch einfach ausschalten kann.

Im Übrigen ist das ein Problem aller Modfähigen Spiele, wenn da schon alles drin wäre, dann bräuchte man es nicht zu machen, viele releasen halbgare Dinge, auch ein z.B. Skyrim hat damit zu kämpfen.

Vienna
04.02.2014, 12:53
Wenn du das weiter mit attachTo lösen willst, dann solltest du die Routinen vorerst mit einem im Editor erstellten Tier über dessen Initzeile testen.

[CCG]Cyborg
04.02.2014, 16:10
Danke für die Hilfe,

Ach Lester... ich flipp nach ein paar Stunden Umsonstrumprobiererei gerne mal aus... nicht das ich nix lernen würde dabei... ich hasse es nur eine fette To do Liste zu haben und nicht von der Stelle zu kommen.... dat ist voll ineffizient :coffee:

Du hast vollkommen recht mit der Mühe... Ich werd nur langsam zu alt für den Scheiß...:stupid:

Ich werd mir mal das guarddog ansehen und gucken wie die des gemacht haben. Mit attach werd ich wohl wollen müssen für bei Fuss.

Danke nochmal und noch einen schönen Tag.

PS: so ein bissel userfreundlicher könnte man das editing von Herstellerseite aber schon mal machen.... ist immerhin der dritte Teil des Ofp Nachfolgers und die KI weiß immer noch net wo der Wagen steht :happy:

Lester
04.02.2014, 16:34
Cyborg;467797']PS: so ein bissel userfreundlicher könnte man das editing von Herstellerseite aber schon mal machen.... ist immerhin der dritte Teil des Ofp Nachfolgers und die KI weiß immer noch net wo der Wagen steht :happy:Das definitiv, leider ist dem nicht so geschehen !

Man kann sich jetzt Tage und Monate darüber aufregen und versuchen andere zu missionieren das ArmA doch soooo scheiße ist und man es besser gleich bleiben lassen sollte.
Oder aber man macht damit mit "etwas" mehr Mühe das Spielerlebnis was geht und was unter dem Strich auch kein anderes Produkt liefert geschweige denn heranreicht.

[CCG]Cyborg
04.02.2014, 17:00
soooo, thx T800a...
hab es angepasst...nun geht es bei Fuss und macht sich uffe Sock wenn Herrchen ins Gras beißt... Wenn er nun noch bellen würde...ach wäre das schee....natürlich nur während der bark ani :zahn::schlagen::angel: :D


private [ "_w", "_d", "_sPos" ];
if ( ! isServer ) exitWith {};
_w = _this select 0;
_sPos = [ ( getPos _w ) select 0, ( getPos _w ) select 1, 1 ];

_d = "Alsatian_Sandblack_F" createVehicle _sPos; _d attachTo [_w, [0.5,0.2,0.0]]; _d setVectorDirAndUp [[0, 0, 0],[0, 0, 0]]; _d switchmove "Dog_Run";


[ _d, _w ] spawn
{
private [ "_d", "_w","_c","_spos2" ];
_d = _this select 0;
_w = _this select 1;

while { alive _d } do
{
if ({!alive _w} count [_w] == 1) then {detach _d;_sPos2 = [ ( getPos _d ) select 0, ( getPos _d ) select 1, 1 ];deleteVehicle _d;_c = createAgent [ "Alsatian_Sandblack_F", _sPos2, [], 0, "FORM"];};
sleep 0.5;
};
if ({!alive _d} count [_d] == 1) then {detach _d};
};


Na solange ich noch Freude habe während ich kotze...gehts ja hrhr... nur glaub mir, wenn die Leut net meckern täten hätten die Jungs überhaupt kein Ehrgeiz mehr^^

Drunken Officer
06.02.2014, 09:27
Führt der Köter eine Laufanimation aus, wenn der angetackert ist oder "gleitet" der neben dir über den Erdboden?
Alternativ könntest du es über eine while-Schleife lösen und dem Hund immer auf deine letzte aktuelle Position schicken, so lange du lebst
Oder du definierst eine Position rechts bzw. links neben dir.

T-800a
06.02.2014, 13:29
Ich hab mal noch ein bisschen weitergebastelt:
/*
================================================== ================================================== ===================

___ dogGuard __________________________________________________ __________________________________________________ ___

Creates a dog that follows a guard, when a unit of unequal side gets into 'dogGuard_scentRange' the dog will bark
and move toward the unit. When the dog reaches the unit ( < 10m ) he will bark again louder and reveal the unit
by 1.5 to the guards group.

File: dogGuard.sqf
Author: T-800a

INIT of the Guard: 0 = [ this ] execVM "dogGuard.sqf";

requires:
- a description.ext to locate the sounds in your mission
- sounds\dogHowl.ogg
- sounds\dogBark.ogg
- sounds\dogAttack.ogg

! No Sounds Included !

================================================== ================================================== ===================
*/

if ( ! isServer ) exitWith {};

dogGuard_trackTime = 40; // Time till dog returns after catching scent but not reaching target
dogGuard_scentRange = 75; // Radius in which dog catches scent ( Meter )
dogGuard_soundRange = 100; // Range till which you can hear dog barking ( Meter )



private [ "_w", "_d", "_sPos", "_sPath" ];

_w = [ _this, 0, objNull, [ objNull ] ] call BIS_fnc_param;

if ( isNull _w ) exitWith { if ( T8_UnitsDEBUG ) then { [ ">> %1 >>>>>>>>>> fn_getInCover.sqf >> Missing Unti", time ] call BIS_fnc_error; }; false };

_sPath = [ ( str missionConfigFile ), 0, -15 ] call BIS_fnc_trimString;
dogGuard_sHowl = _sPath + "sounds\dogHowl.ogg"; // Howl when guard was killed
dogGuard_sBark = _sPath + "sounds\dogBark.ogg"; // Bark when dog catches scent
dogGuard_sAttack = _sPath + "sounds\dogAttack.ogg"; // louder Bark when dog reaches unit he cought scent of

_sPos = [ ( getPos _w ) select 0, ( getPos _w ) select 1, 1 ];
_d = createAgent [ "Alsatian_Sandblack_F", _sPos, [], 0, "FORM"];

[ _d, _w ] spawn
{
private [ "_d", "_w" ];
_d = _this select 0;
_w = _this select 1;

while { alive _d } do
{
waitUntil { if ( !alive _d ) exitWith {}; sleep 1; ! ( _d getVariable [ "dogGuard_pauseFollow", false ] ) };

if ( alive _d ) then
{
_d moveTo getPos _w;
sleep 2;
};
if ( alive _d AND { !alive _w } ) exitWith
{
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_d moveTo getPos _w;
};
};
};

[ _d, _w ] spawn
{
private [ "_d", "_w", "_eE", "_e" ];
_d = _this select 0;
_w = _this select 1;

switch ( side _w ) do
{
case EAST: { _eE = [ "SoldierWB", "SoldierGB" ]; };
case WEST: { _eE = [ "SoldierEB", "SoldierGB" ]; };
case RESISTANCE: { _eE = [ "SoldierWB", "SoldierEB" ]; };
};

while { alive _d } do
{
private [ "_e", "_t", "_n" ];

if ( !alive _w ) exitWith {};

_e = _d nearEntities [ _eE, dogGuard_scentRange ];

if ( count _e > 0 ) then
{
playSound3D [ dogGuard_sBark, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_t = _e call BIS_fnc_selectRandom;

_d setVariable [ "dogGuard_pauseFollow", true, false ];

_n = time + dogGuard_trackTime;

waitUntil { if ( !( _n > time ) OR { !alive _d } ) then { _d setVariable [ "dogGuard_pauseFollow", false, false ]; true } else { sleep 1; _d moveTo getPos _t; ( _d distance _t ) < 10 }; };

if ( alive _d AND { _n > time } ) then
{
playSound3D [ dogGuard_sAttack, _d, false, getPos _d, 20, 1, dogGuard_soundRange ];
( group _w ) reveal [ _t, 1.5 ];
sleep 5;
};

_d setVariable [ "dogGuard_pauseFollow", false, false ];
sleep 30;
};
sleep 5;
};
};
Der Hund trottet hinter seinem Herrchen her, sollte jetzt eine Einheit einer anderen Fraktion in den Witterungsbereichs des Hundes treten bellt er und läuft in Richtung der Witterung. Erreicht er den Kontakt Bellt er laut, was dazu führt, dass das Herrchen mitgeteilt bekommt das da ein Gegner ist (via reveal). Der Hund versucht zirka 40s lang das Ziel 'aufzuspüren', wenn er dieses in 40s nicht erreicht ( näher als 10m) kehrt er zu seinem Herrchen zurück. Wenn das Herrchen erschossen wird heul der Hund noch kläglich.

Sounds müsstest du dir leider selber welche suchen. :/

JumpingHubert
06.02.2014, 14:36
da merkt so ein lernresistenter Laie wie ich erstmal, was für ein hundsvöttischer Aufwand hinter diversen Missionen steckt!

[CCG]Cyborg
13.02.2014, 21:04
ich werd das mal testen.... und im Abspann ne Zeile reservieren TOP!!:daumen:

Sajiki
24.02.2014, 18:12
Hallo T-800a,

Dein Script ist echt Klasse, nur leider blick ich da schwer durch (Anfänger) ^^
Jetzt wollte ich dich fragen ob du so lieb wärst und noch eine art attack ein zu bauen?

Also wenn der Hund beim Spieler ist (Weil er nicht wegläuft) wird er ja dem KI angegeben. Es sollte der Hund aber nicht nur rum stehen und wieder zurück laufen, könntest du das so machen das er dann den Spieler angreift mit sound?

Und was auch noch toll wäre wenn man den Hund erschiest sollte auhc ein Sound abgespielt werden :D


EDIT:
kk das mit dem Sterbe Sound vom Hund habe ich hin bekommen ^^

Einfach unter:
if ( alive _d AND { !alive _w } ) exitWith
{
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_d moveTo getPos _w;
};


das einfügen:
if ( !alive _d) exitWith
{
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
};


Einzige was halt ist, man hört es nur dann wenn der Hund einem noch nicht gewittert hat. Aber werd noch weiter versuchen daran ^^


Mfg
Sajiki

T-800a
24.02.2014, 21:36
[ _d, _w ] spawn
{
private [ "_d", "_w" ];
_d = _this select 0;
_w = _this select 1;

while { alive _d } do
{
waitUntil { if ( !alive _d ) exitWith {}; sleep 1; ! ( _d getVariable [ "dogGuard_pauseFollow", false ] ) };

if ( alive _d ) then
{
_d moveTo getPos _w;
sleep 2;
};
if ( alive _d AND { !alive _w } ) exitWith
{
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_d moveTo getPos _w;
};

}; // <-- EDIT

// Hier das 'Todes-Heulen' abspielen
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];

};

Sobald der Hund ja tot ist wird die While-Schleife ja beendet und das was im Script danach kommt abgearbeitet.

Zum Thema Attacke: Habe ich auch schon dran überlegt, aber ich fands langweilig dem Ziel einfach Schaden zuzufügen ohne das der Hund eine passende Attacke macht. Ich hab nämlich keine passende Animation gefunden.

Mit Schaden aber ohne tolle Animation könnte die 'Auf-Spür-Schleife' dann so aussehen:
while { alive _d } do
{
private [ "_e", "_t", "_n" ];

if ( !alive _w ) exitWith {};

_e = _d nearEntities [ _eE, dogGuard_scentRange ];

if ( count _e > 0 ) then
{
playSound3D [ dogGuard_sBark, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_t = _e call BIS_fnc_selectRandom;

_d setVariable [ "dogGuard_pauseFollow", true, false ];

_n = time + dogGuard_trackTime;

waitUntil { if ( !( _n > time ) OR { !alive _d } ) then { true } else { sleep 1; _d moveTo getPos _t; ( _d distance _t ) < 10 }; };

if ( alive _d AND { _n > time } ) then
{
playSound3D [ dogGuard_sAttack, _d, false, getPos _d, 20, 1, dogGuard_soundRange ];
( group _w ) reveal [ _t, 2 ];
sleep 2;
};

waitUntil { if ( !( _n > time ) OR { !alive _d } ) then { _d setVariable [ "dogGuard_pauseFollow", false, false ]; true } else { sleep 1; _d moveTo getPos _t; ( _d distance _t ) < 2 }; };

if ( ( _d distance _t ) < 2 AND { alive _d } ) then
{
private [ "_tD" ];

_tD = damage _t;
_t setDamage ( _tD + 0.5 );
};

_d setVariable [ "dogGuard_pauseFollow", false, false ];
sleep 35;
};
sleep 5;
};

Sajiki
25.02.2014, 22:07
Hallo T-800a,

Das mit dem Sound klappt nicht so ganz wie du es meintest ^^ Denn so heult der Hund nicht beim sterben sondern nach jeder Aktion die er machte.

Das mit dem Angriff verstehe ich, ohne Animation sieht es seltsam aus aber es erfüllt auch so den Sinn und zweck :D
Vielleicht findet sich ja einer der sich damit auskennt und würde eine erstellen.

Was vielleicht interessant sein dürfte wäre wenn du so eine animation hast dann falls der Besitzer stirbt und der Hund dort wartet. Wenn der Spieler dann näher kommt das der Hund ihn auch angreift ;)

mfg
Sajiki

T-800a
25.02.2014, 22:45
ohh stimmt, die Zeile muss natürlich auch hinter die geschweife Klammer, das hab ich jetzt übersehen im dusel.

[CCG]Cyborg
02.03.2014, 00:11
gibt angeblich Probleme das nur der Host die Sounds hört, kann das wer bestätigen?

T-800a
02.03.2014, 01:07
hmm keine ahnung, eigentlich sollte playsound3D global sein, zumindest laut der wiki

Sajiki
03.03.2014, 01:29
Im Coop haben es alle gehört bei uns oO
Die fragten mich sogar noch "Hast du da jetzt echt Hunde rein getan?" :rolleyes:

Also Hut ab noch mal an euch für das Script ;)

Mfg
Sajiki