Construction Set Der Scriptthread

ach, echt? das wusste ich nicht. okay, danke! aber ist das echt immer so? nehmen wir zB die kolonie rabenfels auf solstheim: da haben die ganzen außengebäude den script, bei bestimmten voraussetzungen sichtbar/unsichtbar zu werden. aber man kann die gebäude ja schon vom wieten sehen, auch wenn man nicht im gleichen cell ist.
 
hallo, ich brauche ein script für einen dwemer detektor, der wie eine dwemer projektilmine funktioniert (ihr wisst ja, diese minen schiessen zauber auf einen npc wenn er dran vorbei geht)
 
wie wärs mit dem aus Tribunal:

Code:
begin projectileMine

float playerdistance
float timer
float resettime
float myX
float myY
float myZ
float myRotZ

short proximity
short triggered
short dieroll
short sneakskill
short initialized

if ( MenuMode )
	return
endif


if ( initialized == 0 )
	set proximity to 700		;range for mine
	set resettime to 2			;time for mine to reset itself
	set initialized to 1
	set myX to GetPos X
	set myY to GetPos Y
	set myZ to GetPos Z
	set myRotZ to GetAngle Z
endif

if ( triggered == 1 )
	set timer to ( timer + GetSecondsPassed )
	if ( timer > 4 )
		set triggered to 0
		set timer to 0
	endif
	return
endif

set playerdistance to GetDistance "player"

if ( playerdistance < proximity )
	set triggered to 1

	if ( GetPCSneaking == 1 )
		set dieroll to ( Random 100 )
		set sneakskill to ( player->GetSneak )
		if ( dieroll < sneakskill )
			return
		endif
	endif

	PlaceItem "trapProjectile" myX myY myZ myRotZ
	
endif

End ProximityMine
 
ich habe das script jetzt verwendet, und wie bormal morrowind gestartet. als er die esp geladen hat, war plötzlich eine fehler meldung, in der das hier stand:

Script 'projectileMine' in file 'Projektilmine.esp' has not been compiled.
Ausführung des Programms fortsetzen? Ja Nein

ich hab auf ja geklickt und einfach weiter gemacht....
als ich dann die mine testen wollte, schien sie aber nicht zufunktionieren, denn sie schoss keinen zauber auf mich, sondern war einfach ein ganznormler gegenstand!!!
woran liegt das?
 
ok es liegt an dem Teil:

Code:
if ( GetPCSneaking == 1 )
	set dieroll to ( Random 100 )
	set sneakskill to ( player->GetSneak )
	if ( dieroll < sneakskill )
		return
	endif
endif

ohne Tribunal kennt das CS, diese Funktion nämlich nicht, du könntest den Teil einfach entfernen oder weg-kommentieren. Dann löst man die Miene zwar auch aus wenn man "vorsichtig" ist, aber lieber das als garnicht (aus sicht der Miene^^)

außerdem solltest du den Namen ändern, da es sonst Probleme mit Tribunal-Besitzern gibt.
 
können wir nochmal zu meinem script zurückkommen?

dass die scripts nur ausgeführt werden, wenn sich die zugeteilte person/der zugeteilte gegenstand im gleichen cell befindet: ist das echt immer so? nehmen wir zB die kolonie rabenfels auf solstheim: da haben die ganzen außengebäude den script, bei bestimmten voraussetzungen sichtbar/unsichtbar zu werden. aber man kann die gebäude ja schon vom weiten sehen, auch wenn man nicht im gleichen cell ist.
 
ok ich hab die sache getestet: in Außenbereichen laufen alle Scripts in der momentanen Zelle (M) sowie die in den 8 angrenzenden (A). Beim Übergang in die Zellen weiter außen (X) gibt es einen kleinen Puffer-Bereich, in dem Scripts noch laufen wenn man von A nach X geht, aber noch nicht wenn man von X nach A geht. Mit maximaler Sichtweite als Option (und ohne MGE) kann aber aber sowieso nicht von X nach M sehen, also fällt die die Sache mit Rabenfels oder den Festungen niemals auf, sofern du nicht den MGE verwendest.
Falls man sich in einem Innenbereich befindet, laufen aber nie Außenbereich-Scripts und umgekehrt.

X X X X X
X A A A X
X A M A X
X A A A X
X X X X X
 
Hab eine Frage.

Gibt es einen Befehl welcher NPC´s ihre Waffen ziehen lässt ohne das diese irgendjemanden angreifen?

Oder ist es möglich den StartCombat Befehl dafür irgendwie zu "entwenden"??

Die NPC´s sollen lediglich mit gezogener Waffe rumlaufen (z.B. um bedrohlicher zu wirken).

Ich bräuchte das nämlich für ein Skript welches einen NPC an einer bestimmten Position in der Cell seine Waffe ziehen lässt.
 
Zuletzt bearbeitet:
hallo, ich brauche ein script für einen dwemer detektor, der wie eine dwemer projektilmine funktioniert (ihr wisst ja, diese minen schiessen zauber auf einen npc wenn er dran vorbei geht)
Die Mine allein genügt nicht. Du brauchst auch das Projektil, das ein aktives Script für die Flugbahn hat! Wobei man bei den Scripts aus Tribunal definitiv eines beachten muß... die proximity mine funktioniert nicht mit NPCs, sie feuert nur auf den Spieler.

Das liegt an der Art wie das Script arbeitet. Es ist nämlich seitens des Scripts nicht ohne weiteres feststellbar, welcher NPC die Mine triggert! Also kann man auch nicht feststellen, wohin die Mine feuern muß. Das ginge wenn überhaupt nur mit spezifischen NPCs (eigene ID, eigenes Script) oder der player ref.

Wollte man das anders lösen, müßte man das Script der Mine völlig umstricken und nicht mit einem Auslöser arbeiten, sondern einem Feld voller Sensoren, die der Mine bei Aktivierung ihre eigene Position als Ziel übermitteln. Das Sensorfeld könnte auch benutzt werden, um die Positionsänderung innerhalb des Feldes zu berechnen und aktualisierte Koordinaten an das Projektil zu übermitteln. So würde der Eindruck erweckt, dass die Mine einen Zielsucher hat.
 
  • Like
Reaktionen: Cody227
danke, aber da ich selbst von scripts nicht viel verstehe hilft mir das nicht viel weiter.
ein kommplett neues script zumachen ist nun für mich völlig unerreichbar, aber was muss ich machen damit die mine auf den spieler feuert? (das muss mit wohl genügen)
 
hey, ich hab wieder ne frage: ich würde gerne ein paar fallen kreieren, die auf tretsteine hin ausgelöst werden. wisst ihr, was man in den script schreiben muss, damit er erkennt, dass man auf objekt x steht? es geht auf jeden fall, ich habs in einem plug-in gesehen

thx 4 answers
 
was man in den script schreiben muss, damit er erkennt, dass man auf objekt x steht?
Der Befehl lautet:

Code:
[B]IF ( OBJEKTID->GetStandingActor )[/B]
  [COLOR="DarkOrange"][I]... Hier Aktion einfügen ...[/I][/COLOR]
[B]EndIF[/B]
...um grundsätzlich abzufragen, ob ein Actor auf dem Objekt steht. Wie die Falle dann arbeitet (Script), hängt davon ab, was sie machen soll...
 
Zuletzt bearbeitet:
Hallo,
Ich brächte Hilfe beim Kampf zwischen zwei NPC Gruppen.

Ich habe 2 verschiedene Actoren und setzte diese aber mehrmals im Spiel
(für eine Schlacht)
Also je NPC-ID sind etwa 6 Leute platziert.
Also 12 NPC´s und nur 2 ID´s. Im Spiel bekommen sie dann ja jeweils noch eigene ID´s Also NPCID wird zu NPCID0000000000 und so weiter..

Mit KampfNPC_1->StartCombat->KampfNPC_2 greifen allerdings immer nur alle genau die 2 NPC´s andie im Spiel die ID "KampfNPC_100000000000" und "KampfNPC_200000000000" haben

Wie kann ich das machen, dass die eine komplette Gruppe die andere komplette Gruppe angreift? Wie sieht das skript dafür aus? geht das überhaupt?
Im moment endet der Kampf einfach sobald die NPC´s mit der NullID tot sind, dann stehen die restlichen Leute dumm rum und haben sich lieb.
 
Zuletzt bearbeitet:
Wie kann ich das machen, dass die eine komplette Gruppe die andere komplette Gruppe angreift? Wie sieht das skript dafür aus? geht das überhaupt?
Im moment endet der Kampf einfach sobald die NPC´s mit der NullID tot sind, dann stehen die restlichen Leute dumm rum und haben sich lieb.
Geht ohne Script. Du mußt jeweils EINE eindeutige NPC haben, einen Anführer, ohne wird es schwierig. Alle zu seiner Gruppe gehörenden NPCs (die können dann auch wieder gemeinsame IDs haben, bekommen ein AIEscort auf ihren Anführer. Das machst du so mit beiden Gruppen und mußt nur noch die jeweiligen Anführer mit einem simplen StartCombat aufeinander hetzen und schon hast du 'ne hübsche Massenkeilerei, die erst endet, wenn eine Seite tot ist :D
 
Mal ne simple Frage:
Wenn ich einen Activator kontinuierlich bewegen will, so dass er immer die gleiche position in bezug auf den player hat, wie vermeide ich dann den if-infinite-loop im script, welcher morrowind einfriert?
Ich hatte schon zwei ansätze, aber alle mit IF-statements, könnte man die vermeiden? und while auch?
 
du kannst einfach jeden Frame die Position des Spielers abfragen und dein Objekt dann mit SetPos entsprechend neu positionieren. Damit brauchst du keine if-Bedingung.