[HELP] config-script weiterentwickeln (erledigt)

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

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

User avatar
F.A.B.
Posts: 767
Joined: Fri, 27. Feb 09, 18:47

[HELP] config-script weiterentwickeln (erledigt)

Post by F.A.B. »

wir hatten uns vor einer weile in diesem thread über config-scripte unterhalten. das besprochene config-script möchte ich jetzt ein wenig weiterentwickeln, bzw weiter anpassen, und ich hoffe, ihr könnt mir dabei wieder helfen.

das script sah in etwa wie folgt aus...

Code: Select all

$randomNumber = random value from 0 to 101 - 1
if $randomNumber <= {BELIEBIGE ZAHL}
$laser = [THIS] -> add {BELIEBIGE ZAHL} units of ware {LASER} 
end
return null
was ich daraus machen möchte...

edit:

Code: Select all

$randomNumber = random value from 0 to 101 - 1
if $randomNumber <= {BELIEBIGE ZAHL}

-> PRÜFE_1 WIEVIELE SOLTS AUF [THIS] DEN {LASER_1} AUFNEHMEN KÖNNEN
-> PRÜFE_2 WIEVIELE EINHEITEN VOM {LASER_2} INSGESAMMT AUF [THIS] VORHANDEN SIND

$laser_1 = [THIS] -> add {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} units of ware {LASER_1}

-> ENTFERNE DIE ANZAHL EINHEITEN VON {LASER_2} AUF [THIS], DIE DURCH {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} VON {LASER_1} DAZUGEKOMMEN SIND

end
return null
Last edited by F.A.B. on Thu, 19. Aug 10, 20:14, edited 3 times in total.
best,
F.A.B.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

hmm ein Wegmöglichkeit wäre vl:

abfragen:
-> wie viel türme this hat
-> wie viel bays ähm buchten die Kanzel hat
-> get laser array from turret
-> get amount of ware laser in cargobay (wenn ich Prüfung 2 richtig verstanden habe sonst musst du jeden Turm und jede bucht mit einer while schliefe abfragen welcher Laser installiert ist)

prüfungen:
-> ist Laser der gesuchte
-> wenn ja dann addiere die buchten in eine zweite var die vorher mit 0 definiert wurde. (Gesamtanzahl also 100%)
-> $laser.delet = die var + -1 (damit der wert einfach negativ wird)
->
"$laser_1 = [THIS] -> add {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} units of ware {LASER_1} " hä? ne 3 Satz Rechnung? dann die sich ergebenden wie bei Punkt $laser.delet verstanden einfügen als add.

-> "-> ENTFERNE ANZAHL EINHEITEN ERGEBNIS AUS {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} VON {LASER_2} AUF [THIS] " ??<no returnalue> [THIS] -> switch turret {Turm} and bay to null (Trade Commands / Ships)

Das würde mir auf Anhieb dazu einfallen.

Aber wieso "Laser 1" und "Laser zwei" entfernen? naja egal.
User avatar
F.A.B.
Posts: 767
Joined: Fri, 27. Feb 09, 18:47

Post by F.A.B. »

Generalwest wrote:"$laser_1 = [THIS] -> add {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} units of ware {LASER_1}" hä? ne 3 Satz Rechnung?
da kommt dann eine variable rein, so ähnlich wie bei '$randomNumber'
Generalwest wrote:"-> ENTFERNE ANZAHL EINHEITEN ERGEBNIS AUS {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} VON {LASER_2} AUF [THIS]" ??
ich hab das nochmal anders formuliert. ich hoffe man versteht es jetzt besser.



auf jeden fall erstmal danke, general, aber ich bräuchte komplette befehle.
best,
F.A.B.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

F.A.B. wrote:
Generalwest wrote:"$laser_1 = [THIS] -> add {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} units of ware {LASER_1}" hä? ne 3 Satz Rechnung?
da kommt dann eine variable rein, so ähnlich wie bei '$randomNumber'
Generalwest wrote:"-> ENTFERNE ANZAHL EINHEITEN ERGEBNIS AUS {ZWISCHEN 50% BIS 100% AUS PRÜFE_1} VON {LASER_2} AUF [THIS]" ??
ich hab das nochmal anders formuliert. ich hoffe man versteht es jetzt besser.



auf jeden fall erstmal danke, general, aber ich bräuchte komplette befehle.
okey also du fügst erst was hinzu und dann entfernst es wieder? ok vl hab ich das nicht richtig verstanden, aber geht mich auch nichts an. ich hoffe aber das du das wenigstens verstanden hast was ich im groben meinte.

die tumrabfrage befehle sind in den general object commands irwo oben, und das mit dem laser array ist wenn ich das noch richtig weis in den weapon information untermenü. Sonst wüsste ich auch nicht was dem Scriptgerüst noch fehlt, ohne es getestet zu haben. aber ich denke du wirst das was du suchst direkt finden. sonst schreib ich mal n versuchsaufbau ohne gewähr auf funktionalität.
User avatar
F.A.B.
Posts: 767
Joined: Fri, 27. Feb 09, 18:47

Post by F.A.B. »

Generalwest wrote:okey also du fügst erst was hinzu und dann entfernst es wieder? ok vl hab ich das nicht richtig verstanden, aber geht mich auch nichts an.
jein. der satz/befehl soll ausdrücken: "entferne soviel einheiten zb ppc, wie einheiten zb ionc dazugekommen sind"
ich möchte also soviele einheiten wieder rausnehmen, wie ich durch den befehl vorher reingesteckt habe, um den loadout nicht zu überschreiten, da einige schiffe schon so am cargolimit fahren.
ich hoffe aber das du das wenigstens verstanden hast was ich im groben meinte.

die tumrabfrage befehle sind in den general object commands irwo oben, und das mit dem laser array ist wenn ich das noch richtig weis in den weapon information untermenü. Sonst wüsste ich auch nicht was dem Scriptgerüst noch fehlt, ohne es getestet zu haben. aber ich denke du wirst das was du suchst direkt finden. sonst schreib ich mal n versuchsaufbau ohne gewähr auf funktionalität.
eigentlich nicht so wirklich. der se und ich sind keine guten freunde und werden das wohl auch nie.
wenn du das machen könntest, wäre das super!
best,
F.A.B.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

wir hatten uns vor einer weile in diesem thread über config-scripte unterhalten. das besprochene config-script möchte ich jetzt ein wenig weiterentwickeln, bzw weiter anpassen, und ich hoffe, ihr könnt mir dabei wieder helfen.
Wie in dem Zetierten Topic vorgeschlagen eine etwas weiter gedachte Version der zuletzt vorgeschlagenen Möglichkeit. Was du da noch machen musst ist, einzubauen das mehrere Slots zufällig bestückt werden in Abhängigkeit von der gesamt Anzahl deiner hinzugefügten Laser.

220 $turret.array= array alloc: size=0
221 $class=[THIS] -> is of class Großschiff
222 $percent=60
223 $installed=0
224 $s100.percent=0
225 $tur.num=[THIS] -> get number of turrets
226 while$tur.num >= $class
227 ~
228 * Wievie von Welchem Laser kann Installiert werden
229 ~ $l.array=[THIS] -> get compatible laser array: turret=$tur.num
230 ~ $l.array.s= size of array $l.array
231 ~ while$l.array.s
232 ~~ dec $l.array.s=
233 ~~ $l=$l.array[$l.array.s]
234 ~~ if$l == Impulsstrahlen-Emitter
235 ~~~ $laser.num=[THIS] -> get max. number of lasers in turret $tur.num
236 ~~~ $s100.percent=$s100.percent + $laser.num
237 ~~~ append $tur.num to array $turret.array
238 ~~ end
239 ~ end
240 ~
241 * Was ist Instaliert
242 ~ $l.bays=$tur.num -> get number of laser bays
243 ~ while$l.bays
244 ~~ $laser.type=[THIS] -> get laser type in turret $tur.num at slot $l.bays
245 ~~ if$laser.type == Impulsstrahlen-Emitter
246 ~~~ $installed=$installed + 1
247 ~~ end
248 ~~ dec $l.bays=
249 ~ end
250 ~ dec $tur.num=
251 end
252
253 * Ermittlung der 60% und einbeziehung des Laderaums
254 $amount.l1=[THIS] -> get amount of ware Impulsstrahlen-Emitter in cargo bay
255 $add=$s100.percent / 100 * $percent
256 $add=$add - $amount.l1
257 =[THIS] -> add $add units of Impulsstrahlen-Emitter
258 $add=$add * -1
259 =[THIS] -> add $add units of Erschütterungsimpulsgenerator
260
261
262 * Bestimmung in welchen Turm und in welchen Slot ISE installiert werden soll
263
264 $turret.array.s= size of array $turret.array
265 while$turret.array.s
266 ~ dec $turret.array.s=
267 ~ $turret=$turret.array[$turret.array.s]
268 ~ $slot.n=$turret -> get number of laser bays
269 ~ $slot.n=$slot.n + 1
270 ~ $random= = random value from 0 to $slot.n - 1
271 ~ [THIS] -> switch laser in turret $turret gun $random to Impulsstrahlen-Emitter
272 end
273
274 return null
‌‍‌‍
‌‍‌‍
‌‍
irgendwie so denk ich müsste das recht gut klappen. Viel Spass beim weiter basteln.

