Verbesserter Schildeffekt (TC)
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
ist grundlegend sehr simpel:
while [TRUE]
| @ wait 0 ms
| $x = $Ship -> get x position
| $y = $Ship -> get y position
| $z = $Ship -> get z position
| $a = $Ship -> get rotation alpha
| $b = $Ship -> get rotation beta
| $g = $Ship -> get rotation gamma
| $Schild -> force position: x=$x y=$y z=$z
| $schild -> set rotation: aplha=$a beta=$b gamma=$g
end
abbruchbedingungen usw. musst du selber an passender stelle einfügen ^^
while [TRUE]
| @ wait 0 ms
| $x = $Ship -> get x position
| $y = $Ship -> get y position
| $z = $Ship -> get z position
| $a = $Ship -> get rotation alpha
| $b = $Ship -> get rotation beta
| $g = $Ship -> get rotation gamma
| $Schild -> force position: x=$x y=$y z=$z
| $schild -> set rotation: aplha=$a beta=$b gamma=$g
end
abbruchbedingungen usw. musst du selber an passender stelle einfügen ^^
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
So, ich habe es jetzt geschafft, dass Objekt so zu erstellen, dass man es nicht anklicken kann. Leider lässt es sich auch nicht per Script zerstören...Verstehe einer diese Engine.
€DIT::: liegt vielleicht auch am Script (obwohl ich es nicht verstehe), ich poste ihn später.
€DIT::: es lag am wait... Unglaublich, aber jetzt funktioniert es einigermaßen. Script folgt bald hier. Da gibts nämlich noch mehr als genug Unstimmigkeiten
€DIT::: liegt vielleicht auch am Script (obwohl ich es nicht verstehe), ich poste ihn später.
€DIT::: es lag am wait... Unglaublich, aber jetzt funktioniert es einigermaßen. Script folgt bald hier. Da gibts nämlich noch mehr als genug Unstimmigkeiten
- Killjaeden
- Posts: 5366
- Joined: Sun, 3. Sep 06, 18:19
ist das nicht nervig wenn man ständig so einen Schleier vor seinem schiff hat durch den man nurnoch die hälfte sieht?
[ external image ]
X-Tended TC Mod Team Veteran.
Modeller of X3AP Split Acinonyx, Split Drake, Argon Lotan, Teladi Tern. My current work:
X-Tended TC Mod Team Veteran.
Modeller of X3AP Split Acinonyx, Split Drake, Argon Lotan, Teladi Tern. My current work:
ich hab mir grad den Screenie von der vorigen Seite nochmal genauer angesehen und wie ich das sehe hat er die Texturen nur auf die Auissenseite geklatscht, sprich die Schildblase ist von innen komplett unsichtbar ^^ kA ob X es unterstützt aber es wäre denke ich sinnvoll das teil auch von innen zu texturieren, aber mit deutlich höherer transparenz (sodass man den Effekt bemerkt aber er nicht stört)
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
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
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
1. Die Blase erscheint nur bei einem Treffer
2. Sie ist auch innen texturiert
http://www.youtube.com/watch?v=7PNZbUKmXbs
€DIT:::
2. Sie ist auch innen texturiert
http://www.youtube.com/watch?v=7PNZbUKmXbs
€DIT:::
Code: Select all
...schwachsinn. In bearbeitung
und wie verhält sich das wenn ein ionenplasma schnellfeuer geschütz dich 3 mal pro sekunde trifft ?
die blase hält vermutlich 6 sekunden, das wären ungefähr 18 treffer, heist dass, das 18 mal das script aufgerufen wird, 18 blasen gleichzeitig rotieren ?
ich meine, optisch sieht das ja doch besser aus als ich erwartet hätte, respekt, aber ich werd mir keine neue cpu kaufen nur um dein dingens mal auszuprobieren :/
die blase hält vermutlich 6 sekunden, das wären ungefähr 18 treffer, heist dass, das 18 mal das script aufgerufen wird, 18 blasen gleichzeitig rotieren ?
ich meine, optisch sieht das ja doch besser aus als ich erwartet hätte, respekt, aber ich werd mir keine neue cpu kaufen nur um dein dingens mal auszuprobieren :/
- Marvin Martian
- Posts: 3547
- Joined: Sun, 8. Apr 12, 09:40
ich denke man wird pro Schiff eine Variable setzten können das ein Treffer aktiv ist, wird das Skript aufgerufen, kann man das ja gleich zu beginn prüfen und dann im Falle von TRUE, gleich abbrechen
um einen anhaltenden Effekt zu generieren, müsste man die Animation dann ja nur vorm ausklingen bewahren, oder zweiteilen
wie verhält es sich eigentlich wenn keine (mehr) Schilde vorhanden sind, fällt das dann weg, oder leuchtet das weiter?
Bzw war ja IMO noch eine andere Schadensberechnung vorgesehen die teilweise auf die Hülle durchschlägt, da ist dann ja nur die Frage ob man die Schilde überhaupt noch auf 0 bringt
um einen anhaltenden Effekt zu generieren, müsste man die Animation dann ja nur vorm ausklingen bewahren, oder zweiteilen
wie verhält es sich eigentlich wenn keine (mehr) Schilde vorhanden sind, fällt das dann weg, oder leuchtet das weiter?
Bzw war ja IMO noch eine andere Schadensberechnung vorgesehen die teilweise auf die Hülle durchschlägt, da ist dann ja nur die Frage ob man die Schilde überhaupt noch auf 0 bringt
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
1. Es ist zzt. Eine Begrenzung von 3 blasen pro Schiff eingebaut. Die Performance hat sich in ersten erfolgreichen Tests nicht negativ verschlechtert. Ein neues Video folgt evtl. Heute Abend.
2. Bei weniger als 5% Schild stärke leuchtet keine blase auf.
3. Die blase hält genau 1050 millisekunden, die Qualität werde ich weiter verbessern, bis es mir nicht weiter möglich ist.
Ich habe alles durchdacht. Dank UniTrader wird das ganze schon sehr bald serienreif sein.
€DIT::: Ich will auch noch erwähnen, dass der Script zu erst in meine Nexus Mod implementiert wird, wofür er geplant wurde. Aber wie es aussieht, kann man das Prinzip grundsätzlich auf alles mögliche anwenden.
€DIT 2::: Neueste Versionen
[ external image ]
2. Bei weniger als 5% Schild stärke leuchtet keine blase auf.
3. Die blase hält genau 1050 millisekunden, die Qualität werde ich weiter verbessern, bis es mir nicht weiter möglich ist.
Ich habe alles durchdacht. Dank UniTrader wird das ganze schon sehr bald serienreif sein.
€DIT::: Ich will auch noch erwähnen, dass der Script zu erst in meine Nexus Mod implementiert wird, wofür er geplant wurde. Aber wie es aussieht, kann man das Prinzip grundsätzlich auf alles mögliche anwenden.
€DIT 2::: Neueste Versionen
[ external image ]
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
Bis die Star Trek schiffe damit ausgerüstet werden können, ist noch lange hin. Allerdings wird das Script anpassbar und so kann man mehr oder weniger alle schiffe damit ausrüsten - einziges Problem wird, die passende Blasengrösse zu bekommen (oder selber bauen - obwohl ich für meine Mod bereits mindestens 6 Größen erschaffen muss)
€DIT::: hier nochmal der Screenshot, damit es auch ja keiner übersehen kann
[ external image ]
€DIT::: hier nochmal der Screenshot, damit es auch ja keiner übersehen kann
[ external image ]
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
Was AP betrifft, habe ich ein Problem, da ich AP nicht besitze. Allerdings dürfte es höchst einfach sein, den Script nach AP zu portierten. Ist ja das gleiche Spiel im großen und ganzen. Abe auch da wird bei den meisten schiffen vermutlich ein Problem mit der blasegrösse auftreten, da ich, wie gesagt, nur etwa 6 verschiedene Größen für meine Mod erstellen werde. Die Phönix ist z.B. viel zu groß und alles unter einem M6 zu klein. Abgesehen davon ist das ganze sowieso darauf ausgelegt, nur auf GKS angewendet zu werden. Kleischiffe gibt es wohl zu viele, obwohl die Performance im großen Stil noch nicht getestet wurde. Sobald die Animationen der HQ-Blasen fertig sind, widme ich mich wieder dem Script. Danach folgt ein Video.
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
Der aktuelle Code ist wie folgt, übrigens ist dieser zur Zeit nur in der Lage, eine Blase für ein bestimmtes Schiff zu erzeugen:
Script 1: initialisieren
Script 1: initialisieren
- 001 $Krz1 = [THIS] //wähle schiff
002 $Bedingung = [TRUE]
003 while $Bedingung == [TRUE]
004 |$aktuell = $Krz1 -> get current shield strength
005 @ |= wait 2 ms
006 |$danach = $Krz1 -> get current shield strength
007 |if $danach < $aktuell //falls schild schaden erlitt
008 ||$strength = $Krz1 -> get shield percent
009 ||if $strength > 3 //falls der schild stärker ist als 3%
010 |||$Bedingung = [FALSE]
011 |||$task = $task -> get next available task: starting=9090
//Alternative Taskauswahl (funktioniert offenbar nicht)
012 |||$Krz1 ->start task $task with script 'a111' and prio 0: arg1=$Krz1 arg2=null arg3=null arg4=null arg5=null
013 @ |||= wait 300 ms
014 |||$Bedingung = [TRUE]
//warte 300 ms, bis die nächste Blase erstellt werden darf
015 ||end
016 |end
017 end
018 return null
- 001 $task = 8000
002 $sec = $ship -> get sector
003 $x = $ship -> get x position
004 $y = $ship -> get y position
005 $z = $ship -> get z position
006 $a = $ship -> get rot alpha
007 $b = $ship -> get rot beta
008 $g = $ship -> get rot gamma
009 $ran = random value from 0 to 2 - 1
010 if $ran == 1
011 |$shield = create special: type=124 addto=$sec x=$x y=$y z=$z
012 else
013 |$shield = create special: type=125 addto=$sec x=$x y=$y z=$z
014 end
//sinn von dem da oben: Es gibt 2 verschiedene Animationen, welche zufällig ausgewählt werden (Abwechslungsreichtum)
015 $shield ->set rotation: alpha=$a beta=$b gamma=$g
016 $shield ->ignore collisions: [TRUE]
017 if $task -> is task $task in use
018 |$task = $task + 1
019 |write to player logbook $task
020 end
// Das von Zeile 17-20 soll einen Alternativen Task auswählen, falls einer bereits verwendet wird, allerdings funktioniert das noch nicht.
021 $ship ->start task $task with script 'shield.schleif' and prio 0: arg1=$shield arg2=$ship arg3=null arg4=null arg5=null
022 @ = wait 600 ms
023 $shield ->destruct: show no explosion=[TRUE]
//Zerstöre die Blase nach 600 ms
024 return null
- 001 @ = wait 1 ms
002 if $ship -> exists
003 |if $shield -> exists
004 ||$x = $ship -> get x position
005 ||$y = $ship -> get y position
006 ||$z = $ship -> get z position
007 ||$a = $ship -> get rot alpha
008 ||$b = $ship -> get rot beta
009 ||$g = $ship -> get rot gamma
010 ||$shield ->force position: x=$x y=$y z=$z
011 ||$shield ->set rotation: alpha=$a beta=$b gamma=$g
012 |end
013 end
014 return null
- X2-Illuminatus
- Moderator (Deutsch)
- Posts: 24965
- Joined: Sun, 2. Apr 06, 16:38
Funktioniert nicht, weil du nicht dein RefObj ([THIS]) abfragst.Einheit 101 wrote:011 |||$task = $task -> get next available task: starting=9090
//Alternative Taskauswahl (funktioniert offenbar nicht)
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten
Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)
Neuauflage der fünf X-Romane als Taschenbuch
The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!
Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)
Neuauflage der fünf X-Romane als Taschenbuch
The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
Ich bin gehörig verwirrt. Warum genau ist die Abfrage über die Schildenergie in dem Initialisierungsscript? Warum gibt es 2 Scripts für die Blase? Und hattest du nicht mal was von unterschiedlich starken Blasen gesagt, abhängig davon wie stark der Schild angekratzt wird? Ich meine, bei dem Script sähe das Schild sogar bei ISE-Feuer aus wien Weihnachtsbaum wenn ich mich nicht irre. Oder du dürftest garnichts sehen.
Warum hast du nicht alles im Taskscript drin? Du kannst es sehr leicht zu 2 Scripts reduzieren die dann alles machen(Script 1 = Initialisieren, Script 2 = Erfassung von Schaden, erstellen von Schildblasen, verschieben von Schildblasen, zerstören von Schildblasen). Ich muss an dieser Stelle gestehen, dass ich keine Ahnung von Tasks habe (Eine aufklärung wie die funktionieren und warum eigentlich Tasks wäre sehr, sehr, sehr nett. Bisher habe ich sie nie GEBRAUCHT aber vielleicht machen sie ja einige Sachen einfacher)
Wie gesagt, ich hab keine Ahnung von Tasks. Aber das Ding was du als "Script 3" bezeichnet hast sieht mir sehr nach dem aus was manche eine Leerlaufprozedur nennen. Eine Schleife die zwar nichts macht aber trotzdem läuft und halt auch noch da ist. Sie macht halt nur nichts. Mag an meiner veralteten Ansicht liegen dass eine Schleife eine Abbruchbedingung braucht, die da nicht gegeben ist... Oder es läuft nur einmal womit es keine Schleife wäre.
@ = wait 1 ms ist im Grunde das selbe wie @ = wait 0 ms. Nur beim einen sehen Scripter sofort: "Ahhhh das wird pro Frame berechnet" und beim anderen nicht (Steht hier schon irgendwo)
Ich habe keine Ahnung warum du diese Strukturierung gewählt hast. Initialisierung sollte für deine Verwendungszwecke eigentlich nur die Schiffe erfassen auf denen das Script wirklich laufen soll und den Rest sollte ne Schleife machen (Oder ein Task). Ich meine, dass bei nem GKS-Kampf mal 2 ms kein Schaden reinkommt ist kein Wunder. Wenn du da 200 ms stehen hättest, okay, aber bei 2 ms können viele Treffer aus der Abfrage fallen da der Initialisierungsscript eigentlich keine Schleife sein sollte.
Nebenbei, die Schildblasen sehen schön aus. Theoretisch hättest du mit 3 Objekten arbeiten können. 2 Endstücken und einem Mittelstück. Du kannst dann über leichte Anpassungen in einem T-File das gelesen wird jedes beliebige Schiff in diesen Script integrieren. Sag mir ma einer ob es möglich ist, ein Objekt per Script zu skalieren (Ich scripte für 5 Spiele und verlier manchmal die Übersicht welche Scriptengine was kann). Wenn nicht, bräuchtest du ca. 2 Objekte in 4-5 größenvariationen um diese Kompartiblität herzustellen. Da sind wir aber bei etwas schwereren 3 Dimensionalen berechnungen und für jemanden der neu im Scripten ist kann es schwer sein so etwas zu implementieren.
Ich freue mich wirklich auf diese Arbeit und hoffe dass ein möglichst gutes Ergebnis erzielt wird. Der momentane Script ist aber meiner Meinung nach ein Alptraum.
PS: Sollte dieser Post irgendwelche falschen Aussagen beinhalten muss beachtet werden dass er unter Einfluss von Metallica und einer durch einen 24 Stunden gaming-Marathon verursachten Übermüdung kreirt wurde.
Vielen dank für ihr Verständnis
Warum hast du nicht alles im Taskscript drin? Du kannst es sehr leicht zu 2 Scripts reduzieren die dann alles machen(Script 1 = Initialisieren, Script 2 = Erfassung von Schaden, erstellen von Schildblasen, verschieben von Schildblasen, zerstören von Schildblasen). Ich muss an dieser Stelle gestehen, dass ich keine Ahnung von Tasks habe (Eine aufklärung wie die funktionieren und warum eigentlich Tasks wäre sehr, sehr, sehr nett. Bisher habe ich sie nie GEBRAUCHT aber vielleicht machen sie ja einige Sachen einfacher)
Wie gesagt, ich hab keine Ahnung von Tasks. Aber das Ding was du als "Script 3" bezeichnet hast sieht mir sehr nach dem aus was manche eine Leerlaufprozedur nennen. Eine Schleife die zwar nichts macht aber trotzdem läuft und halt auch noch da ist. Sie macht halt nur nichts. Mag an meiner veralteten Ansicht liegen dass eine Schleife eine Abbruchbedingung braucht, die da nicht gegeben ist... Oder es läuft nur einmal womit es keine Schleife wäre.
@ = wait 1 ms ist im Grunde das selbe wie @ = wait 0 ms. Nur beim einen sehen Scripter sofort: "Ahhhh das wird pro Frame berechnet" und beim anderen nicht (Steht hier schon irgendwo)
Ich habe keine Ahnung warum du diese Strukturierung gewählt hast. Initialisierung sollte für deine Verwendungszwecke eigentlich nur die Schiffe erfassen auf denen das Script wirklich laufen soll und den Rest sollte ne Schleife machen (Oder ein Task). Ich meine, dass bei nem GKS-Kampf mal 2 ms kein Schaden reinkommt ist kein Wunder. Wenn du da 200 ms stehen hättest, okay, aber bei 2 ms können viele Treffer aus der Abfrage fallen da der Initialisierungsscript eigentlich keine Schleife sein sollte.
Nebenbei, die Schildblasen sehen schön aus. Theoretisch hättest du mit 3 Objekten arbeiten können. 2 Endstücken und einem Mittelstück. Du kannst dann über leichte Anpassungen in einem T-File das gelesen wird jedes beliebige Schiff in diesen Script integrieren. Sag mir ma einer ob es möglich ist, ein Objekt per Script zu skalieren (Ich scripte für 5 Spiele und verlier manchmal die Übersicht welche Scriptengine was kann). Wenn nicht, bräuchtest du ca. 2 Objekte in 4-5 größenvariationen um diese Kompartiblität herzustellen. Da sind wir aber bei etwas schwereren 3 Dimensionalen berechnungen und für jemanden der neu im Scripten ist kann es schwer sein so etwas zu implementieren.
Ich freue mich wirklich auf diese Arbeit und hoffe dass ein möglichst gutes Ergebnis erzielt wird. Der momentane Script ist aber meiner Meinung nach ein Alptraum.
PS: Sollte dieser Post irgendwelche falschen Aussagen beinhalten muss beachtet werden dass er unter Einfluss von Metallica und einer durch einen 24 Stunden gaming-Marathon verursachten Übermüdung kreirt wurde.
Vielen dank für ihr Verständnis
"modified und stolz drauf!"
"Wieso?"
"Weils jeder ist!"
GRUPPENZWANGSSIGNATUR DETECTED!
"Wieso?"
"Weils jeder ist!"
GRUPPENZWANGSSIGNATUR DETECTED!
-
- Posts: 643
- Joined: Sat, 3. Jan 09, 22:57
Auf ein neues:
Setup:
Setup:
- 001 global secondary signal map: add signal=SIGNAL_CHANGESECTOR race=null class=Schiff script='shield.changesector' prio=0 name='shield.changesector'
002 $tmp = get number of subtypes of maintype 7
003 $ship.shield.arr = array alloc: size=$tmp
004 $Krz1 = Angelwing
005 $Krz2 = Träger
006 $Krz3 = Gorg-Kreuzer
007 $Krz4 = Jäger
008 $Krz5 = Killer
009 $Krz6 = Gorg-Schlachtschiff
010 $Krz7 = Taktischer Zerstörer
011 $Krz8 = Gorg-Zerstörer
012 $Krz9 = Ghost Kreuzer
013 $Krz10 = Ghost Zerstörer
014 $Krz11 = Schwerer Kreuzer
015 $Krz12 = Schweres Schlachtschiff
016 $Krz13 = Ghost Schlachtschiff
017 $Krz14 = Versorgungsschiff
018 $Krz15 = Leichte Fregatte
019 $Krz16 = Korvette
020 $Krz17 = Explorer
021 $Krz18 = Cityschiff
022 $Krz1 = get subtype of ware $Krz1
023 $Krz2 = get subtype of ware $Krz2
024 $Krz3 = get subtype of ware $Krz3
025 $Krz4 = get subtype of ware $Krz4
026 $Krz5 = get subtype of ware $Krz5
027 $Krz6 = get subtype of ware $Krz6
028 $Krz7 = get subtype of ware $Krz7
029 $Krz8 = get subtype of ware $Krz8
030 $Krz9 = get subtype of ware $Krz9
031 $Krz10 = get subtype of ware $Krz10
032 $Krz11 = get subtype of ware $Krz11
033 $Krz12 = get subtype of ware $Krz12
034 $Krz13 = get subtype of ware $Krz13
035 $Krz14 = get subtype of ware $Krz14
036 $Krz15 = get subtype of ware $Krz15
037 $Krz16 = get subtype of ware $Krz16
038 $Krz17 = get subtype of ware $Krz17
039 $Krz18 = get subtype of ware $Krz18
040 $shield = 'Angelwing'
041 $shield2 = 'traeger'
042 $shield3 = 'gkreuzer'
043 $shield4 = 'hunter'
044 $shield5 = 'predator'
045 $shield6 = 'tactic'
046 $shield7 = 'gorgdes'
047 $shield8 = 'ghostdes'
048 $shield9 = 'noahcr'
049 $shield10 = 'noahbs'
050 $shield11 = 'ghostbs'
051 $shield12 = 'colos'
052 $shield13 = 'frigate'
053 $shield14 = 'explorer'
054 $shield15 = 'city'
055 $ship.shield.arr[$Krz1] = $shield
056 $ship.shield.arr[$Krz2] = $shield2
057 $ship.shield.arr[$Krz3] = $shield3
058 $ship.shield.arr[$Krz4] = $shield4
059 $ship.shield.arr[$Krz5] = $shield4
060 $ship.shield.arr[$Krz6] = $shield5
061 $ship.shield.arr[$Krz7] = $shield6
062 $ship.shield.arr[$Krz8] = $shield7
063 $ship.shield.arr[$Krz9] = $shield
064 $ship.shield.arr[$Krz10] = $shield8
065 $ship.shield.arr[$Krz11] = $shield9
066 $ship.shield.arr[$Krz12] = $shield10
067 $ship.shield.arr[$Krz13] = $shield11
068 $ship.shield.arr[$Krz14] = $shield12
069 $ship.shield.arr[$Krz15] = $shield13
070 $ship.shield.arr[$Krz16] = $shield13
071 $ship.shield.arr[$Krz17] = $shield14
072 $ship.shield.arr[$Krz18] = $shield15
073 set global variable: name='plugin.shields.typearray' value=$ship.shield.arr
074 return null
- 001 if [THIS] == [PLAYERSHIP]
002 |$x = [PLAYERSHIP] -> get x position
003 |$y = [PLAYERSHIP] -> get y position
004 |$z = [PLAYERSHIP] -> get z position
005 |$s1 = create special: type=161 addto=[SECTOR] x=$x y=$y z=$z
006 |$s2 = create special: type=162 addto=[SECTOR] x=$x y=$y z=$z
007 |$s3 = create special: type=163 addto=[SECTOR] x=$x y=$y z=$z
008 |$s4 = create special: type=143 addto=[SECTOR] x=$x y=$y z=$z
009 |$s5 = create special: type=144 addto=[SECTOR] x=$x y=$y z=$z
010 |$s6 = create special: type=145 addto=[SECTOR] x=$x y=$y z=$z
011 |$s7 = create special: type=134 addto=[SECTOR] x=$x y=$y z=$z
012 |$s8 = create special: type=135 addto=[SECTOR] x=$x y=$y z=$z
013 |$s9 = create special: type=136 addto=[SECTOR] x=$x y=$y z=$z
014 |$ship.arr = [SECTOR] -> get ship array from sector/ship/station
015 @ |= wait 2000 ms
016 |$s1 ->destruct: show no explosion=[TRUE]
017 |$s2 ->destruct: show no explosion=[TRUE]
018 |$s3 ->destruct: show no explosion=[TRUE]
019 |$s4 ->destruct: show no explosion=[TRUE]
020 |$s5 ->destruct: show no explosion=[TRUE]
021 |$s6 ->destruct: show no explosion=[TRUE]
022 |$s7 ->destruct: show no explosion=[TRUE]
023 |$s8 ->destruct: show no explosion=[TRUE]
024 |$s9 ->destruct: show no explosion=[TRUE]
025 else
026 |$ship.arr = create new array, arguments=[THIS], null, null, null, null
027 end
028 $ship.shield.arr = get global variable: name='plugin.shields.typearray'
029 $ship.size = size of array $ship.arr
030 while $ship.size
031 |dec $ship.size =
032 |$ship = $ship.arr[$ship.size]
033 |$ship.type = $ship -> get subtype
034 |$shield.type = $ship.shield.arr[$ship.type]
035 |if not $shield.type == null
036 ||$task = $ship -> get next available task: starting=8000
037 ||$ship ->start task $task with script 'a111' and prio 0: arg1=$shield.type arg2=null arg3=null arg4=null arg5=null
038 |end
039 end
040 return null
- 001 while [THIS] -> is in same sector as [PLAYERSHIP]
002 |$type = 0
003 |$vorher = [THIS] -> get current shield strength
004 @ |= wait 50 ms
005 |$nachher = [THIS] -> get current shield strength
006 |if $nachher < $vorher
007 ||$type = 0
008 ||if $vorher - $nachher > 140000
009 |||$type = 1
010 ||end
011 ||$strength = [THIS] -> get shield percent
012 ||if $strength > 3
013 |||$sec = [THIS] -> get sector
014 |||$x = [THIS] -> get x position
015 |||$y = [THIS] -> get y position
016 |||$z = [THIS] -> get z position
017 |||$a = [THIS] -> get rot alpha
018 |||$b = [THIS] -> get rot beta
019 |||$g = [THIS] -> get rot gamma
020 |||$ran = random value from 0 to 2 - 1
021 |||if $shield.type == 'Angelwing'
022 ||||if $type == 0
023 |||||if $ran == 1
024 ||||||$shield = create special: type=124 addto=$sec x=$x y=$y z=$z
025 |||||else
026 ||||||$shield = create special: type=125 addto=$sec x=$x y=$y z=$z
027 |||||end
028 ||||else
029 |||||if $type == 1
030 ||||||$shield = create special: type=126 addto=$sec x=$x y=$y z=$z
031 |||||end
032 ||||end
033 |||else
034 ||||if $shield.type == 'Hunter'
035 |||||if $type == 0
036 ||||||if $ran == 1
037 |||||||$shield = create special: type=127 addto=$sec x=$x y=$y z=$z
038 ||||||else
039 |||||||$shield = create special: type=128 addto=$sec x=$x y=$y z=$z
040 ||||||end
041 |||||else
042 ||||||if $type == 1
043 |||||||$shield = create special: type=129 addto=$sec x=$x y=$y z=$z
044 ||||||end
045 |||||end
046 ||||else
047 |||||if $shield.type == 'gkreuzer'
048 ||||||if $type == 0
049 |||||||if $ran == 1
050 ||||||||$shield = create special: type=130 addto=$sec x=$x y=$y z=$z
051 |||||||else
052 ||||||||$shield = create special: type=131 addto=$sec x=$x y=$y z=$z
053 |||||||end
054 ||||||else
055 |||||||if $type == 1
056 ||||||||$shield = create special: type=132 addto=$sec x=$x y=$y z=$z
057 |||||||end
058 ||||||end
059 |||||else
060 ||||||if $shield.type == 'traeger'
061 |||||||if $type == 0
062 ||||||||if $ran == 1
063 |||||||||$shield = create special: type=133 addto=$sec x=$x y=$y z=$z
064 ||||||||else
065 |||||||||$shield = create special: type=134 addto=$sec x=$x y=$y z=$z
066 ||||||||end
067 |||||||else
068 ||||||||if $type == 1
069 |||||||||$shield = create special: type=135 addto=$sec x=$x y=$y z=$z
070 ||||||||end
071 |||||||end
072 ||||||else
073 |||||||if $shield.type == 'predator'
074 ||||||||if $type == 0
075 |||||||||if $ran == 1
076 ||||||||||$shield = create special: type=136 addto=$sec x=$x y=$y z=$z
077 |||||||||else
078 ||||||||||$shield = create special: type=137 addto=$sec x=$x y=$y z=$z
079 |||||||||end
080 ||||||||else
081 |||||||||if $type == 1
082 ||||||||||$shield = create special: type=138 addto=$sec x=$x y=$y z=$z
083 |||||||||end
084 ||||||||end
085 |||||||else
086 ||||||||if $shield.type == 'tactic'
087 |||||||||if $type == 0
088 ||||||||||if $ran == 1
089 |||||||||||$shield = create special: type=139 addto=$sec x=$x y=$y z=$z
090 ||||||||||else
091 |||||||||||$shield = create special: type=140 addto=$sec x=$x y=$y z=$z
092 ||||||||||end
093 |||||||||else
094 ||||||||||if $type == 1
095 |||||||||||$shield = create special: type=141 addto=$sec x=$x y=$y z=$z
096 ||||||||||end
097 |||||||||end
098 ||||||||else
099 |||||||||if $shield.type == 'gorgdes'
100 ||||||||||if $type == 0
101 |||||||||||if $ran == 1
102 ||||||||||||$shield = create special: type=142 addto=$sec x=$x y=$y z=$z
103 |||||||||||else
104 ||||||||||||$shield = create special: type=143 addto=$sec x=$x y=$y z=$z
105 |||||||||||end
106 ||||||||||else
107 |||||||||||if $type == 1
108 ||||||||||||$shield = create special: type=144 addto=$sec x=$x y=$y z=$z
109 |||||||||||end
110 ||||||||||end
111 |||||||||else
112 ||||||||||if $shield.type == 'ghostdes'
113 |||||||||||if $type == 0
114 ||||||||||||if $ran == 1
115 |||||||||||||$shield = create special: type=145 addto=$sec x=$x y=$y z=$z
116 ||||||||||||else
117 |||||||||||||$shield = create special: type=146 addto=$sec x=$x y=$y z=$z
118 ||||||||||||end
119 |||||||||||else
120 ||||||||||||if $type == 1
121 |||||||||||||$shield = create special: type=147 addto=$sec x=$x y=$y z=$z
122 ||||||||||||end
123 |||||||||||end
124 ||||||||||else
125 |||||||||||if $shield.type == 'noahcr'
126 ||||||||||||if $type == 0
127 |||||||||||||if $ran == 1
128 ||||||||||||||$shield = create special: type=148 addto=$sec x=$x y=$y z=$z
129 |||||||||||||else
130 ||||||||||||||$shield = create special: type=149 addto=$sec x=$x y=$y z=$z
131 |||||||||||||end
132 ||||||||||||else
133 |||||||||||||if $type == 1
134 ||||||||||||||$shield = create special: type=150 addto=$sec x=$x y=$y z=$z
135 |||||||||||||end
136 ||||||||||||end
137 |||||||||||else
138 ||||||||||||if $shield.type == 'noahbs'
139 |||||||||||||if $type == 0
140 ||||||||||||||if $ran == 1
141 |||||||||||||||$shield = create special: type=151 addto=$sec x=$x y=$y z=$z
142 ||||||||||||||else
143 |||||||||||||||$shield = create special: type=152 addto=$sec x=$x y=$y z=$z
144 ||||||||||||||end
145 |||||||||||||else
146 ||||||||||||||if $type == 1
147 |||||||||||||||$shield = create special: type=153 addto=$sec x=$x y=$y z=$z
148 ||||||||||||||end
149 |||||||||||||end
150 ||||||||||||else
151 |||||||||||||if $shield.type == 'ghostbs'
152 ||||||||||||||if $type == 0
153 |||||||||||||||if $ran == 1
154 ||||||||||||||||$shield = create special: type=154 addto=$sec x=$x y=$y z=$z
155 |||||||||||||||else
156 ||||||||||||||||$shield = create special: type=155 addto=$sec x=$x y=$y z=$z
157 |||||||||||||||end
158 ||||||||||||||else
159 |||||||||||||||if $type == 1
160 ||||||||||||||||$shield = create special: type=156 addto=$sec x=$x y=$y z=$z
161 |||||||||||||||end
162 ||||||||||||||end
163 |||||||||||||else
164 ||||||||||||||if $shield.type == 'colos'
165 |||||||||||||||if $type == 0
166 ||||||||||||||||if $ran == 1
167 |||||||||||||||||$shield = create special: type=157 addto=$sec x=$x y=$y z=$z
168 ||||||||||||||||else
169 |||||||||||||||||$shield = create special: type=158 addto=$sec x=$x y=$y z=$z
170 ||||||||||||||||end
171 |||||||||||||||else
172 ||||||||||||||||if $type == 1
173 |||||||||||||||||$shield = create special: type=159 addto=$sec x=$x y=$y z=$z
174 ||||||||||||||||end
175 |||||||||||||||end
176 ||||||||||||||else
177 |||||||||||||||if $shield.type == 'frigate'
178 ||||||||||||||||if $type == 0
179 |||||||||||||||||if $ran == 1
180 ||||||||||||||||||$shield = create special: type=160 addto=$sec x=$x y=$y z=$z
181 |||||||||||||||||else
182 ||||||||||||||||||$shield = create special: type=161 addto=$sec x=$x y=$y z=$z
183 |||||||||||||||||end
184 ||||||||||||||||else
185 |||||||||||||||||if $type == 1
186 ||||||||||||||||||$shield = create special: type=162 addto=$sec x=$x y=$y z=$z
187 |||||||||||||||||end
188 ||||||||||||||||end
189 |||||||||||||||else
190 ||||||||||||||||if $shield.type == 'explorer'
191 |||||||||||||||||if $type == 0
192 ||||||||||||||||||if $ran == 1
193 |||||||||||||||||||$shield = create special: type=163 addto=$sec x=$x y=$y z=$z
194 ||||||||||||||||||else
195 |||||||||||||||||||$shield = create special: type=164 addto=$sec x=$x y=$y z=$z
196 ||||||||||||||||||end
197 |||||||||||||||||else
198 ||||||||||||||||||if $type == 1
199 |||||||||||||||||||$shield = create special: type=165 addto=$sec x=$x y=$y z=$z
200 ||||||||||||||||||end
201 |||||||||||||||||end
202 ||||||||||||||||else
203 |||||||||||||||||if $shield.type == 'city'
204 ||||||||||||||||||if $type == 0
205 |||||||||||||||||||if $ran == 1
206 ||||||||||||||||||||$shield = create special: type=166 addto=$sec x=$x y=$y z=$z
207 |||||||||||||||||||else
208 ||||||||||||||||||||$shield = create special: type=167 addto=$sec x=$x y=$y z=$z
209 |||||||||||||||||||end
210 ||||||||||||||||||else
211 |||||||||||||||||||if $type == 1
212 ||||||||||||||||||||$shield = create special: type=168 addto=$sec x=$x y=$y z=$z
213 |||||||||||||||||||end
214 ||||||||||||||||||end
215 |||||||||||||||||end
216 ||||||||||||||||end
217 |||||||||||||||end
218 ||||||||||||||end
219 |||||||||||||end
220 ||||||||||||end
221 |||||||||||end
222 ||||||||||end
223 |||||||||end
224 ||||||||end
225 |||||||end
226 ||||||end
227 |||||end
228 ||||end
229 |||end
230 |||$shield ->set rotation: alpha=$a beta=$b gamma=$g
231 |||$shield ->ignore collisions: [TRUE]
232 |||$task = [THIS] -> get next available task: starting=9000
233 |||[THIS] ->start task $task with script 'shield.schleif' and prio 0: arg1=$shield arg2=null arg3=null arg4=null arg5=null
234 @ |||START $null -> call script 'plugin.shield.destroy' : Schildobjekt=$shield
235 @ |||= wait 150 ms
236 ||end
237 |end
238 end
239 return null
- 001 while $shield -> exists
002 @ |= wait 50 ms
003 |$x = [THIS] -> get x position
004 |$y = [THIS] -> get y position
005 |$z = [THIS] -> get z position
006 |$a = [THIS] -> get rot alpha
007 |$b = [THIS] -> get rot beta
008 |$g = [THIS] -> get rot gamma
009 |$shield ->force position: x=$x y=$y z=$z
010 |$shield ->set rotation: alpha=$a beta=$b gamma=$g
011 end
012 return null
- 001 if $shield -> exists
002 @ |= wait 950 ms
003 |$shield ->destruct: show no explosion=[TRUE]
004 end
005 return null
Last edited by Einheit 101 on Sat, 23. Feb 13, 16:03, edited 8 times in total.
du hast im Setup das wichtigste vergessen (auszug aus meiner PM):
* Prüfscript an Sektorwechselevent binden
global secondary signal map: add signal=SIGNAL_CHANGEDSECTOR race=null class=ship script=plugin.shields.startonship prio=0 name="plugin.shields.startonship"
* ----------
den rest seh ich mir mal später an..
* Prüfscript an Sektorwechselevent binden
global secondary signal map: add signal=SIGNAL_CHANGEDSECTOR race=null class=ship script=plugin.shields.startonship prio=0 name="plugin.shields.startonship"
* ----------
den rest seh ich mir mal später an..
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
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