Fehlende Befehle im ScriptEdiotor?!

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

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

Deleted User

Fehlende Befehle im ScriptEdiotor?!

Post by Deleted User »

So, nachdem es eher Unwahrscheinlich ist das hier ne Brauchbare Antwort kommt, werde ich mich mir mal wenig hoffnungen machen eine zu erhalten.

Zum Problem:

Bei dem versuch ein Produckt per script verschiedenen Stationen hinzuzufügen ist mir aufgefallen das es ein Paar befehle gibt die zumindest mir fehlen.

die befehlszeilen kennt ja jeder aus den Tutorials:

Code: Select all

001 @ = wait 100 ms
002   $Station =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
003   if $Station -> exists
004    if not $Station -> trades with ware Spezialsoftware MK2
005     $Station -> add product to factory or dock: Spezialsoftware MK2
006     $Discard = $Station -> add 1 units of Spezialsoftware MK2
007    end
008   end
009   return null
soweit so gut diesem einen Split Ausrüstungsdock wird nun also die Spezialsoftware MK2 hinzugefügt.

allerdings wollte ich dieses Produckt ja nicht nur einem sondern Mehreren Stationen hinzufügen, nämlich noch 2 weiteren Split AD und den P.Anarchi Port.

man kann zwar nun mit Arrys und was weis ich noch alles ein schones Drumrum baun und bekommt dann auch was man will (zumindest denke ich das es geht) - aber nicht jeder hat ein Informatickstudium oder der gleichen hinter sich. und extra eins anfangen für ein Game ? - ich weis nicht.

So, nun sollte es so denkt der leie, moglich sein die Abfrage mehrfach aneinander zu hängen - in eine Kette mit einer art von verknüpfung z.b. so:

Code: Select all

001 @ = wait 100 ms
002   $Station =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
003   if $Station -> exists
004    if not $Station -> trades with ware Spezialsoftware MK2
005     $Station -> add product to factory or dock: Spezialsoftware MK2
006     $Discard = $Station -> add 1 units of Spezialsoftware MK2
007    Then (oder auch Then find - oder And)
008   $Station2 =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
009   if $Station2 -> exists
010    if not $Station2 -> trades with ware Spezialsoftware MK2
011     $Station2 -> add product to factory or dock: Spezialsoftware MK2
012     $Discard = $Station2 -> add 1 units of Spezialsoftware MK2
013    end
014   end
009   return null
oder auch mit den suchbefehlen hintereinander:

Code: Select all

000 Stations = Station And Station2
001 @ = wait 100 ms
002   $Station =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
003   And (Then)
004   $Station2 =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
005   if $Stations -> exists
006    if not $Stations -> trades with ware Spezialsoftware MK2
007     $Stations -> add product to factory or dock: Spezialsoftware MK2
008     $Discard = $Stations -> add 1 units of Spezialsoftware MK2
009    end
010   end
011   return null
Also eben mit einfachen mitteln eine befehl mehrfach aufrufen ohne komplizierte Abfragen bauen zu müssen. Doch leider git es keine verküpfenden befehle im Scripteditor.
Nun Frage ich mich warum - ist es ein verbrechen eine befehlskette zu bauen?

(Die oben Angegebenen codes sind jetzt nur zur verdeutlichung des Problems und sind so natürlich nicht ganz fehlerfei - aber das Grungproblem sollte denke ich klar werden.)

was bei dem erstellen nun auffällt, ist das bei einer widerholten nutzung der befehle, diese zwar gespeichert aber beim ausführen gelöscht werden.

z.b. so:

Code: Select all

001 @ = wait 100 ms
002   $Station =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
003   if $Station -> exists
004    if not $Station -> trades with ware Spezialsoftware MK2
005     $Station -> add product to factory or dock: Spezialsoftware MK2
006     $Discard = $Station -> add 1 units of Spezialsoftware MK2
007    end
008   end
002   $Station =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99
003   if $Station -> exists
004    if not $Station -> trades with ware Spezialsoftware MK2
005     $Station -> add product to factory or dock: Spezialsoftware MK2
006     $Discard = $Station -> add 1 units of Spezialsoftware MK2
007    end
008   end
009   return null
wobei es hier auch völlig egal ist in welcher form man eine aneinandereiung versucht - und auch die benutzung von zusätzlichen Variablen - um die Sectoren, Rassen und Stationen zu definieren nutzt nichts - da diese ebenfals einfach aus dem Script gelöscht werden.

daher mal die ernsthafte Frage an Egosoft - muß es sein das man auf solche einfachen mittel verzichtet.
Fast alles im Scripteditor ist ohne tiefere Programmierkenntnisse nicht zu verwirklichen.
Es ist zwar schön das das einige sehr gut können - manche können das nicht und die Tutorials erklären einen solche Probleme nicht gerade.

so ist mir z.b. auch aufgefallen das manche Befehle sich nicht Auf jedes Objekt gennerell anwenden lassen - ein Sript das einem einen gezielten angriff auf feindschiffe bestimmter klassen ermöglicht funktioniert prima mit einem Diso, bei der Nova oder anderen schiffen mit türmen aber nicht.
und schon kann man wieder versuchen ne lösung und die zugehörigen befehle zu finden - da es auch hierzu keinerlei infos gibt welcher befehl für welche objekte überhaupt verwendbar sind, ist das ne suche nach der nadel im heuhaufen.

@ EGOSOFT nicht jeder kennt sich mit Proggramieren aus und kann somit den SE nicht ohne grundlegende infos halbwegs nachvollziehen. Ihr gebt keine Beispielscripte raus und keine Grundlegenden Infos - sprich Doku - die einem wenigstens halbwegs erklären würde was wo zu verwenden ist.

wenn man was wissen will, dann kann man zwar fragen, aber das ritual ist dann immer das selbe - script schicken, abwarten und dann bekommt man etwas zurück das zwar funktioniert - aber warum und wieso steht weiterhin in den Sternen.

Also tut mal den nicht Proggern nen gefallen und fügt grundlegende Befehle für das verknüpfen von befehlen hinzu - damit man wenigstens versuchen kann solche fallen zu umgehen, oder macht ne doku mit Beispielscripten damit man das ganze mal nachvollziehen kann (mit erklärungen warum man eine befehl so verwendet bzw. welchen befehl man da verwendet)

ich find es schade das leuten mit wenig kenntnissen nichts anderes übrig bleibt, als für jeden befehl und für jede Aktion, ein extra script zu schreiben nur um dann mit 100 - 10 Zeiligen scripts dann das zu erreichen, was man ansonsten in einem Script mit 20 oder 30 zeilen hätte umsetzen können.[/code]
Diamonddragon
Posts: 1957
Joined: Sat, 7. Feb 04, 20:26
x3tc

Post by Diamonddragon »

endlich einer, der die wahrheit sagt :roll:
aber wirklich, wieso gibts nix von denen? alles muss man selber machen und lernen, aber ohne gute! hilfe gehts nicht, und die scriptdoku bringt eher mehr fragen, als sie löst
Es ist nicht das Schicksal, was die Zukunft bestimmt.
Script- und Modliste
Deleted User

Post by Deleted User »

Londo, du bist witzig.

also weil du nicht in der Lage bist, die vorhandenen Befehle zu benutzen hat Egosoft vergessen die einzubauen - klasse Logik, Respekt!

warum funktioniert

Code: Select all

$Station =  find station in galaxy: startsector=Black Hole Sun class or type=Split Equipment Dock race=Split flags=[Find.Multiple] refobj=null serial=null max.jumps=99 

wohl nicht 2mal hintereinander... ?
gehen wir doch mal logisch an die Sache ran: $station soll in deinem Codebeispiel genau ein Split Ausrüstungsdock sein

1. Unfug:
[Find.Multiple] - wenn dein Code darauf ausgelegt ist, genau eines zu benutzen ist [Find.Multiple] doch absoluter Blödsinn.

2. Unfug:
Wenn du die gleiche Aktion nochmal machst, ist es dann nicht logisch, dass genau die selbe Station wieder gefunden wird? Jetzt hat die Station die Ware aber schon, also wird sie natürlich nicht nochmal hinzugefügt.

So, das war jetzt doch ganz simpel und man braucht doch nicht zum Denken schon ein Informatikstudium?

Es gibt ja schon einige funktionierende Scripte, die genau das tun, was du willst - warum schaust du die dir nicht an, man muss doch nicht jedesmal das Rad neu erfinden.
Ich nehm mal als Beispiel das Setup Script von der Handelssoftware Mk3 her. Da wird die Ware ja auch einigen Teladi Stationen hinzugefügt - was haben die denn da gemacht?

Code: Select all