Mini Legende der Vars:
-> $class bedeutet in dem Zusammenhang das wenn [THIS] ein GKS ist steht in der Variablen eine 1 dann heisst die Zeile 226: while $tur.num => 1 was bedeutet das die Hauptkanzel nicht mit einbezogen wird. Ist die Prüfung auf ein Großschiff in der Zeile Falsch enthällt $class eine 0 bei den Schiffen wird dann die Hauptkanzel miteinbezogen. Wobei mir gerade ein/auffällt das M6 auch eine Hauptbewaffnung haben....muss man dann anpassen.
-> ISE und EIG sind Dummy Laser und nur zur Veranschaulichung.

Edit: Gefixte Version von Forumsotimierter x2.xml verwendet.
Edit2: Nochmal Gefixt da die Falsche Version benutzt.
Edit3: -"- letzter versuch das zu Fixen -.-
Last edited by Generalwest on Sun, 15. Aug 10, 10:42, edited 3 times in total.
User avatar
F.A.B.
Posts: 767
Joined: Fri, 27. Feb 09, 18:47

Post by F.A.B. »

da hast du dir ja eine menge arbeit gemacht, vielen dank!

ich versuch das jetzt mal genau zu verstehn und dann zu verbasteln... wenn was nicht passt, meld ich mich nochmal.
best,
F.A.B.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

das empfand ich als happen zwischen durch. hat auch nicht lange gedauert.
User avatar
F.A.B.
Posts: 767
Joined: Fri, 27. Feb 09, 18:47

Post by F.A.B. »

das klingt so, als bräuchtest du eine herausforderung. :P
apropos happen, ich hab lust auf sushi...

so, ich hab das, glaub ich, soweit erstmal verstanden und auch gleich mal eine anmerkungen.
von 241 bis 251 müsste nach Erschütterungsimpulsgenerator gefragt werden, denn wir wollen ja wissen, wieviele davon auf dem schiff vorhanden sind (installed & cargobay). den Impulsstrahlen-Emitter gibt es, bevor dieses script ausgeführt wurde, auf dem schiff noch nicht.
best,
F.A.B.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

eine Herausforderung? Die hab ich zum Beispiel das YAD zu Fixen und zu erweitern. Momentan hab ichs etwas erweitert, und musste es bislang bei jeder Erweiterung durchfixen weil immer irgend etwas gesponnen und nicht gewollt hat ^^

ISE & Eig: Gut aufgepasst. Aber wie schon geschrieben geb ich da keine Gewähr auf Funktionalität. Soll auch nur zur Veranschaulichung dienen. Getestet hab ich das nicht.
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Zeile 226 hat höchstwahrscheinlich nicht den gewünschten Effekt. Auf jeden Fall aber erstmal die Schleifen korrigieren.

Code: Select all

