PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein paar Fragen...



Seiten : [1] 2

Lazarus
15.04.2007, 17:00
1. (Wie) Kann man die Grenzen im CS verschieben? Die Radikallösung, sie in der .ini abzuschalten gefällt mir nicht. Ich habe schon die 'Usable Dimensions' vom Tamriel-Worldspace erhöht, das hat allerdings nicht funktioniert. Ich will sie nur ein paar Meter nach hinten schieben.

2. Gibt es eine Möglichkeit, zu verhindern, dass man im Spiel bestimmte Items verzaubern kann - abgesehen davon, ihnen eine Verzauberung im CS zu verpassen?

3. Wie platziere ich Skelette? Wenn ich einfach eins ins Renderfenster ziehe und den Havok-Button drücke, fällt es in sich zusammen. Aber wie bekomme ich es dazu, dass es zB gerade auf einem Felsblock liegt?

4. Scriptfrage: Ich habe einen Trigger, und jeder, der den betritt, ganz egal wer, soll in eine andere, bestimmte Zelle teleportiert werden. Wie stell' ich das an?

Rung
15.04.2007, 17:05
Bei erstens kann ich leider nicht weiterhelfen, mir ist auch nur die Methode per INI genauer bekannt. Aber es stimmt, dass es auch per CS möglich sein muss.

Wenn Du ein Item erstellen willst, das man nicht verzaubern kann, gibt es (glaube ich) nur zwei Möglichkeiten:
1. Das Item ist ein Misc. Item oder irgend ein anderer Gegenstand, den man auch standardmäßig nicht verzaubern kann.
2. Das Item hat bereits einen Zauber. Vielleicht einen einfachen Dummyzauber drauflegen und den Magieabweiser nennen oder so ähnlich.

Sumbriva
15.04.2007, 17:07
Zu 1:

Für meine Mod, musste ich die auch verschieben.
Soviel ich weiss gibt es mehrere Wege, ich habe es so gemacht (selbst herausgefunden):

Mit dem Region Editor. Im Renderfesnter die gewünschte Stelle (ungefähr) rechtsklicken und bearbeiten. Dann kommt man in den Region Editor. Dort ist die Region um diese Zelle abgebildet. Dann wählt man CyrodiilBorderRegion , dadurch wird die Grenze sichtbar. Die kann man dann einfach verschieben. :)

Allerdings weiss ich nicht ob diese Methode so gut ist... :\
Denn als ich hier nachgefragt habe ob das alles okay ist, hat niemand geantwortet....

Lazarus
15.04.2007, 20:58
Funktioniert zwar, allerdings habe ich nun bei etwa der Hälfte aller Wildnis-Zellen vom Tamriel-Worldspace ein Sternchen...obwohl ich nur ein bisschen was von der Grenze im Nordosten verschoben habe. Ist das okay oder sollte ich's lieber lassen?

GlasMond
15.04.2007, 22:15
Zu 2.

Kann man dem Objekt nicht einfach einen "leere" Verzauberung anhängen? Also eine Verzauberung ohne Effekte?
Vielleicht ist es auch das was Rung meinte, bin mir aber nicht sicher gewesen.

Evtl. müßte man doch ein Script schreiben können, das beim Verzaubern die Meldung anzeigt: "Dieser Gegenstand kann nicht verzaubert werden!"

Wie ist das eigentlich mit Questitems? Können die verzaubert werden? Hab ich noch nie probiert. Vielleicht tut es da schon das Häkchen. :confused:

Lazarus
16.04.2007, 01:18
Wegen der Verzauberung: da hat Rung recht, das geht nur per Dummy. Questitem wär auch eine Möglichkeit, aber dann kann man die Items nicht mehr ablegen und/oder verkaufen. Skript würde höchstens mit OBSE gehen, aber da will ich nicht benutzen.

Obwohl ich wie gesagt nur an einem Zipfel im Nordosten von Cyrodiil die Grenzen etwas verschoben habe, sind nun u.a. sogar auch Zellen bei Chorrol verändert. Kann ich mir ehrlich gesagt nicht erklären. Es sollten eigentlich nur etwa 20 Zellen verändert worden sein, allerdings sinds wohl ein paar hundert.

Mr_Tea
16.04.2007, 03:01
Ist da nicht doch die Änderung der ini die einfachere Alternative.
In der ini einen Wert von 1 auf 0 zu ändern sollte eigentlich jeder schaffen.:confused:

Sumbriva
16.04.2007, 11:56
Funktioniert zwar, allerdings habe ich nun bei etwa der Hälfte aller Wildnis-Zellen vom Tamriel-Worldspace ein Sternchen...obwohl ich nur ein bisschen was von der Grenze im Nordosten verschoben habe. Ist das okay oder sollte ich's lieber lassen?

Genau das war bei mir auch so (ich habe nur 3 Zellen verändert)
Deshalb weiss ich ja nicht ob das so schlau ist.
Ich habe ebenfalls nachgefragt, und als antwort bekommen: Ist nicht so schlimm, kannst ja am Ende alle nichtveränderten Zelleneinträge unter Details löschen.... Naja, ich weiss nicht.
Ich getraue mich nicht unbedingt weiter zu machen....

Lazarus
16.04.2007, 12:10
Ist da nicht doch die Änderung der ini die einfachere Alternative.
In der ini einen Wert von 1 auf 0 zu ändern sollte eigentlich jeder schaffen.:confused:
Ja, aber ich wollte die Mod eben so benutzerfreundlich wie möglich gestalten. Zumindest was die Installation betrifft.

Genau das war bei mir auch so (ich habe nur 3 Zellen verändert)
Deshalb weiss ich ja nicht ob das so schlau ist.
Ich habe ebenfalls nachgefragt, und als antwort bekommen: Ist nicht so schlimm, kannst ja am Ende alle nichtveränderten Zelleneinträge unter Details löschen.... Naja, ich weiss nicht.
Ich getraue mich nicht unbedingt weiter zu machen....
Problem bei mir ist, dass sich die Grenzenveränderung wie gesagt über ca 20 Zellen zieht. Da müsste ich erstmal den Namen bzw die Bezeichnung jeder Zelle rausfinden.

Vielleicht sollte ich versuchen herauszufinden, wie man das anstellt, dass der Installer automatisch die Grenzen in der .ini entfernt.

Lazarus
16.04.2007, 19:58
Okay...ich hab' jetzt sämtliche veränderten Zellen(abgesehen von 'meiner') rausgeschmissen, dabei blieben glücklicherweise sogar sämtliche Grenzenänderungen erhalten.

Sumbriva
16.04.2007, 20:26
Wie hiessen die zellen, die du rausgeschmissen hast? (Also woe standen die in den Details, damit ich das auch machen kann....)

Lazarus
16.04.2007, 20:32
Schmeiß' einfach alle Zellen raus, an denen du nichts verändert hast.

Sumbriva
16.04.2007, 20:45
Das ist ja meine Frage, wie erkenne ich die Zellen und so unter den Details, als was sind die da "vertreten".
Da steht ja immer irgendwas von "Child" oder so. Wasn' das? Kind? hö?

Lazarus
16.04.2007, 20:54
Das hat nix damit zu tun. Nur das löschen, bei dem auch wirklich 'Cell' als Typ dabeisteht.

Neue Frage: wie platziere ich Skelette? Wenn ich einfach eins ins Renderfenster ziehe und den Havok-Button drücke, fällt es in sich zusammen. Aber wie bekomme ich es dazu, dass es zB gerade auf einem Felsblock liegt?

GreyWolf
16.04.2007, 21:25
Ich habe kA, ob ich jetzt völlig falsch liege. Habe bisher nur mit belebten NPCs und dem Spielerchar gearbeitet. ;)

Könnte man das nicht so lösen, dass man das Skelett als Kreatur definiert und es wie für NPCs neulich diskutiert in eine Statue verwandelt?

Ryan müsste Dir aber helfen können. Der hat ja mehrere Knochenheinis als unbewegliche Statuen in B&M platziert.

Oder habe ich Dich jetzt falsch verstanden, und das Skelett / die Knochen sollen schon noch bewegbar sein und eben erst mal nur ruhig liegen?

Lazarus
16.04.2007, 21:34
Oder habe ich Dich jetzt falsch verstanden, und das Skelett / die Knochen sollen schon noch bewegbar sein und eben erst mal nur ruhig liegen?
Ja, sollen sie. In Vanilla gibt's ja auch haufenweise Zombies/Skelette die schön gerade irgendwo rumliegen, zB in Necro-Dungeons.

GlasMond
16.04.2007, 21:49
Dann schau dir doch mal eines dieser Skelette an, vielleicht beantwortet das deine Frage. ;)

ZindDiBomb
16.04.2007, 21:51
Probiere es, das Teil mit gedruckter X/Y/Z Taste mit der rechten Maustaste zu drehen. Dann per Havok irgendwo liegen lassen.

Edit: Mist es funktioniert nicht...

Lazarus
16.04.2007, 21:59
Dann schau dir doch mal eines dieser Skelette an, vielleicht beantwortet das deine Frage. ;)
Tut es leider nicht.

Probiere es, das Teil mit gedruckter X/Y/Z Taste mit der rechten Maustaste zu drehen. Dann per Havok irgendwo liegen lassen.
Damit wird nur der ganze knöcherne Haufen verschoben.

ZindDiBomb
16.04.2007, 22:16
Da das Skellet aus mehrere Teile bestehet, fallen die ja auseinander. Vielleicht haben die Vanilla macher einfach eine neue Mesh erstellt und in diesen die Arme, den Kopf und den Körper aneinander gebunden? Erstell Mal ein neues Object und teste die Mesh von Vanilla.

Lazarus
16.04.2007, 22:34
Die Skelette in den Necro-Dungeons sind scheinbar ganz normale DeadSkeleton2-Objekte. Genau damit hab ichs auch versucht.

Schätze Bethesda heben mit ihrem 'Master-CS' einfach mehr Möglichkeiten. Naja, dann muss ich eben Skelett-Statuen basteln. Sind dann allerdings nicht an Havok gebunden...naja, was solls, spart Performance. ;)

GlasMond
16.04.2007, 23:10
Ich habe gerade im CS gesucht. Schau dir mal folgendes an:

ID: MS12SkeletonDeadState
Name: Toter Akaviri-Soldat

Sollte sogar Havok benutzen, allerdings habe ich noch nicht nachgeschaut was das Script bewirkt.

Lazarus
16.04.2007, 23:16
Das ist's auch nicht anders.

Lazarus
18.04.2007, 03:37
Okay, diesmal brauche ich Hilfe in Sachen Scripting.
Ich habe einen Trigger, und jeder, der den betritt, ganz egal wer, soll in eine andere, bestimmte Zelle teleportiert werden. Wie stell' ich das an?

Rung
18.04.2007, 08:42
Dafür kannst Du eine Triggerzone nehmen. Das sind diese grünen eckigen Dinger.
Da legst Du folgendes Script drauf.


Scriptname IchhabeEinenNamen

short stage

Begin OnTrigger

if ( stage == 0 )
set stage to 1
Player.MoveTo MeinMarker
endif

End

Begin OnLoad

if ( stage != 0 )
set stage to 0
endif

End

Wenn der Spieler nur einmal teleportiert werden soll, lässt Du einfach den Load-Command und alles, was drunter steht, weg.
Wenn es nicht nur speziell der Spieler sein soll, der teleportiert wird, musst Du folgendes Script einsetzen.

Scriptname IchhabeEinenNamen

ref Ziel
short stage

Begin OnTrigger

if ( stage == 0 )
set stage to 1
set Ziel to GetActionRef
endif

End

Begin GameMode

if ( stage == 1 )
set stage to 2
Ziel.MoveTo MeinMarker
endif

End

Begin OnLoad

if ( stage != 0 )
set stage to 0
endif

End

Edit: Den Command-Block richtig abgeschlossen/also Script korrigiert.

Lazarus
18.04.2007, 16:08
Funktioniert nicht ganz richtig. Ich habe je einen Trigger+Ziel-Marker in zwei Zellen. Betritt man den einen Trigger, landet man beim Marker der jeweils anderen Zelle. So kann man sich 7-8 mal rumteleportieren, danach funktioniert es aber aus irgendeinem Grund nicht mehr.
Außerdem bleiben dabei beschworene Kreaturen/Companions des Spielers zurück, wäre natürlich besser wenn die mitkommen würden.

Gestern habe ich das ganze versucht, anders zu lösen: habe je eine versteckte Türe in den Zellen platziert und einen Übergang erstellt. Dazu die Türen als Parent zu den Triggern verknüpft. Dummerweise ist das Spiel dabei immer eingefroren.

Karl der Mutige
18.04.2007, 16:30
Lazarus: Du kannst, wenn du Havok an hast, das Skelett mit Strg+Alt+Linke Maustaste bewegen.

Lazarus
18.04.2007, 16:35
Okay, das hilft mir schonmal weiter. Zwar bekommt man auch so unmöglich sowas hin wie Bethesda, aber etwas einfache Dinge sollten sich damit durchaus bewerkstelligen lassen...

Rung
18.04.2007, 16:43
Ui,

mit Companion-Scripting habe ich wenig bis gar keine Ahnung, aber theoretisch müsste alles, was den Trigger aktiviert, teleportiert werden. Wenn das nicht der Fall ist, weiß ich leider auch keine Lösung dafür. Ich schau aber nochmal nach ...

Edit:
Versuchs mal mit OnTriggerActor, also:

Scriptname IchhabeEinenNamen

ref Ziel
short stage

Begin OnTriggerActor

if ( stage == 0 )
set stage to 1
set Ziel to GetActionRef
endif

End

Begin GameMode

if ( stage == 1 )
set stage to 2
Ziel.MoveTo MeinMarker
endif

End

Edit: Huch jetzt habe ich ganz vergessen, den Command-Block abzuschließen.

Lazarus
18.04.2007, 17:38
Companions/Beschworene Viecher werden damit auch nicht mitteleportiert. Schätze da ist mehr nötig, schließlich laufen sie ja nicht von alleine in den Trigger hinein. Macht aber eigentlich auch nichts, Kreaturen kann man neu beschwören und Companions in der Regel ebenfalls 'herbeirufen', afaik.

Dass das ganze nach ein paar Versuchen auf einmal nicht mehr hingehauen hat, liegt wohl daran dass man die Trigger nicht kurzzeitig hintereinander betreten darf. Wenn man ein paar Sekunden wartet, funktioniert alles.

Lazarus
23.04.2007, 21:38
So, noch 'ne Skriptfrage: ich brauche einen Trigger, der den verlinkten Parent auf 'Enable' stellt.

Rung
24.04.2007, 07:13
Hallo Lazarus,

da gibt es vorgefertigte Trigger im CS, die Du benutzen kannst. Zumindest, wenn es der Spieler sein soll, der den Trigger auslöst. Soll es doch, oder?
ID:
TrigZonePLAYER02Disable (der dünne grüne Kasten)
TrigZonePLAYER01Disable (der breite grüne Kasten)