056   while $i < 4
057    $Teladi.Equipment.Dock =  find station in galaxy: startsector=$Home.Of.Light class or type=Teladi Ausrüstungsdock race=Teladi flags=[Find.Random] refobj=null serial=null max.jumps=null
058    if $Teladi.Equipment.Dock -> exists
059     if not $Teladi.Equipment.Dock -> trades with ware Handelssoftware MK3
060      $Teladi.Equipment.Dock -> add product to factory or dock: Handelssoftware MK3
061      $dummy = $Teladi.Equipment.Dock -> add 1 units of Handelssoftware MK3
062     end
063     inc $i = 
064    else
065     break
066    end
Ah, hmm, also da ist eine While Schleife (wenn Du nicht weißt, was das ist, frag mal google, zu diesen simplen Dingen gibt es abertausende Erklärungen im Internet - um das zu kapieren reicht es sogar schon mal bei SelfHTML die JavaScript Befehlsreferenz anzuschaun...)
Also zurück zum Code, die Schleife läuft da 4mal durch und benutzt auch wieder den "find station in galaxy" Befehl - ja wie nun, da läuft 4mal das Gleiche und dennoch funktioniert das?
Machen wir doch mal die Augen auf, wo ist denn da der Unterschied? Ah, da wird [Find.Random] gemacht - hm, also eine zufällige Station, nicht immer die gleiche - ja sowas, klar - so geht's!
Da Du schon bei [Find.Multiple] gekommen bist, musst Du [Find.Random] auch gesehen haben - und von "sehen" bis "im Gehirn verarbeiten und logische Verbindung herstellen" sollte es doch gar nicht so weit sein, oder?


Nächstes Beispiel:

Code: Select all

Stations = Station And Station2 
aha, interessant - also wie sieht dann wohl der Wert von Stations aus? Ist das vielleicht eine Liste? hmm, denken wir nochmal nach, was macht denn eigentlich ein Array (den Begriff kennst du ja schon, dann mach dich doch mal schlau anstatt gleich hier loszumeckern -> google!) - so ein Zufall, der macht doch genau das...
kann in einer Variable gleich mehrere Objekte aufnehmen.
Aber ist ja klar, der Befehl "fehlt" ja, schließlich kannst du nicht damit umgehen... schon wieder diese Anti-Logik.

Was zum Geier soll denn

Code: Select all

And (Then) 
sein? Hallo? das ist eine Scriptsprache, da schreibt man kein "Do This and Then do that and after that do this again"
Wozu soll das überhaupt gut sein? wenn Zeile 2 erledigt ist, geht er automatisch zur nächsten Zeile, wozu da nochmal ein "And (Then)"?
Abgesehn davon machst du schon wieder den Fehler 2mal die gleiche Station zu suchen...

Und im dritten Beispiel machst du den selben Müll wieder, aber nein, das ist ja nicht dein Fehler und da muss man ja Informatik studiert haben um logisch zu denken, das ist natürlich der Fehler des Script Editors.

Du sagst selbst, dass du schon andere Leute um Hilfe gebeten hast - ja warum fragst du die denn nicht, warum es so geht - wer sich schon die Mühe macht deine verunglückten Scripte zu reparieren, der ist sicher auch bereit dir zu erklären, was du falsch machst - hier sind doch so viele hilfsbereite Leute, was ist so schwer daran einfach mal freundlich zu fragen?


Darf ich vielleicht nochmal darauf hinweisen, dass der ScriptEditor ein Feature ist, das für die Leute gedacht ist, die sich mit Scriptsprachen auskennen, da muss und soll sich gar nicht jeder Hanswurst damit beschäftigen - es wurde klar gesagt, dass es für den ScriptEditor (genau wie für den GalaxyEditor und die anderen Modtools) KEINE offizielle Unterstützung gibt, mit anderen Worten, Du hast gar kein Recht hier von Egosoft was zu fordern.
Du kannst höflich darum bitten, aber jeder Beitrag, den ich von Dir bisher gelesen habe ist ein "ihr seid alle blöd, was ich sage ist das einzig Wahre und ich will dass das jetzt so geht".


Fazit:
du hast von der Materie keine Ahnung. Aber das ist natürlich nicht dein Fehler. Sicherlich kann man nicht erwarten, dass sich jeder mit Scripten und co auskennt, aber ich finde es eine Unverschämtheit hier dann das eigene Unwissen als Fehler der anderen darzustellen. Das ist eine Beleidigung für jeden der wirklich was davon versteht.
Geh mal zu nächsten Bäcker und erklär dem wie er seine Brötchen zu backen hat - der wird dir was husten.
XeHonk
Posts: 1087
Joined: Sun, 7. Mar 04, 23:03
x3tc

Post by XeHonk »

*hust*
[fies]meine meinung dazu (dürft ihr auch gerne ignorieren):
scripten ist nunmal eine art von programmieren..
sicherlich mit eingeschränkten möglichkeiten, aber das heißt noch lange nicht, dass es einfach sein muss. und wer programmiert, der muss sich nunmal die arbeit machen, das zu lernen.

