Construction Set Der Scriptthread

Mein CS behauptet hartnäckig, dass es "ModPos" in der einen Zeile nicht findet. Ich habe ihn aus dieser Liste von Killfetzer.

Da hab ich kompletten Bockmist gebaut. Die Funktion wünsche ich mir anscheinend nur. :oops:

Das kommt halt davon, wenn man nicht wirklich JEDE Funktion selber nachprüft, sondern aus einer anderen Liste abschreibt. Ich habs bei mir geändert und lasse die Änderung sobald wie möglich hochladen.

"in_hag_grille_floor1"->SetPos, Z, "in_hag_grille_floor1"->GetPos, Z - 1000

Das mag Morrowind Script höchstwahrscheinlich gar nicht gerne. Ich schlage folgende Konstruktion vor:

Code:
float zpos

set zpos to "in_hag_grille_floor1"->GetPos, Z
"in_hag_grille_floor1"->SetPos, Z, ( zpos - 1000 )
 
Musik

Hi Leute, Ich arbeite noch immer an meinem Inselmod. Die Insel ist nun fertig, muss nur noch einen berg im meer draussen machen, und die Questreihe vervollständigen.
Ein kleines Problem:
Ich habe die Musik in allen Interior-Gebieten verändert. Ich habe, um dies zu machen einen Gegenstand mit folgendem Skript belegt:

begin Musik_Krem_script

if ( cellChanged == 1 )
streamMusic "Nostale - Krem.mp3"
endif

end

Es läuft auch alles, und dass wenn man das Interriorgebiet verlässt die Musik weiterläuft ist auch nicht tragisch. Schliesslich ist die Musik ja gut:lol:
Doch es stört einfach, dass wenn ich in einer Höhle von einer Kreatur entdeckt werde, und es zur "battlemusic" wechselt, meine Musik dann nicht mehr kommt. Die Frage:

Kann mir wer dabei helfen, mein skript so zu verändern, dass in den ausgewählten Interrior-Gebieten die Kampfmusik immer ausbleibt?
Alternative dazu:
Machen dass auf sont eine Art immer "meine" Musik läuft!

Danke im Voraus!
 
Hi,
kann mir jemand sagen wie ein script fuer einen alternativen start aussehen muss.
Z.b ich will das mein Char an einer neuen Stelle anfaengt und dann seine sternzeichen usw. waehlen kann.
 
Soweit ich das weiß, musst du den Startpunkt in der .ini festlegen. Siehe hier.

Als Script würde ich so etwas denken:
Code:
begin new_start_script
 
short state [COLOR=red]; damit der Script nich wiederholt werden kann. Soll er sich wieder holen können weglassen.[/COLOR]
 
if ( state == 0 ) 
   if [COLOR=red]; ich weiß nicht was genau hier hin muss. Je nachdem wie du willst das die Charaktererstellung gestartet wird. Z.B.: if ( OnActivate == 1 )[/COLOR]
      EnableRaceMenu
      set state to 1
   endif
endif
 
end
So müsstest du denke ich mit jeder Wahl verfahren. Aber ich bin mir nicht sicher ob es 100%ig richtig ist, muss vielleicht noch ein Profi ran.

Die Benötigten Befehle wären denke ich:
EnableBirthMenu
EnableClassMenu
EnableInventoryMenu
EnableMagicMenu
EnableMapMenu
EnableNameMenu
EnableRaceMenu
EnableStatsMenu
EnableStatsReviewMenu

und

EnablePlayerControls
EnablePlayerFighting
EnablePlayerJumping
EnablePlayerLooking
EnablePlayerMagic
EnablePlayerViewSwitch


Edit: Eine Frage von mir. Nehmen wir als Beispiel Schalter.
Schalter b wird aktiviert. Es wird abgefragt ob Schalter a zuvor altiviert wurde. Wenn dies nicht der Fall ist, macht Schalter b etwas.
Wenn Schalter a zuvor aber aktiviert wurde, macht Schalter b etwas anderes.
Dies soll solange wiederholbar sein, bis Schalter a vorher aktiviert wurde. (Klappt soetwas mit "return"?)

Ist so eine Funktion überhaupt vorhanden? Ist es möglich?

Frage 2: Kann ein anderer beide Schalter zurück setzen, d.h. die Scripte ganz neu beginnen lassen?
 
Zuletzt bearbeitet von einem Moderator:
@Alvaro

Wie du den Startpunkt einstellst hat dir schon Kallor gesagt.
Wenn du ein alternatives Startscript willst kannst du dir das Startscript
von MW angucken und entsprechend deiner Anforderungen abändern.

@Kallor

Frage 1:

Also eine bestimmte Funktion gibt es nicht,aber das dürfte auch so machbar sein.
Das kannst du übrigens wenn du im Scriptkurs aufgepasst hast.;)

Frage 2: siehe 1.Frage
 
