[DISKUSSION] Allgemeine S&M-Fragen III

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Post Reply
User avatar
ubuntufreakdragon
Posts: 3985
Joined: Thu, 23. Jun 11, 14:57

Post by ubuntufreakdragon » Fri, 1. Jun 18, 17:41

der rohwert ist die ladezeit in milisekunden, also die zeit zwischen 2 schüssen.
My X3 Mods

XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist

User avatar
JSDD
Posts: 851
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Fri, 1. Jun 18, 18:17

A = Schaden pro sekunde
B = Schaden pro Geschoss (steht in TBullets, sowohl Hüllen- als auch Schild-)
F = Feuerrate (Geschosse pro Minute, steht in TLasers)
F(s) = Feuerrate (Geschosse pro Sekunde)

F(s) = F / 60

logisch, ne minute hat 60sek

A = F(s) x B

oder:

A = F x B / 60

--------------------------------------

beim balancing setzt du A fest, und musst entsprechend F x B anpassen. mein rat ist, die feuerrate nicht mehr als 4 geschosse pro sek zu setzen, weil vanilla-scripts mehr / "schneller" nicht schießen können.

4 geschosse pro sek = 240 / min ... <-- idealer max. wert in TLasers

ansonsten geschmackssache. beim ändern der feuerrate änderst du gleichzeitig energieverbrauch, da dieser auch pro geschoss in TBullets definiert ist ... ergo diesen noch mit verrechnen
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

User avatar
Aldebaran_Prime
Posts: 1105
Joined: Sat, 20. Feb 10, 18:47

Post by Aldebaran_Prime » Fri, 1. Jun 18, 19:16

Danke für die Rückmeldungen! Speziell, dass eben der Raw-Wert die Zeit in ms zwischen den Schüssen ist.

Ich plane eher, die Schussrate zu reduzieren, da ja bekanntermaßen viele Projektile zu Performance-Einbrüchen führen. Klar muss ich dann den Schaden/Schuss erhöhen - daher brauche ich ja meine Excel-Übersicht.
Zudem muss ich schauen, wie sich die in EMC allgemein verfügbaren Strahlenwaffen am Besten zwischen den Korvetten- und GKS Waffen einordnen.

Was mir noch Performace-Sorgen macht, sind die Flak und Clusterflak. Hier habe ich schon die Effekte reduziert/ausgetauscht, z.B. auf Basis CMOD4. Das hat zwar etwas gebracht, die FPS sinken bei diesen Waffen aber noch stärker als bei allen anderen. Interessanterweise ist die Starbust relativ performace-unkritisch, obwohl sie auch eine Flakwaffe ist.
Image

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 13817
Joined: Sun, 20. Nov 05, 23:45

Post by UniTrader » Fri, 1. Jun 18, 19:38

@Vorposter

ups, da hab ich mich irgendwo vertan :oops: lag wohl an der Uhrzeit, danek für die korrekturen
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

User avatar
JSDD
Posts: 851
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Fri, 1. Jun 18, 20:46

is ne verwirrende sache !! :D hab mir selbst öfters den kopf drüber zerbrechen müssen, bevor ichs mir dann korrekt gemerkt hab, muss es zuerst auf papier bringen ... ^^

das mit dem x1000 war interessant bei der umrechnung:

feuerrate F(min) <--> verzugszeit zwischen 2 geschossen (in milisek, interessant fürs scripten, da nur int-werte funzen ...)


verzugszeit (s) = 1 / F(s)

oder:

verzugszeit (ms) = 1000 / F(s)

weil da 1s = 1000ms

oder:

verzugszeit (ms) = 60 x 1000 / F(min)

weil da 1min = 60s


@Aldebaran_Prime

weiß zwar nich was du mit "raw-wert" meinst, die "lifetime" der geschosse hat allerdings nix mit schaden zutun, die is nur (zusammen mit speed) interessant für die reichweite (speed x lifetime)

was clusterflak angeht:
wenn du diese waffe nützlich machen willst, reduzier die streuweiter der bruchteile auf 50m vielleicht (0.05km), indem du deren (speed x lifetime) entsprechend reduzierst. sonst streuen die zu weit und treffen gar nix mehr ... außerdem erhöhe die schadenswerte der bruchteile (erheblich).
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

