Construction Set Der Scriptthread

Da fällt mir gerade was ein, es könnte sein, das jetzt, wenn du einen Eimer nimmst, alle Eimer verschwunden sind. Probier das am besten noch mal ingame aus. ^^'

Pagan
 
Also, ich hab hier ein Script erstellt, mithilfe der Anleitung: Scripting for Dummies. Dabei soll sich eine Platform, und ein Schalter (eine Kugel) langsam hochbewegen (Entfernung = 3551,897). Der Auslöser ist die Kugel. Benutzt der Spieler sie, soll sich das Ganze in Bewegung setzen. Ist der Spieler dann oben angekommen, soll er beim erneuten benutzen der Kugel wieder herunterfahren. - Kleines Bild -

Script:

Code:
Begin platform_move_01 

short platmove
short schalter 
short PlatformMoving 
short ActivateMe 
short timer 


if ( OnActivate = 1 ) 
 if ( schalter = 0 ) 
  set platmove to 1 
  set schalter to 1 
 endif 
endif 

if ( platmove = 1 ) 
 set ActivateMe to 1 
endif 

if ( ActivateMe = 1 ) 
 if ( PlatformMoving = 0 ) 
set timer to 0
  set timer to timer + GetSecondsPassed 
   if ( timer <= 15 ) 
   if ( platmove = 1 ) 
         "STR_ex_mh_bazaar_stage"-> MoveWorld z 236,7933
         "STR_Qball_crystal"-> MoveWorld z 236,7933 
   if ( timer > 15 ) 
   if ( platmove = 1 ) 
    set platmove to 0 
   endif 
 endif 
endif 
endif 
endif 
endif

if ( OnActivate = 1 ) 
 if ( schalter = 1 ) 
  set platmove to 2 
  set schalter to 0 
 endif 
endif 

if ( platmove = 2 ) 
set ActivateMe to 2 
endif 

if ( ActivateMe = 2 ) 
 if ( PlatformMoving = 0 ) 
  set timer to 0
  set timer to timer + GetSecondsPassed 
if ( timer <= 15 ) 
 if ( platmove = 2 ) 
     "STR_ex_mh_bazaar_stage"-> MoveWorld z -236,7933 
     "STR_Qball_crystal"-> MoveWorld z -236,7933 
if ( timer > 15 ) 
if ( platmove = 2 ) 
set platmove to 0
 endif

Weiß jemand was ich falsch gemacht habe und kann mir helfen? :)

Danke schonmal.


Pagan

PS. Also, ich wollte das ganze Ingame ausprobieren, allerdings passiert nichts, wenn ich die Kugel bentutze.

EDIT: Oder könnte mir vielleicht auch jemand ein neues Script machen, was die Sachen oben erfüllt und funktioniert. Derjenige wird natürlich in den Credits erwähnt. ^^
 
Zuletzt bearbeitet:
erstmal wundert es mich, dass das Script überhaupt funktioniert und das Game nicht gleich crasht... GetSecondsPassed liefert floatvars und keine short...

Dann ist es so, dass du ein doppeltes OnActivate in dem Script hast... das geht so auch nicht sauber. Nja... bevor ich das Script umdeklariere, schreibe ich es lieber gleich neu :D


Code:
Begin IdliketoMoveitMoveit_SC ;XD
short Direction
short ismoving
float ZPos

if ( menumode == 1 )
 return
EndIF

IF ( ismoving == 0 )
 IF ( OnActivate == 1 )
  set ( ismoving to 1 )
 EndIF
 return
EndIF

set ZPos to ( "STR_ex_mh_bazaar_stage"->getPos Z )

IF ( Direction == 0 )
 IF ZPos < [INSERT UPPER POSITION HERE]
  "STR_ex_mh_bazaar_stage"-> MoveWorld z 150
  "STR_Qball_crystal"-> MoveWorld z 150
 Else
  "STR_ex_mh_bazaar_stage"->SerPos z [FINAL UPPER POSITION PLATTFORM HERE]
  "STR_Qball_crystal"->SetPos z [FINAL UPPER POSITION SPHERE HERE]
  set Direction to 1
  set ismoving to 0
 EndIF
 return
EndIF

IF ZPos > [INSERT LOWER POSITION OF PLATTFORM HERE]
 "STR_ex_mh_bazaar_stage"-> MoveWorld z -150
 "STR_Qball_crystal"-> MoveWorld z -150
Else
 "STR_ex_mh_bazaar_stage"->SerPos z [FINAL LOWER POSITION PLATTFORM HERE]
 "STR_Qball_crystal"->SetPos z [FINAL LOWER POSITION SPHERE HERE]
 set Direction to 0
 set ismoving to 0
EndIF

end

Ahja... ich würde so ein Script immer mit einer Beschleunigung machen, aber das hab ich erstmal ausgelassen. Wie das geht, kannst du hier sehen:

http://www.scharesoft.de/joomla/forum/showpost.php?p=435233&postcount=748

Naja, probier mein Script lieber erstmal aus, ich hab es blind geschrieben. Du mußt halt nur noch die korrekten Positionsdaten eintragen, die haste mir ja leider ned gegeben ;) Beachte, dass die Sphere und die Plattform natürlich unterschiedliche Daten haben.

Auf das SetPos am Ende der Bewegung würde ich übrigens nicht verzichten, da andernfalls diese Position zufällig ist und man nie genau sagen kann, wo das Objekt dann genau landet.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Pagan
Ah gut, danke, ich probier es gleich aus. (übrigens, der Spieler soll auf der Platform hochfahren, ich hoffe die schieß jetzt nicht hoch und schleudert den Spieler weg XD).

Naja, eine Beschleunigung will ich auch eigentlich nicht. Die Platform soll sich mit gleichbleibender Geschwindigkeit hoch bewegen.

Ich probier jetzt einfach mal aus obs klappt oder sich. Ich editier dann den Post hier nochmal. ^^



Pagan
 
Elendes Copy & Paste... Ich hab da anscheinend jeweils vergessen den zweiten SetPos-Befehl zu setzen. Da stand noch MoveWorld. Ist jetzt korrigiert worden.
 
  • Like
Reaktionen: Pagan
Ich seh grad, da du das Script ja neu gemacht hast, muss ich noch sagen, das es nicht nur eine Platform ist. Die Platform besteht aus zwei teilen:

STR_ex_mh_bazaar_stage
STR_ex_mh_bazaar_stage 01

Die Kugel auch:

STR_Qball_crystal
STR_Qball_crystal_b

Kann ich da jetzt einfach noch die zwei anderen Teile da reinquetschen?

Anfangs hatten beide Plattformen gie gleiche ID (bei den Kugeln auch). Die sollten ja im Endeffekt die gleiche Strecke zurücklegen, daher hab ich da nur eine reingeschrieben. ^^

Pagan
 
Hm.

Ob und wie du die da reinquetschen kannst, hängt davon ab, ob und wie sich die Werte der ZPosition unterscheiden. Grundsätzlich kannst du das aber so machen, es sollte gehen (jedenfalls wenn ich dich richtig verstanden habe ^^ )
 
  • Like
Reaktionen: Pagan
Öhm, was ist denn der Unterschied zwischen "Upper Position" und "Final Upper Position"? ich hab nur eine "Final Upper Position".

Achja, und mit reinquetschen, meinte ich die beiden anderes Meshes und deren Endposition. D.h. ob ich das also ungefähr so machen könnte:

Code:
...
IF ( Direction == 0 )
 IF ZPos < [INSERT UPPER POSITION HERE]
  "STR_ex_mh_bazaar_stage"-> MoveWorld z 150
  "STR_Qball_crystal"-> MoveWorld z 150 
  "STR_ex_mh_bazaar_stage 01"-> Move World z 150 
  "STR_Qball_crystal_b"-> Move World z 150
 Else
  "STR_ex_mh_bazaar_stage"->SetPos z [FINAL UPPER POSITION PLATTFORM HERE]
  "STR_Qball_crystal"->SetPos z [FINAL UPPER POSITION SPHERE HERE] 
  "STR_ex_mh_bazaar_stage 01"->SetPos z [...] 
  "STR_Qball_crystal_b"->SetPos z [...]

  set Direction to 1
  set ismoving to 0
 EndIF


Pagan

EDIT: Meinst du mit "Upper Position" vielleicht die Standard Position + 150? ^^'
 
Ne.

Also, du platzierst die Plattformen, Bälle, was auch immer... doch im Constr. Set. So, das ist der Z-Wert für die [Lower Position], der mit dem SetPos am Ende der Abwärtsbewegung gesetzt werden muß. Wenn die Plattform nun beim Aktivieren hoch fährt, muß das Script ja wissen, wo genau es anhalten soll. Ich habe ja wie du siehst keinen Timer. Ergo - du mußt noch die gewünschte Endposition für die jeweiligen Objekte angeben. Du schiebst dazu die Plattform im CS dorthin, wo sie am Ende "oben" stehen soll und trägst den Wert (bzw. die Werte, es sind ja dann immer mehrere Objekte zu bewegen) an der jeweils passenden Stelle in das Script ein.
 
Ja, aber trotzdem weiß ich nicht was ich bei [INSERT UPPER POSITION HERE] eintragen soll. Denn, von welchem der vier Dinge soll ich denn da die obere Position eintragen? ^^

Ich komm mir gerade irgendwie echt blöd vor. :?


Pagan
 
Ja, aber trotzdem weiß ich nicht was ich bei [INSERT UPPER POSITION HERE] eintragen soll. Denn, von welchem der vier Dinge soll ich denn da die obere Position eintragen? ^^
Augen auf :D


Code:
[COLOR="Red"]set ZPos to ( [COLOR="Magenta"][B]"STR_ex_mh_bazaar_stage"[/B][/COLOR]->getPos Z )[/COLOR]

IF ( Direction == 0 )
 [COLOR="Red"]IF ZPos < [B][COLOR="Magenta"][INSERT UPPER POSITION HERE][/COLOR][/B][/COLOR]
  "STR_ex_mh_bazaar_stage"-> MoveWorld z 150
  "STR_Qball_crystal"-> MoveWorld z 150
Nun denk mal ganz scharf nach ... ;)
 
  • Like
Reaktionen: Pagan
Ja gut, jetzt weiß ich wie, danke. :)


Habs ausprobiert. Es funktioniert leider nicht. Die Platform und die Kugel bewegen sich nicht vom Fleck (habs einmal ohne die beiden Zusätze probiert und einmal mit). Kann ich dir vielleicht einfach mal die .esp schicken und du probierst es aus und biegst es mir vielleicht richtig hin? *lieb anguck* ^^

Pagan
 
Zuletzt bearbeitet:
Hi,

Ich brauch ein Skript. Eine Gruppe NPCs soll dem Spieler folgen und NPCs und Kreaturen bekämpfen(wenn der Spieler angegriffen wird), sobald er im Dialog eine "Function-Choice" ausgewählt hat.
Danke im voraus.