zumal der scripteditor sich verdammt einfach bedienen lässt (die grundlagen die man lernen muss stehen in jedem programmier tutorial auf den ersten 5 seiten ^^).

mal ganz davon abgesehen, dass die sog. arrays sich eher wie listen verhalten und sogar ne append funktion haben ;)


letztendlich bist du doch nur zu faul (sry), dir die nötigen kenntnisse anzueignen, um hier was zu machen? das gehört zum modden nunmal dazu.[/fies]

und ansonsten kann ich dir nur raten irgendein programmier tutorial herzunehmen und die basics zu lernen

ps: dein zweiter codeschnipsel funktioniert auch nicht ^^ find station mit findmultiple gibt n array zurück, keine einzelne station
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Daimonddragon wrote:endlich einer, der die wahrheit sagt :roll:
aber wirklich, wieso gibts nix von denen? alles muss man selber machen und lernen, aber ohne gute hilfe gehts nicht, und die scriptdoku bringt eher mehr fragen, als sie löst
Dann beantworte mal folgende Fragen:

Wer hat ArcaJeth geholfen?
Wer hat GothicK geholfen?
Wer hat jnrk geholfen?
Wer hat metuelisator geholfen?
Wer hat moonraven geholfen?
Wer hat MrMilti geholfen?
Wer hat ticaki geholfen?
Wer hat XeHonk geholfen?

Antwort: Niemand
Londo wrote:So, nachdem es eher Unwahrscheinlich ist das hier ne Brauchbare Antwort kommt, werde ich mich mir mal wenig hoffnungen machen eine zu erhalten.
Hier herrscht ein anderer Ton... passe dich an.
Der nächste Topic der ansatzweise nach einer Flame aussieht, wird sofort gesperren :rant:
Londo wrote:
Fast alles im Scripteditor ist ohne tiefere Programmierkenntnisse nicht zu verwirklichen.

Ja und das wird sich nie ändern! (tiefere Programmierkenntnisse *g*)
nicht jeder kennt sich mit Proggramieren aus und kann somit den SE nicht ohne grundlegende infos halbwegs nachvollziehen.
Dann soll er garnicht damit anfangen, vernünftige Script bedürfen immer ein guten Vorplanung! Egal wieviel Doku vorhanden ist ;)
XeHonk wrote:letztendlich bist du doch nur zu faul (sry), dir die nötigen kenntnisse anzueignen, um hier was zu machen?
*hust* Bleib nett XeHonk :D

Schlußendlich braucht es zum Scripten:
1. viel Willen
2. etwas Talent
3. ausreichend Intelligenz
:gruebel:

Gruß ticaki :D
Last edited by ticaki on Sun, 11. Jul 04, 14:15, edited 4 times in total.
Zur Zeit nicht aktiv
User avatar
Orka
Posts: 817
Joined: Wed, 7. Apr 04, 15:19
x4

Post by Orka »

Wasch mich, aber mach mich nicht nass...
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

Da hat sich jemand (eigentlich viele) so viel Mühe gemacht und wer ein wenig daran arbeitet kommt schnell dahinter.

http://www.hoststore.de/contes/jkdown/tut/inhalt.html

Gruß
Lucike
l3th4l
Posts: 118
Joined: Sat, 14. Feb 04, 20:30
x4

Post by l3th4l »

ich bin eigentlich ein sehr hilfreicher mensch, aber nachdem ich deinen beitrag gelesen habe, ist mir die lust dir zu helfen gründlichst vergangen. wie kann man nur erwarten, dass einem geholfen wird, wenn so unfreundlich und unhöflich ist??
zu den anforderungen die der scripteditior an den benutzer stellt:
mann muss bei weitem kein profi in sachen programmierung sein um mit dem SE zurechtzukommen. ganz im gegenteil: ich glaube der SE eignet sich hervorragend für leute die gerade noch das programmieren lernen. du darfst nur nicht glauben, dass sich der script editor deinem stil anpasst, denn das wird er nicht. du wirst über kurz oder lang nicht daran vorbeikommen arrays (ganz zu schweigen von verschachtelten arrays) zu benutzen und wenn du dann einmal an auf eine frage stösst, die du trotz ausreichender recherche in diversen tutorials nicht beantworten kannst, dann kann man auch in einem höflichen und sachlichen ton hier im forum oder im chat fragen.
Deleted User

Post by Deleted User »