Lazarus
24.04.2007, 12:06
Ah, gut, danke.

kenet_korva
24.04.2007, 14:57
Wegen dem Trigger der Beschworenes bzw. Compagnions nicht mitnimmt. Nimm einfach das normale Triggerzone-mesh. (Dungeons/Misc...) Als Tür mit dem gleichen Skript.
Der Spieler kann den Trigger nicht als Tür verwenden da ihr die dafür nötige Collision fehlt. NPCs und Kreaturen ist das aber soweit ich weiß egal. Sie gehen einfach bis zu einer bestimmten Entfenung an die Tür heran und verwenden sie dann.

Rung
24.04.2007, 15:21
Sehr interessant, Kenet. Hast Du das schonmal ausprobiert? Das würde ja ganz neue Möglichkeiten eröffnen.

Lazarus
24.04.2007, 18:06
Das mit dem Enable-Trigger funktioniert nicht richtig.
Ich habe ein Skelett platziert, es als 'Disabled' markiert, den Trigger mit Enable-Script(ja, enable, nicht disable) danebengesetzt und das Skelett als Parent ausgewählt. Im Spiel tut sich allerdings gar nichts, wenn ich durch den Trigger laufe. Wenn ich den Trigger als Parent fürs Skelett nehme, ist das Skelett automatisch enabled, ganz egal ob der Trigger aktiviert wurde oder nicht.

kenet_korva
24.04.2007, 18:45
Hmm...Ja, das ist das Problem mit dem Triggern die schon vorhanden sind- man weiß nie woran man ist. Hatte auch mal ein Problem mit einem der Trigger, seit dem verwende ich nur noch selbst erstellte. Also für den Fall des Falles gleich mal ein Skript:

scn (DuKennstDasJa;))
short doonce
ref Target
begin OnTrigger ;wenn du willst mit player nach dem OnTrigger
if doonce == 0
if GetActionRef player == 0
set Target to GetParentRef
if GetActionRef player == 1
target.enable
set doonce to 1
endif
end



@Rung
Naja, es ist so, ich hatte mal eines dieser Runderboote als Tür an einem Steg plaziert.
Die NPCs nutzten die Tür ganz normal obwohl scheinbar eine Kollision im Weg war, was heißt, dass sie diese nicht umbedingt brauchen. Ich denke, dass es eher auf dieses gelbe Achsenkreuz ankommt das jedes Objekt hat.
Speziefisch hab ich es auch noch nicht getestet, hab aber grad kein CS zur Hand wesshalb ich es gerade nicht selbst testen kann. Wäre aber sicherlich interessant das wirklich bestätigt zu haben.

Lazarus
24.04.2007, 18:54
Hm, damit tut sich leider auch nichts.
Nur zur Sicherheit: ich habe den Trigger gedoppelklickt und unter 'Enable Parent' per 'Select Reference in Render Window' da Skelett ausgewählt; das ist doch soweit richtig, oder?

In deinem Script haben übrigens auch zwei endif's gefehlt. Habe jetzt mal das hier ausprobiert:


short doonce
ref Target

begin OnTrigger

if doonce == 0
set Target to GetParentRef
target.enable
set doonce to 1
endif
end

...funktioniert aber auch nicht.

kenet_korva
24.04.2007, 19:41
Jo, die Endifs... ähm, die kommen schon mal abhanden... :whistle:
Das Skelett als persistent reference geflaggt? Ja, sicher sonst hättest du's nicht als Parent setzten können...ähm... Eventuell ein konflickt mit einem Skript das auf dem Skelett selbst liegt?...oder, ähm füg mal in den OnTrigger Block eine MessageBox ein Irgendwas wie "Der Triggger funktioniert" nur damit mann das Problem eingrenzen kann. Aber im Moment wüsste ich echt nicht wo das Problem liegen könnte, außer... bei mir hab ich schon öffters festgestellt, dass das Skript ohne IsActionRef funktion nicht funktioniert hatte, proiers damit mal.

Lazarus
24.04.2007, 19:58
Die Messagebox kommt nicht...weder bei deiner noch bei meiner Variante.

edit: ok, es funktioniert jetzt. Beim Trigger muss 'Set Enable State to Opposite of Parent' aktivert sein, dann läuft alles. :)

kenet_korva
25.04.2007, 15:01
Ok, gut zu wissen, danke.

~Ryan~
25.04.2007, 20:46
WEICHE SCHURKE! GEBT UNS LAZARUS RAUS!

Ja, ja, ja! Enable Srcipts und den Havoc-Button nicht kennen! Komm, komm, komm! Ihr werdet mich nicht veralbern hier, Sir! Ich habe es durchschaut! ;)

<- Der Thread ist voll niedlich... Den bewerte ich gleich mal und während ich das tue, sag mal bitte an, ob du mittlerweile 100% <- nicht 80 nicht 90 zufrieden bist mit deinen ganzen Triggern und Teleportationen ansonsten... werfe ich dir gerne hier mal was in den Raum und werde es danach leugnen jemals getan zu haben, damit mein Weltbild nicht zerstört wird...lol ;)

Gruß
Ryan

Lazarus
26.04.2007, 18:44
So, wie ist das denn nun mit diesen vermaledeiten Pathgrids? Immer wenn ich welche generieren will, stürzt das CS mit 'TES Construction Set hat einen Fehler festgestellt...' ab.

~Ryan~
26.04.2007, 19:33
Im Interior kannst du keine Pathgrids generieren, weil das CS nicht weiß wo dein Dungeon endet... DU MUSST es manuell setzen...

Gruß
Ryan

Lazarus
26.04.2007, 19:48
Okay, dachte ich mir.
Bei meinem Tileset hätte es wahrscheinlich ohnehin nur Mist generiert.^^

Lazarus
28.04.2007, 15:58
Ich hab ein paar Items platziert, die - Havok sei gedankt - ingame total schief und deplatziert herumfliegen. Gibt es irgendeine Möglichkeit, Gegenstände zu 'fixieren', zB so wie die Welkynd-Steine in den Ayleiden-Ruinen?

~Ryan~
28.04.2007, 20:17
Solange das Havoc nicht an ist (es wirkt immer nur auf das aktive Item und Flamme, Effekte)... Pathgrid auf 1 Stellen (nicht ausschalten) dann hast du ne gute Kontrolle.... am besten im Interior erst Wände mit 32 dann runter auf 16 und dann die Items auf 1 ... sonst kann es dir mal passieren dass die Fallen nicht mehr funktioniern bei ständig wechselndem Pathgrid.... wie z.B. Floorsmasher... also stell das Havoc aus, wnen du Items platzierst... ;)

Gruß
Ryan

Lazarus
29.04.2007, 02:24
also stell das Havoc aus, wnen du Items platzierst... ;)
Wenn ich beim Platzieren Havok angehabt hätte, würde ich wahrscheinlich jetzt noch versuchen es richtig hinzurücken. ;)
Im CS liegt bzw steht ja alles schön ordentlich da(die Rede ist übrigens von einigen Schwertern in einem Waffenregal), aber ingame purzelt alles durch die Gegend.

kenet_korva
29.04.2007, 09:04
Das liegt an der eher rudimentären Kollision der Waffenregale. Die beste Lösung ist wohl eine Version des Schwert.nif's ohne Havoc als Activator plaziert mit einem Skript zum Hinzufügen des echten Schwertes und sich selbst disablen.

Lazarus
29.04.2007, 09:21
Wäre eine Lösung, ja, aber die Entwickler haben es ja auch hinbekommen dass Waffen in ihren Regalen bleiben und Welkynd-Steine nicht aus ihren Fassungen hüpfen...

Rung
29.04.2007, 09:31
Welkyndsteine: Die einfach über ihren Halterungen platzieren und den Havok-Knopf drücken, wenn sie im CS dann in der Halterung bleiben, bleiben sie es auch im Spiel.
Schwerter: Wie Ryan gesagt hat. Wenn Du die Sachen im CS ohne Havok platzierst, bleiben sie auch im Spiel so.

Lazarus
29.04.2007, 09:43
Wenn Du die Sachen im CS ohne Havok platzierst, bleiben sie auch im Spiel so.
Eben nicht, leider. Ich habe es ja ohne Havok platziert. Im Spiel bleiben sie zwar tastächlich so, aber nur solange bis man irgendeinen Gegenstand aus dem Inventar auf den Boden wirft oder einen anderen aufhebt, dann fällt alles in sich zusammen.

Rung
29.04.2007, 13:33
Oh,

dann weiß ich leider auch nicht. Du könnest es höchstens noch mit SetRigidBodyMass (http://cs.elderscrolls.com/constwiki/index.php/SetRigidBodyMass)versuchen. Allerdings bin ich mir beinahe sicher, dass das für Deine Zwecke nicht sonderlich brauchbar ist, aber Du kannst es ja trotzdem mal probieren.

Lazarus
29.04.2007, 20:15
Noch was: Kann ich irgendwie den Wahrnehmungsradius von NPCs/Kreaturen beeinflussen?

Faegan
29.04.2007, 21:26
Naja, mal ganz rudimentär durch die Schleich-Fertigkeit..
Möglicherweise ist das Problem schon als gelöst abgehandelt, aber: Was ist, wenn man den Enchantment-Wert auf 0 setzt? Bei Oblivion kenne ich mich damit nicht aus, aber bei Morrowind wäre das eine Lösung...

Lazarus
29.04.2007, 21:39
Naja, mal ganz rudimentär durch die Schleich-Fertigkeit..
Das meinte ich nicht. ;)
Ich will einfach nur, dass eine Kreatur sich nicht gleich auf alles stürzt was 20 Meter entfernt ist, mit einer dicken Mauer dazwischen. Ist aber inzwischen eigentlich egal, habe das Problem anders gelöst...Vorschläge sind aber weiterhin willkommen.



Möglicherweise ist das Problem schon als gelöst abgehandelt, aber: Was ist, wenn man den Enchantment-Wert auf 0 setzt? Bei Oblivion kenne ich mich damit nicht aus, aber bei Morrowind wäre das eine Lösung...
In Oblivion gibt's den Enchantment-Wert nicht. :(
Habe dem Item einfach eine Verzauberung ohne Effekte hinzugefügt. Unschön, aber wirksam.

kenet_korva
29.04.2007, 21:54
Eine GetDistance player Abfrage mit StartCombat player.
Eventuell auch noch eine GetDetect player dazu.
also so:


short used
begin GameMode
if GetDistance player <= 200 && GetDetect player == 1 && used == 0
StartCombat player
set used to 1
endif
end


Diesmal fehlen keine Endifs ;)

Lazarus
30.04.2007, 10:07
Danke, werde ich mal ausprobieren.

Lazarus
30.04.2007, 19:30
Achtung, Poppeldost: habe wieder zwei Skriptfragen. ;)

Einmal möchte ich ganz gerne wissen wie man zeitversetzt skriptet - also dass beispielsweise fünf Sekunden, nachdem man einen Activator aktiviert hat, eine Messagebox erscheint.

Außerdem: wie funktioniert das nochmal mit dem Zufall? Als Beispiel: ich aktiviere einen Activator und es erscheint zufällig eine von vier möglichen Messageboxen.

Rung
30.04.2007, 19:47
Hallo Lazarus,

das nächste Mal bitte editieren. Bei solchen Fragethreads schaue ich öfters mal wieder rein, auch ohne einen neuen Post. ;)

Skript 1

Scriptname MeinScript

short stage
float timer

Begin OnActivate

if ( stage == 0 )
set stage to 1
endif

End

Begin GameMode

if ( stage == 1 )
set timer to ( timer + GetSecondsPassed ) ;diese Zeile wird jede Sekunde durchlaufen, wenn stage == 1 ist, dadurch erhöht sich der timer immer um eine Sekunde

if ( timer > 4 )
set stage to 2
MessageBox "Ich bin eine MessageBox, Du nicht. Bätsch!" "Fortfahren"
endif
endif

End

Skript 2

Scriptname MeinScript2

short stage
short WelcheKreatur

Begin OnActivate

if ( stage == 0 )
set WelcheKreatur to GetRandomPercent
set stage to 1
endif

End

Begin GameMode

if ( stage == 1 )
if ( WelcheKreatur >= 75 )
set stage to 0
; Message1
elseif ( WelcheKreatur >= 50 )
set stage to 0
; Message2
elseif ( WelcheKreatur >= 25 )
set stage to 0
; Message3
else
set stage to 0
; Message4
endif
endif

End

Lazarus
30.04.2007, 19:58
Danke sehr.
Hm, ist aber ziemlich viel Skript für das bisschen Inhalt. Selbst in NWN konnte man diese Dinge afair mit Einzeilern bewerkstelligen.

Rung
30.04.2007, 20:02
Ja das stimmt,

meistens hängt man Stunden an einem Script, um einen ganz simplen Effekt zu erzielen, den man im Spiel vielleicht nich mal wahrnimt, oder der nur einen kurzen Moment dauert.

kenet_korva
30.04.2007, 20:27
Das ist doch das schöne an unserer Arbeit. Man sitzt Monate an Dingen die am Ende vielleicht 6 - 8 Stunden dauern. :\ Aber irgendwer muss doch Bethesdas Arbeit übernehmen und ne vernünftige ZahlPi-Alternative bieten, oder? :rolleyes:

Lazarus
30.04.2007, 20:33
Das ist doch das schöne an unserer Arbeit. Man sitzt Monate an Dingen die am Ende vielleicht 6 - 8 Stunden dauern. :\ Aber irgendwer muss doch Bethesdas Arbeit übernehmen und ne vernünftige ZahlPi-Alternative bieten, oder? :rolleyes:
Hm...angefangen habe ich an meiner Mod Ende Dezember letzten Jahres...und nun ist der gerademal der erste von vier bis fünf Dungeons fast fertig. Und ich bezweifle dass man insgesamt drei Stunden an der Mod spielen kann...bleibt zu hoffen dass sich genügend Leute die Mod herunterladen und Spaß daran haben, damit sich das relativiert. ;)

kenet_korva
30.04.2007, 21:18
Das kenn ich... Ich arbeite jetzt schon seit Oktober und je mehr ich mache, desto mehr fällt mir ein was noch zu machen ist. Einmal hatte ich schon ein Projekt so weit aber flötzlich war die Motivation weg und ich hab es zur Ruhe geschickt. Danach hab ich mir geschworen, nie wieder ein Projekt fallen zu lassen.
Und uns bleib allen nur zu hoffen übrig, dass es den Leuten gefällt was wir machen. Bei uns ist es nicht das Geld das investiert wird und auf dem Spiel steht, es ist unsere Zeit und unser Herzblut.

Lazarus
30.04.2007, 21:28
Ja, das stimmt.
Habe selbst schon nach ca zwei Jahren Arbeit ein Modprojekt aufgegeben.
Bei meinem jetzigen Projekt sei allerdings gesagt dass es sicherlich noch innerhalb der nächsten beiden Monate fertig sein wird, mit jedem erledigten Schritt wächst die Motivation, das meiste ist auch schon getan. Allerdings frage ich mich - wie früher auch bei OWC - ob ich das alles tatsächlich getan hätte, hätte ich vorher gewusst wie viel Arbeit das macht. Wahrscheinlich nicht.

Nächste Frage: wie Skripte ich eine Verzauberung, die Extraschaden gegen zB Daedra anrichtet?

kenet_korva
01.05.2007, 08:45
Am Besten währe wohl eine Verzauberung mit Magic-Effect die Abfragt ob sich das Ziel in der Daedra-Fraction befindet. Und dann über den Effect einen Zauber deiner Wahl auf das Ziel feuern lassen, praktisch so:

ref target
begin SkriptEffectStart
set target to GetSelf
if target.GetInFation Daedrafaction == 1 ;Könnte sein, dass die Daedra Faction anders heißt
player.cast SpellId target
endif
end


Probier das mal

Lazarus
03.05.2007, 18:30
Habe ein kleines Problem: ein NPC-Gegner verursacht zu wenig Schaden. Stärke und Fertigkeiten sind bereits alle auf 100(alles jenseits dieses Wertes steigert den Schadensoutput nicht weiter), und eine stärkere Waffe will/kann ich ihm nicht geben.
Kurzum, kann man per Script(oder gerne auch anders ;)) dafür sorgen, dass dieser NPC mehr Schaden pro Schlag mit seiner Waffe verursacht?

Rung
03.05.2007, 18:52
Vielleicht mit einem Schaden:Lebensenergie-Zauber auf der Waffe? Für andere Methoden wäre wohl der OBSE nötig. :\

Lazarus
03.05.2007, 19:34
Naja, die Waffe wollte ich ja nicht ändern.
Ist aber auch ein Mist, dass man den Schaden nicht weiter beeinflussen kann...

ABlackGuard
03.05.2007, 21:39
Du könntest es so, wie in KotN machen. Umaril benutzt auch ein sehr starkes Schwert (glaub maximal Schaden liegt bei 66 oder so), was aber entfernt wird, sobald man es aufhebt. Dann wird einem eine schwächere Version ins Inventar gelegt, die noch ins normale Balancing passt und nicht übermächtig ist.

Lazarus
03.05.2007, 22:15
Ja, das wäre auch eine Möglichkeit.
Dabei gibt es aber ein Problem: Ein Item kann sich nicht selbst entfernen wenn es im Inventar liegt(würde gerne mit onAdd arbeiten), das Spiel stürzt ab sobald man das Schwert aufheben will. Gibt's da keine andere Lösung?
Abgesehen davon dass man nebenher ein GameMode-Script laufen lässt das das ganze regelt...

edit:
Wer sagt denn eigentlich, dass man das Schwert unbedingt komplett entfernen muss? :D
http://img357.imageshack.us/img357/4004/schwertlc5.th.jpg (http://img357.imageshack.us/my.php?image=schwertlc5.jpg)

kenet_korva
04.05.2007, 07:24
Screen: lol :D

Ein Item lässt sich schon selbst entfernen, aber mit einem anderen Befehl als sonst: RemoveMe

Lazarus
04.05.2007, 12:22
Ein Item lässt sich schon selbst entfernen, aber mit einem anderen Befehl als sonst: RemoveMe
Aha, danke...hätte ich das nur von Anfang an gewusst, da hätte ich mir eine Menge sparen können. Ich habe es bisher so geregelt, dass das Item eine globale variable festlegt, diese wiederum wird von einem unsichtbaren Activator mit GameMode-Script abgefragt, der jedes mal in die Zelle des Spielers teleportiert werden muss, weil dieser GameMode-Script sonst nicht greift.

Rung
04.05.2007, 13:18
Ähm,

hier noch ein kleiner Hinweis für alle Lesenden. Meiner Erfahrung nach sollte man möglichst auf Globalen verzichten. Ich hatte bei beiden meiner Oblivion-Plugins große Probleme mit den Globalen, als ich sie aber rausgenommen habe, lief alles reibungsfrei. (z.B. die Sache mit der Ladereihenfolge bei der Verbesserten Magiergilde. Dabei crashte das Spiel immer beim Hochfahren noch vor dem Auswählen des Spielstandes.)
Ich würde empfehlen, lieber Lokalen zu nutzen, die Du (meist) genauso abfragen kannst, wenn Du sie auf einen Activator legst.

Lazarus
04.05.2007, 13:23
Also ich hatte noch keine Probleme mit Globals(in OWC gibt es ca 15 Stück), aber da ich ja jetzt weiß wie man Items entfernt kann ich ja zumindest in Ivellon darauf verzichten.

NewRaven
04.05.2007, 16:12
Ich kann ebenfalls keine Probleme mit Globals bestätigen. OI verwendet auch ein paar und in manchen Fällen geht es schlicht nicht anders. Außerdem ist es natürlich abzuwägen, ob ich überhaupt lokale Variablen verwenden kann - das geht nicht immer wegen fehlendem Objekt (Activator) und ist manchmal auch schlicht einfach nur unpraktisch.

kenet_korva
04.05.2007, 16:32
Rung, hast du damals nicht geschrieben, dass die Probleme auftauchten, nachdem du die Globale durch ein Questscript abgefragt wurde? Aber Globalen sind auch eher unnötig. Man kann eigentlich immer auf QuestScript variables zurückgreifen, auch wenn Globalen sich durch kürzere Befehle abfragen lassen. ;)

Lazarus
04.05.2007, 16:33
In meinem Fall klappt das mit RemoveMe auch nicht.
Zur Info, im Spiel gibt es ein Schwert, bei dem der Spieler entscheiden kann ob er es ein- oder zweihändig führen möchte. Sobald man es anlegt öffnet sich eine Messagebox mit Auswahlmenü.

Bisher hatte ich es immer so geregelt, dass beim Anlegen eine Global auf 1 gesetzt und ein unsichtbarer Activator mit MenuMode-Script beim Spieler gespawnt wird. Der enthält den ganzen eigentlichen Krempel. Dabei wird das Schwert aus dem Inventar entfernt und ein neues hineingelegt und automatisch ausgerüstet, abhängig von der Wahl des Spielers ist es die ein- bzw zweihändige Variante.
Hat bisher immer einwandfrei funktioniert, aber mit meinem jetzigen Script wird die neue, erhaltene Einhandvariante des Schwerts nur ins Inventar gelegt, aber eben nicht ausgerüstet; bei der Zweihandvariante stürzt das Spiel einfach mit 'Oblivion.exe hat einen Fehler festgestellt' ab. Hier mein Script, das auf dem Schwert liegt(unordentlich, ich weiß):


short item
short bastardsword

begin OnEquip
messagebox "Möchtet Ihr dieses Schwert ein- oder zweihändig führen?" "Einhändig (Benötigt 70 Stärke)" "Zweihändig"
set item to 1
end

begin menumode
if item == 1
set bastardsword to getbuttonpressed

if bastardsword == 0
if player.GetActorValue Strength >= 70
player.additem IvellonBastardsword 1
player.equipitem IvellonBastardsword
set item to 0
removeme
else
player.additem IvellonBastardsword2h 1
player.equipitem IvellonBastardsword2h
set item to 0
messagebox "Ihr seid nicht stark genug, um dieses Schwert einhändig führen zu können."
removeme
endif
elseif bastardsword == 1
player.additem IvellonBastardsword2h 1
player.equipitem IvellonBastardsword2h
set item to 0
removeme
endif
endif
end

edit:
Um auf das andere Schwert zurückzukommen, das von einem Gegner genutzt wird und gegen ein schwächeres ausgetauscht werden soll sobald es der Spieler einsammelt.
Ich kann es zwar wunderbar per RemoveMe verschwinden lassen, aber wenn ich noch in einer zweiten Zeile dem Spieler das neue Schwert ins Inventar schieben will, stürzt das Spiel ab wenn diese Zeile vor RemoveMe steht, steht sie darunter, dann verschwindet das Schwert nur ohne ein neues zu erzeugen.

NewRaven
04.05.2007, 16:50
Meine Globals werden eigentlich alle durch ein Questscript gesetzt und auch abgefragt - soviel dazu ;) Ich seh einfach den Punkt nicht, Sachen, die von mehreren Scripten benötigt werden, jedesmal zu referenzieren. Und beispielsweise ein Versioncheck mit einer lokalen Variable? Das muss ich nun wirklich nicht haben ;) Bekanntlich führen aber viele Wege nach Rom, die einen machen es sich einfach, die anderen suchen sich eben andere Wege... solange alles funktioniert, ist es doch gut so... sicher könnte ich bei einigen Sachen auch auf lokale Variablen umsteigen. Aber warum sollte ich? Das bedeutet nur extra Arbeit, längere Scripte und 0 Nutzen :)

@Lazarus: was spricht gegen ein globales Script (bzw. eine Quest) das kurz gestartet wird, sobald der Gegner tot ist und sich sofort beenden, wenn die Sache mit dem Schwert erledigt ist? Muss ja nicht die ganze Zeit laufen. Oder hab ich jetzt irgendwas nicht bedacht?! Dann hast du auch kein Problem mehr mit RemoveItem/AddItem... und da ich vermute, das Script am Schwert hängt, ist es ziemlich normal das ein AddItem danach (also nach dem Removeitem) nicht mehr funktioniert, denn das Script ist dann sofort hin, sobald das Item nicht mehr da ist und läuft IMO nicht weiter. Warum das Spiel crasht, wenn das AddItem vor dem Removeitem kommt, weiß ich allerdings auch nicht... hab mir das Script nicht wirklich angesehen... vielleicht würde eine Zeitschleife zwischen hinzufügen und entfernen von 3 Sekunden oder so helfen.

kenet_korva
04.05.2007, 16:51
Der elseif Block der Bastardschwert2h abfrage befindet sich in dem if Block der Basardschwert == 0 abfragt das bedeutet ungefähr: If Bastardschwert == 0 && Bastardschwert == 1.
Das könnte es sein.

Lazarus
04.05.2007, 16:56
Der elseif Block der Bastardschwert2h abfrage befindet sich in dem if Block der Basardschwert == 0 abfragt das bedeutet ungefähr: If Bastardschwert == 0 && Bastardschwert == 1.
Das könnte es sein.
Das sollte eigentlich funktionieren, habe das ganze ja aus dem Menu-Mode-Script vom unsichtbaren Activator kopiert.

kenet_korva
04.05.2007, 17:00
Echt? Genau so? :confused: Also dann bin ich im Moment auch überfragt.
Tut mir leid. Aber im Fall des Falles würde ich dann auf die alte Variante zurückgreifen bevor wir hier lange herumspekulieren.

Lazarus
04.05.2007, 21:26
Ja, wäre wohl besser. ;)
Wegen dem zu starken Schwert...ich glaub' ich mache da eine kleine Mini-Quest draus...

...habe aber wieder eine neue Frage. Und zwar will ich dem Spieler per Skript eine bestimmte Menge an Mana bzw Leben abziehen. Wie geht das?

kenet_korva
05.05.2007, 08:20
Wenn du einen bestimmten Wert meinst, dann ist wohl ein per Script gecasteter spell die beste Lösung.
Wenn du einen Anteil in Prozent meinst, müssen wir uns ein nettes Script überlegen. (Aber ch frag lieber nochmal genau nach, damit ich mir nicht umsonst soviel Arbeit mache ;) )

Lazarus
05.05.2007, 12:20
Sagen wir mal 20 Mana, kein prozentualer Wert.
Habe übrigens wieder ein neues Problem. Ein Skript enabled einen Gegner, der allerdings brav stehen bleiben soll bis der Spieler in seine Nähe kommt und erst dann angreift. Das mit dem Angreifen funktioniert auch, aber anstatt stehen zu bleiben latscht der Gegner quer durch den Raum und bleibt erst an der gegenüberliegenden Wand stehen. Die Wander-Packages unter AI habe ich entfernt, das kann's also nicht sein...

kenet_korva
05.05.2007, 12:45
Überprüf mal die Pathgrids

Lazarus
05.05.2007, 13:17
Direkt unter der Stelle, an der der Gegner enabled wird, habe ich extra einen ganzen Batzen an Pathgrids aufeinandergeklebt, aber es nützt nichts.

kenet_korva
05.05.2007, 13:20
Hat der Gegener vielleicht noch ein altes Script dranhängen?

Lazarus
05.05.2007, 13:30
Nein, kein Script. Kein Script, keine AI, da ist eigentlich nichts was ihn dazu veranlassen könnte.
Das kuriose ist, er latscht sogar unbeschwert durch den Raum wenn man ihn bei Movement auf 'None' gestellt hat.

kenet_korva
05.05.2007, 13:45
http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif Humpf!... Das ist dann wohl ein AI-Fehler. Einer von der Sorte der durch irgendwas ausgelöst wird, mit dem man ihn niemals in Verbindung bringen würde.
Um es mit den Worten von...irgendsoeinem Bethedamitarbeiter zu sagen:
You move something here and it moves something over there.
Ich weiß wirklich nicht weiter. meine Lösung für solche Probleme ist meist: nochmal machen. Also den Gegener, aber am besten mit einer anderen Basis sofern du einen alten kopiert hast.

Lazarus
05.05.2007, 13:51
Okay, mal sehen, irgendwie wird's schon...kommen wir also mal zum 20-Mana-absaugen-Script zurück.^^

Rung
05.05.2007, 15:44
Du brauchst einfach eine Eigenschaft mit Schaden Intelligenz oder Schaden: Magicka, die Du dem Spieler im richtigen Moment auf den Buckel hext. :D
Mit Player.AddSpell "IDDerEigenschaft".

Lazarus
05.05.2007, 15:48
Gibt es da keine andere Möglichkeit?
Auf diese Weise wird nämlich der erlittene Schaden durch Resistenzen/Willenskraft verringert bzw völlig abgeblockt. Davon abgesehen ist das generell etwas unpassend - ich plante nämlich, einen Zauberstab zu machen, der anstelle von Ladungen Mana benötigt. Also bei jedem Schuss eine bestimmte Menge an Mana abzwackt.

Rung
05.05.2007, 15:51
Leider nicht, von den Set/ModAv-Funktionen würde ich die Finger lassen. Ohne OBSE wird sich da kaum etwas anderes machen lassen.

Lazarus
05.05.2007, 15:57
So ein Mist aber auch...ernsthaft, langsam will ich wieder mein gutes, altes Aurora Toolset zurück...damit hatte man wenigstens immer die volle Kontrolle über das Spiel, auch wenn's teilweise sakrisch kompliziert war.

Mit ModAv habe ich auch schlechte Erfahrungen gemacht, das hat zwar an für sich prima funktioniert, allerdings konnte man sich früher oder später weder mit Rasten noch mit Zaubern noch mit Tränken heilen.

~Ryan~
06.05.2007, 14:12
Zu deinem Gegner:

Gib dem Mal ein Energy-Level von 0 . Erste Zeile da wo du die Packages gelöscht hast.



Und zwar will ich dem Spieler per Skript eine bestimmte Menge an Mana bzw Leben abziehen. Wie geht das?

Begin ON Whatever

short PCManaDrain

set PCManadrain to player.getbaseav magic

if PCManadrain >= 20

cast LazarusEvilManaDrainSpell player

endif

end

und dein LazarusEvilManaDrainSpell zieht dann Magie ab.... einfach über das Zauber Menü... nen Zauber machen..

<- würde ich nur mit nem Timer einbetten (der beginnt onGame mode während der obere Script teil dann bei 0 seinen Zauber ausführt) der für die Länge des Zaubers gilt...

;)

Gruß
Ryan

Lazarus
06.05.2007, 14:59
Danke, werde ich mal ausprobieren. Aber wie gesagt, afair wird die abgezogene Menge an Mana durch Resistenzen/Willenskraft reduziert.
Gibt es da wirklich keine Skript-Möglichkeit? Wenn man den Mana-Wert auslesen kann, dann müsste man ihn doch auch verändern können...


Zu deinem Gegner:

Gib dem Mal ein Energy-Level von 0 . Erste Zeile da wo du die Packages gelöscht hast.
Das funktioniert leider schonmal nicht.

~Ryan~
06.05.2007, 16:30
Du willst mir erzählen, dass ein NPC mit Energy-Level von 0 und einem AI-Package mit "StayatEditorLocation" durch die Gegend wandert???????? Niemals. ;)

Oder versuch mal das EditorLocation ;) <- vielleicht hast du ja nur "Currtent" an....

Und wenn du mir jetzt wieder sagt: Nein, Ryan du Pflaume der läuft immer noch... dann nimm mal ein Savegame wo du nicht in der Zelle bist und lauf dann mal rein.... und wenn du dann behauptest der mache das immer noch.... dann schick mir das bitte... das will ich mit eigenen Augen sehen bevor ich das glaube....


Danke, werde ich mal ausprobieren. Aber wie gesagt, afair wird die abgezogene Menge an Mana durch Resistenzen/Willenskraft reduziert.
Gibt es da wirklich keine Skript-Möglichkeit? Wenn man den Mana-Wert auslesen kann, dann müsste man ihn doch auch verändern können...

Ich verstehe das jetzt nicht... das ist doch ein Script... was willst du denn da jetzt noch? Ist doch schnuppe wie die Mana-Menge sich reduziert... du musst doch nur den Zauber der nichts bewirkt halt die entsprechende Menge kosten lassen.... dann "verbraucht" es Mana....

Gruß
Ryan

Lazarus
06.05.2007, 16:49
Du willst mir erzählen, dass ein NPC mit Energy-Level von 0 und einem AI-Package mit "StayatEditorLocation" durch die Gegend wandert???????? Niemals. ;)
StayatEditorLocation? Was für'n Teil?
Das Viech ist auch dann noch fröhlich durch die Gegend gewandert als ich Movement auf None gestellt hatte...ist übrigens eine Kreatur, kein NPC.

edit: habe mal einen alten Spielstand geladen als ich die zelle noch nicht betreten hatte. Der einzige Unterschied ist, dass die Kreatur nun sofort losläuft sobald sie enabled wurde, sonst hat das immer 'ne kurze Weile gedauert.



Oder versuch mal das EditorLocation ;) <- vielleicht hast du ja nur "Currtent" an....
Was für'n Teil?²



Ich verstehe das jetzt nicht... das ist doch ein Script... was willst du denn da jetzt noch? Ist doch schnuppe wie die Mana-Menge sich reduziert... du musst doch nur den Zauber der nichts bewirkt halt die entsprechende Menge kosten lassen.... dann "verbraucht" es Mana....
Ach so meinst du das...dummerweise lässt sich der Spieler nicht per Skript dazu zwingen, einen Zauber zu sprechen. Das funktioniert nur mit Kreaturen und NPCs.

kenet_korva
06.05.2007, 17:31
Was für'n Teil?²


Er meint ein AI Package classe Travel mit Location "EditorLocation" ;)

Lazarus
06.05.2007, 17:49
Das ist ja interessant...mit diesem (http://img354.imageshack.us/img354/8388/unbenanntzy0.jpg) Package läuft das Viech los, zur nächsten Wand, bleibt kurz stehen, dreht sich um, läuft zurück und stellt sich genau da hin wo ich ihn ursprünglich haben wollte/im CS platziert habe.^^

edit: er läuft aber auch erst dann los, wenn man in die Nähe/Sichtweite kommt. Bleibt man einfach im Nebenraum stehen, greift er auf einmal an, obwohl er laut Script eigentlich erst angreifen sollte, wenn man einen bestimmten Trigger auslöst.

Übringens, ich habe verhindert dass er angreift, indem ich seinen Personality-Wert auf 255 gestellt habe - aber der übliche Weg ist das nicht, oder? ;)

~Ryan~
06.05.2007, 18:27
Ach so meinst du das...dummerweise lässt sich der Spieler nicht per Skript dazu zwingen, einen Zauber zu sprechen. Das funktioniert nur mit Kreaturen und NPCs.

Tja, dann frage ich mich wie Beth das im Ori-Spiel geschafft hat ;) ... versuch es doch einfach mal... und dann diskutieren wir ob es wirklich nicht funzt...

So zum NPC:

Du nimmst jetzt das Ori-Ai-Package AAAStayatEditorLocation... Nix mehr sonst (die StayatCurrentLocation haben ein Interior dabei mit nem Wert von 256)... ist das eine unique Kreatur? Wenn ja! Super... gib der einen Agression-Wert von 10 (bis 30 kannst du) kein Fraktionen und in den Trigger welcher onTrigger Player haben sollte weil ansonsten alles (auch Marker) diesen Trigger auslösen... RefKreatur.startCombat Player ... ich empfehl dir gleich das CS für Dummies wenn du so weitermachst...lol ;) *chichichi
<- Gerade sowas hab ich in RoR gemacht... und es funzt... lol ;)

Gruß
Ryan

Edit: Nur für den Fall, nicht das an der KReatur ein Script hängt... du hast irgendwo was ganz pissiges falsch eingestellt oder übersehen, deswegen komme ich damit...

Lazarus
06.05.2007, 18:46
Tja, dann frage ich mich wie Beth das im Ori-Spiel geschafft hat ;) ... versuch es doch einfach mal... und dann diskutieren wir ob es wirklich nicht funzt...
Stimmt, hast recht, funktioniert schon. Allerdings frage ich mich ob das auch so toll ist, jedes mal, nachdem man mit dem Stab geschossen hat, noch den 'Ich-zieh-dir-Mana-ab-Spell' zu zaubern...^^

Wie auch immer, das mit dem wanderlustigen Gegner funktioniert jetzt. Also abgesehen davon, dass er immernoch kurz durch die Gegend spaziert bevor er zu seinem Ausgangspunkt zurückkehrt und sich brav hinstellt. Kann man aber eigentlich sogar so lassen...abgesehen von den Schritten dürfte der Spieler davon nichts mitbekommen. Notfalls lege ich ihm per Script einen schweren Gegenstand ins Inventar, damit er sich nicht mehr bewegen kann.^^

~Ryan~
06.05.2007, 18:56
Notfalls lege ich ihm per Script einen schweren Gegenstand ins Inventar, damit er sich nicht mehr bewegen kann.^^

lol... ja so würde ich das und jeder andere auch machen.... lol... ;) Du hast aber auch keine blauen Pathgrids da verlegt und der NPC schwebt auch nicht beim Enablen in der Luft? Und du guckst auch immer schön mit nem Speicherstand BEVOR du in der Zelle bist... denn ansonsten kriegst du von deinem Save-Game ein ständiges Dejavu vorgespielt... <- das nimmt die Veränderung nämlich dann nicht an ...


Allerdings frage ich mich ob das auch so toll ist, jedes mal, nachdem man mit dem Stab geschossen hat, noch den 'Ich-zieh-dir-Mana-ab-Spell' zu zaubern...^^

Joa. Bis er nix mehr hat, ne. Du bist auch ne Marke da kommst du mit so einer neuen Info... also Player hat Stab... hubdidu... Zaubert... verliert Zwanzig Mana... und das war es? So soll das aussehen? Immer wenn er mit dem Stab zaubert? Oder nur ein einziges Mal? ... ;) .....

Gruß
Ryan

Lazarus
06.05.2007, 19:00
lol... ja so würde ich das und jeder andere auch machen.... lol... ;) Du hast aber auch keine blauen Pathgrids da verlegt und der NPC schwebt auch nicht beim Enablen in der Luft? Und du guckst auch immer schön mit nem Speicherstand BEVOR du in der Zelle bist... denn ansonsten kriegst du von deinem Save-Game ein ständiges Dejavu vorgespielt... <- das nimmt die Veränderung nämlich dann nicht an ...
Keine blauen Pathgrids und Zelle zum ersten mal betreten.
Zum Test kann ich den Gegner auch nochmal neu einfügen, vielleicht bringt's ja was.



Joa. Bis er nix mehr hat, ne. Du bist auch ne Marke da kommst du mit so einer neuen Info... also Player hat Stab... hubdidu... Zaubert... verliert Zwanzig Mana... und das war es? So soll das aussehen? Immer wenn er mit dem Stab zaubert? Oder nur ein einziges Mal? ... ;) .....
Der Stab soll irgendeinen mehr oder weniger stinknormalen Zauber ausspucken - aber eben anstelle von Ladungen Mana verbrauchen. Und ja, bei jeder Benutzung. ;)

~Ryan~
06.05.2007, 19:09
Ja, dann muss die Script-Line an den Stab und ... öhhhhhhhhhhhhhhhhh.... öhm... nicht onuse.... sonder... On Activate? Sowat halt... ist nur die Veränderung des Begin Blocks... und wenn das einmal durchläuft mit z.B. doonce dann müsste er es bei jedem abwurf eines Feuerballes oder was auch immer seine Scriptline runterrasseln... joa...


Keine blauen Pathgrids und Zelle zum ersten mal betreten.

Und Gegner auch nicht in deR Luft? Wenn du die nämlich auf den Boden fallen lässt suchen die sich DAS NÄCHSTE Pathgrid von ihnen Entfernt (also nicht das unter ihnen) und laufen da hin.... ;)

Gruß
ryan

Lazarus
06.05.2007, 19:12
Und Gegner auch nicht in deR Luft? Wenn du die nämlich auf den Boden fallen lässt suchen die sich DAS NÄCHSTE Pathgrid von ihnen Entfernt (also nicht das unter ihnen) und laufen da hin.... ;)
Nein. Erfahrungsgemäß werden Gegner auch nur beim nächsten Pathgrid enabled, ganz egal ob in der Luft oder nicht. Deshalb habe ich unter den Füßen von einigen wenigen Exemplaren nen' ganzen Batzen an Pathgrids druntergeklebt. Damit sie nicht auf die Idee kommen, ein paar Meter daneben zu spawnen. Und ja, alle schön ordentlich, Fehler dürfte es dadurch also keine geben. ;)

Rung
06.05.2007, 19:16
Hm,

sind da vielleicht andere NPCs in der Nähe. Vielleicht will er ja nur ein gepflegtes Pläuschchen halten und merkt gar nicht, dass er da eine Wand dazwischen hat.:confused:

EDIT: Eine Creature? Gut, dann kann er natürlich kein Pläschchen halten, auch wenn er es noch so gern wollte.

Lazarus
06.05.2007, 19:20
Hm,

sind da vielleicht andere NPCs in der Nähe. Vielleicht will er ja nur ein gepflegtes Pläuschchen halten und merkt gar nicht, dass er da eine Wand dazwischen hat.:confused:
Nein, keine NPCs im gesamten Dungeon. Nur ein paar DeadSkeletons, zu denen er immer hinläuft - aber er selbst ist ja schließlich auch kein NPC, sondern eine Creature.

Lazarus
08.05.2007, 17:12
Gibt es eine Möglichkeit, zu verhindern, dass einem bestimmten Gegner die Waffe aus der Hand geschlagen wird?

kenet_korva
08.05.2007, 18:27
Wenn du einen OnDeath befehl ausführst läuft dieser bevor die Waffe als WorldObject erscheint. Das heißt, wenn der Gegner stirbt, kannst du einen RemoveItem Block durchführen und dann einen AddItem dann hat er die Waffe wieder im Inventar, aber halt nicht ausgerüstet.

Lazarus
08.05.2007, 18:32
Ich glaube du hast mich falsch verstanden, ich will verhindern dass der Spieler dem Gegner während des Kampfes die Waffe aus der Hand schlagen kann(Perk, den man ab Waffenskill Stufe 50 bekommt). ;)

kenet_korva
08.05.2007, 18:35
Oh, wenn du ihm Geschicklichkeit 100, Waffenskill 100 u.s.w gibst dürfte sich die Chance auf einen sehr, sehr gerigen Wert reduzieren.

Lazarus
08.05.2007, 18:42
Oh, wenn du ihm Geschicklichkeit 100, Waffenskill 100 u.s.w gibst dürfte sich die Chance auf einen sehr, sehr gerigen Wert reduzieren.
Naja, gestern konnte ich ihm mit meinem Level 12 Char(gerademal 50 Punkte auf Schwert) drei mal in kurzer Folge die Waffe wegschlagen...und er hat 100 dex und auch 100 Waffenskill. Ich glaube ich leg ein Script auf sein Schwert, das ihm sofort ein neues ins Inventar schiebt und ausrüstet, sobald sein altes flöten geht.

Lazarus
10.05.2007, 14:13
Mal eine ganz andere Frage an die TES-Lore-Kenner, die eigentlich nichts mit Modding zu tun hat: angenommen ich schreibe ein Tagebuch, das von irgendjemandem während der 1. Ära verfasst wurde. Würde dann dieses '1. Ära' mit im Datum stehen oder nicht? Ich würde jetzt einfach mal sagen, dass die 1. Ära erst in den späteren Ären(Äras? Ärata? Äri?) auch als solche bezeichnet wurde, ist allerdings nur eine Vermutung.

kenet_korva
10.05.2007, 16:05
Kommt denke ich auf den Kulturkreis an, aber generell glaube ich schon, schließlich wird die dritte Ära, auch eben 3. Ära von den Menschen der 3. Ära genannt.

Lazarus
10.05.2007, 16:12
...aber auch nur weil die 1. und 2. Ära vorhergingen, darauf muss nun mal die 3. folgen. Aber was hätte die damaligen Menschen dazu veranlassen sollen, nicht nur eine (neue) Zeitrechnung zu beginnen, sondern das ganze auch noch in Ären zu unterteilen? Könnte ja sein dass die 1. Ära erst in der 2. oder 3. als solche bezeichnet wurde. Außerdem meine ich, mal in Morrowind oder Oblivion irgendetwas von 'alter Zeitrechnung' gelesen zu haben...

edit: es gibt in MW und Obl die Buchreihe '2920', die das letzte Jahr der 1. Ära behandelt. Zeitangaben innerhalb der Handlung werden da immer ohne den Zusatz '1. Ära' gemacht,

24 Sonnenhöhe, 2920
meine Vermutung scheint sich also zu bestätigen...zur Sicherheit seh' ich nachher nochmal in Morrowind nach, vielleicht hat sich in Obl da auch ein Fehler reingeschlichen. ;)

Zetter
10.05.2007, 17:14
Ich glaube weniger dass die erste Ära damals gar keinen Namen hatte. Warscheinlich hatte sie zwei Namen. Unter den Menschen erste Ära, unter den Elfen Ära der Menschen. Die Ären wurden schon seit der Merethischen Ära (übersetzt Ära der Elfen) gezählt. Anscheinend haben die Kaiserlichen oder die Nord die erste Ära dann erste Ära genannt (erste Ära der Menschen). Die Elfen werden warscheinlich nur Ära der Menschen gesagt haben, es war schließlich nicht die zweite Ära der Elfen.

Lazarus
10.05.2007, 17:23
Ich glaube ich lasse das '1. Ära' sicherheitshalber weg - dass es so auf jeden Fall (auch) richtig ist, beweist ja diese Buchreihe.

Gorkon
11.05.2007, 11:44
Gibt es eine Möglichkeit, zu verhindern, dass einem bestimmten Gegner die Waffe aus der Hand geschlagen wird?
Mal dazu ein Gedanke: Ich habe festgestellt, daß dem Spieler Questitem-Waffen (z.B. Rockshatter) nicht aus der Hand geschlagen werden können (logisch, wäre ja eine Möglichkeit, das Teil zu verlieren). Vielleicht gilt das auch für NPC's? Wenn ja, gib der Waffe Questitem-Status und setz selbigen im OnDeath-Block des NPC-Skriptes zurück.

(Macht aber nur Sinn bei einem Einzelgegner mit uniquer Waffe, da SetQuestObject sich immer auf alle Items eines Typs bezieht.)

Lazarus
11.05.2007, 12:20
Das wäre eine gute Möglichkeit...habe es inzwischen allerdings anders gelöst. Sobald ihm die Waffe weggeschlagen wird, bekommt er eine neue. Auf diese Weise könnte man sich zwar theoretisch unendlich viele Schwerter bei ihm abholen - ist aber nicht weiter schlimm, da das ziemlich starke Teil im Inventar des Spielers als normales Standard-Item ankommt. Und wer es schafft, diesen Gegner zu besiegen, der hat auch schon genügend Gold als dass er daraus großartig Profit schlagen könnte.^^

Lazarus
25.05.2007, 20:40
Wieder 'ne Scriptfrage...24 Ingame-Stunden nachdem ein Objekt aktiviert wurde, soll es verschwinden. Wie stelle ich das an?

kenet_korva
25.05.2007, 22:36
Wenn du das Objekt activierst setzt du eine Variable auf GetCurrentGameDay und dann fragst du ab if Variable > GetCurrentGameDay
Disable

Lazarus
26.05.2007, 07:21
GetCurrentGameDay gibt es nicht, habe GetDayOfWeek genommen, funktioniert prächtig. ;)

Habe es gestern erst per GetCurrentTime versucht und wollte das Objekt verschwinden lassen, sobald die Variable +24 Stunden erreicht hat...aber Pustekuchen, die 24 Stunden werden ja nicht kumulativ auf die Variable aufgerechnet.

kenet_korva
26.05.2007, 13:38
Hopla, da hab ich mich wohl grob vertan. Ich meinte eigentlich GameDaysPassed. (Globale) mit der ließe sich sowas auch machen.

Lazarus
26.05.2007, 13:54
An die Globalen Variablen habe ich gar nicht gedacht, habe bisher immer nur auf die Skriptfunktionen geachtet...werd's mir aber merken, danke.

Lazarus
14.06.2007, 20:23
Ich will, dass ein Scriptbefehl ausgeführt wird, sobald der Spieler mit einer (bestimmten, notfalls mit jeder) Waffe gegen einen Activator schlägt.
Dummerweise zeigt OnHit bzw OnHitWith scheinbar nur bei Kreaturen und NPCs Wirkung, aber nicht bei einem Activator. Die reagieren nur auf Zauber, mit verzauberten Waffen wiederum geht's nicht.
Gibt es trotzdem irgendeine Möglichkeit, das zu regeln? Wäre wirklich schade wenn es nicht funktionieren würde.

kenet_korva
14.06.2007, 20:26
Wie wärs mit einem Fake Actor der direkt nebem dem Activator steht, unsichtbar ist, bewusstlos und außerdem nicht Aktivierbar? Sonst fiele mir auch nichts ein.

Lazarus
14.06.2007, 20:30
Ich könnte eine Kreatur basteln, die genauso aussieht wie der Activator.
Da gäbe es allerdings schon das Problem, dass sie wegrutschen könnte/würde...

kenet_korva
15.06.2007, 16:37
Dann nutz einfach die Kreatur selbst als Activator.

Lazarus
15.06.2007, 17:10
Wie gesagt, als Kreatur würde sie bei einem Treffer wegrutschen.

Ich habe das ganze jetzt anders gelöst. Die Waffe, mit der man draufschlagen sollte, ist jetzt ein Stab, der 'nen unsichtbaren Scripted Spell auslöst. Und der wird vom Activator abgefragt.
Nicht so wie ich es ursprünglich haben wollte, aber auf jeden Fall zufriedenstellend.

Pcuser
15.06.2007, 17:25
Sagmal in der festung rayles oder so gibts doch 2 statuen, die man mit nem pfeil beschießen muss damit ein tor aufgeht. (meine ich zu denken tun:D ) kanns ja mal anschauhen
Hab mal geschaut. Da ist eine Trigzone um ein kleines objekt wo man draufschießen muss und da is folgendes script drauf.


scn TrigZoneANY01reset2SCRIPT

; Activates linked Parent object once
; Any object will activate this (arrows, havok objects)
; 2 second reset timer

short triggered
ref target
ref mySelf
float timer

begin onTrigger

if triggered == 0
set target to getParentRef
set mySelf to getSelf
target.activate mySelf 1

set triggered to 1
set timer to 2
endif

end

begin gameMode

if triggered == 1 && timer <= 0
set triggered to 0
endif

if timer >= 0
set timer to timer - getSecondsPassed
endif

end

Also ganz simpel. aber da du ja ein großes objekt willst is dass vielleicht nicht das gelbe vom Ei

Lazarus
15.06.2007, 18:43
Ja, mit einem Pfeil. Das ist der springende Punkt. Mit Pfeil+Bogen funktioniert das ganze, nicht aber mit Nahkampfwaffen.

kenet_korva
15.06.2007, 19:30
Dann leg zusätzlich ein Script auf die Kreature, dass wenn die Distanz zum OrgianlPunkt größer als...sagen wir...genau 1, ist, wird sie zurückteleportiert. Das sollte, da die Distanz so gering ist, nicht auffallen.

Lazarus
15.06.2007, 19:55
Würde mich wundern wenn das so funktioniert, erfahrungsgemäß arbeitet Oblivions Mechanik ja eher unsauber.
Davon abgesehen könnte man die Kreatur auch dank Perks lähmen bzw umschlagen, und was weiß ich alles noch.
So wie ichs jetzt habe, lasse ich es auch. Ist gut genug, kommt auch gut rüber. Aber vor allem: es funktioniert tadellos. ;)

kenet_korva
16.06.2007, 10:31
Nicht wenn du sie resistenz gegen Lähmung machst und mit den richtigen Animationen dafür sorgst, dass sie nicht umfällt wenn sie eigentlich umfallen sollte. Also mit einer leeren Ani die sie einfach stehen lässt.

Lazarus
16.06.2007, 10:48
Es gibt keine Umfall-Animation. Das wird von Havok geregelt.
Außerdem würde man ein zusätzliches Matsch-Geräusch beim Schlagen hören, was gänzlich ungewollt ist. Bei den Activatoren handelt es sich nämlich um fünf Glocken, die nur klingen sollen, nicht matschen. So gesehen ist meine Lösung sogar noch besser als das was ich anfangs versucht habe, da würde man nämlich ebenfalls ein zusätzliches Geräusch(Waffe auf Metall) hören wenn man draufschlägt.

kenet_korva
16.06.2007, 12:41
Havoc greift aber erst durch die Animation. Das ist bei der Death-Idle bei NPCs genauso.

Haldor
17.06.2007, 00:20
Lazarus hat da schon recht. Für den Zweck, den er angegeben hat, ist die Lösung mit dem Stab und dem Spell wohl am besten. Das Problem wird nur sein, dass man mit dem Stab die Glocken auch auf Entfernung leuten können wird, da man Stäben ja nur "auf Ziel"-Effekte zuweisen kann. Das könnte man damit umgehen, dass man in das Skript der Glocken schreibt, dass sie auf den auf sie mittels Stab gecasteten Spell nur dann reagieren, wenn sich der Spieler in unmittelbarer Nähe befindet (GetDistance < 200 oder so, müsste man testen, welcher Abstand angemessen erscheint).

Schönen Gruß, Haldor.

Lazarus
17.06.2007, 09:36
Das Problem wird nur sein, dass man mit dem Stab die Glocken auch auf Entfernung leuten können wird, da man Stäben ja nur "auf Ziel"-Effekte zuweisen kann. Das könnte man damit umgehen, dass man in das Skript der Glocken schreibt, dass sie auf den auf sie mittels Stab gecasteten Spell nur dann reagieren, wenn sich der Spieler in unmittelbarer Nähe befindet (GetDistance < 200 oder so, müsste man testen, welcher Abstand angemessen erscheint).
Stimmt, danke für den Hinweis, habe bisher noch gar nicht daran gedacht dass man das Auslösen der Glocken von Weitem so verhindern könnte.

Übrigens würde es auch der Performance ganz sicher nicht guttun, würde ich anstelle von fünf Activatoren fünf Creatures platzieren. ;)

kenet_korva
17.06.2007, 09:44
Ja wenn es fünf sind... ;) Ne ihr habt schon recht, bei Glocken wären Creatures sicher suboptimal. Aber bei anderen Dingen (zb. Lorkahns Herz in MW also organisches) würde ich das weiterhin eher nutzen.

Lazarus
23.06.2007, 22:24
Ich habe gerade ein sehr seltsames Problem...der Spieler aktiviert einen Activator und wird in einen Raum zu einen NPC teleportiert.
Der NPC hat einen simplen Script, der mit onDeath ausgelöst wird und erst eine globale Variable auf 1 setzt, einen Activator enabled und außerdem den Spieler zurückteleportiert.
Soweit, so gut, das funktioniert alles.
Aber sobald man zurück ist, wird man alle paar Sekunden abermals zu diesen Marker teleportiert, als wäre der NPC ein zweites mal gestorben...:confused:

Ich habe schon alles mögliche versucht, auch per Variable festgelegt dass der Spieler eigentlich nur ein einziges mal teleportiert werden kann, ich habe sogar in den Script geschrieben dass der NPC nach seinem Ableben zusätzlich noch deaktiviert werden soll, aber das hilft alles nichts.

edit: Problem scheint fürs erste dank weiterer Variablen-Verschachtelung gelöst.

Haldor
23.06.2007, 23:47
Der Teleport-Code Player.MoveToMarker steht im OnDeath-Block? Dann sollte er eigentlich auch nur einmal ausgeführt werden... Versuch doch mal alternativ die Zeile in den GameMode-Block der zu tötenden Kreatur zu schreiben: If dead == 1 && doonce != 1, dann Teleport und set doonce to 1. Damit läuft das definitiv nur einmal. Wenn das Phänomen dann immer noch auftritt, muss es an der Funktion von MoveToMarker liegen. Dann könntest du es mal mit MoveTo oder PositionCell versuchen. Einfach mal rumprobieren... Mehr fällt mir zu diesem seltsamen Problem gerade nicht ein.

Schönen Gruß, Haldor.

Lazarus
23.06.2007, 23:55
MoveToMarker? Kannte ich bisher gar nicht, habe schon immer MoveTo genommen. Gibt es da einen Unterschied?
Naja, jetzt funktioniert's ja...trotzdem seltsam.

Haldor
24.06.2007, 14:28
MoveToMarker MarkerID bewegt den Actor halt zu dem genannten Marker, wobei man die ReferenzID angeben muss und nicht die BasisID. Wenn man einen XMarkerHeading nimmt, wird auch gleich die Blickrichtung übernommen. Bei MoveTo muss man Koordinaten und Blickwinkel angeben. PositionCell ist wie MoveTo, nur für den Transfer zwischen Zellen, was bei MoveTo wohl nicht immer richtig klappt. Will man übrigens andere Objekte als Actors bewegen, so muss man etwas umständlicher Skripten. Das gilt z.B. für Container, Activators oder Lights:


myObject.disable
myObject.moveTo [location]
myObject.enable
set xp to myObject.getPos x
myObject.setPos x xp
Quelle: CS-Wiki. Selbst getestet und funktionstüchtig.

Was hast du nun eigentlich geändert, damit es klappt? Oder hat sich das Problem von selbst gelöst?

Schönen Gruß, Haldor.

kenet_korva
24.06.2007, 14:38
Ähm, Moveto funktioniert genausogut auf Marker. Blickrichung wird auch genommen. Und Moveto funktioniert auch sehr gut zwischen Zellen.

Lazarus
24.06.2007, 15:02
Was hast du nun eigentlich geändert, damit es klappt?

begin onDeath
if dead == 0
set dead to 1
endif
end


begin GameMode
if dead == 1
set globalevariable to 1
activator.enable
set dead to 2
player.moveto marker
endif
end

seit die zusätzliche if-Bedingung im onDeath-Block mit drinsteht, läuft es.

Haldor
24.06.2007, 15:18
Ähm, Moveto funktioniert genausogut auf Marker. Blickrichung wird auch genommen. Und Moveto funktioniert auch sehr gut zwischen Zellen.
Kannst mir ruhig glauben, dass ich schon viel damit gearbeitet habe und weiß, wovon ich rede. Nicht in jedem Fall ist MoveTo die optimale Lösung! ;)

@ Lazarus
Ja, so ists schön! Na dann sieh mal zu, dass Ivellon zügig fertig wird! ;)

Schönen Gruß, Haldor.

kenet_korva
24.06.2007, 16:26
:rolleyes: Nein, und was glaubst du warum ich hier mache was ich mache. Ein Gewisser Stand an Wissen wird auch von mir verlangt.
Erklär mir doch bitte die Vorteile die Moveto zur "besseren Lösung" machen. Überhaupt scheint aus deiner Beschreibung in deinem vorherigen Post, Moveto nicht als die bessere Lösung hervorzugehen.


MoveToMarker MarkerID bewegt den Actor halt zu dem genannten Marker, wobei man die ReferenzID angeben muss und nicht die BasisID. Wenn man einen XMarkerHeading nimmt, wird auch gleich die Blickrichtung übernommen. Bei MoveTo muss man Koordinaten und Blickwinkel angeben.

Lazarus
24.06.2007, 16:40
Nun streitet euch mal nicht.

Zum MoveTo-Befehl:

If this function is used to move the player, it will also act as a Return function -- no following lines of the script will be processed.

das könnte vielleicht sogar den Fehler ausgelöst haben.
Angaben wie Koordinaten/Blickrichtung ist bei MoveTo übrigens optional.

Rung
24.06.2007, 16:44
Hallo,

also zum MoveTo/MoveToMarker-Problem:
Meiner Meinung nach gibt es zwischen den beiden Funktionen keinen großen Unterschied.
MoveToMarker ist spezieller, Objekte werden zu einem Marker bewegt.
Mit MoveTo kann das Objekt auch zu anderen Objekten bzw. Koordinaten bewegt werden. Die Angabe der Koordinaten ist jedoch optional, d.h. die müssen nicht unbedingt angegeben werden.
Weiterhin müsste man testen, ob es noch weitere Unterschiede gibt. Z.B. entspricht ein MoveTo, sollte es auf den Player angewandt werden, einem Return. Ob das beim MoveToMarker genauso ist, kann ich, wie gesagt, nicht bestätigen. Das muss man ausprobieren.
Was jetzt aber der große Unterschied an diesen beiden Funktionen ist, kann ich nicht genau sagen, denn MoveTo kann alles, was auch MoveToMarker kann.

Edit: Äh ... ja, wie Lazarus sagt, nur umständlich ausgedrückt. :D

Haldor
24.06.2007, 17:36
:rolleyes: Nein, und was glaubst du warum ich hier mache was ich mache. Ein Gewisser Stand an Wissen wird auch von mir verlangt.
Erklär mir doch bitte die Vorteile die Moveto zur "besseren Lösung" machen. Überhaupt scheint aus deiner Beschreibung in deinem vorherigen Post, Moveto nicht als die bessere Lösung hervorzugehen.

:rolleyes: Erstens habe ich dir keinerlei Kompetenzen abgesprochen, zweitens habe ich nicht gesagt, dass MoveTo "besser" sei als MoveToMarker. Ich persönlich favorisiere lediglich MoveToMarker. Es sollte ja jedem Modder erlaubt sein, seinen persönlichen Skript-Stil zu entwickeln. Aber wie Meister Rung schon sagte, sind die Unterschiede da wohl recht diffus. Hauptsache ist aber doch, dass die Skripte im Endeffekt so funktionieren, wie man es haben will. Und das Ziel wurde in diesem konkreten Fall erreicht. Also freuen wir uns doch einfach und warten auf das nächste Problem, das es zu lösen gilt! ;)

Schönen Gruß, Haldor.

Lazarus
03.07.2007, 18:12
Ein Activator verschießt durch einen Script einen Feuerball mit Flächenwirkung. Kann ich irgendwie dafür sorgen, dass der Spieler von der Schadenswirkung verschont bleibt?

Rung
03.07.2007, 18:19
Wenn der Activator durch den Spieler direkt aktiviert wird, würde ich empfehlen, den Spieler den Fläschenzauber wirken zu lassen. Ansonsten mit einer zeitweiligen 100%igen Magie-/Feuerresistenz? :\

Lazarus
03.07.2007, 18:38
Wenn ich den Player per Script einen Spruch casten lassen will, funktioniert das nie - es tut sich einfach nichts.

Rung
03.07.2007, 18:41
Hm,

und was ist, wenn Du das Script des Ayleiden-Brunnen für Deine Bedürfnisse abänderst?

GlasMond
03.07.2007, 18:50
Hast du den Spruch auch auf Novice oder Häckchen bei AutoCalculate weggemacht?

Lazarus
03.07.2007, 18:56
und was ist, wenn Du das Script des Ayleiden-Brunnen für Deine Bedürfnisse abänderst?
Ayleiden-Brunnen und Menhire verwenden auch nur den Befehl player.cast zauberxyz. Nur funktioniert es da.


Hast du den Spruch auch auf Novice oder Häckchen bei AutoCalculate weggemacht?
Habe ich.

Rung
03.07.2007, 19:06
Das liegt wohl daran, dass es ein Range-Spruch ist.
Aus dem Wiki unter dem Eintrag zu Cast (http://cs.elderscrolls.com/constwiki/index.php/Cast):
This function can be used to force the player to cast a spell on himself, but cannot force him to cast Touch or Target range spells at other actors or objects.

Edit:
Wenn Du den Spruch von einem Activator castest, weißt Du dann wen es alles treffen kann? D.h. sind Dir jene, die Du damit verletzen willst, bekannt?

GlasMond
03.07.2007, 19:10
Vielleicht gibt es ein Problem mit Zaubern auf Ziel? Kannst du nicht irgendwie ein Ziel für den Zauber angeben und sehen, ob es dann funktioniert?

edit: Rung war schneller! :D

kenet_korva
03.07.2007, 19:13
Es ließe sich, (ich glaube Rung hat etwas in der Art gemeint) machen, indem du einen Actor (vorzugsweise unsichtbar ;) ) auf den Player setzt der dann auf das Ziel den Zauber spricht. Es ließe sich zwar denke ich auch hinkriegen, dass der Spieler die Animation abspielt, aber es würde nicht perfekt aussehen und imho sehr nahe an der Schmerzgrenze liegen.

Rung
03.07.2007, 19:14
Wenn alle, die Du damit treffen willst, Untote sind, kannst Du die Factions und eine TriggerZone nutzen. Auf Knopfdruck setzt Du die Variable TriggerZoneOfFireThingieRef.Start auf '1' und alle Viecher, die sich Untote schimpfen und innerhalb der TriggerZone sind, werden getroffen (theoretisch -> noch nie probiert)

Scriptname TriggerZoneOfFireThingie

short Start
ref target

Begin OnTrigger

if ( Start == 1 )
set target to GetActionRef

if ( target.GetInFaction Undead == 1 )
set Start to 0
Aktivator.cast Zauberxyz target
endif
endif

End

kenet_korva
03.07.2007, 19:26
Ich fürchte, is nur ne Vermutung weil der Block dann nur einmal durchläuft und es demnach "target" auch nur einmal gesetzt wird. Aber bitte, überrascht mich (Genau sowas brauche ich nämlich auch und wenns jetzt klappt, erspart mir das viel Zeit. :D

Lazarus
03.07.2007, 19:32
Soll grundsätzlich mit allen Gegnern/NPCs funktionieren.
Übrigens kein Activator, sondern ein Marker, habe mich vertan.

Das ist jetzt allerdings etwas seltsam...ich habe jetzt zwei Marker. Marker A wird zum Target teleportiert und Marker B zum Spieler. Marker A castet den Feuerball mit Flächenwirkung auf Target, Marker B castet 100%ige Feuerresistenz über zwei Sekunden auf den Spieler. All das gleichzeitig. Target steht dabei immer ein Stück vom Player entfernt, sodass die Feuerresistenz diesen logischerweise früher oder zumindest gleichzeitig erriechen müsste als die Flächenwirkung vom Feuerball. Dem ist aber nicht so, der Player bekommt trotzdem den ganzen Schaden ab. :confused:

Rung
03.07.2007, 19:45
In der Diskussion gab es mal einen interessanten Thread zu den Verhältnissen von Resistenzen. Ich selbst weiß nicht mehr genau, wie die reagierten, aber Resis funktionieren in Oblivion nicht so, wie man das vielleicht vermuten könnte. 100% sind nicht gleich 100%.

Danke Kenet, sowas hatte ich schon vermutet, aber im Wiki auf die Schnelle nichts gefunden und wie gesagt, selbst probiert, hab ich das auch noch nicht.

kenet_korva
03.07.2007, 19:53
Ist der Marker ein Static? Dann kann es nähmlich nicht funktionieren. Hatte ich auch schonmal. Statics scheint Oblivion nichts Casten zu lassen. Momentmal, ich lese es grad nochmal...heißt das, es funktioniert prinzipiell schon? :eek:
Dann lag der Fehler damals wohl doch woanders.

Lazarus
03.07.2007, 19:54
Ha, jetzt hab' ichs hingekriegt. Habe den Scipt etwas verändert, sodass Marker A nun 50 Einheiten über Marker B steht und somit einen Sekundenbruchteil später trifft als der Resistenz-Spruch. Das funktioniert prima. :)

...kommen wir gleich zur nächten Frage. Ich habe eine gescriptete Verzauberung auf einer Waffe. Und will in diesem Script bei einem Treffer auslesen können, wer die Waffe trägt bzw. wer damit zugeschlagen hat. Wie mache ich das?

@kenet_korva: alle Persistent References können casten, auch Statics.

Rung
03.07.2007, 19:59
Ha, jetzt hab' ichs hingekriegt. Habe den Scipt etwas verändert, sodass Marker A nun 50 Einheiten über Marker B steht und somit einen Sekundenbruchteil später trifft als der Resistenz-Spruch. Das funktioniert prima
:eek: Dazu sag ich gar nichts ... Oblivion ... :rolleyes:

Wer die Waffe hat? Das kann man theoretisch nicht feststellen, aber wenn die Waffe vorher aktiviert wird, geht es schon. Was willst Du denn über den Träger der Waffe wissen?

Lazarus
03.07.2007, 20:05
Was willst Du denn über den Träger der Waffe wissen?
Das frage ich mich auch gerade. Mein Kurzzeitgedächtnis hat in letzter Zeit ganz schön nachgelassen...vielleicht fällt es mir ja wieder ein...http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif

Uriel Septim VII
05.07.2007, 13:58
Das ist hier zwar seit einigen Seiten für mich nur Fachchinesisch, aber ich habe noch etwas nachzureichen zu der allerersten Frage in diesem Thread, bezüglich den Grenzen.

Ich habe nämlich gerade das selbe Problem, um genau zu seinen habe ich eine Burg auf einem Bergrücken gebaut, die jetzt leider halb außerhalb der begehbaren Karte liegt. Ich habe dann in einem anderen Forum gefragt und mir hat jemand geantwortet, dass ich "einfach" die Collisionsboxen löschen und neue platzieren sollte, wie ich das genau machen soll (dass ich sie wenigstens sehen kann) weis ich bis heute nicht. Existieren diese Collisionsboxen eigentlich und wenn ja, wie werden sie sichtbar?

Grüße, der Kaiser. ^_^

Lazarus
05.07.2007, 14:16
Existieren diese Collisionsboxen eigentlich und wenn ja, wie werden sie sichtbar?
Keine Kollisionsboxen, es sind nur Grenzen, die im Region Editor verschoben werden können. Siehe diesen (http://www.multimediaxis.net/showpost.php?p=1764456&postcount=3) Post.

Uriel Septim VII
05.07.2007, 14:26
Hatte das bei dir jetzt noch "Nebenwirkungen"? Ansonsten werde ich das auch einfach machen. Mein Mod muss jetzt nämlich einmal fertig werden, da ich ihn für jemand bastle, nicht dass am Ende vier liebevoll eingrichtete Interiors futsch sind. :D

Lazarus
05.07.2007, 14:29
Hatte es. Dadurch wurden eine Menge Cells verändert, die weitab der eigentlichen Stelle lagen. Aber diese Änderungen kann man ja rauslöschen.

GlasMond
05.07.2007, 14:40
Hatte es. Dadurch wurden eine Menge Cells verändert, die weitab der eigentlichen Stelle lagen. Aber diese Änderungen kann man ja rauslöschen.

Führt das dann nicht zu einen Riss oder Bruch in der Grenze. Also ähnlich als wenn ich in zwei Cells die Landschaft anhebe und sie in einer davon wieder lösche. Dann entsteht doch ein Riss und der müßte bei der Grenze ja auch entstehen, oder?

Lazarus
05.07.2007, 14:46
Nein. Die Grenze wird meines Wissens nach nämlich separat gespeichert und nicht direkt in den Cells.
Bei mir waren übrigens ca 60% aller Cells verändert nachdem ich die Grenze inerhalb ca 20 Cells verändert hatte...;)

GlasMond
05.07.2007, 14:52
Nein. Die Grenze wird meines Wissens nach nämlich separat gespeichert und nicht direkt in den Cells.
Bei mir waren übrigens ca 60% aller Cells verändert nachdem ich die Grenze inerhalb ca 20 Cells verändert hatte...;)

Widerspricht sich das dann nicht mit der ersten Aussage? Dann wäre eine Cell-Veränderung doch garnicht ausschlaggebend für die Grenze. Oder war das bloß mißverständlich formuliert.

Ich will hier nur versuchen zu verstehen warum und wie was im CS funktioniert. Aber wenn du meinst das gehört hier nicht in deinen Thread höre ich auch sofort auf damit. ;)

Lazarus
05.07.2007, 15:02
Widerspricht sich das dann nicht mit der ersten Aussage? Dann wäre eine Cell-Veränderung doch garnicht ausschlaggebend für die Grenze. Oder war das bloß mißverständlich formuliert.
Letzteres ist der Fall. Ich wollte sagen, dass sich die Grenzenveränderung ungefähr über 20 Cells zog, aber hunderte Cells im ganzen Worldspaßce verändert wurden. Nachdem sämtliche Celländerungen(auch die besagter 20 Cells) rausgestrichen waren, blieb die Grenzenveränderung aber bestehen.

GlasMond
05.07.2007, 15:30
Ah, danke für die Info!

Das bedeutet das Cells zwar als verändert markiert sind aber eigentlich garnichts mit der Grenze zu tun haben. Ich hatte bis jetzt immer etwas Angst mich mal an dieser Grenze zu versuchen, aber das klingt doch gut. Haben die Grenzen dann einen bestimmten Eintrag unter Type oder Ref? Wahrscheinlich irgendwas mit "Border", oder?

Uriel Septim VII
05.07.2007, 16:19
Entschuldigt, aber die Frage muss jetzt sein, ich bin nämlich noch blutiger Anfänger, was CS betrifft. Dieses Löschen der Veränderungen der Cells geschieht im Ladebildschirm unter "Details", oder? Ich habe ja nur vor in einer einzigen Cell geradeeinmal die Hälfte um wenige Einheiten zu verschieben, nicht annähernd so viele wie Lazarus.

GlasMond
05.07.2007, 16:31
Yep, unter Details! Allerdings darf das PI dazu noch nicht auf "Active" gesetzt sein. Also CS öffnen, PI markieren, Details-Button drücken, markieren, Änderungen vornehmen (um eine Änderung zu löschen die ENTF-Taste benutzen, dann wird ein I wie Ignore gesetzt), Details schließen, PI als Active setzen, laden und zum Schluß das PI einfach speichern. Gegebenenfalls danach nochmal kontrollieren, ob die Änderungen gelöscht wurden. Mit neugestartetem CS, sollte aber auch gleich zu sehen sein! ;)

Uriel Septim VII
05.07.2007, 16:36
Danke! Ich hätte ganz bestimmt erst einmal den PI active gesetzt. Gut, dass ich doch noch nachgefragt habe. http://www.multimediaxis.de/images/smilies/old/sm_12.gif

Edit: Das ist ja Sklavenarbeit, ich glaube, dass alle Exteriorcells geändert wurden und ich muss jede einzeln löschen. Wer die Genze verschieben will sollte viel Zeit haben!

Lazarus
06.07.2007, 16:38
Ich habe da ein Gebiet in einem neuen Worldspace. Dort soll es immer Nacht sein, mit einem klaren Himmel und Sternen. Soweit so gut, Nacht habe ich immer, aber die Sterne erscheinen oft erst nach einer Weile, bis dahin ist der Himmel komplett schwarz. Manchmal sind die Sterne auch anfangs sichtbar und verschwinden nach ein paar Sekunden, nur um etwas später langsam wieder aufzutauchen...an was könnte das liegen?

Uriel Septim VII
07.07.2007, 09:55
Wurde hier ein Post von mir gelöscht oder ist er garnicht erst aufgetaucht? Ich habe nämlich gestern Abend noch etwas in diesen Thread geschrieben, seltsam.

Edit: Das hat sich dann (zumindest in diesem Thema) erledigt.

Muecke49
07.07.2007, 10:07
Das wurde rausgetrennt und als eigener Thread eröffnet.....Hier geht nichts verloren.:D


Da gehts lang...... (http://www.multimediaxis.net/showthread.php?t=97502)

Gruss Mücke

Tempus763
07.07.2007, 17:36
Entschuldigt das ich hier so einfach reinposte, aber ich hab nur ne kleine Frage, die keinen eigenen Thread wert ist. (hoffe ich) :p

Kann mir jemand sagen wie es anstelle das NPC's ihre Kleider wechseln? In etwa so wie Martin bei der Hauptquest, da zieht er sich ja auch ein paarmal um. ^^
Ich hab mir zwar sein Script angeschaut, bin aber nicht wirklich schlau draus geworden.

Rung
07.07.2007, 17:47
Hallo,

wenn der NPC neue Kleidung tragen soll, musst Du sie seinem Inventar hinzufügen. Das geht mit dem Befehl AddItem (http://cs.elderscrolls.com/constwiki/index.php/AddItem)( [ActorID|ContainerID.]AddItem ObjectID, Count )
Weiterhin ist wichtig zu wissen, dass der NPC immer das teuerste Kleidungsstück anzieht und die beste Rüstung (je nachdem welche Rüstungsart er bevorzugt [leicht/schwer]) ausrüstet.

Lazarus
07.07.2007, 17:48
scriptname xyz
ref mySelf

begin onWasauchimmer
set mySelf to getSelf
mySelf.additem IDDerKleidung 1
mySelf.equipitem IDDerKleidung
end

Tempus763
08.07.2007, 12:11
Vielen Dank ich werds mal versuchen! ;)

Vielleicht noch ne kleine Frage, wie kann ich es anstellen das ein NPC während des Spiels seinen Namen ändert? So wie bei Martin, der heißt ja zunächst auch Bruder Martin, später dann nur Martin und am Ende Martin Septim.

@Lazarus
Noch mal Sorry das ich deinen Thread dafür missbrauche. :D

Rung
08.07.2007, 12:23
Die Funktion dafür heißt SetActorFullName (http://cs.elderscrolls.com/constwiki/index.php/SetActorFullName).

Tempus763
08.07.2007, 12:35
Das ging ja schnell, vielen Dank! :p

Gibt es das CS Wiki auch auf deutsch? Vermute nicht, oder?

Rung
08.07.2007, 12:43
Das hier (http://www.ei-der-zeit.com/portal/index.php?option=com_weblinks&task=view&catid=22&id=20) ist ein Projekt, das die Übersetzung des Wikis versucht. Ist allerdings nicht vollständig.:\

Tempus763
08.07.2007, 12:47
@Rung
Das sieht doch schon mal sehr gut aus, vielen, vielen Dank! ;)


@Lazarus
Der Thread gehört nun wieder ganz dir. :p

Lazarus
09.07.2007, 15:39
Ich habe drei Activatoren(bzw einen Activator drei mal in die Zelle gesetzt), die alle mit dem selben Script laufen sollen. Nur sollte der Script merken, welcher der drei Activatoren nun aktiviert wurde. Ich habe das jetzt so gemacht:


scn xyz

ref activator

begin onActivate
set activator to getSelf

if activator == ActivatorA
................
.............
...............
endif
end

...nur bekomme ich jetzt die Meldung, ActivatorA könne nicht in einem Script benutzt werden. Wie könnte man das sonst noch regeln, außer drei verschiedene Scripts zu nutzen?

Rung
09.07.2007, 15:42
Du kannst in dem Script ganz einfach eine Variable setzen. Z.B.: WurdeAktiviert. Die setzt Du auf Eins, sobald der Spieler diesen Aktiviert. Dann fragst Du die Variable über die Referencen ab.


scn xyz

short WurdeAktiviert

begin onActivate
set WurdeAktiviert to 1

if ActivatorA.WurdeAktiviert == 1
................
.............
...............
endif
end

Lazarus
09.07.2007, 15:48
Wenn ich das so mache, bekomme ich die Meldung 'Unknown function or variable'. Aber auch erst dann wenn der Activator davorsteht...
edit: seltsam, auf einmal funktioniert es.

Lazarus
13.07.2007, 06:34
Wenn ich einen Marker per MoveTo-Befehl irgendwo platziere und ihn anschließend einen Zauber casten lasse, dann werden diese Zauber immer nach Norden gebrettert anstatt auf das im Script vorgesehene Ziel. Woran könnte das liegen?

kenet_korva
13.07.2007, 07:36
Bei mir war es so, dass das immer geschah, wenn das Ziel sich nicht in Sichtweite befand oder irgendetwas die Sicht versperrte.

Lazarus
13.07.2007, 18:22
Das ist allerdings nicht der Fall...als ich zu den frühen Anfangszeiten von OWC den Rakanischu-Script gebastelt habe, habe ich um ihn herum vier Marker per MoveTo verteilt, in deren Richtung dann je ein Blitz verschossen werden sollte. Diese vier Blitze gingen aber auch immer nach Norden.

In diesem Fall muss ich eben improvisieren und einen festen Marker ohne MoveTo nehmen...was mich allerdings stutzig macht: ich habe schon mehrere Scripts, die einen Marker bei einem Gegner per MoveTo platzieren, und dieser Marker verschießt einen Zauber auf einen gewünschten Gegner, so wie ich es haben will...könnte sein dass das nur mit Actors funktioniert, das muss ich mal ausprobieren.

edit: tatsächlich, wenn ich anstelle des Statics den player nehme, funktioniert es. Mal schauen wie es mit Activatoren aussieht.
edit2: ha, mit Activatoren funktioniert es auch. ^_^


-------------------------------------------------------

Gibt es eigentlich eine Möglichkeit, entladene magische Gegenstände per Script wieder aufzuladen?

Rung
13.07.2007, 19:10
Nur über den Varlastein. Allerdings hat das den unangenehmen Nebeneffekt, dass alle anderen Gegenstände auch wieder aufgeladen werden.
Du kannst den Varlastein hinzufügen und equippen, ansonsten ist es nur per OBSE möglich, die Verzauberungen zu beeinflussen. Ob der aber überhaupt eine Funktion hat, die wieder aufladen kann, kann ich Dir nicht mal sagen.

Lazarus
13.07.2007, 19:17
Es sollten auch alle Items aufgeladen werden, das ist schon gut so.
Nur hätte ich mit der Varla-Stein-Lösung dieses unschöne 'Varla-Stein wurde dem inventar des Spielers hinzugefügt'...kann man diese Nachricht nicht unterbinden?

Rung
13.07.2007, 19:34
Ja, das geht, indem Du eine leere Message hinterher-/davor-?-blendest.


Message " ", 5
AddItem VarlaStone 1
EquipItem VarlaStone
Message " ", 5

Lazarus
13.07.2007, 19:40
Ah, danke sehr. :)

Und noch eine Frage: wie funktioniert dieses 'Gegenstand ins Inventar des Companions legen'? Lässt sich dessen Inventar vielleicht irgendwie wie ein Container öffnen?

Rung
13.07.2007, 21:24
Hm,

Du musst den NPC vorübergehend 'lahm legen'. Mit SetUnconscious (http://cs.elderscrolls.com/constwiki/index.php/SetUnconscious). Wie es genau funktioniert, kann ich Dir auch nicht sagen. Ich bilde mir zwar ein, dass es mal ein Tut beim Wiki gab, aber das scheint bei den neuerlichen Ausfällen verschütt gegangen zu sein.:\
Ich würde Dir empfehlen, eine Begleiter-Mod herunterzuladen und die Scripte dort abzuschauen.
Tyra (http://theelderscrolls.info/?go=dlfile&fileid=148)
Toaster Says Share (http://www.tessource.net/files/file.php?id=3066) (Talkie ist, glaube ich, der Erfinder dieser Methode)

Lazarus
14.07.2007, 20:41
Danke, ich seh's mir mal an.

Neue Frage: Wie kann ich den gesamten Inhalt eines Containers entfernen?

edit/ thx, kenet!

kenet_korva
14.07.2007, 21:07
Reference des Containers.RemoveallItems

Gorkon
14.07.2007, 21:42
Interessant auch die Variante

QuellContainerReferenz.RemoveAllItems ZiellContainerReferenz

http://cs.elderscrolls.com/constwiki/index.php/RemoveAllItems

Damit läßt sich z.B. das komplette Inventar eines Companions in eine Kiste transferieren und zurück. Wenn du die Kiste per Skript aktivierst, kannst du über diesen Umweg sehr schön das Inventar eines Kollegen manipulieren.

Ich benutze einen witzigen Spell, der so arbeitet. (Jedenfalls sind die entsprechenden Personen immer für nen Sekundenbruchteil nackt.) TES-Source hat grad die Suche abgeschaltet, ich häng das Ding mal an.

Lazarus
14.07.2007, 21:58
QuellContainerReferenz.RemoveAllItems ZiellContainerReferenz

http://cs.elderscrolls.com/constwiki/index.php/RemoveAllItems

Damit läßt sich z.B. das komplette Inventar eines Companions in eine Kiste transferieren und zurück. Wenn du die Kiste per Skript aktivierst, kannst du über diesen Umweg sehr schön das Inventar eines Kollegen manipulieren.
Dass sich damit das Inventar transferieren lässt weiß ich, gerade getestet.^^
So wollte ich das auch mit dem Companion machen, schön dass das mit dem Container per Script aktivieren funktioniert, habe damit gerechnet dass es das nicht tut.

Habe aber gerade Probleme mit meinem Companion. Ich habe ihm ein kleines Messagebox-Menü gebastelt, in dem sich bis jetzt 'folge mir' und 'warte' befinden. Dummerweise folgt er auch dann wenn man auf warten drückt, mit dem Package müsste eigentlich alles stimmen. Habe für Warten StayAtCurrentLocation(bzw eine Kopie davon) und als Bedingung eine Variable im Companion-Script genommen.

Edit: es funktioniert jetzt zwar, aber der Companion reagiert erst ca 15 Sekunden nach dem Befehl darauf. Ist das normal?

Gorkon
14.07.2007, 22:49
Ja, da die KI nur periodisch checkt, was ein NPC gerade machen soll. Alles andere würde jede aktuelle CPU killen. Lösung für dich: Erzwing per EVP (http://cs.elderscrolls.com/constwiki/index.php/EvaluatePackage), daß der Companion seine Packages neu auswertet.

Lazarus
15.07.2007, 12:15
Danke, funktioniert.

Neues Problem: Nachdem ich dem Companion Items aus dem bzw ins Inventar gelegt habe, steht er ohne Waffe da und gedenkt auch im Kampf nicht, eine zu anzulegen, stattdessen stürmt er mit den Fäusten auf die Gegner los. Dabei sind die Items definitiv wieder in seinem Inventar angekommen.

edit: ach ja, kann ich per Script die Aggresivität eines Gegners ändern?

Rung
15.07.2007, 13:19
Einfach mit SetAV (http://cs.elderscrolls.com/constwiki/index.php/SetActorValue)Aggression. ;)

Lazarus
15.07.2007, 13:42
SetAV (http://cs.elderscrolls.com/constwiki/index.php/SetActorValue)
Na was haben wir denn da - http://cs.elderscrolls.com/constwiki/index.php/ResistFire
Hätte ich das früher gesehen, hätte ich mir den ganzen Firlefanz mit dem Marker, der Feuerimmunität auf den Player zaubert damit der nichts vom gescripteten Feuerball abbekommt, sparen können. http://www.multimediaxis.de/images/smilies/old/s_010.gif

Rung
15.07.2007, 13:52
Tatsächlich, das war mir auch neu.
Nur hat die Funktion ab und zu ein paar Macken, inwieweit die aber auch auf diesen Fall zutreffen, kann ich Dir nicht sagen. Das müsste man mal ausprobieren. Aber da Du den gewünschten Effekt ja schon auf andere Weise erlangt hast ...

Lazarus
15.07.2007, 14:02
Aber da Du den gewünschten Effekt ja schon auf andere Weise erlangt hast ...
Naja, 100% akkurat ist meine bisherige Lösung nicht...es ist trotzdem noch ab und an passiert dass der Spieler den Feuerschaden abbekommen hat, wenn auch eher selten.

Lazarus
16.07.2007, 11:03
So, inzwischen funktioniert alles, abgesehen davon dass der Companion die (wieder) erhalteten Items einfach nicht ausrüsten will. Gibt es keine Möglichkeit, das irgendwie zu regeln? Ansonsten muss ich das Ausrüstung-Feature komplett streichen, wäre schade.

Lazarus
17.07.2007, 23:04
Sagt mal, was bringen eigentlich diese Statics mit Namen FXCloudThick01 und FXCloudThick02? Einige andere Statics dieser Sorte sind platzierbarer Nebel, aber diese Dinger haben sowohl im CS als auch ingame absolut keinen Effekt.

Ui, Triplepost, wie schön! :p

GlasMond
17.07.2007, 23:16
Bist du dir sicher das sie keinen Effekt haben? Ich meine selbst schonmal eines benutzt zu haben und das funktionierte. Ich glaube es war 01. Du weißt das du mit der ... ähm ... wie heißt nochmal diese Funktion mit der man Gegenstände im CS fallenlassen kann ... ist mir gerade entfallen (Wortspielkasse und so!) ... naja, jedenfalls kann man damit auch Flammen und diese Nebeldinger testen. Werden sie denn schon von Vanilla benutzt? Wenn nicht kann es gut sein das sie nicht funktionieren. :confused:

Lazarus
17.07.2007, 23:24
Mehr als dreihundert mal.

GlasMond
17.07.2007, 23:29
Wenn ich mich recht entsinne werden sie oft in Ayleiden-Ruinen benutzt. Der Effekt ist allerdings nicht sonderlich stark. Probiere doch mal an den Lightningwerten des Interriors herum, vielleicht sind sie bei bestimmten Lichverhältnissen, hell/dunkel, besser zu erkennen.

Lazarus
17.07.2007, 23:35
Probiere doch mal an den Lightningwerten des Interriors herum, vielleicht sind sie bei bestimmten Lichverhältnissen, hell/dunkel, besser zu erkennen.
Du bist lustig, meine Dungeons sind stockdunkel. :p
Naja, ich muss die Dinger ja nicht nutzen.

GlasMond
17.07.2007, 23:38
Vielleicht sind deine Dungeons für den Effekt ja auch viel zu dunkel! ;)

Ich denke schon das ein Ambientlight die Nebeldinger sichtbar machen würde.

Lazarus
17.07.2007, 23:45
Naja, wenn ich mich mit einer Fackel reinstelle passiert auch nichts. Und ich kann ohnehin nur (gut sichtbaren!) Nebel brauchen.

kenet_korva
18.07.2007, 09:41
Ich hab schon feststellen müssen, dass diese Wolken nicht gerade perfekt funktionieren,
(zb. musste ich in einem Dungeon einen ganz bestimmten Container öffnen um den Effekt hervorzurufen.) Alles in allem habe ich aber festgestellt, dass andere Animationen (IdleAnimations und solche die mit PlayGroup in einem Script benutzt werden) Das ganze auch auslösen können. Aber nur manchma. Gestaffelt, also mehrere hintereinander ist der Effekt doch ziemlich stark.

Lazarus
18.07.2007, 21:16
Zu den Ambient-Sounds...Einmal möchte ich einen Sound haben, der in zufälligen Abständen gespielt wird. Wie geht das?
Dann bräuchte ich einen Script für einen Trigger, der den Enabled Parent(ein platzierter Sound) abspielt.

kenet_korva
19.07.2007, 08:19
Den Sound zufällig abspielen ginge nur über ein Script, dass mit GetRandomPercent immer überprüft ob gespielt werden soll. Die "PlayAtRandom" funktion der Sounds selbst funktionier nämlich nicht.
Wegen dem Trigger: Ich hab einen anderen Vorschlag: Du kannst ihn auch über PlaySound3D den Sound so spielen lassen als würdest du es mit dem Enable machen.
Geht nur schneller.

Lazarus
19.07.2007, 11:39
Wegen dem Trigger: Ich hab einen anderen Vorschlag: Du kannst ihn auch über PlaySound3D den Sound so spielen lassen als würdest du es mit dem Enable machen.
Geht nur schneller.
Wie gesagt, ich würde das gerne per Enabled Parent lösen, sonst brauche ich ja für jeden Sound einen einzelnen Script.

kenet_korva
19.07.2007, 11:48
Dann kann ich dir die TriggerZone TrigZonePLAYER01Enable empfehlen. Die macht genau das.

Haldor
19.07.2007, 13:49
Hallo zusammen!

Obwohl ich mich gerade in einem Kurzurlaub befinde und für ein paar Tage die Finger von PCs lassen wollte, lässt mir eine Sache keine Ruhe, die ich vor der Abreise nicht mehr gelöst bekam. Und deshalb dachte ich, ich haue hier auch mal eine Frage rein, wo sich hier doch die erlauchtesten Köpfe der deutschen Oblivion-Modderszene tummeln, die für mein Problem hoffentlich eine zufriedenstellende Lösung finden können. Es geht mir um folgendes:

Ist es möglich, dafür zu sorgen, dass der Spieler in einen Container nur spezielle Dinge legen kann? Z.B. ganz allgemein nur kleinere Gegenstände in eine kleine Schatulle? Denn wie dämlich ist das, wenn man einen massiven Zweihänder in ein Kästchen lege kann, was nicht mal ein Viertel der Länge der Waffe besitzt? Oder spezieller: Nur Zutaten eines Typs in ein spezielles Zutatenglas? Ich fände es schön, wenn bei einem Versuch, andere als die möglichen Gegenstände in den Container zu platzieren, eine entsprechende Meldung erschiene und der Gegenstand nicht abgelegt bzw. dem Spieler zurückgegeben werden würde.

Bei Morrowind konnte man Containern eine numerische Gepäckkapazität geben. Ein solches Eingabefeld gibt es auch im TESIV-CS, aber es hat keinerlei Auswirkungen auf die Kapazität der Truhe ingame. Die einzige "Lösung", die mir bislang in den Sinn gekommen ist, ist jedes Item in einem GameMode- oder MenuMode-Block auf dem Container über GetItemCount abzufragen. Wenn ein ungewünschtes Item detektiert wird, könnte es mit einer entsprechenden Meldung aus dem Inventar des Containers entfernt und dem Inventar des Spielers wieder zugeführt werden. Aber das wären bei allen möglichen Items Oblivions hunderte Abfragen und würde sich nicht auf Items beziehen, die durch andere Mods hinzugefügt werden. Es wäre also eine aufwändige und schlechte Lösung.

Vielleicht gibt es da ja eine komfortable Lösung (nach Möglichkeit ohne OBSE), auf die ich bislang noch nicht gekommen bin. Ich hoffe, ihr könnt mir helfen.

Schönen Gruß, Haldor.

Rung
19.07.2007, 14:43
Hallo Haldor,

leider ist es ohne den OBSE nicht möglich, da man das Gewicht nicht abfragen kann und alles andere nicht auf die Größe des jeweiligen Gegenstands schließen lässt. Man kann ja nicht mal abfragen, ob der Gegenstand ein MiscItem oder eine Waffe ist.:\
Ich habe mich auch schon damit beschäftigt und ich glaube, das Beste wäre entweder Deine Methode (jeden Gegenstand im Script aufzählen) oder jedem Gegenstand ein Script beigeben, in dem eine Lokale definiert ist, die dem Containerscript sagt, ob es ein schwerer Gegenstand ist oder nicht. Allerdings würde das ja die Kompatibilität mit anderen Plugins ziemlich einschränken.
Mit dem OBSE allerdings sollte es möglich sein, das Gewicht abzufragen, denke ich.

Edit: Ja, mit GetCurrentValue (http://cs.elderscrolls.com/constwiki/index.php/GetCurrentValue) ist das durch den OBSE möglich. ;)

Lazarus
19.07.2007, 14:49
Spricht denn noch irgendetwas gegen die Möglichkeit, größere Gegenstände in die Gläser zu stopfen, als Realismus? So schlimm fände ich es jetzt ehrlich gesagt nicht, und imho würde es den Einsatz von OBSE keineswegs rechtfertigen.

Rung
19.07.2007, 14:59
Ich finde schon, dass es sinnvoll wäre. So könnte man den Behälter nicht endlos mit Dingen füllen, was wiederum für Rücksäcke oder den BaldursGate-typischen Nimmervollen Beuteln praktisch wäre, die ja auch in BaldursGate nicht ewig zu füllen waren (bilde ich mir ein http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif).

Lazarus
19.07.2007, 15:08
Stimmt schon, aber ob Haldor auch soetwas vorhatte? ;)
Vielleicht findet sich ja noch irgendeine Lösung...ich hätte da eine Idee: nachdem man die Gegenstände in den Behälter gesteckt hat, werden sie alle in das Inventar eines NPCs geschoben, der daraufhin in einen Trigger läuft. Erreicht er ihn, ist alles in Ordnung. Erreicht er ihn nicht, weil er von den Items überladen ist, verschwinden diese aus dem Container und gehen an den Spieler zurück. Ja, ich weiß, sehr umständlich und wohl nicht sonderlich funktionstüchtig, aber es wäre eine Idee. :p

Rung
19.07.2007, 15:16
Die Idee ist verdammt gut und würde sogar funktionieren.
Klasse, Lazarus, so kann man die Engine aufs Kreuz legen.:p

Haldor
19.07.2007, 21:55
Hallo ihr beiden!

Danke für eure Antworten! OBSE hat viele schöne Funktionen, aber bislang habe ich es meistens geschafft, mit den herkömmlichen auszukommen und möchte eigentlich auch in Zukunft auf OBSE verzichten.

Ich finde es schon ziemlich ärgerlich, dass Bethesda da mal wieder geschlampt hat. Wozu kann man denn Grenzwerte für Container angeben, wenn es überhaupt keine Auswirkung hat? Diese Funktion hat schon im Vorgänger Morrowind geklappt, also kein Grund, das bei Oblivion zu verraffen.

Lazarus Lösung mit dem laufenden Dummy-NPC ist ein netter Trick, finde ich aber unverhältnismäßig aufwändig, zumal man dem NPC ja auch eine gewisse Zeit geben müsste, um den Trigger auszulösen, was den ganzen Mechanismus verzögert.
Die gezielte Itemabfrage ist ebenfalls aufwändig, aber wahrscheinlich dann doch die sauberere Lösung. Man müsste wohl darauf verzichten, alle Items abzufragen und einfach auf das Rollenspiel des Spielers vertrauen, der darauf verzichtet, unpassende Gegenstände in Container zu stecken...

Falls ihr noch weitere Ideen habt, immer her damit. Ich werde, wenn ich wieder daheim bin, wohl mal einen Versuch mit einem Activator starten, der über ein Skript einen kleinen Container simuliert.

Schönen Gruß, Haldor.

Lazarus
19.07.2007, 22:08
Wenn in den Container nur eine Hand voll verschiedene Dinge reindürfen, könntest du das per vielleicht per Messagebox-Menü lösen:

messagebox "Was möchtet Ihr tun?" "Eine Harrada-Wurzel in den Behälter stecken" "Alle Harrada-Wurzeln in den Behälter stecken" "Verlassen"

GlasMond
19.07.2007, 22:20
Was spricht eigentlich dagegen, wenn man nur die Items abfragt die in den Container können und alles andere per Script ablehnt? Ich hatte Haldor so verstanden, das er nur ganz bestimmte Items erlauben möchte. Hat ein Item also nicht die richtige ID wird es ganz einfach abgelehnt.

Lazarus
19.07.2007, 22:37
Dazu müsste man jedes Item, das es gibt, im Script auflisten. Bisschen umständlich. ;)
Davon abgesehen könnte man dann immernoch Items reinlegen, die von anderen Mods stammen.

GlasMond
19.07.2007, 22:44
Geht es nicht das man die ID abfragt und wenn es nicht die richtige ist das Item einfach ablehnt?

Lazarus
19.07.2007, 22:47
Leider nein. Man kann nur überprüfen, ob sich ein bestimmtes Item im Container befindet oder nicht.

GlasMond
19.07.2007, 22:55
Hm ... aber bei den Dialogen kann man doch ein Item abfragen. Aber ich sehe schon, das heißt ja noch lange nicht das der PC auch genau dieses Item ablegen wird. Vielleicht mit der Abfrage das sich der Container nur öffnet wenn ein spezielles Item überhaupt im Besitz ist? Und das Item dann bis auf eines automatisch entfernt wird, ansonsten kann der Container ja nicht mehr geöffnet werden. Oder noch besser der PC bekommt dann ein Austausch-Item wenn er den Container einmal aktiviert hat. Aber wie hindert man ihn dann daran andere Sachen abzulegen. :rolleyes:

Lazarus
19.07.2007, 23:03
Wie gesagt, man kann nur nach bestimmten Items prüfen, und man kann als Antwort immer nur Ja/Nein erhalten. Fragen, welche Items im Container sind, geht also nicht, du kannst nur fragen, ob Item XYZ drin ist oder nicht. Was bedeuted, dass man wie gesagt sämtliche im Spiel verfügbaren Items in dem Script mit einbeziehen müsste.

Lazarus
05.08.2007, 16:19
Wie nutze ich den Befehl 'GetPCSleepHours' richtig?
Ich habe ihn im MenuMode Block, nachdem der Spieler 5 Stunden geschlafen hat, soll etwas passieren, aber es passiert immer schon in dem Moment, in dem man auf 'Rasten' klickt.
Ich habe es so gemacht:


begin MenuMode
if GetPCSleepHours >= 5
;diesundjenes
endif
end

GreyWolf
05.08.2007, 17:56
Hm, "GetPCSleepHours" gibt die Anzahl der Stunden aus, die der Spieler im Menü zum Schlafen gewählt hat, also nicht, wieviele Stunden der PC tatsächlich geschlafen hat. Darum passiert bei Dir wohl schon zu Beginn des Schlafens etwas.

Vielleicht, indem man die Bedingung mit "if IsPCSleeping" verknüpft?

EDIT:

Vielleicht mal so probieren:
if GetPCSleepHours >= 5 && IsPCSleeping > 0

Lazarus
05.08.2007, 19:09
Funktioniert nicht, ich werde das anders lösen:


begin MenuMode
if GetPCSleepHours >= 5
set variable to 1
endif
end

begin GameMode
if variable == 1
;diesundjenes
set variable to 2
endif
end

Das muss dann eigentlich auch funktionieren...btw, ist der letzte komplexere Script, den ich machen muss. ;)

edit: funktioniert. :)

Lazarus
07.08.2007, 00:01
Es gibt da etwas, was mich interessiert...und zwar hatte ich vor kurzem einige etwas ältere Spielstände, in denen ich gerade in einen von meinen Dungeons war. Allerdings stand ich nach dem Laden nicht im Dungeon, sondern im Tiber Septim-Hotel in der Kaiserstadt. Wie kann soetwas passieren?

GlasMond
07.08.2007, 00:56
Das hat irgendwas mit Markern oder so zu tun. Ich weiß das kenet_korva letztens ein ähnliches Problem hatte und auch eine Lösung dafür fand. Wenn er mal wieder da ist, wo auch immer er gerade ist :confused: , müßte er eine Lösung dafür kennen. Das eigentliche Problem ist zwar mehr als seltsam, aber du solltest das möglichst fixen bevor dein Mod released wird. ;)

p.s. Sorry, aber ich kann mich an die Lösung nicht mehr errinnern. :rolleyes:

Lazarus
07.08.2007, 16:21
Ich weiß das kenet_korva letztens ein ähnliches Problem hatte und auch eine Lösung dafür fand.
Weißt du denn noch ungefähr in welchem Thread das war oder womit man die Suchfunktion füttern könnte?

GlasMond
07.08.2007, 16:38
:p
Gib am besten "GlasMond, PN Fach, kenet_korva" ein. ;)

Sorry, aber das war über PN, weil ich mal diesen Thread mit den "creepy Cells" eröffnet hatte und kenet dachte ich hätte eine Idee zu dem Problem. Ich habe die PN aber leider schon gelöscht. :rolleyes:

Soweit ich mich errinnere wurde er direkt in die Cell 0,0 teleportiert. Warum oder wie er das lösen konnte, weiß ich aber nicht mehr genau.

Nur als Warnung: Lösche jetzt bloß nicht die Cell 0,0 aus dem PI! Ich habe nämlich noch nicht herausgefunden was das bewirken würde, aber ich denke das könnte das PI schrotten.

Lazarus
07.08.2007, 17:16
Gelöscht habe ich nichts, das einzige, was möglicherweise dafür verantwortlich sein könnte, war, dass ich die ID von einem meiner Dungeons geändert hatte.

Lazarus
08.08.2007, 23:20
Nächste Frage: Wie sorge ich dafür, dass ein bestimmter NPC nicht mehr sprechen kann? Er darf weder Begrüßungstexte oder Laute im Kampf ablassen, noch sollte es möglich sein, ihn ansprechen zu können.