DerW88
Posts: 1012
Joined: Fri, 28. Mar 14, 21:37

Post by DerW88 » Fri, 1. Jun 18, 21:48

Ich hatte vor einiger Zeit ja mal eine TBullets/TLaser für emc gemacht, wo ich mit den Waffenwerten rumprobiert habe. Unter anderem halt auch die Verringerung der Projektile.
Aldebaran_Prime wrote: Ich plane eher, die Schussrate zu reduzieren, da ja bekanntermaßen viele Projektile zu Performance-Einbrüchen führen. Klar muss ich dann den Schaden/Schuss erhöhen - daher brauche ich ja meine Excel-Übersicht.
Zudem muss ich schauen, wie sich die in EMC allgemein verfügbaren Strahlenwaffen am Besten zwischen den Korvetten- und GKS Waffen einordnen.
Den Schaden/Schuss an zu passen wird bei weitem nicht reichen. Grundlegend gilt dabei allerdings, Halbierte Feuerrate benötigt doppelten Schaden/Schuss. Daran wirst du ja garantiert gedacht haben.
Problematisch wird es bei Waffen mit Effekten.

Strahlenwaffen richten ihren angegebenen Schaden über die Wirkdauer an. Sprich hat die Bullet eine Lifetime von 3 Sec, dann wird der gesamte DMG auch über die 3 sec ausgeteilt. Wenn sich die Lifetime mit der Feuerrate überschreibt, sprich du einen durchgehenden Strahl erhälst, dann wird der DMG gestackt. Deswegen richten auch die Khaak Waffen in Spielerhand weit mehr DMG an als wenn NPC diese benutzen.

DoT (Damage over Time) Waffen richten ihren eigentlichen Schaden und einen DoT an. Der DoT wird dabei aber nicht gestackt. Sprich hast du einen DoT, der 2 sec hält und triffst das Ziel aber 4 mal in den 2 sec, dann richtet die Waffe dennoch nur 1 mal den DoT an. Also 4 mal Grund DMG + 4 sec DoT (2 sec für die Schussdauer + 2 sec Nachlauf)

Flächenwaffen sind richtig böse. Die richten Schaden nach dem getroffenen Volumen des Zieles an. Sprich ein voll getroffenes M3 bekommt bei weitem weniger DMG als ein halb getroffenes M2, da das getroffene Volumen ungleich größer ist. Von welchen Faktoren jetzt aber der Festgelegte und der tatsächliche DMG abhängt weis ich leider auch nicht. Ich könnte mir aber vorstellen, das das entweder mit dem eingestellten Impact Effect oder dem gewählten Model zusammen hängt.

Bei als Flak deklarierten Waffen explodieren die Projektile, wenn sich ein Objekt im Radius Bereich des eingestellten Impact Effektes befindet. Sprich hat der Impact einen Durchmesser von 100m, dann kann das Projektil 50m neben dem Ziel explodieren und richtet vollen Schaden an.
Was mir noch Performace-Sorgen macht, sind die Flak und Clusterflak. Hier habe ich schon die Effekte reduziert/ausgetauscht, z.B. auf Basis CMOD4. Das hat zwar etwas gebracht, die FPS sinken bei diesen Waffen aber noch stärker als bei allen anderen. Interessanterweise ist die Starbust relativ performace-unkritisch, obwohl sie auch eine Flakwaffe ist.
Ich weis grade nicht, wie die CMOD4 Impacts aussehen. Allerdings kann ich mir vorstellen, das die Starburst ähnlich wie in Vanilla eine relativ einfach gehaltene Impact Explosion hat, währenddessen FA und CFA wohl ehr aufwändigere Flammenartigere Explosions Impacts haben. Gegeben falls brennen sie ja vlt auch noch nach, was dann ebenfalls wieder Performence frisst. Ich kann mir gut vorstellen, das das eventuell noch ein Problem sein könnte.
JSDD wrote: weiß zwar nich was du mit "raw-wert" meinst, die "lifetime" der geschosse hat allerdings nix mit schaden zutun, die is nur (zusammen mit speed) interessant für die reichweite (speed x lifetime)
Das stimmt so nicht ganz. Die Lifetime beeinflusst den DPS (Damage per second) der Strahlenwaffen erheblich.

