Verbesserter Schildeffekt (TC)

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
Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Tue, 25. Dec 12, 12:45

Das ist jetzt nur ein erster Test, Ich bin gerade dabei, die Qualität massiv zu verbessern. Danach muss ich noch den Script erschaffen, der das Objekt dem Schiff "folgen" lässt... Davor hab ich am meisten Angst :D :D

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Tue, 25. Dec 12, 13:19

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 ^^

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Tue, 25. Dec 12, 13:21

Das hab ich sogar schon, aber leider funktioniert es noch nicht ganz. Ich werde das jedoch erst machen, wenn der Schild etwas besser aussieht.

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Tue, 8. Jan 13, 14:49

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

User avatar
Killjaeden
Posts: 5366
Joined: Sun, 3. Sep 06, 18:19
x3tc

Post by Killjaeden » Tue, 8. Jan 13, 17:48

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:
Image

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Tue, 8. Jan 13, 17:56

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 ;)

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Tue, 8. Jan 13, 18:05

1. Die Blase erscheint nur bei einem Treffer
2. Sie ist auch innen texturiert

:D

http://www.youtube.com/watch?v=7PNZbUKmXbs

€DIT:::

Code: Select all

...schwachsinn. In bearbeitung

Bhatou
Posts: 197
Joined: Sun, 25. Dec 11, 12:01

Post by Bhatou » Wed, 9. Jan 13, 09:26

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 :/

User avatar
Marvin Martian
Posts: 3547
Joined: Sun, 8. Apr 12, 09:40
x4

Post by Marvin Martian » Wed, 9. Jan 13, 10:46

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

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Wed, 9. Jan 13, 11: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 ]

legge
Posts: 40
Joined: Sat, 23. May 09, 00:09
x3tc

Post by legge » Wed, 9. Jan 13, 21:47

OH :roll: Was hören meine Ohren da ! erst mal echt !!!! Super Arbeit !!!!

Heist das ich kan darauf hoffen das ich bald meine Startrek schiffe

mit schild versehen kann :D :D :D WoW das wer ja echt supi :D

dank deiner tollen Arbeit wird es der Hammer

binn voll gespannt weiter so bin begeistert !

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Wed, 9. Jan 13, 21:56

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 :D
[ external image ]

Bhatou
Posts: 197
Joined: Sun, 25. Dec 11, 12:01

Post by Bhatou » Thu, 10. Jan 13, 10:50

ja ich bin auch schon fasziniert davon, ich wills selber auch haben, allerdings für AP, falls möglich ? ^.^

allerdins müsst ich meine battlestars deaktivieren XD

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Thu, 10. Jan 13, 10:59

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.

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Fri, 11. Jan 13, 21:41

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
  • 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
Script 2: Erstellen der Blase für das jew. Schiff
  • 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
Script 3: Die Schleife zum Bewegen der Blase
  • 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
€DIT::: Das grün verursachte Augenkrebs.

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24965
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus » Fri, 11. Jan 13, 23:47

Einheit 101 wrote:011 |||$task = $task -> get next available task: starting=9090
//Alternative Taskauswahl (funktioniert offenbar nicht)
Funktioniert nicht, weil du nicht dein RefObj ([THIS]) abfragst.
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!

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Sat, 12. Jan 13, 00:45

Man muss also THIS angeben, dann funktioniert es? ok, danke. Werde ich testen.

right09
Posts: 92
Joined: Fri, 18. Mar 11, 22:00

Post by right09 » Sat, 12. Jan 13, 01:01

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
"modified und stolz drauf!"
"Wieso?"
"Weils jeder ist!"
GRUPPENZWANGSSIGNATUR DETECTED!

Einheit 101
Posts: 643
Joined: Sat, 3. Jan 09, 22:57
x3tc

Post by Einheit 101 » Mon, 14. Jan 13, 23:01

Auf ein neues:

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
Greift bei Sektorwechsel:
  • 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
Hauptteil mit Erstellung usw.
  • 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
Schleife für Bewegung:
  • 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
Zerstört die jeweilige Blase nach 950ms:
  • 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.

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Tue, 15. Jan 13, 17:03

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..
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 ;)

Post Reply

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