HX3 Foren

HX3 Foren (http://hx3.de/)
-   Editing & Scripting (http://hx3.de/editing-scripting-167/)
-   -   Gewicht von Fahrzeugen (http://hx3.de/editing-scripting-167/gewicht-fahrzeugen-21533/)

Tajin 05.06.2012 11:31

Gewicht von Fahrzeugen
 
Ich hab vor einer ganzen Weile mal ein towing-script gebastelt. (zu ArmA1 Zeiten)

Mittlerweile gibt es ja attachTo, so das sich kaum noch jemand die Mühe macht sowas umzusetzen. Leider lässt die Glaubwürdigkeit von attachTo meiner Meinung nach aber sehr zu wünschen übrig.

Jedenfalls hat mein altes Script auf vereinfachte Art, sogar Seilphysik simuliert und das hat auch im Multiplayer recht gut funktioniert.


Lange Rede, kurzer Sinn: Ich denke darüber nach mein altes Script wieder auszugraben und noch etwas zu erweitern.

Das Wichtigste was ich dazu brauche ist das Gewicht von Fahrzeugen. Dafür gibt es aber keine direkten Configeinträge. Soweit ich weiss wird Masse nur über das GeoLod festgelegt, und darauf hat man in Scripten keinen Zugriff.

Meine Idee wäre jetzt, ein geschätztes Gewicht zu ermitteln, basierend auf folgenden Werten:
1. Volumen (ermittelt durch "boundingBox")
2. Armor (aus der config)
3. Art des Fahrzeugs (car,tank usw. als Modifikator)
4. Zuladung (z.b. bei Ammo-/Fuel trucks )

Ich denke so eine Funktion zur Gewichtsermittlung könnte sich auch in anderen Fällen als praktisch erweisen, fällt euch dazu noch was ein?

Rockhount 05.06.2012 13:40

Man könnte noch Wind dazu nehmen. Die Windwerte sollten dann aber immer vom Server "geholt" werden.

Tajin 05.06.2012 16:37

Jo stimmt, gute Idee :daumen:.

Allerdings meinte ich vorallem die Sache mit dem Gewicht.



Mit meiner aktuellen Gewichtsschätzung komme ich bei ein paar Rechenbeispielen auf Werte mit nur bis zu 20% Abweichung vom Realwert. Das ist schonmal garnich so schlecht.

burns 05.06.2012 16:40

Je mehr Variablen man einem Bastler an die Hand gibt, umso eher verrent er sich in krimskrams, was auch den Großteil an Arbeit in ArmA verschlingt.

Würd mir da weniger Arbeit machen, einfach 3 Klassen erstellen (light, medium & heavy) und dann alle verfügbaren Fahrzeuge eben darin einordnen. M1A1 ist heavy, hmmwv ist light, fueltruck medium, und finito.



edit: Wenn natürlich wieder das Gegenteil gewünscht ist, wie bei dem Ding mit usnerer magischen Fahrradkiste, kann man natürlich auch völlig ausrasten und zusätzlich noch ammo und fuel Werte der einzelnen Fhzg. auslesen um das mit in die Berechnung einfliessen zu lassen - wie gesagt, fummeln kann man bis es grün schneit.

Vienna 05.06.2012 16:51

Ist noch normal, dass Missionsbastler mehr Zeit mit dem Erstellen als mit dem Spielen von Missionen verbringen?

burns 05.06.2012 16:53

Zitat:

Zitat von Vienna (Beitrag 415589)
Ist noch normal, dass Missionsbastler mehr Zeit mit dem Erstellen als mit dem Spielen von Missionen verbringen?

Deshalb ist es hin & wieder nicht verkehrt, neben dem Erstellen von Funktionen, zwischendurch eine ganz normale Mission ohne Schnickschnack zu bauen - dann kommt man selbst auch wieder zum Zocken :D

Tajin 05.06.2012 17:45

Zitat:

Zitat von burns (Beitrag 415586)
Je mehr Variablen man einem Bastler an die Hand gibt, umso eher verrent er sich in krimskrams, was auch den Großteil an Arbeit in ArmA verschlingt.

Würd mir da weniger Arbeit machen, einfach 3 Klassen erstellen (light, medium & heavy) und dann alle verfügbaren Fahrzeuge eben darin einordnen. M1A1 ist heavy, hmmwv ist light, fueltruck medium, und finito.

Och für den Enduser ist es nichts weiter als eine einfache "getWeight" Funktion, also keine wirkliche Fummelei.

Klar könnte ich einfach eine Fahrzeugliste mit Gewichtsangaben machen, aber das soll ja möglichst flexibel sein und auch für Addons funktionieren – also warum nicht einfach auf die bereits vorhandenen Fahrzeugeigenschaften zurückgreifen?

Für das towing-script brauche ich letztlich ohnehin halbwegs genaue Zahlen, ein light/medium/heavy reicht da nicht aus.

MrCharles 05.06.2012 17:47

Patentlösung: Warten auf ArmA3 PhysX Spielereien :archi:

Tajin 05.06.2012 17:50

Zitat:

Zitat von MrCharles (Beitrag 415607)
Patentlösung: Warten auf ArmA3 PhysX Spielereien :archi:

:D Dabei mache ich das doch nur um eben diese Wartezeit zu überbrücken! :confused:

Tajin 06.06.2012 09:02

Sooo, funktioniert soweit.

Je nach Fahrzeugtyp gibt es gewisse Abweichungen, vorallem Flieger sind da etwas eigen aber es reicht um einen Anhaltspunkt zu haben.

PHP-Code:

//fn_estimateWeight.sqf
private ["_obj","_type","_class","_armor","_bbox","_bmin","_bmax","_width","_length","_height","_volume","_factor","_weight"];

_obj _this select 0;
if (
isnil ("_obj")) exitWith hint "no object found"; };

_type typeOf _obj;
_class configFile >> "CfgVehicles" >> _type;
_armor getNumber(_class >> "Armor");

_bbox boundingBox _obj;
_bmin _bbox select 0;
_bmax _bbox select 1;
_width = (_bmax select 0) - (_bmin select 0);
_length = (_bmax select 1) - (_bmin select 1);
_height = (_bmax select 2) - (_bmin select 2);
_volume _width _length _height;

_factor 1;

if (
_obj isKindOf "Car"then _factor 14 };
if (
_obj isKindOf "Ikarus"then _factor 19 };
if (
_obj isKindOf "Truck"then _factor 40 };
if (
_obj isKindOf "Motorcycle"then _factor };
if (
_obj isKindOf "Bicycle"then _factor 1.5 };
if (
_obj isKindOf "Ship"then _factor };
if (
_obj isKindOf "Plane"then _factor };
if (
_obj isKindOf "Helicopter"then _factor };
if (
_obj isKindOf "Tank"then _factor 103 };
if (
_obj isKindOf "Tracked_APC"then _factor 65 };
if (
_obj isKindOf "Wheeled_APC"then _factor 45 };

_weight =  round ( (_volume _factor) + (_armor 100 _factor) );

_weight


Buliwyf 06.06.2012 10:20

Weniger ist mehr... das haben schon die alten Ägypter beim Bau ihrer Pyramiden gesagt... :D

Ich würde, nur aus rein optischen Gründen, weil mir keine performancetechnischen Gründe einfallen, die ganzen IF-Abfragen gegen eine SWITCH-Struktur (dazu dann typeOf _obj verwenden) austauschen... nur meine bescheidene Meinung dazu.

:rolleyes:

Lester 06.06.2012 11:26

Zitat:

Zitat von Buliwyf (Beitrag 415703)
Ich würde, nur aus rein optischen Gründen, weil mir keine performancetechnischen Gründe einfallen, die ganzen IF-Abfragen gegen eine SWITCH-Struktur (dazu dann typeOf _obj verwenden) austauschen... nur meine bescheidene Meinung dazu.

Wo du recht hast, hast Du recht. ;)

Ist echt schade das man nicht einfach die Objektmasse des Models und natürlich den Fullstand von transportammo/-fuel/-repair nicht auslesen kann, dann wär es nämlich richtig allgemeingültig sauber.

So bleibt immer ein faler Geschmack weil ein leerer Pritschen LKW mal eben so schwer ist wie z.B. ein locker 2-3 mal so schwerer voller Tank Lkw.

Tajin 06.06.2012 13:03

Zitat:

Zitat von Buliwyf (Beitrag 415703)
Ich würde, nur aus rein optischen Gründen, weil mir keine performancetechnischen Gründe einfallen, die ganzen IF-Abfragen gegen eine SWITCH-Struktur (dazu dann typeOf _obj verwenden) austauschen... nur meine bescheidene Meinung dazu.

Aus optischen Gründen hätte ich das auch gemacht, allerdings funktioniert das mit switch und typeof nicht.

TypeOf ist zu restriktiv, ich will ganz bewusst nicht einzelne Classnames aufzählen sondern nur auf die übergeordneten Fahrzeugtypen zurückgreifen.

Und da manche der Klassen verschachtelt sind ("truck" ist z.b. auch Teil von "car"), ist die Reihenfolge ausschlaggebend. (ok das wäre mit switch auch machbar, ich war nur einfach zu faul extra zu testen, wie sich switch in so einem Fall verhält. Vermutlich müsste ich nur die Reihenfolge der Abfragen umdrehen.)


Das mit dem Beigeschmack stimmt wohl.
Das Eine oder Andere könnte man da sicher noch mit einbeziehen, z.B. ob das Fahrzeug bewaffnet ist oder nicht. Die Supporttrucks könnte ich auch generell schwerer machen als die regulären, nur wie Lester schon meint können wir ja leider nicht überprüfen wie hoch der Füllstand von den Dinger ist.


Wie dem auch sei, ich guck jetzt erstmal was mein towing-script mit den Gewichtsangaben anfangen kann. :naughty:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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