Construction Set Der Scriptthread

1. Ich habe hier ein Tor script und ich wollte fragen ob ihr nachschauen könnt warum das tor nicht mehr zu geht.

begin my_script

short state
float timer

if ( menumode == 1 )
return
endif

if ( state == 0 )
if ( onactivate == 1 )
set state to 1
endif
endif

if ( state == 1 )
set timer to timer + getsecondspassed
my_nadelfelstor->moveworld z -120
if ( timer >= 1 )
set timer to 0
set state to 2
endif
endif

if ( state == 2 )
if ( cellchanged == 1 )
my_nadelfelstor->positioncell xpos ypos zpos zrot "Zellname"
set state to 0
endif
endif

end

2. Warum reagiert mein selbstgemachter Wachmann nicht wenn ich ein andere npc töte, brauche ich dafür einen script??

3. Wie mache bei meinen selbstgemachten Händler, dass er die sachen verkauft und nicht selbst benutzt, brauche ich da auch einen script?

4.Ich benötige einen fackelscript der die fackel in der nacht zum leuchten bringt und nicht
 
Zuletzt bearbeitet:
2. du musst ihn meines wissens nach in die "Gilde" Kaiserliche Legion stecken, dann sollte es klappen.

3. am besten du gibst ihm eine Truhe die du extra für ihn anfertigst, packst alle items rein und stellst den "Owner" auf den entsprechenden händler. soll die kiste immerwieder "beliefert" werden stellst du sie auf Organic Container und Respawn.

4. weiter oben hat dir doch jemand schon so einen skript gegeben. :?
 
  • Like
Reaktionen: Friedolin2
@Verganon, Killfetzer

Ich verwende jeweils das folgende Script für solche Enable/Disable-Aktionen

Code:
If (GameHour > 6)
If (GameHour < 8)
If GetDisabled
   Enable
Endif
   Return
Endif
Endif

  Disable

End
 
...

if ( state == 2 )
if ( cellchanged == 1 )
;my_nadelfelstor->positioncell xpos ypos zpos zrot "Zellname"
my_nadelfelsentor-> SetAtStart
set state to 0
endif
endif

end

Probier mal so, ansonsten deklariere zusätzlich


float AlteZPos

und im
...
if ( OnActivate);-Block
Set AlteZPos to my_nadelfelsentor-> Getpos Z
...
endif
...

und statt der PositionCell/SetAtStart-Anweisung unten dann

Setpos Z AlteZPos
 
  • Like
Reaktionen: Friedolin2
Hy Leuts

Ich brauch ma ne Info oder nen Script bin mir nich sicher was ess nun iss aber ich will mir nen eigenen "Kriecher" erstelln (für alle die zufällig nich wissen wer das iss :D das ist ein Skamp mit Dialog und Händlerfähigkeiten).

Hab bereits selber versucht das Problem zu lösen bin aber nich so richtig weitergekommen. Wenns zufällig nichts mit nem Script zu tun hatt dann pardon für den falschen Thread würde mich trotzdem über ne Antwort freun :)

EDIT: Habs ma nach der logik mit Ai anpassung an Kriecher gemacht hab jetz also nen Dremora mit fight 0 Hello 50 Alarm 100 und Flee 100.
Außerdem kann er alles verkaufen und hatt 2000 Draken weiterhin hab ich ihn mit dem "scampscript" versehn.
Binn Ingame gegangen und das einzigste was er gemacht hat er hat seinen Kopf wild um die eigne Achse drehn lassen :D
Habe Vergleichsweise auch Kriecher daneben gestell und bei dem liefs Problem los.
 
Zuletzt bearbeitet:
Ich hab mal so eine Frage für Zwischendurch:
Kennt ihr nen Befehl, der Warten bzw. Rasten automatisch für x Stunden auslöst?
 
Einen solchen Befehl gibt es nicht.

Du kannst nur durch ein Script den Spieler nach einer bestimmten Zeit wieder aufwecken, aber ob er schlafen will oder nicht, entscheidet der Spieler selbstständig.
 
Kennt ihr nen Befehl, der Warten bzw. Rasten automatisch für x Stunden auslöst?
Einen solchen Befehl gibt es nicht.

Du kannst nur durch ein Script den Spieler nach einer bestimmten Zeit wieder aufwecken, aber ob er schlafen will oder nicht, entscheidet der Spieler selbstständig.

zu der Antwort mal ne frage: kann man es Eigendlich so machen das der Bildschirm schwarz wird und die zeit um ein paar stunden vorgestellt wird?
Wenn ja vllt hilft dir das ja weiter Kallreven
 
Tststs, da hat Killfetzer so eine schöne Liste zusammengestellt und keiner nutzt sie... - ausser mir ;)

Die Befehle wären "FadeOut, t", wobei t ein Floatwert von 0 bis 10 für die Anzahl Sekunden ist (mehr als 10 geht nicht). Hiermit blendet der Bildschirm ins Schwarze aus. Das Gegenstück (schwarz --> Spielbildschirm) wäre "FadeIn, t", t habe ich schon erklärt ^^

"GameHour", die aktuelle Spielzeit, ist eine globale Variable wie jede andere auch, man kann die Spielzeit anpassen mit
"set GameHour to ( GameHour + gewünschte_Zeitspanne)" oder direkt auf einen bestimmten Wert zwischen 0 und 23,9999.... (versucht mal höher zu gehen... ^^)

Hoffentlich hilft das