Ich hoffe ich konnte vlt irgendwie weiterhelfen oder den ein oder anderen Gedanken Gang ankurbeln.
Heil dem mächtigen EGOSOFT. ...ääääh Rhonkar.

User avatar
Aldebaran_Prime
Posts: 1105
Joined: Sat, 20. Feb 10, 18:47

Post by Aldebaran_Prime » Fri, 1. Jun 18, 22:15

JSDD wrote:...

@Aldebaran_Prime

weiß zwar nich was du mit "raw-wert" meinst, die "lifetime" der geschosse hat allerdings nix mit schaden zutun,
Das war das Thema meines Post, der hier die aktuelle Diskussion angesstoßen hat. Wenn du im X3Editor2 die TLaser editierst, wird in der Benutzeroberfläche zunächst eine Schussrate in rds/min angegeben. Wenn du da draufklickst kannst Du "show raw value" anklicken -der Wert der dann angezeigt wird, steht auch im Text der TLaser.txt und kann dann in einer Excel-Formel verwendet werden.

- nur um diese Frage ging es mir zunächst.

Dass in TBullet Lifetime, speed, und range zusammenhängen, ist klar, dass Schussrate und Schaden/Treffer zusammenhängen auch.

Die Clusterflak ist in der Tat noch performancelastiger als die normale Flak - eben wegen der Splittergeschosse. Es gibt auch die Möglichkeit die rapid-box -with und -high zu vergrößern und dafür auf die Splittergeschosse ganz zu verzichten - das ist im CMOD4 so gelöst. Ich bin aber noch nicht überzeugt, ob ich so weit gehen möchte.

@W88: Danke für die Zusatzinfos und ja, lass und Deine Waffenmod für EMC4AP gerne auch noch mal im EMC4AP Thema diskutieren, bevor wir hier Ärger bekommen. Ich bereite jetzt erst einmal die Übersicht aller Waffen mit den aktuellen Einstellungen in Excel vor und stelle sie bei uns zur Verfügung.
Für die Schiffsübersicht verwende ich ja die Excel-Liste von Litcube - die kann man leicht um die Laserwerte erweitern, so dass man deine MOD mit den aktuellen Einstellungen vergleichen kann.
Image

User avatar
JSDD
Posts: 851
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Sat, 2. Jun 18, 16:45

yepp, stimmt natürlich, hatte die spezielwaffen vergessen ...

die fragmentzahl der clusterflaks ist auf afaik 5 eingestellt (kannste in TBullets ändern), und die fragmente selbst fragmentieren wieder in 5 sub-fragmente, raus kommen also 5 x 5 = 25 bullets pro schuss. bei nem 8er turret sind das 200 bullets pro schuss. ist ne ziemliche menge! also sie fragmentierung der fragmente selbst ist overkill, kannste rausnehmen via häkchen bei "fragmentation" wegnehmen (bei den fragment-bullets SS_BULLET_FLAK_CLUSTER_FRAG). damit entstehen nur noch 5 fragmente pro schuss (besser wären nur noch 3). wofür die rapid-box steht, weiß ich ehrlich gesagt nicht ... (collider?)
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

User avatar
Aldebaran_Prime
Posts: 1105
Joined: Sat, 20. Feb 10, 18:47

Post by Aldebaran_Prime » Sat, 2. Jun 18, 22:26

So, das meiste habe ich geschafft. Ich habe Litcubes Excel-TShip-Editor um die TBullets, ein paar Zeilen VBA, einige Excel Formeln und eine Pivot-Tabelle erweitert. Basis war das hier: https://forum.egosoft.com/viewtopic.php?t=297773

Die Tship und Laser-Übersicht sieht jetzt so aus und ist prinzipiell für alle Modding-Kollegen geeignet, um eine Übersicht aller Waffen automatisch erzeugen zu lassen:
Image

Dazu die Excel-Datei in den jeweiigen /types/ Ordner legen, sicherstellen, dass alle T....txt Dateien dort auch ungepackt vorliegen und auf der Control Panel Seite den "Import" Knopf drücken.

Wer sich mit Excel etwas auskennt, weiß, dass man in der Pivot-Tabelle nach eigenem Bedarf Sortieren und Filtern kann.

Die aktuelle Version der Excel-Datei könnt Ihr hier downloaden:
https://1drv.ms/x/s%21AleWkrAhnZL_ge86q6XoNaaCZNcUYQ

Was mir jedoch noch fehlt, ist die Umrechung des Raw-Wertes der Bullet-Geschwindigkeit. Z.B. ist die angezeigte Geschwindigkeit beim Impulsstraheln-Emitter 1162 m/s, in der TBullets steht jedoch der Raw-Wert 581000.

Nein, 600000/581000 ergibt leider nicht 1162... 581000/500 ergibt aber 1162, dass scheint auch für die anderen Bullets zu funktionieren - aber warum 500?

Hat jemand eine Idee?
Image

User avatar
JSDD
Posts: 851
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Sun, 3. Jun 18, 00:00

500 "gameunits" = 1 meter

deswegen, weil die engine nur mit integer zahlen umgehen kann und präzision < 1m benötigt wird
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

FritzHugo3
Posts: 2781
Joined: Mon, 6. Sep 04, 17:24

Post by FritzHugo3 » Sat, 8. Sep 18, 23:06

Mal ne gaaanz doofe Frage. Ich weis ja, bei den Vanilla Befehlen wird Nvidium alles andere als bevorzugt behandelt.

Was ich aber nicht ganz verstehe ist

Code: Select all

...$flags = [Find.Nearest] | [Find.Multiple] | 32768
$range = [THIS]-> get scanner range
$warearray = find debris: sector=[SECTOR] resource=null min yield=null flags=$flags refobj=[THIS] num=5 maxdist=$range refpos=null...
Das steht so im orginal Script drinnen. wenn ich jetzt einen Frachter neben Nvidium debris stehen habe, fliegt er von den Debris weg zum Ar**h des Sektors und lässt sich lieber bei den Erz Debris nieder.

Verstehe ich die Zeile denn falsch?

Code: Select all

$warearray = find debris: sector=[SECTOR] resource=null min yield=null flags=$flags refobj=[THIS] num=5 maxdist=$range refpos=null
Ich lese das ganze so, Variablename finde die am nächstgelegendsten Kleinstasteroiden im Sektor xy, ohne spezielle Sorte (also alle Erze, Silizium, Eis und Nividium gleichermaßen ohne etwas zu bevorzugen), ..., ..., Referenz Entfernung zu diesem Schiff, 5 Debris auf einmal, und in Scannerreichweite

Warum aber werden schon jetzt die Nividium Debris ignoriert?
(Also ohne das ein Auschschluss von Nividium definiert wurde) ist das im Hardcode hinterlegt oder wo?
Und warum fliegen die Schiffe irgendwann zu einem entfernteren Debrifeld, obwohl noch in dem gleichen Bereich Debris mit Erzen vorhanden sind (also keine wertlose leere Felsen). Er sucht doch laut Befehlszeile die am naheliegendsten.


(Der gesammte Code ist hier zu finden !ship.cmd.collectrocks.std und !move.collectrocks und nirgends wird Nvidium erwähnt)

Ausserdem ist mir aufgefallen, das die Frachter die Debris in X3 gar nicht mehr berühren zum einsammeln. Mir war so, als hätten die das in X2 noch getan oder täusche ich mich da?