242 ~ $l.bays=$tur.num -> get number of laser bays
243 ~ while$l.bays
244 ~~ $laser.type=[THIS] -> get laser type in turret $tur.num at slot $l.bays
245 ~~ if$laser.type == Impulsstrahlen-Emitter
246 ~~~ $installed=$installed + 1
247 ~~ end
248 ~~ dec $l.bays=
249 ~ end
250 ~ dec $tur.num=
251 end
Das dec (in beiden Fällen) muß direkt nach dem dazu passenden while ausgeführt werden. Nicht irgendwann später.

Code: Select all

268 ~ $slot.n=$turret -> get number of laser bays
269 ~ $slot.n=$slot.n + 1
270 ~ $random= = random value from 0 to $slot.n - 1
271 ~ [THIS] -> switch laser in turret $turret gun $random to Impulsstrahlen-Emitter
Zeile 269 löschen.
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

226 hab ich schon angesprochen direkt im letzten Absatz. ich habs zu spät gemerkt. Bei GKS klappt die Zeile, bei TS haut das nur beim Kaiman hin da er nen frontturm hat, was aber zu verschmerzen wäre. Anders verhält es sich bei M6 / M7 da die meist eine Cocpit Bewaffnung haben)

wenn man das dec in der schleife 242 - 251 verändert kann es passieren das ein Slot / bucht, und zwar die letzte bucht, frei bleibt weil man direkt danach mit dec weiter arbeitet. Also so hab ich das bislang immer Verstanden. Ich muss mal schauen wie ich das bei WaTu gemacht habe.

Zeile 269 hmm das was ich selber jetzt nicht mehr so genau was die bezwecken soll. vl gleich ich damit das -1 in dem Random Befehl aus (nächste Zeile) (angenommen der Befehl gibt mir 7 (8 reale da 0 auch ein Slot ist) aus dann würde die Random Zeile lauten $random = radnom value from 0 to 7 - 1 (7-1=6) one bay is missing)

Edit zum dec: jup hast recht. hab grad bei WaTu nachgeschaut und es gehört direkt unter das while.
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Generalwest wrote: (angenommen der Befehl gibt mir 7 (8 reale da 0 auch ein Slot ist) aus dann würde die Random Zeile lauten $random = radnom value from 0 to 7 - 1 (7-1=6) one bay is missing)
Das Ergebnis wird danach gleich als Turret ID verwendet und nicht als "Anzahl der Turrets".
Da es eine Turret ID 7 nicht gibt, wäre das okay.
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

Gazz wrote:
Generalwest wrote: (angenommen der Befehl gibt mir 7 (8 reale da 0 auch ein Slot ist) aus dann würde die Random Zeile lauten $random = radnom value from 0 to 7 - 1 (7-1=6) one bay is missing)
Das Ergebnis wird danach gleich als Turret ID verwendet und nicht als "Anzahl der Turrets".
Da es eine Turret ID 7 nicht gibt, wäre das okay.
Interessante Erklärung. Mir giengs aber um das -1 wobei mans ausprobieren müsste aber ob man das dann merkt wenn eine Bucht fehlt ist die andere Frage.
User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz »

Davon red ich doch. Bei deinem System kannst du auf slot 7 zugreifen wenn es nur 0-6 gibt.
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest »

Gazz wrote:Davon red ich doch. Bei deinem System kannst du auf slot 7 zugreifen wenn es nur 0-6 gibt.
ich hoffe nur das du das oben nicht als fertiges script von WaTu nimmst den das was ich oben hingepostet hab hab ich mal schnell gemacht zur Orientierung.

ich hab n logischen Fehler mit eingebaut. und zwar Beispiel: Osaka Turm 1 hat 8 Buchten. get laser bays gibt 8 aus da 0 ignoriert wird. Random value arbeitet aber mit 0 daher -1 (+0 als wert) was auch wieder 8 bays ergibt. Daher kam die Zeile 226. Wie schon gepostet hab ich das in 10-15 min durch geschrieben ohne jetzt auf "so funktioniert" es zu achten. Soll auch nur eine Grobe Richtung vorgeben bzw Orientierungshilfe darstellen. Wir können auch gern weiter über dies "Skizze" Diskutieren, bin im allgemeinen sehr offen dafür.

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