Da zeigt sich das sich dieser satz bewarheitet:
Londo Molari wrote:So, nachdem es eher Unwahrscheinlich ist das hier ne Brauchbare Antwort kommt, werde ich mich mir mal wenig hoffnungen machen eine zu erhalten.
zum einen wurde von mir gesagt das der code nicht fehlerfrei ist sondern nur zeigen soll das keine mehrfachnutzung oder verknüpfug von befehlen möglich ist.

und die frage warum man diese nicht hat ist berechtigt. zum anderen ist das thema nicht faulheit sondern die frage nach einer hilfe in textform mit der jeder was anfangen kann.

und die antworten von wegen unhöflich ect. solltet ihr euch mal lieber selbst geben.

es war aber fast klar das hier nichts vernünftiges von eurer seite kommt - traurig aber war.

und alles was ich hier noch antworten könnte wären unschöne zitate - insofern spare ich es mir mich nochmal mit irgeneinem hier zu unterhalten.
Hier herrscht ein anderer Ton... passe dich an.
Der nächste Topic der ansatzweise nach einer Flame aussieht, wird sofort gesperren
@ ticaki - was für ein dramatischer ton weil man daran zweifelt das einer hier nen vernünftige antwort zum thema gibt - wie vernünftig diese sind sieht man ja.
du stehst sei dir dank ja weit über allen menschen auf dieser wellt - sorry aber sowas von dir - echt enteuschend.[/quote]
Vassenego
Posts: 4797
Joined: Fri, 20. Dec 02, 19:30
x2

Post by Vassenego »

Londo Molari wrote:Da zeigt sich das sich dieser satz bewarheitet:

...

zum einen wurde von mir gesagt das der code nicht fehlerfrei ist sondern nur zeigen soll das keine mehrfachnutzung oder verknüpfug von befehlen möglich ist.

...
Sorry Londo, aber Du sagst selbst in Deinem Eingangspost, dass es geht.
man kann zwar nun mit Arrys und was weis ich noch alles ein schones Drumrum baun und bekommt dann auch was man will (zumindest denke ich das es geht) - aber nicht jeder hat ein Informatickstudium oder der gleichen hinter sich. und extra eins anfangen für ein Game ? - ich weis nicht.
Nur weil Du es nicht kannst, heißt das nicht, dass hier etwas fehlt oder gar fehlerhaft ist.

Wie sagt Dieter Nuhr doch so schön?

:roll:


Alles wird schweigsam
Vassenego
"Bereitet euch darauf vor, relativistisch Absurdes zu werden ..." (Isaac)

don't click :spam:

--<= back (for good?) =>--
XeHonk
Posts: 1087
Joined: Sun, 7. Mar 04, 23:03
x3tc

Post by XeHonk »

londo: das problem ist leider, dass du das scripten absolut ins lächerliche ziehst mit deinen aussagen, da fühlt man sich als ehrlicher coder nunmal angegriffen..

und die frage nach den befehlen war auch nicht wirklich sinnvoll, alles weitere würde den editor nur noch schwieriger benutzbar machen.. so wie's jetzt ist, ists für die meisten leute super nutzbar, weils einfach so wie überall ist => man muss keine neue sprache lernen nur fürs x2-scripten ^^

und das mit den "zum einen wurde von mir gesagt das der code nicht fehlerfrei ist" bezog sich (von meiner seite zumindest) auf "zumindest denke ich das es geht" diesen satz.. das hörte sich so an, als ob du der meinung wärst, dass dein script funktionieren würde ;) wollte nur sagen, dass es das nicht tut (nicht dass du auf falsche gedanken kommst)
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Londo wrote:So, nachdem es eher Unwahrscheinlich ist das hier ne Brauchbare Antwort kommt, werde ich mich mir mal wenig hoffnungen machen eine zu erhalten.
Weil alle doof sind, angriff auf alle
Londo wrote:und die antworten von wegen unhöflich ect. solltet ihr euch mal lieber selbst geben.
keine Einsicht
Londo wrote:es war aber fast klar das hier nichts vernünftiges von eurer seite kommt - traurig aber war.
Weil alle doof sind, angriff auf alle
Londo Molari wrote:@ ticaki - was für ein dramatischer ton weil man daran zweifelt das einer hier nen vernünftige antwort zum thema gibt - wie vernünftig diese sind sieht man ja.
du stehst sei dir dank ja weit über allen menschen auf dieser wellt - sorry aber sowas von dir - echt enteuschend.
Angriff auf mich

Es langt!

Gruß ticaki

*closed*
Zur Zeit nicht aktiv

Return to “X²: Die Bedrohung - Scripts und Modding”