Wenn ich oben statt nach 5, wie das orginalscript nach num=1 bzw. NULL suche und mir das per Logbuch ausgebe, bekomme ich wie gewünscht ein Erz/Silizium... zurück. Aber, wenn ich dann dieses $warearray (mit $warearray) sprengen lasse (destruct), dann verschwinden gleich mehrere Kleinstasteroiden (teilweise auch die nächst größeren, wo drei der ganz kleinen raus kommen). Kann mir das einer Erklären?
Wie bekomme ich nur den einen kleinsten einsammelbaren Asteroiden zur Auswahl in die Suche? (gibt ja die Abfrage, ob das Steinchen einsammelbar ist aber das nützt ja auch nichts, wenn bei destruct gleich ein kleineres Feld abgerissen wird, sattt nur ein einzelnes.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

User avatar
JSDD
Posts: 851
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Fri, 14. Sep 18, 14:05

die 32768 dort oben sehen zwar komisch aus, aber werden hoffentlich ihren sinn haben (Find.Known ?)

die 5 bedeuten, dass bis zu 5 trümmer gefunden werden ... gib 999999999 ein, und es werden alle trümmer im sektor gefunden (auf die die $flags zutreffen!)

zum einsammeln reicht ein nahes ranfliegen afaik aus

ich seh auch kein code, der explizit nividium ausschließt

deine auffassung des scripts ist soweit richtig

---------------------------------------------------------

sind die nahegelegenen trümmer denn einsammelbar ? (d.h. klein genug)

hardcode sollte da nix sein ...

wenn du es testen willst, dann lass alle trümmer finden (5 ersetzen durch 9999) im separaten script (!!!) und setz bei resource = nividium ein (unter ware -> minerals -> ... suchen, denn es gibt afaik verwirrenderweise 2 verschiedene sorten im game)

dann machst du:

$X = size of array $warearray
write to logbook $X
write to logbook " nividium truemmer gefunden"

guck nach wieviele das game findet ... bei 0 stimmt etwas nicht, falls es tatsächlich nividium gibt ...


nochwas: [SECTOR] ist der sektor des objekts, auf welchem das script läuft, d.h. z.b. das schiff mit dem kommando "sammle astros ein ...". lässt du das script via "R --> enter --> enter" laufen, dann wähl nach "R ..." nicht "null" aus (via enter), sondern DEIN spielerschiff, so sollte es klappen ...
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

FritzHugo3
Posts: 2781
Joined: Mon, 6. Sep 04, 17:24

Post by FritzHugo3 » Fri, 14. Sep 18, 15:29

Danke dir JSDD für dein Antworten, habe vergessen die Frage zu entfernen, meine Scripterweiterung ist bereits veröffentlicht. Scheinbar ist es nicht möglich einen einzelnen Kleinstasteroiden zu erfassen und diesen mit destruct zu sprengen. Es wird immer das ganze Yield mit entfernt, egal ob man nach 1 oder 5 sucht. Rechnerisch macht es im Durchschnitt zwar keinen großen Unterschied mehr, aber dennoch unschön. Was solls, ist, wies ist und funzt so grins.
( https://forum.egosoft.com/viewtopic.php?t=400081 )
Last edited by FritzHugo3 on Sun, 16. Sep 18, 00:12, edited 1 time in total.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

User avatar
JSDD
Posts: 851
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Sat, 15. Sep 18, 09:04

weiß nicht, was du vor hast, aber destruct nutzt man nicht fürs einsammeln ...

mit:

Code: Select all

if $truemmer -> has collectible rocks
... checkt man, ob die trümmer sammelbar sind
wenn nicht, dann könnt man vesuchen, via:

Code: Select all

$truemmer -> destruct: show no explosion= [FALSE]
... die trümmer zu zerkleinern, sollte das auch nicht gehen, dann halt via MBS laser abfeuern
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

FritzHugo3
Posts: 2781
Joined: Mon, 6. Sep 04, 17:24

Post by FritzHugo3 » Sat, 15. Sep 18, 12:09

Transporter + Debris = keine Kaputten Schiffe mehr. Da das Schiff die nun nicht mehr persönlich einsammelt, sondern direkt in den Frachtraum "gebeamt" werden, müssen die Debris mit destruct zerstört werden. Und das geht, wie gesagt wohl scheinbar leider nicht einzeln, nur per yield.

([TRUE], sonst ist es bissle laut ;-) ).

Aber wie gesagt, das Script ist bereits veröffentlicht und ich bin lediglich noch am Balancen der Wartezeit zwischen den einzelnen "Beamvorgängen", das soll ja kein Cheat werden. Kannst du aber auf der Seite nachlesen, wenn du magst.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Post Reply

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”