Gruss
Kensen
 
Ich binns ma wieder ich breucht ma bitte ne Idee oder nen fertiges Script das mir eine Aktion wie folg ermöglicht:

Also am Anfang der Q findet man ein Tagebuch welches den Anfang einer Geschichten erzählt. Wenn man dieses nun gefunden hatt und in einen bestimmten Raum oder ein Haus geht soll ein neuer Eintrag in diesem Buch erscheinen womit die Geschichte vortgeführt wird. Nathürlich soll das nur einmal passieren und auch nur in bestimmten Reienfolgen sprich wenn man das Buch noch nicht im Inventar hat soll auch nicht die Q weitergeführt werden. Ich hoffe ich habe alles wichtige erwähnt.

Ich hoffe so was ist Machbahr.

mfg Maniac
 
uff also mir viele nur ein, das man das Tagebuch Clont (schreibt mans so?)

du müstetst eine neue Invisio Wall erstellen und darauf dann dieses Skript legen:

Code:
begin "my_tagebuchskript"

if ( Player-> Hasitem "my_questtagebuch" == 1)
enable
if ( GetCollision == 1 )
Player-> RemoveItem "my_Questtagebuch" 1
Player-> Additem "my_Questtagebuch-neuereintrag" 1
endif
endif

end "my_Tagebuchskript"

ich bezweifle, das ich gerade alle befehle richtig geschrieben hab. also berichtige mich bitte wer, oder du testest solange, bis der Skripteditor nimmer meckert :lol:
 
  • Like
Reaktionen: Maniac
Also, ich würde das mit dem GetColliding durch eine Distanzabfrage ersetzen, denn sonst müßte der Spieler für den neuen Eintrag gegen die unsichtbare Wand rennen->sehr komisch.
Code:
begin "my_tagebuchskript"

if ( Player-> Hasitem "my_questtagebuch" == 1)
   if GetDistance Player 1024
       Player-> RemoveItem "my_Questtagebuch" 1
          Player-> Additem "my_Questtagebuch-neuereintrag" 1 
    endif
endif

end "my_Tagebuchskript"
Das ganze kommt dann an einen beliebigen Activator, am besten die besagte unsichtbare Wand oder eine andere Editor-Box zB son Sound-Ding.
(Sollte so funktionieren, zumindest in der Theorie, aber die Praxis sieht meist anders aus ^^)
mfg erc
 
@erc jup haste schon recht aber er muss so oder so durch die box rennen weil die direkt am Anfang steht.
@verg bekommst für die schnelle Hilfe nathürlich noch ein danke schön ;)

Code:
begin "ET_ghostbookscript_01" 

	if ( player->GetItemCount "ET_ghostbook_01" == 1 )
	enable
		if ( GetCollidingPC == 1 )
		Player-> RemoveItem "ET_ghostbook_01" 
		1 Player-> Additem "ET_ghostbook_02" 1
		MessageBox, "soundso", "Ok"
		Journal "soundso"		
		endif
	endif 

end "ET_ghostbookscript_01"
 
Du weißt aber, dass er gegen besagte Wand nur dagegen rennen kann?
Dh, Spieler renn in ein Haus und knallt gegen ne unsichtbare Wand, durch die er nicht durchkommt. Wenn du es so machen willst, mußt du das script noch ein bisl umbauen:
Code:
begin "ET_ghostbookscript_01" 

	if ( player->GetItemCount "ET_ghostbook_01" == 1 )
	enable
		if ( GetCollidingPC == 1 )
		    Player-> RemoveItem "ET_ghostbook_01" 
		      1 Player-> Additem "ET_ghostbook_02" 1
                                    [b]disable[/b]		         
                                      MessageBox, "soundso", "Ok"
		   Journal "soundso"		
		endif
	endif 

end "ET_ghostbookscript_01"
mfg erc

Edit: Wir haben was übersehen:
Code:
begin "ET_ghostbookscript_01" 

if ( player->GetItemCount "ET_ghostbook_01" == 1 )
    enable
endif     

if ( GetCollidingPC == 1 )
    Player-> RemoveItem "ET_ghostbook_01" 
        1 Player-> Additem "ET_ghostbook_02" 1
                [b]disable[/b]		         
                      MessageBox, "soundso", "Ok"
		   Journal "soundso"		
endif
end "ET_ghostbookscript_01"
Jetzt sollte es gehen.
mfg erc
 
Zuletzt bearbeitet:
Globales Script, muss entweder durch ein global laufendes bzw. durch ein Startup-Script
oder im Script/Dialog eines als persistent markierten Objektes gestartet werden

per "Startscript RasteXStunden"

begin RasteXStunden

short einmal
float Weckzeit
short Wecktag

if ( einmal == 0 )

set Weckzeit to GameHour + X
; hier für X die mindest-Warte-Stunden einsetzen

if ( Weckzeit > 24 )

set Wecktag to Day + 1
set Weckzeit to Weckzeit - 24

else

set Wecktag to Day

endif

set einmal to 1

endif

if ( GetPCSleep == 0 )

if ( Day < Wecktag )

messagebox "Ihr müsst noch etwas warten!"
EnableRestMenu
return

else

if ( GameHour < Weckzeit )

messagebox "Ihr müsst noch etwas warten!"
EnableRestMenu
return


endif
endif

else

; Spieler rastet...
return

endif

set einmal to 0
stopscript RasteXStunden

end
 
Zuletzt bearbeitet: