[Erledigt]Problem mit Random Script

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

User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

[Erledigt]Problem mit Random Script

Post by StarTrekMarc »

Hallo Leute,

ich habe ein Problem mit einem Script, das von ausgewählten Völkern eines auslosen soll, das Script sieht so aus:

Code: Select all

Script al.random.stm.attacker.1
Version: 1
for Script Engine Version: 25

Description
Random Attack- Xenon, Khaak, Pirats
Arguments
Source Text

(Zuerst werden die globalen Variablen gehohlt - 1 oder 0 / an oder aus)
001   $glob.var.xenon = get global variable: name='al.stm.attack.plugin.xenon.start'
002   $glob.var.khaak = get global variable: name='al.stm.attack.plugin.khaak.start'
003   $glob.var.pirats = get global variable: name='al.stm.attack.plugin.pirat.start'
004   
(sie kommen in ein Array)
005   $var.array.volker =  array alloc: size=2
006   
007   $var.array.volker[0] = $glob.var.xenon
008   $var.array.volker[1] = $glob.var.khaak
009   $var.array.volker[2] = $glob.var.pirats
010   
011   
(die Races werden in die "alten" Variablen gesetzt)
012   if $glob.var.xenon == 1
013    $glob.var.xenon = Xenon
014   end
015   
016   if $glob.var.khaak == 1
017    $glob.var.khaak = Khaak
018   end
019   
020   if $glob.var.pirats == 1
021    $glob.var.pirats = Piraten
022   end
023   
024   
(Random zum wählen einer zufälligen Rasse)
025   volk:
026   while $number < 15
027    $var.array.number = random value from 0 to 3 - 1
028   
029    $glob.var.volk.to.attack = $var.array.volker[$var.array.number]
030   
031    if not $glob.var.volk.to.attack == 1
032     inc $number =

033     goto label volk
034    end
035    if $glob.var.volk.to.attack == 1
036     goto label end
037    end
038   end
039   
(jetzt wird der Array aktualisiert)
040   end:
041   
042   $var.array.volker[0] = $glob.var.xenon
043   $var.array.volker[1] = $glob.var.khaak
044   $var.array.volker[2] = $glob.var.pirats
045   
046   
(und die globale Variable wieder ausgegeben)
047   $glob.var.volk = $var.array.volker[$var.array.number]
048   $glob.var.volk.attacker = $glob.var.volk
049   
050   set global variable: name='al.stm.attack.plugin.attacker' value=$glob.var.volk.attacker
...
062   return null
Seltsamerweise, krieg ich als Ergebniss immer nur die Xenon (also die 1.), warum?
Das gleiche Script hab ich auch für das zu attackierende Volk geschrieben (mit entsprechenden Variablen ect.), doch dort das selbe, immer nur die Argonen (1.).

Kann mir bitte jemand helfen? :)

Schonmal danke,

Gruß
StarTrekMarc
Last edited by StarTrekMarc on Sun, 29. May 05, 10:31, edited 1 time in total.
User avatar
Arget
Posts: 4825
Joined: Tue, 22. Aug 06, 05:53

Post by Arget »

Mach's doch auf die altbewärte "Get Random value from ??? to ???" Weiße! Aber da du ja ein AL-Script schreibts, weiß ich nicht, ob das da auch geht.
laprican
Posts: 196
Joined: Fri, 13. Feb 04, 16:56
x2

Post by laprican »

Wie wärs mit Debuging? Also das du die Werte die du bekommst ins logbuch schreibst um den fehler zu finden...

und:

Code: Select all

005   $var.array.volker =  array alloc: size=2
muss

Code: Select all

005   $var.array.volker =  array alloc: size=3
sein

desweitern, würd ich das:

Code: Select all

025   volk: 
026   while $number < 15 
027    $var.array.number = random value from 0 to 3 - 1 
028    
029    $glob.var.volk.to.attack = $var.array.volker[$var.array.number] 
030    
031    if not $glob.var.volk.to.attack == 1 
032     inc $number = 

033     goto label volk 
034    end 
035    if $glob.var.volk.to.attack == 1 
036     goto label end 
037    end 
038   end
aufräumen zu:

Code: Select all

025   while $number < 15 
026    $var.array.number = random value from 0 to 3 - 1 
027    
028    $glob.var.volk.to.attack = $var.array.volker[$var.array.number] 
029
030    skip if not $glob.var.volk.to.attack == 1 
031     goto label end 
032
033     inc $number =  
034   end
User avatar
Arget
Posts: 4825
Joined: Tue, 22. Aug 06, 05:53

Post by Arget »

Äh, ja, sag ich doch. :D
Mein Gedanke wäre auch so in die Richtung gegangen... wahrscheinlich hätte meine Idee nicht ganz funktioniert...
User avatar
Nemomuc
Posts: 315
Joined: Tue, 23. Mar 04, 19:49
x2

Re: Problem mit Random Script

Post by Nemomuc »

StarTrekMarc wrote:Hallo Leute,

ich habe ein Problem mit einem Script, das von ausgewählten Völkern eines auslosen soll, das Script sieht so aus:

Code: Select all

Script al.random.stm.attacker.1
Version: 1
for Script Engine Version: 25

Description
Random Attack- Xenon, Khaak, Pirats
Arguments
Source Text

(Zuerst werden die globalen Variablen gehohlt - 1 oder 0 / an oder aus)
001   $glob.var.xenon = get global variable: name='al.stm.attack.plugin.xenon.start'
002   $glob.var.khaak = get global variable: name='al.stm.attack.plugin.khaak.start'
003   $glob.var.pirats = get global variable: name='al.stm.attack.plugin.pirat.start'
004   
(sie kommen in ein Array)
005   $var.array.volker =  array alloc: size=2
006   
007   $var.array.volker[0] = $glob.var.xenon
008   $var.array.volker[1] = $glob.var.khaak
009   $var.array.volker[2] = $glob.var.pirats
010   
011   
(die Races werden in die "alten" Variablen gesetzt)
012   if $glob.var.xenon == 1
013    $glob.var.xenon = Xenon
014   end
015   
016   if $glob.var.khaak == 1
017    $glob.var.khaak = Khaak
018   end
019   
020   if $glob.var.pirats == 1
021    $glob.var.pirats = Piraten
022   end
023   
024   
(Random zum wählen einer zufälligen Rasse)
025   volk:
026   while $number < 15
027    $var.array.number = random value from 0 to 3 - 1
028   
029    $glob.var.volk.to.attack = $var.array.volker[$var.array.number]
030   
031    if not $glob.var.volk.to.attack == 1
032     inc $number =

033     goto label volk
034    end
035    if $glob.var.volk.to.attack == 1
036     goto label end
037    end
038   end
039   
(jetzt wird der Array aktualisiert)
040   end:
041   
042   $var.array.volker[0] = $glob.var.xenon
043   $var.array.volker[1] = $glob.var.khaak
044   $var.array.volker[2] = $glob.var.pirats
045   
046   
(und die globale Variable wieder ausgegeben)
047   $glob.var.volk = $var.array.volker[$var.array.number]
048   $glob.var.volk.attacker = $glob.var.volk
049   
050   set global variable: name='al.stm.attack.plugin.attacker' value=$glob.var.volk.attacker
...
062   return null
Seltsamerweise, krieg ich als Ergebniss immer nur die Xenon (also die 1.), warum?
Das gleiche Script hab ich auch für das zu attackierende Volk geschrieben (mit entsprechenden Variablen ect.), doch dort das selbe, immer nur die Argonen (1.).

Kann mir bitte jemand helfen? :)

Schonmal danke,

Gruß
StarTrekMarc

Wenn ich das richtig sehe , ist das ein Unterscript aufgerufen vom Timerscript oder vom Eventhandler.

Und was ich nicht sehe, ist die Verwendung eines globalen Arrays als übergebenes Argument zur zentralen Datenspeicherung.

Damit hättest du dann die Todsünde Nr.2 der Al-Plugin-Programmierung begangen (die Registerscripte zur Konfiguration als Todsünde Nummer 1 hat dir ja mittlerweile schon einer der ganz großen Scriptprofis unter den Greenies nochmal als ganz böses NO NO bestätigt).

Bitte benutze ein globales Array als zentrales Datenlager und KEINE X-Dutzend globale Variablen die die die Spielstände zumüllen , unnötige Referenzbackups verursachen, die Engine belasten , den Ramspeicher verringern und generell die System-Perfomance senken.

Ansonsten werden dir alle User die das Script benutzen, für die verhunzten Spielstände sicherlich "dankbar" sein...

Und unnötige globale Variablen, die auch dann noch die Spielstände belasten wenn das Script deinstalliert wurde und nie mehr verschwinden sind mehr als ärgerlich - es sei den du baust ein Deinstallationsscript ein .

Kein anderer User freut sich wenn ein Script sein Game oder Soielstände verschlechtert, im Extremfall sogar zerstört (ich hab es auf meinem Rechner bei der Pluginprogrammierung in meiner Lernphase mal geschafft den Spielstand kaputt zu machen) - es gibt so etwas wie Verantwortung denjenigen gegenüber die nicht scripten können und dir vertrauen, daß du ihr Spiel verbesserst .


Also :


Wenn du das Script zum Download freigibst dann programmier es BITTE BITTE BITTE sauber und kunstgerecht, laß dir notfalls helfen oder LASS ES und benutze es nur selbst .





Ach ja und wenn du Schiffe für die Ki Missionen brauchst dann benutze bitte den vorhandenen Bestand , d.h. leihe sie dir von der Ki aus, speichere den alten Ausrüstungsstand, Homebase , Name , Pilot etc. ab, rüste das Schiff auf das Missionsequipment um , benutze es und gib es der Ki anschließend nach der Mission im Originalzustand wieder am Entnahmeort zurück- ansonsten wäre die Todsünde Nr. 3 erfüllt , neue Schiffe nur im äußersten Notfall - auch dafür gibt es einen Grund, System-Performance - nicht alle Leute haben eine 3 Ghz Pentium CPU und eine neue GRAKA.



Wenn du Hilfe brauchst, dafür ist der Devnet Chat da.


Zur Frage warum es immer die Xenon wählt :

Die Schleife dürfte M.E. nicht laufen, da der Zähler $Number nicht definiert wurde , somit vom Datentyp NULL ist was das Durchlaufen bis zur 15. Wiederholung verhindern dürfte, auch ist $Number nicht auf 0 gesetzt (was sinnvoll ist) , somit läuft die Zufallsabfrage nur einmal und nach meinen Beobachtungen kommt dann mit der Randomfunktion meist der Wert 0 raus.

Da das Inc bedingt ist läuft das Script dann halt zum Label End , überspringt IMO die Schleife.

Und die Arrayposition auf Index 0 sind die Xenon. Ist der Wert dort 1 dann kommen die Xenon ansonsten müßte eine Endlosscheife draus werden.

Die Zeilen 31 bis 34 können daher eine Endlosschleife werden.

Warum eigentlich mit goto bei Zeile 36 ? - break ist besser.

Außerdem für was läuft das Ding eigentlich 16 mal durch wenn nur ein Wert ermittelt werden soll ? Sollte damit sichergestellt werden, daß die Variable auch sicher geschrieben wird ? - Das geht auch einfacher.


MfG

Nemomuc
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

laprican wrote:Wie wärs mit Debuging? Also das du die Werte die du bekommst ins logbuch schreibst um den fehler zu finden...

und:

Code: Select all

005   $var.array.volker =  array alloc: size=2
muss

Code: Select all

005   $var.array.volker =  array alloc: size=3
sein

desweitern, würd ich das:

Code: Select all

025   volk: 
026   while $number < 15 
027    $var.array.number = random value from 0 to 3 - 1 
028    
029    $glob.var.volk.to.attack = $var.array.volker[$var.array.number] 
030    
031    if not $glob.var.volk.to.attack == 1 
032     inc $number = 

033     goto label volk 
034    end 
035    if $glob.var.volk.to.attack == 1 
036     goto label end 
037    end 
038   end
aufräumen zu:

Code: Select all

025   while $number < 15 
026    $var.array.number = random value from 0 to 3 - 1 
027    
028    $glob.var.volk.to.attack = $var.array.volker[$var.array.number] 
029
030    skip if not $glob.var.volk.to.attack == 1 
031     goto label end 
032
033     inc $number =  
034   end
Danke, werds probieren :)
Wenn ich das richtig sehe , ist das ein Unterscript aufgerufen vom Timerscript oder vom Eventhandler.

Und was ich nicht sehe, ist die Verwendung eines globalen Arrays als übergebenes Argument zur zentralen Datenspeicherung.

Damit hättest du dann die Todsünde Nr.2 der Al-Plugin-Programmierung begangen (die Registerscripte zur Konfiguration als Todsünde Nummer 1 hat dir ja mittlerweile schon einer der ganz großen Scriptprofis unter den Greenies nochmal als ganz böses NO NO bestätigt).

Bitte benutze ein globales Array als zentrales Datenlager und KEINE X-Dutzend globale Variablen die die die Spielstände zumüllen , unnötige Referenzbackups verursachen, die Engine belasten , den Ramspeicher verringern und generell die System-Perfomance senken.

Ansonsten werden dir alle User die das Script benutzen, für die verhunzten Spielstände sicherlich "dankbar" sein...

Und unnötige globale Variablen, die auch dann noch die Spielstände belasten wenn das Script deinstalliert wurde und nie mehr verschwinden sind mehr als ärgerlich - es sei den du baust ein Deinstallationsscript ein .

Kein anderer User freut sich wenn ein Script sein Game oder Soielstände verschlechtert, im Extremfall sogar zerstört (ich hab es auf meinem Rechner bei der Pluginprogrammierung in meiner Lernphase mal geschafft den Spielstand kaputt zu machen) - es gibt so etwas wie Verantwortung denjenigen gegenüber die nicht scripten können und dir vertrauen, daß du ihr Spiel verbesserst .


Also :


Wenn du das Script zum Download freigibst dann programmier es BITTE BITTE BITTE sauber und kunstgerecht, laß dir notfalls helfen oder LASS ES und benutze es nur selbst .





Ach ja und wenn du Schiffe für die Ki Missionen brauchst dann benutze bitte den vorhandenen Bestand , d.h. leihe sie dir von der Ki aus, speichere den alten Ausrüstungsstand, Homebase , Name , Pilot etc. ab, rüste das Schiff auf das Missionsequipment um , benutze es und gib es der Ki anschließend nach der Mission im Originalzustand wieder am Entnahmeort zurück- ansonsten wäre die Todsünde Nr. 3 erfüllt , neue Schiffe nur im äußersten Notfall - auch dafür gibt es einen Grund, System-Performance - nicht alle Leute haben eine 3 Ghz Pentium CPU und eine neue GRAKA.



Wenn du Hilfe brauchst, dafür ist der Devnet Chat da.


Zur Frage warum es immer die Xenon wählt :

Die Schleife dürfte M.E. nicht laufen, da der Zähler $Number nicht definiert wurde , somit vom Datentyp NULL ist was das Durchlaufen bis zur 15. Wiederholung verhindern dürfte, auch ist $Number nicht auf 0 gesetzt (was sinnvoll ist) , somit läuft die Zufallsabfrage nur einmal und nach meinen Beobachtungen kommt dann mit der Randomfunktion meist der Wert 0 raus.

Da das Inc bedingt ist läuft das Script dann halt zum Label End , überspringt IMO die Schleife.

Und die Arrayposition auf Index 0 sind die Xenon. Ist der Wert dort 1 dann kommen die Xenon ansonsten müßte eine Endlosscheife draus werden.

Die Zeilen 31 bis 34 können daher eine Endlosschleife werden.

Warum eigentlich mit goto bei Zeile 36 ? - break ist besser.

Außerdem für was läuft das Ding eigentlich 16 mal durch wenn nur ein Wert ermittelt werden soll ? Sollte damit sichergestellt werden, daß die Variable auch sicher geschrieben wird ? - Das geht auch einfacher.


MfG