Welche Lektion? Wenn ich weiß welche erinner ich mich vielleicht, denn momentan stehe ich vor einem unlösbaren Rätsel.
 
Welche Lektion? Wenn ich weiß welche erinner ich mich vielleicht, denn momentan stehe ich vor einem unlösbaren Rätsel.

Im Prinzip ist alles was du brauchst in der ersten Lektion.

Warte mal ein bisschen,ich bastel was zusammen.Ist garantiert eine
gute Übung:lol:

EDIT: Hm,doch schwieriger als gedacht...doch ein bisschen mehr als Lektion 1
 
Zuletzt bearbeitet:
Also den Aufbau denke ich habe ich ja, aber mir fehlen die Funktionen, bzw. das Wissen, ob es sie gibt.
Code:
begin sonstwas_script
 
short state
 
if ( state == 0 )
   if ( OnActivate == 1 )
      if ; hier sollte die Funktion hin, die abfragt ob Schalter a zuvor aktiviert wurde, wenn nein:
         ; hier soll etwas gemacht werden
      endif
   endif
endif
 
if ( state == 0 )
   if ( OnActivate == 1 )
      if ; hier sollte die Funktion hin, die abfragt ob Schalter a zuvor aktiviert wurde, wenn ja:
         ; hier soll etwas gemacht werden
         set state to 1
      endif
   endif
endif
 
end
 
Zuletzt bearbeitet von einem Moderator:
Na du musst abfragen ob der Schalter aktiviert wurde mit OnActivate.
Dein state musst du mit OnActivate ersetzen.Die Variable state brauchst du
nähmlich für was anderes.Wenn der Schalter a aktiviert wurde,wird state auf einen
Wert gelegt.Für die verschiedenen Ereignisse die du genannt hast muss state ein Wert zugewiesen werden den du dann abfragen kannst.

was mir eher Kopfzerbrechen bereitet ist auf welches Objekt das Script gelegt wird.
Vieleicht braucht man auch ein globales Script...

ich würde meinen das man auf Schalter a und Schalter b ein eigenes Script gelegt werden muss.Die Werte die dabei ausgegeben werden müssen dann von einem dritten
Script verarbeitet werden,vielleicht ein globales Script.Ich weiß es leider nicht genau
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person
Oh, dass ist peinlich. Natürlich muss da ein OnActivate hin...

Habs geändert. Richtig ist es wahrscheinlich trotzdem nicht...^^'

Edit:
Zu einem alt bekannten Script. In der jetzigen Fassung ist das Spiel überzeugt davon, die Objekt-ID nicht zu finden (bzw. das Objekt, das dahinter steckt.)
Momentan sieht er so aus (Killfetzer Vorschlag habe ich noch nicht umgesetzt, ich bezweifle aber, dass es daran liegt):
Code:
[SIZE=2]begin kl_switch_script[/SIZE]
 
[SIZE=2]short oben[/SIZE]
 
[SIZE=2]if ( OnActivate == 1 )[/SIZE]
[SIZE=2] if ( oben == 1 )[/SIZE]
[SIZE=2]    "act_hag_grille_floor_01"->SetPos, Z, - 245.815[/SIZE]
[SIZE=2]    set oben to 0[/SIZE]
[SIZE=2] else[/SIZE]
[SIZE=2]    "act_hag_grille_floor_01"->SetPos, Z, 245.815[/SIZE]
[SIZE=2]    set oben to 1[/SIZE]
[SIZE=2] endif[/SIZE]
[SIZE=2]endif[/SIZE]
 
[SIZE=2]end[/SIZE]
Falls ich da jetzt irgendeinen ganz groben Schnitzer drin habe, bitte sagen. Wenn nicht aber etwas anderes: auch gerne sagen.;)
Die Objekt ID habe ich bereits mehrfach überprüft.
Edit: I'm an idiot.
 
Zuletzt bearbeitet von einem Moderator:
EnablePlayerControls
EnablePlayerFighting
EnablePlayerJumping
EnablePlayerLooking
EnablePlayerMagic
EnablePlayerViewSwitch

Die werden nicht gebraucht.


Eine Frage von mir. Nehmen wir als Beispiel Schalter.
Schalter b wird aktiviert. Es wird abgefragt ob Schalter a zuvor altiviert wurde. Wenn dies nicht der Fall ist, macht Schalter b etwas.
Wenn Schalter a zuvor aber aktiviert wurde, macht Schalter b etwas anderes.
Dies soll solange wiederholbar sein, bis Schalter a vorher aktiviert wurde. (Klappt soetwas mit "return"?)

Ist so eine Funktion überhaupt vorhanden? Ist es möglich?

Natürlich ist das möglich. Da gibt es wahrscheinlich so viele Herangehensweisen wie Scripter, aber eine Lösung ginge zum Beispiel über eine globale Variable:

Du erstellst eine globale Variable my_schalter_a_active. Auf den Schalter A legst du dann ein Script:

Code:
begin my_schalter_a_script

if ( OnActivate == 1 )
  if ( my_schalter_a_active == 0 )
    set my_schalter_a_active to 1
  else
    set my_schalter_a_active to 0
  endif
endif

end

Auf den zweiten Schalter legst du dann dieses Script:

Code:
begin my_schalter_b_script

short doonce   ;wird gesetzt, wenn die zweite Option zum ersten Mal aktiv wird

if ( doonce == 0 )
  if ( OnActivate == 1 )
    if ( my_schalter_a_active == 0 )
      ;mache irgendwas (Schalter A ist nicht aktiv)
    else
      set doonce to 1
      ;mache irgendwas anderes (Schalter A aktiv)
    endif
  endif
endif

end

Frage 2: Kann ein anderer beide Schalter zurück setzen, d.h. die Scripte ganz neu beginnen lassen?

Natürlich geht das auch. Für Schalter A kannst du dafür deine globale Variable benutzen. Die setzt du per Hand einfach auf 0. Für B bastelst du dir entweder eine weitere Variable oder du machst den Schlater persistent und setzt die doonce-Variable aus der Ferne (fehleranfällig und kommt erst in Lektion 5 ;))
 
  • Like
Reaktionen: 1 Person
Hallo erstmal...bin in diesen Threat verwiesen worden.
Zu meinem Problem, bzw. meiner Idee.
Da ich meistens Kriegerorientiert spiele, bekomme ich sehr wenig Mana, welches ich für diverse Heilzauber nutzen kann. Hier meine Frage:
Gibt es eine Möglichkeit oder ein Skript, welches mir bei Einnahme irgentwelcher Lebensmittel (Brot, Fleisch, Gemüse, Obst) eine gewisse Anzahl an Lebenspunkten zurückgeben kann. Habe es schon mit einem Kleinen Skript versucht, welches ich an die Lebensmittel gehangen habe, aber mit der Aktion habe ich mir das Inventar zugemüllt. deshalb, denke ich , das so etwas nur mit einem globalen Skript geregelt weden kann. Aber so gut bin ich nicht, um so etwas zu beurteilen. Hat irgendeiner ne Idee?
 
Hallo erstmal...bin in diesen Threat verwiesen worden.
Zu meinem Problem, bzw. meiner Idee.
Da ich meistens Kriegerorientiert spiele, bekomme ich sehr wenig Mana, welches ich für diverse Heilzauber nutzen kann. Hier meine Frage:
Gibt es eine Möglichkeit oder ein Skript, welches mir bei Einnahme irgentwelcher Lebensmittel (Brot, Fleisch, Gemüse, Obst) eine gewisse Anzahl an Lebenspunkten zurückgeben kann. Habe es schon mit einem Kleinen Skript versucht, welches ich an die Lebensmittel gehangen habe, aber mit der Aktion habe ich mir das Inventar zugemüllt. deshalb, denke ich , das so etwas nur mit einem globalen Skript geregelt weden kann. Aber so gut bin ich nicht, um so etwas zu beurteilen. Hat irgendeiner ne Idee?

das würde ich nicht über ein Script regeln. Viel einfacher wäre es den gewünschten Zutaten einfach statt Ausdauer wiederherstellen Lebensenergie wiederherstellen als primäre Eigenschaft zu geben. Damit hättest du genau den von dir gewünschten Effekt.

Das kannst du im CS im Reiter Ingredit.
 
Jetzt bin ich aber platt. Meinst du wenn ich Ingredientzien esse, wird die erste Eigenschaft aktiviert? Bei mir sagt er immer nur "hat keine Wirkung" oder so. Bevor ich jetzt diese Aktion starte und alle Effekte der betreffenden Lebensmittel ändere, würde ich gerne wissen, wie hoch ist denn der Rückgewinn der LP? Mein Skript sah es so vor, wenn man ein Nahrungsmittel benutzt hatte, dann wurde ein kleiner "Lebensenergie wiederherstellen" Zauber aktiviert.
Oder habe ich das jetzt falsch aufgefasst? Meinst du ich sollte mit dem umändern meinen Alchemieskill trainieren?
 
Das ändern der Wirkung von Zutaten bringt doch nicht wirklich was da man noch
immer vom Alchemieskill abhängig ist,also ob die Zutat wirkt oder nicht.
Wenn man einen geringen Alchemieskill hat kann die Wirkung der Zutat noch so hoch
sein...

Kann man nicht vielleicht ein Script auf einen Gegenstand z.B einen Korb legen?
Also das man sich sowas wie einen Pichnick-Korb baut und den man vielleicht
befüllen muss...

Ein Held darf doch nicht seine Hütte verlassen und die Welt retten ohne sein Lunchpaket:ugly: