PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein besonderer Schlüssel für eine Tür



Gondor
26.11.2009, 19:35
Ich habe da eine Frage, die mir die Modderexperten unter euch mit Sicherheit beantworten können.

Normalerweise erstellt man eine Tür, durch die nicht jeder treten soll mit einem Lock und einem passenden Schlüssel. Ich aber möchte gerne eine Tür derart blockiert haben, dass es dem Spieler erst dann ermöglicht wird die Türe zu öffnen wenn er mindestens Level 5 erreicht hat.

Mit anderen Worten stelle ich mir vor, wie in einer Oblivion Mod einmal gesehen das es eine Möglichkeit gibt die beim Aktivieren der Tür nicht den passenden Schlüssel zur Türe abfragt sondern das Spielerlevel abfragt und bei einem Level unter fünf eine Meldung ausgibt " Ihr habt noch nicht die notwendige Erfahrung (Level 5 und höher)"

Im anderen Falle soll die Türe dann sofort öffnen. Wer kann mir da weiterhelfen bitte?

ColdGhsot1985
26.11.2009, 19:53
ich denke das wirst du nur über ein script realisieren können...die tür muss ne referenz sein/ haben und im script selber müsste erst das level des spielers abgefragt werden und dann die entsprechende ausgabe...

ich werd das mal ausprobieren und sag dir dann bescheid, weil so was ähnliches kommt in meiner mod auch vor.

mfg
cold

Gondor
26.11.2009, 20:57
Danke ich warte dann solange

Stygs
26.11.2009, 23:44
Es gibt die GetLevel-Funktion im GECk. Ich würds daher ungefähr so machen:

Der Tür ein Script zuweisen, dass das Spielerlevel abfragt wenn sie vom Spieler aktiviert wird. Ist das Level hoch genug, kannst du sie mit dem Unlock-Kommando öffnen.

Gondor
27.11.2009, 16:57
Danke für diesen Tipp. Es gibt da nur ein Problem: Ich kann nicht scripten. Aus diesem Grunde ändere ich für mich immer existierende Scripte für meine Bedürfnisse ab. Das klappt ganz gut, aber selbst erstellen habe ich bisher noch nicht probiert.

caesarrulez
27.11.2009, 16:59
ich würds so machen:

TürID tuerlvl5, peristant reference on, locked on, needs key on
eine message msglv5 mit dem Text 'Sie benötigen Level 5 um die Tür zu öffnen"

dann das script:

scn lv5tuerscript

begin onactivate

if player.getlevel >= 5
tuerlvl5.unlock
elseif player.getlevel < 5
showmessage msglv5
endif

end

Stygs
27.11.2009, 17:19
Wozu das elseif? Wenn du oben schon >= abfragst brauchst du unten kein < abfragen, das ergibt sich von selbst :P

Vorschlag:


scn lv5tuerscript

short DoOnce

Begin OnActivate
if IsActionRef player == 1
if [DoOnce == 0] && [Player.GetLevel >= 5]
tuerlvl5.unlock
Set DoOnce to 1
else
showmessage msglv5
endif
endif
End

DoOnce sorgen dafür das das nur beim ersten Mal aktiveirt wird und nicht jedesmal durchläuft wenn man die Tür anklickt, IsActionRef verhindert das NPCs zufällig die Tur öfnnen wenn der Spieler Level5 ist.

caesarrulez
27.11.2009, 17:32
naja mein script ist besser lesbar :P

:D ne da kann nix passieren und ob der die 3 zeilen dann jedes mal abfragt oder net is ja auch schon rums. Da ich nur auf player abfrage kann kein npc das script durchnander würfeln, aber jap dein script ist 'sauberer', meins halt quick'n'dirty aber funzt ;)

Gondor
27.11.2009, 17:58
Leute ich danke euch. Da ich nicht entscheiden kann was besser oder äh...anders ist werde ich beide testen.

Damit klarer wird um was es geht hier kurz einmal die Story der Mod:

Ein hoher Würdenträger aus Springvale hat Kenntnis erhalten von der drohenden Kriegsgefahr und beauftragt einen seiner Hausangestellten damit ihm einen Platz in Vault 101 zu sichern.
Er selbst muß vor Beginn des Krieges eine Dienstreise innerhalb der Staaten durchführen und kann daher keine eigene Vorsorge treffen.

Leider versäumt der Angestellte die rechtzeitige Abgabe der Reservierung und um seinen Auftraggeber nicht in Wut zu versetzen stiehlt er mit ein paar Gleichgesinnten alles Material das er zum Bau einer eigenen Vault zu benötigen glaubt. Als Bauplatz wählt er einen Ort in der Nähe einer Highwaybrücke garnicht weit von dem späteren Ort Megaton entfernt.

Leider ist dieses Unternehmen von vornherein zum Scheitern verurteilt. Ein sehr wichtiges Bauteil kann nicht beschafft werden: Der schwere Eingangsbereich mit der stabilen Tür.

Bei den Bauarbeiten legen die Arbeiter noch eine bislang unentdeckte Höhle frei und glauben das diese genügend Schutz bieten kann.


Ausbau:
1 Minivault mit einem normalen "Sliding Vault door" Eingang
Größe:
1 Vorraum geeignet als Ablagefläche für Material und Waffen auf den umgestürzten Computerschränken
1 Langer Verbindungsgang mit Ablageflächen, Sitzmöglichkeit und Küchenzelle
1 Zweiter Raum mit Tischen Stühlen und einer Computerkonsole mit eingebautem GNR Radio, Toilette in einem Puwolski Bunker sowie Werkbank
1 relativ große Höhle ohne Gegner aber dafür noch kleinen Fallen und hier und da Kisten mit Loot

Noch nicht erstellt:
NavMesh da ich das von Oblivion gewohnt bin und mit der Art von Fallout noch nicht klar komme

Geplant:

Bisher nicht für die Öffentlichkeit bestimmt, da von mir in diesetr Mod auch folgende andere Modbestandteile verwendet werden:
HK 416 zT abgeändert
P99 Pistole zT geändert
Krigos Dragunov z.T geändert
diverse "Footlocker" mit stark cheatlastigem Inhalt

Wenn trotzdem Interesse besteht kann diese hier in Bildern kurz vorgestellt werden und eventuell gelingt es mir sogar die Zusatzteile herauszunehmen und das als weiteres Spielerhaus sogar Rafo tauglich (ohne WAffen) zu machen

EMOD
28.11.2009, 10:17
Das Skript von Stygs ist okay. Die Abfrage von isActionref ist wichtig, da sonst tatsächlich ein NPC die Tür zufällig öffnen kann, sobald der Player Level 5 hat. Viel schlimmer ist aber, sobald ein NPCs die Türe öffnen will, bekommt der Player < Level 5 dauernd die Message angezeigt, das er das entsprechende Level nicht hat, um die Tür zu öffnen. Egal ob er in der Nähe steht, sobald die Zelle aktiv ist und es ein NPC probiert, würde das passieren.

(Ein Begin onActivate Player geht bei ActionsREFs nur selten, das isActionREF ist deshalb wichtig.)

scn lv5tuerscript

Begin OnActivate
if IsActionRef player == 1 && Player.GetLevel >= 5
tuerlvl5.unlock
else
showmessage msglv5
endif
End


Das würde reichen, ihr müsst bei Skripten immer bedenken, auch ein short wird wieder als Status der Tür abgespeichert. Technisch wird die Abfrage immer durchlaufen, das macht keinen Unterschied ob es die doonce-Abfrage oder PlayerLevel5-Abfrage ist. Sauberer ist natürlich der doonce, dann kann man alles dahinter abhaken.

Gondor
29.11.2009, 10:03
Als Noob habe ich mal alle drei Scripte, natürlich nacheinander testen wollen. Hat leider nicht funktioniert.

Nachdem ich meine Mod cheatfrei hatte habe ich zuerst versucht das Script 1 auf die Tür zu legen. (Es sind eigentlich zwei Türen, eine als Haupt- und eine als Nebeneingang)

Resultat: Geck stürzt ab, obwohl die Tür eine eigene ID hat und diese ID an Stelle von lvl5 door im Script eingetragen war

Ich nehme es vorweg, das gleiche Ergebnis bei allen anderen Scripten auch. Immer der Absturz.

Da habe ich dann die Türe entfernt, eine neue Tür generiert und den Haken bei Persistant eingegeben. Script draufgelegt mit korrekter Tür ID---Absturz

Für mich bleibt erstmal nur, die Tür / Türen zu locken und als Schlüssel habe ich den Megaton Hausschlüssel eingegeben den man ja erst nach Entschärfung der A-Bombe erhält.

Entspricht zwar nicht dem was mir vorschwebt, da ich diese Bombe schon mal mit Level 1 entschärft habe und das sicher auch andere schaffen, aber die anderen NPC bleiben auf alle Fälle draußen.

Es würde mich trotzdem freuen, wenn sich jemand bereit erklären würde dies einmal selbst zu testen. Ich kann die Mod als Fomm bereitstellen. Erwartet aber bitte nicht zuviel von dem Teil, war ja eigentlich nur für mich gedacht

EMOD
29.11.2009, 13:13
Um NPCs aus einem Bereich rauszuhalten, muss dieser nur auf nicht Public stehen, habe ich noch nie probiert, sollte aber gehen. Ich trickse immer mit Finalize, das Navmesh bekommt einfach keinen Übergang (grünes Dreieck).

Wenn das bei dir abstürzt, mag er das Activate + Türfunktion nicht, zwei Lösungen für dich:

1. Lösch die Funktion der Tür, das sie ein Ziel hat. Das Skript erweiterst du um einen Moveto, was den Player dann durch die Aktivierung der Tür zum Ziel bewegt. Damit umgehst du eine Kollision, weil nur noch das Skript läuft.

2. Du machst eine Collision Box vor die Tür (bevor man in Reichweite zum öffnen kommt), in die du das Skript legst,
onTriggerEnter Player
die restliche Abfrage vom Skript bleibt.