Nemomuc
Warum meckerst du eigentlich nur drauf rumm :o :(

1. Das Script ist noch lange nicht fertig!
2. Das Script soll für mich eine Übung sein! Ich werde es natürlich erst veröffentlichen wenn es komplett fertig / richtig geschrieben ist!
3. Ich habe nur gesagt das demnächst eine BETA kommt, und diese zu verwenden, ist wohl des Spielers eigene Sache, ich werde ja auch darauf Hinweisen.
4. Ich danke dir trotzdem für die Tipps
Wenn du Hilfe brauchst, dafür ist der Devnet Chat da.
Dazu sag ich besser nix :roll:

gruß
StarTrekMarc
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

StarTrekMarc wrote:
Wenn du Hilfe brauchst, dafür ist der Devnet Chat da.
Dazu sag ich besser nix :roll:
Jo weil wenn STM kommt, muß ich alles stehen und liegen lassen und mich ausschließlich seinem Problem annehmen.
:nö: mach ich eben nicht, wenn ich Zeit hab helfe ich und wenn ich keine Zeit hab sage ich das ich kein Zeit hab, und werde bei jeder Wiederholung unfreundlicher.

Gruß ticaki

P.S. und ich hab recht viele kleine Fehler und Unsauberkeiten beim überfliegen gefunden, welche zu erklären einfach zuviel Zeit gekostet hätte.
Zur Zeit nicht aktiv
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

Nemomuc wrote:
Wenn du das Script zum Download freigibst dann programmier es BITTE BITTE BITTE sauber und kunstgerecht, laß dir notfalls helfen oder LASS ES und benutze es nur selbst .
Holla, die Waldfee.

Lass ihn doch, er kann nur dazu lernen. Es gibt genug Leute, die ihm helfen werden. ;)

Nicht vergessen. Wenn wir alle so denken würden, wäre dieser Forumsabschnitt bald tot.
ticaki wrote:P.S. und ich hab recht viele kleine Fehler und Unsauberkeiten beim überfliegen gefunden, welche zu erklären einfach zuviel Zeit gekostet hätte.
Ist nicht tragisch, er hat ja schon eine kleine Anregung von laprican bekommen. :)

Gruß
Lucike
Image
User avatar
Nemomuc
Posts: 315
Joined: Tue, 23. Mar 04, 19:49
x2

Post by Nemomuc »

@ STM - Ich werd mir die Zeit nehmen wenn du Hilfe brauchst. Außerdem muß es nicht immer ein Grennie sein der helfen kann - Also mir hat man im Chat auch geholfen als ich noch ein Level 1 User und totaler Script Noob war.


Und ich will diese tolle Idee als Script auf meinem Rechner HABEN, aber so wie es jetzt konstruiert ist kommt es nicht mal in die Nähe meiner Festplatte.


Und warum ich es dir jetzt schon sage und NICHt auf die Beta warte - weil es dann zu spät ist .


Das Arbeiten mit globalen Variablen ist ein fundamentaler Konzeptfehler den man sofort ausbügeln muß weil es jetzt weit weniger Arbeit macht , als wenn man eine fertige Beta umschreiben muß - das kommt dann dem Neuprogrammieren recht nah.

Das Konzept des globalen Arrays als zentralem Datenlager ist das Fundament des ganzen Plugins - so wie beim Hausbau - wenn das Fundament fehlerhaft ist wird das Haus u.U. einstürzen und genau wie bei Bau beseitigt man erkannte Fehler am Fundament solange man noch dran baut und wartet nicht bis das ganze Haus draufsteht, bevor man mit dem reparieren beginnt.


Und was das Learning by Doing angeht im Prizip stimme ich Lucike zu aber NUR solange der User keine permanenten Verschlechterungen in den Spielständen zurückbehält. Da hört der Spaß bei mir auf.


Ich schäme mich heute noch für den kapitalen Bock den ich mit der Vers. 1.00 beim Thunderbolt Torpedo verbrochen habe und der etlichen Leuten von den 50 Usern die diese Version verwendeten, Großkampfschiffe mit permanent verkleinertem Laderaum beschert hat.

Mein Angebot an diese User die Spielstände zu reparieren, soweit möglich, halte ich immer noch aufrecht.

Und die Erfahrung, wenn dir ein erboster Nutzer des Scripts (zurecht) per Email harte Worte an Kopf wirft, weil du Mist gebaut hast, empand ich nicht gerade als angenehm.

Cu

Nemomuc
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

@ticaki

Das stimmt so nicht

----
Lucike wrote:
Nemomuc wrote:
Wenn du das Script zum Download freigibst dann programmier es BITTE BITTE BITTE sauber und kunstgerecht, laß dir notfalls helfen oder LASS ES und benutze es nur selbst .
Holla, die Waldfee.

Lass ihn doch, er kann nur dazu lernen. Es gibt genug Leute, die ihm helfen werden. ;)

Nicht vergessen. Wenn wir alle so denken würden, wäre dieser Forumsabschnitt bald tot.
ticaki wrote:P.S. und ich hab recht viele kleine Fehler und Unsauberkeiten beim überfliegen gefunden, welche zu erklären einfach zuviel Zeit gekostet hätte.
Ist nicht tragisch, er hat ja schon eine kleine Anregung von laprican bekommen. :)

Gruß
Lucike
Nemomuc wrote:@ STM - Ich werd mir die Zeit nehmen wenn du Hilfe brauchst. Außerdem muß es nicht immer ein Grennie sein der helfen kann - Also mir hat man im Chat auch geholfen als ich noch ein Level 1 User und totaler Script Noob war.


Und ich will diese tolle Idee als Script auf meinem Rechner HABEN, aber so wie es jetzt konstruiert ist kommt es nicht mal in die Nähe meiner Festplatte.


Und warum ich es dir jetzt schon sage und NICHt auf die Beta warte - weil es dann zu spät ist .


Das Arbeiten mit globalen Variablen ist ein fundamentaler Konzeptfehler den man sofort ausbügeln muß weil es jetzt weit weniger Arbeit macht , als wenn man eine fertige Beta umschreiben muß - das kommt dann dem Neuprogrammieren recht nah.

Das Konzept des globalen Arrays als zentralem Datenlager ist das Fundament des ganzen Plugins - so wie beim Hausbau - wenn das Fundament fehlerhaft ist wird das Haus u.U. einstürzen und genau wie bei Bau beseitigt man erkannte Fehler am Fundament solange man noch dran baut und wartet nicht bis das ganze Haus draufsteht, bevor man mit dem reparieren beginnt.


Und was das Learning by Doing angeht im Prizip stimme ich Lucike zu aber NUR solange der User keine permanenten Verschlechterungen in den Spielständen zurückbehält. Da hört der Spaß bei mir auf.


Ich schäme mich heute noch für den kapitalen Bock den ich mit der Vers. 1.00 beim Thunderbolt Torpedo verbrochen habe und der etlichen Leuten von den 50 Usern die diese Version verwendeten, Großkampfschiffe mit permanent verkleinertem Laderaum beschert hat.

Mein Angebot an diese User die Spielstände zu reparieren, soweit möglich, halte ich immer noch aufrecht.

Und die Erfahrung, wenn dir ein erboster Nutzer des Scripts (zurecht) per Email harte Worte an Kopf wirft, weil du Mist gebaut hast, empand ich nicht gerade als angenehm.

Cu

Nemomuc
Ist ja schon ok, ich werde eure Tipps natürlich befolgen, außerdem bin ich gerade dabei einen großteil der glob.Variablen rauszuschmeißen und stattdessen mit Return Scripts zu arbeiten, außerdem packe ich die restlichen in ein Array.

Das mit dem erstellen/beziehen der Schiffe hatte ich mir so vorgestellt das ich sie in den Sektoren des jeweiligen Angreifers erstelle, mit Standard Ausrüstung, Sprungantrieb und EZ ausrüste und sie dann in den Ziel Sektor springen lasse. Wenn sie ihre Aufgabe (eine gewisse Zeitspanne das Volk zu attackieren) erfüllt haben, lasse ich sie in den startSektor zurück springen und vernichte sie dort.

Dies muss meiner Ansicht nach so sein, damit die KI des Angreifers nicht gestört wird, durch entwendung der Schiffe für einige Zeit. Außerdem verwenden z.b. die Piraten einen Teladi M2 als Zerstörer, auf dem extrem Schwierigkeitsgerad.

Wenn ihr eine bessere Idee habt, nur her damit ;)

Momentan kämpfe ich mit folgenden Dingen:
1. den Randoms (Thema dieses Topics)
2. den Nachrichten - wie bekomme ich Sonderzeichen in die t Datei, so dass sie im Spiel angezeigt werden. z.b. ä ü ö / \ ( )

Könnt ihr mir nun bite helfen?

Ich werde jetzt erstmal das machen was laprican gesagt hat ;)

Gruß
StarTrekMarc

PS: Wer sagte eigentlich das ich das Script signieren lassen möchte? o_O

Dies entscheide ich wenn das Script fertig ist ;)
Last edited by StarTrekMarc on Fri, 15. Apr 05, 15:03, edited 1 time in total.
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

StarTrekMarc wrote:Das stimmt so nicht.
Was stimmt so nicht?

Gruß ticaki

P.S. wenn man nix zu einer Quote zusagen hat, braucht man es auch nicht zu quoten.
Zur Zeit nicht aktiv
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

@ticaki

Es stimmt nicht das du dann alles stehen und liegen lassen musst, ich habe dich immer nur ordentlich gebeten.

Du hast aber ja wiedermal sofort übertrieben.... :roll:

Auch als du sagtest du hättest keine Zeit, da habe ich dir nur noch eine Antwort auf deine "indirekte" Frage gegeben.. da du sagtest du hättest nicht verstanden was das Script soll.

@all

Das Porblem mit dem Random Script ist dank laprican gelöst :) Danke :)

Nun hab ich nur noch Probleme mit den Sonderzeichen in der t Datei.

@Nemomuc

Ich habe alle deine Kritik Punkte ernst genommen und das Script angepasst, bis auf die Sache mit den Schiffen die sowieso noch nicht fertig ist.

Gruß
StarTrekMarc
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

StarTrekMarc wrote:Nun hab ich nur noch Probleme mit den Sonderzeichen in der t Datei.
Schau mal hier.

http://www.egosoft.com/x2/forum/viewtopic.php?t=64474

Gruß
Lucike
Image
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

Danke an dich und Nemomuc ( er hat mir gemailt )

@Nemomuc,

das mit dem Random hat sich doch schon erledigt, dank laprican ;)

Trotzdem danke :)

Gruß
StarTrekMarc

PS: Mache mich gerade an die verbesserung der Schifferstellung ;)
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

Nemomuc wrote:Und was das Learning by Doing angeht im Prizip stimme ich Lucike zu aber NUR solange der User keine permanenten Verschlechterungen in den Spielständen zurückbehält. Da hört der Spaß bei mir auf.
Da fällt mir ein nettes Zitat ein. ;)

"Waschen darfst Du mich schon, aber nur ohne mich nass zu machen."

Gruß
Lucike
Image
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

StarTrekMarc wrote:@ticaki

Es stimmt nicht das du dann alles stehen und liegen lassen musst, ich habe dich immer nur ordentlich gebeten.

Du hast aber ja wiedermal sofort übertrieben.... :roll:
Wer hat den geschrieben...
Wenn du Hilfe brauchst, dafür ist der Devnet Chat da.
Dazu sag ich besser nix.
^^
StarTrekMarc wrote:Auch als du sagtest du hättest keine Zeit, da habe ich dir nur noch eine Antwort auf deine "indirekte" Frage gegeben.. da du sagtest du hättest nicht verstanden was das Script soll.
Tja ich stelle kaum indirekten Fragen und vorallem nicht wenn es um Skripte geht. Ich habe verstanden was du damit tun willst, aber das heißt nicht, dass ich verstanden habe, wie dein Skriptcode das bewerkstelligen soll.

Gruß ticaki :roll:
Zur Zeit nicht aktiv
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

Letztendlich ist es ja auch egal ;)

Sorry

---

Nun habe ich ein anderes Problem, ich lasse also die Schiffe in den Ziel Sektor springen, aber irgendwie machen sie dort dann nichts obwohl ich ihnen die KONSTANTE [ACTION_KILL_ALL_ENEMIES] zuweise.

Könnt ihr mir helfen?

Hier der Code Ausschnitt:

Code: Select all

...
004    $ship =  create ship: type=Xenon L owner=Xenon addto=Xenon Sektor 596 x=0 y=10000 z=0
005    $ship -> add default items to ship
006    $install = $ship -> install 1 units of Sprungantrieb
007    $jump = $ship -> use jump drive: target=$sector
008    $ship = [ACTION_KILL_ALL_ENEMIES]
...
:?

Gruß
StarTrekMarc
User avatar
Nemomuc
Posts: 315
Joined: Tue, 23. Mar 04, 19:49
x2

Post by Nemomuc »

"Nun habe ich ein anderes Problem, ich lasse also die Schiffe in den Ziel Sektor springen, aber irgendwie machen sie dort dann nichts obwohl ich ihnen die KONSTANTE [ACTION_KILL_ALL_ENEMIES] zuweise."


Eine Konstante zuweisen nützt nichts. Damit erhält die Variable $ship den wert der Konstante.


Entweder werden die Standardbefehle mit Start Command (nicht empfehlenswert) auf dem Schiff gestartet oder man startet die !moveship Befehle als Script auf dem Schiff (beste Lösung).

"Ist ja schon ok, ich werde eure Tipps natürlich befolgen, außerdem bin ich gerade dabei einen großteil der glob.Variablen rauszuschmeißen und stattdessen mit Return Scripts zu arbeiten, außerdem packe ich die restlichen in ein Array."

Wenn du das globaleArray in jedem script verwendest, also beim Start als Argument übergibst brauchst du keine Returnscripte.

Der Witz an diesem Array ist, daß nicht das Array selbst sondern nur die Indexzeiger übergeben werden, d.h. in der Sekunde wo Script A einen Wert verändert und in einen Datensatz des globalen Arrays übergibt (ohne abspeichern wohlgemerkt) einfach mit §globalesArrray [Index] =§neuerWert ) ist in JEDEM aktiven Script, welches das globale Arrray übergeben bekommen hat, der neue Wert sofort und und ohne Speichern oder Rückgabe von Werten verfügbar. Und genau deshalb ist dieses Array der Knackpunkt der Al-Plugin -Programmierung.


MfG

Nemomuc

[Edit] Schreibfehler Start Command statt set command
Last edited by Nemomuc on Sat, 16. Apr 05, 01:42, edited 1 time in total.
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

Nemomuc wrote:"Nun habe ich ein anderes Problem, ich lasse also die Schiffe in den Ziel Sektor springen, aber irgendwie machen sie dort dann nichts obwohl ich ihnen die KONSTANTE [ACTION_KILL_ALL_ENEMIES] zuweise."


Eine Konstante zuweisen nützt nichts. Damit erhält die Variable $ship den wert der Konstante.


Entweder werden die Standardbefehle mit Set Command (nicht empfehlenswert) auf dem Schiff gestartet oder man startet die !moveship Befehle als Script auf dem Schiff (beste Lösung).

"Ist ja schon ok, ich werde eure Tipps natürlich befolgen, außerdem bin ich gerade dabei einen großteil der glob.Variablen rauszuschmeißen und stattdessen mit Return Scripts zu arbeiten, außerdem packe ich die restlichen in ein Array."

Wenn du das globaleArray in jedem script verwendest, also beim Start als Argument übergibst brauchst du keine Returnscripte.

Der Witz an diesem Array ist, daß nicht das Array selbst sondern nur die Indexzeiger übergeben werden, d.h. in der Sekunde wo Script A einen Wert verändert und in einen Datensatz des globalen Arrays übergibt (ohne abspeichern wohlgemerkt) einfach mit §globalesArrray [Index] =§neuerWert ) ist in JEDEM aktiven Script, welches das globale Arrray übergeben bekommen hat, der neue Wert sofort und und ohne Speichern oder Rückgabe von Werten verfügbar. Und genau deshalb ist dieses Array der Knackpunkt der Al-Plugin -Programmierung.


MfG

Nemomuc
Danke :)

Also brauch ich das Array nicht am ende eines jeden Scriptes neu in die globale.Variable setzen, oder? Irdendwie hab ich das nicht verstanden, aber, naja, egal... oder doch nicht :?

Ich arbeite jetzt mit 3 Unterscripten die die Return Funktion benutzen und mit 10 Scripten die Informationen in den Array setzen :)

Es werden wohl noch einige hinzukommen da die Erstellten Schiffe bis jetzt nicht mehr machen als in den Zeil Sektor zu springen und dort wahllos Ziele zu attackieren.

Dank und Gruß
StarTrekMarc

PS: Danke für die Umlaut Codes, habe sie erfolgreich eingebaut ;)
User avatar
StarTrekMarc
Posts: 2143
Joined: Sat, 3. Apr 04, 16:38
x4

Post by StarTrekMarc »

@Nemomuc

Hm. Ich habe nach den !moveship Scripten gesucht finde aber nur diese und weiß nun nicht welches ich verwenden soll, damit die Schiffe alle Gegner "vernichten" / angreifen.

Kannst du mir helfen?

Hier die gefunden Befehle (passte zufällig auf einen Screen)

[ external image ]

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