Construction Set Skriptthread zum Construction Set

Gibt es eine Möglichkeit den Waffenschaden zu erhöhen, ohne den Skill Schwertkampf zu buffen?
Oder den Schaden gegen Untoten zu erhöhen? Die Abfrage ob die Kreatur ein Untoter ist könnte man über die Faction regeln, oder gibt's einen anderen Befehl?
 
Wenn ich mich recht erinnere, haben doch Silber-Waffen diesen Effekt gegen Untote (höherer Schaden). Vielleicht schaust Du Dir die mal an und kannst das umstricken, damits paßt.

Bye, Bbm.
 
Das wird nicht funktionieren. Diese Gegner haben einfach eine Resistenz gegen normale Waffen. Die zählt halt nicht für silberne oder daedrische Waffen.
Ansonsten kannst du die entsprechenden Attribute Stärke, Glück und Geschicklichkeit erhöhen, da die sich auch auf den Waffenschaden auswirken.
Du könntest auch den Rüstungswert des Gegners heruntersetzen oder den Haltbarkeitswert der entsprechenden Waffe erhöhen.
 
Hey, wie kann man einen NPC zum Geist machen? Also einen NPC, der so durchsichtig ist und bläulich schimmert? Wär' voll cool, wenn mir jemand 'ne Antwort geben könnte :)

- Delorthan
 
@Delorthan:
Wenn du es per Skript machen willst, brauchst du nur bei der entsprechenden Stelle im Skript diese Zeile einsetzen:
Code:
RefDeinesNPCs.addspell AbGhostNPC
AbGhostNPC ist eine Eigenschaft, die den NPCs den Geist-Effekt verleiht.

Falls der NPC von Anfang an ein Geist sein soll:
- Doppelklick auf den NPC im Construction Set
- wechsel zum Reiter "Spell List"
- lass das NPC-Fenster geöffnet
- gehe zur Spell-Kategorie und markiere den Eintrag "AbGhostNpc"
- ziehe ihn direkt per Drag und Drop in die Spell List des NPCs
- bestätige mit dem OK-Button und speichere dein Plugin
 
Ich würde mich wundern wenn die Frage nicht schon mal jemand gestellt hat, leider finde ich aber auf Anhieb keine passende Antwort.

Kann ich in einem Script abfragen ob ein Wert grade oder ungrade ist? (Darf auch gerne ein OBSE Befehl sein.) Oder müsste ich dafür irgendwelche mathematischen Spielereien betreiben?

Konkretes Anwendungsbeispiel: Ich möchte, daß ein NSC bestimmte Handlungen jeden zweiten Tag ausführt und stelle mir vor dies über die Abfrage ob der GameDay grade oder ungrade ist und eine entsprechende Condition im AI Package zu regeln.
 
Andy, schau dir doch mal das Skript aus meinem Vergessenen Schrein an, das auf dem Stab auf der Paradiesinsel liegt. Falls du dich erinnerst, dieser Stab erscheint nur an einem bestimmten Tag zu einer bestimmten Stunde, also auch eine Zeitabfrage. Vielleicht kannst du dieses Skript für deine Mod anpassen. Den Teil mit enable und disable wirst du wahrscheinlich nicht brauchen, aber alles mit "getDayofWeek" und "gamehour" könnte für dich interessant sein.

PHP:
SCN ...

Short i

Begin GameMode

if(i == 0)
  if(getDayofWeek == 1)
   if(gamehour >= 0 && gamehour <= 1)
      if(getdisabled)
           enable
      endif
   else
     if(getdisabled == 0)
          disable
     endif
   endif
  else
   if(getdisabled == 0)
      disable
   endif
  endif
endif

End

Begin OnActivate

if(isactionref == player)
  set i to 1
endif

End
 
Hilft leider nicht, denn der DayOfWeek wird Woche für Woche von 1 bis 7 durchgezählt, ist also eine Abfrage nach einem konkreten Wochentag. In einem AI Package bringt das keine zusätzliche Funktionalität, denn bei einem Package kann ich ja eh schon einstellen an welchem Wochentag es ausgeführt werden soll.

Das mit den Tagen war auch nur ein Beispiel für eine mögliche Anwendung die ich mir vorstellen kann. Eine andere Anwendungsmöglichkeit wäre zwei Zufallsereignisse mit nur einer RandomPercent zu steuern, so fern eines der Ereignisse eine 50/50 Chance hat. Okay, ich gebe zu da kann man natürlich einfach eine weitere GetRandomPercent ins Script einbauen ohne daß das Script davon wirklich länger wird, aber ich fand den Gedanken irgendwie interessant.
 
Das ist vielleicht nicht mehr aktuell und ich hatte auch schon seit Ewigkeiten nicht mehr das CS offen, aber es gibt die globale Variable GameDaysPassed, die angibt, wie viele Ingame-Tage seit Spielstart vergangen sind. Mit dem Modulus-Operator kannst du überprüfen, ob die Zahl gerade oder ungerade ist:
Code:
if ( GameDaysPassed % 2 == 0 )
  ; gerade Tage
else
  ; ungerade Tage
endif
 
  • Like
Reaktionen: Andy1967
Das ist vielleicht nicht mehr aktuell und ich hatte auch schon seit Ewigkeiten nicht mehr das CS offen, aber es gibt die globale Variable GameDaysPassed, die angibt, wie viele Ingame-Tage seit Spielstart vergangen sind. Mit dem Modulus-Operator kannst du überprüfen, ob die Zahl gerade oder ungerade ist:
Code:
if ( GameDaysPassed % 2 == 0 )
  ; gerade Tage
else
  ; ungerade Tage
endif
Im Moment brauch ich's zwar nicht mehr, aber früher oder später fällt mir vielleicht doch wieder eine Anwendungsmöglichkeit dafür ein. So oder so gut wieder was gelernt zu haben. :)
 
Kiste erst mit entsprechendem Rang öffnen

Hi,

ich habe ein Script, das mir immer nur die Messagebox aus elseif anzeigt. Die Bedingungen der Abfrage sind erfüllt: Ich bin Mitglied der Magiergilde im Rang eines Lehrlings.
Hier das Script:
Code:
Scriptname aaSLKeyChest7Script

Short Locked

Begin OnActivate

    if isActionRef player == 1
        if ( Player.GetFactionRank Magesguild == 1 ) && ( Locked == 1)
            Set Locked to 0
            Activate
    
        elseif    Messagebox "Ihr erfüllt nicht die Voraussetzungen: Lehrling der Magiergilde"
            Set Locked to 1

        endif
    endif
end

Ich habe es schon mit Player.GetInFaction Magesguild == 1 versucht, aber auch da kommt immer nur die Messagebox. Die Variable Locked müsste auch auf 1 stehen, da sie ja durch vorherige Aktivierung der Kiste nach der Messagebox auf 1 gesetzt sein müsste.

Ich komme nicht auf meinen Denkfehler :roll:
Gibt es vielleicht ein Problem mit dem Unterschied Deutsch/Englisch? Aber im CS steht die ID doch auch auf Magesguild. Nur im Text steht der Begriff in Deutsch und die Ränge sind ja dort auch nummeriert und nicht von der Sprache abhängig.

Wenn ich die Bedingungen auf der Referenz im Interieur auf Magesguild und Rank auf Lehrling stelle und der Kiste kein Script zuordne, funktioniert es. Aber es muss doch verd.... noch mal auch mit einem Script gehen.

Gruß KarldG
 
Frage #1: Bist du definitiv, mit zweihundertprozentiger Sicherheit Lehrling und wirklich nicht schon drüber?

Frage #2: Du könntest mal versuchen die Variable umzubenennen. Evtl. ist "Locked" ein Problem, da der Begriff evtl. auch von der Game Engine für Schlösser verwendet wird (z.B. im Befehl "GetLocked"). Könnte mir vorstellen das bringt u.U. Probleme mit sich.

Allerdings kannst du dir die Variable m.E. eh schenken wenn du dich an dem Script orientierst das auf der Tür zur Geheimen Universität liegt. Das sieht beim aktivieren so aus:

Code:
Begin OnActivate

if ( isActionref player == 1 )
    if ( Player.GetFactionRank MagesGuild < 1 ) || ( GetPCExpelled MagesGuild == 1 )
        Messagebox "So sehr du es auch versuchst, das Tor wird sich nicht bewegen."
    else
        Activate
    endif
else
    return
endif
End

Das müsste sich eigentlich auf deine Bedürfnisse anpassen lassen.
 
  • Like
Reaktionen: KarldG
Frage #1: Bist du definitiv, mit zweihundertprozentiger Sicherheit Lehrling und wirklich nicht schon drüber?

Hi Andy1967!
Ja, ich bin gerade von Raminus ins Chironasium geschickt worden, habe also die nächste Beförderung noch nicht. Ich habe es übrigens auch mit >= versucht.

Frage #2: Du könntest mal versuchen die Variable umzubenennen. Evtl. ist "Locked" ein Problem, da der Begriff evtl. auch von der Game Engine für Schlösser verwendet wird (z.B. im Befehl "GetLocked"). Könnte mir vorstellen das bringt u.U. Probleme mit sich.

Allerdings kannst du dir die Variable m.E. eh schenken wenn du dich an dem Script orientierst das auf der Tür zur Geheimen Universität liegt. Das sieht beim aktivieren so aus:

Code:
Begin OnActivate

if ( isActionref player == 1 )
    if ( Player.GetFactionRank MagesGuild < 1 ) || ( GetPCExpelled MagesGuild == 1 )
        Messagebox "So sehr du es auch versuchst, das Tor wird sich nicht bewegen."
    else
        Activate
    endif
else
    return
endif
End

Das müsste sich eigentlich auf deine Bedürfnisse anpassen lassen.

Danke Andy1967! So werde ich das mal abändern. Ich zäume anscheinend das Pferd immer von hinten auf:roll:. Auf die Idee, nach einem ähnlichen Türscript zu schauen, bin ich auch nicht gekommen. Dabei gibt es ja sogar eine Site, die alle Basis-Scripte auflistet und anzeigt.

Gruß KarldG
 
Hi Andy1967!Ich zäume anscheinend das Pferd immer von hinten auf:roll:. Auf die Idee, nach einem ähnlichen Türscript zu schauen, bin ich auch nicht gekommen.
Ich glaub an dem Punkt war fast jeder von uns schon mal. Manches sieht halt auf den ersten Blick ganz einfach aus und dann fängt man an das Rad neu zu erfinden weil man den Wald vor lauter Bäumen nicht sieht und streut sich dabei selbst Sand ins Getriebe. (Nur mal so damit ich mein Tagessoll an Metaphern erfülle. :-D).

Was mich interessieren würde ist was genau du damit eigentlich anstellen willst? Geht offensichtlich um etwas das nur ein Magierlehrling öffnen kann, aber wie genau sieht das Szenario im Spiel aus? Hast du mal drüber nachgedacht die Kiste erst zu "enabeln" wenn der Spieler den passenden Rang hat, oder da mit einem "SetDestroyed" zu arbeiten um sie nur in bestimmten Situationen aktivierbar zu machen?
 
  • Like
Reaktionen: KarldG
Was mich interessieren würde ist was genau du damit eigentlich anstellen willst? Geht offensichtlich um etwas das nur ein Magierlehrling öffnen kann, aber wie genau sieht das Szenario im Spiel aus? Hast du mal drüber nachgedacht die Kiste erst zu "enabeln" wenn der Spieler den passenden Rang hat, oder da mit einem "SetDestroyed" zu arbeiten um sie nur in bestimmten Situationen aktivierbar zu machen?

Hi Andy1967,

soweit bin ich noch lange nicht :cry:. SetDestroyed ?? Kiste enablen ?? Das sind böhmische Dörfer für mich oder, anders ausgedrückt: Ich habe keine Ahnung :-D.

Ich habe mir nur eine Mod gemacht, die verschiedene Unterkünfte quer über Cyrodiil verteilt beinhaltet. Diese sollen aber nicht sofort zugänglich sein und daher gibt es verschiedene Schlüsselkästchen, die sich nur unter bestimmten Bedingungen öffnen lassen. Ich spiele eigentlich immer die Magiergilde und die Kämpfergilde und habe die Bedingungen entsprechend gestaltet.

Bisher habe ich das mit den Objekten im Interieur gelöst: Ownership > Faction = z.B. Magesguild und RequiredRank = ebenfalls entsprechend.
Dabei hat mich immer gestört, dass die Kistchen zwar mit dem roten Aktivierungssymbol versehen waren und ich sie aber trotzdem öffnen konnte.

Deshalb habe ich es mit Scripts versucht, damit ich die Kistchen erst öffnen kann, wenn die entsprechenden Bedingungen erfüllt sind.

Dank deiner Hinweise und Beispiele funktioniert es jetzt wie gewünscht - habe alles schon angepasst.

Gruß KarldG
 
Hi Andy1967,

soweit bin ich noch lange nicht :cry:. SetDestroyed ?? Kiste enablen ?? Das sind böhmische Dörfer für mich oder, anders ausgedrückt: Ich habe keine Ahnung :-D.

Ich habe mir nur eine Mod gemacht, die verschiedene Unterkünfte quer über Cyrodiil verteilt beinhaltet. Diese sollen aber nicht sofort zugänglich sein und daher gibt es verschiedene Schlüsselkästchen, die sich nur unter bestimmten Bedingungen öffnen lassen. ...
Ich hab selber grad ein wenig mit einer Tür experimentiert für eine Queste an der ich grade arbeite und vielleicht kannst du ja etwas damit anfangen, auch wenn bei dir ja im Moment alles läuft wie es soll. Aber wer weiss was dir noch so alles einfällt. :-D

Kurzer Exkurs vorneweg: Disabled und Destroyed. Wenn etwas disabled ist ist es zwar im CS vorhanden, wird aber vom Spiel ignoriert bis es "enabled" wird. So funktionieren beispielsweise die Einrichtungsgegenstände die man sich für die Spielerhäuser dazukaufen kann. Das steht schon alles da, wir aber vom Spiel ignoriert bis man das entsprechende Paket gekauft hat. Bis es "enabled" wird ist es unsichtbar und wie Luft. Wenn etwas destroyed ist wird es dagegen im Spiel dargestellt, man kann aber nicht damit interagieren. Ein NSC der destroyed ist läuft in Tamriel herum und geht seinem Tagesablauf nach, man kann ihn aber nicht ansprechen oder per Taschendiebstahl beklauen. Und eine Tür die "destroyed" ist wird zwar im Spiel dargestellt, taucht aber nicht auf der Karte auf und wenn man mit der Maus drauf zeigt bekommt man keinen Text zu sehn und kann auch nicht hindurch gehen.

Und das schöne an "Destroyed"? Ein Objekt kann sich, per Script, quasi selbst "zerstören".

Dazu braucht es nur ein Object Script das man auf die Tür legt. Das braucht nicht mal irgendwelche Variablen, sondern nur eine ganz einfache Abfrage dieser Art:

Code:
BEGIN OnLoad

IF Player.GetFactionRank MagesGuild <1
setdestroyed 1
ELSEIF Player.GetFactionRank MagesGuild >= 1
setdestroyed 0
ENDIF

END

Auf die Tür gelegt findet diese Abfrage jedesmal statt wenn die Cell/Exterior Region geladen wird in der sich die Tür befindet. Solange der Spieler den passenden Rang nicht hat wird er mit der Tür nichts anfangen können, und wenn er den passenden Rang (oder höher) hat kann er die Tür ganz normal benutzen. Da in deinem Fall davon auszugehen ist, daß keine NSCs jemals mit der Tür interagieren werden kann man sie auch ebensogut auf destroyed setzen wenn der Spieler sie nicht benutzen können soll. Das schöne an einem OnLoad ist auch, daß es (m.W.) immer nur einmal ausgeführt wird wenn das Objekt neu geladen wird. Im Gegensatz zu einem GameMode Script läuft hier also nicht ständig eine Abfrage im Hintergrund durch.

Ich hab das grade so bei mir eingebaut (nur mit einer Abfrage ob eine bestimmte Queste grade läuft oder nicht) und bei mir funktioniert es. (Wahrscheinlich braucht es nicht mal den "elseif" Teil des Script, aber ich geh gern auf Nummer Sicher.)
 
  • Like
Reaktionen: KarldG
Hi Andy1967
Ich hab selber grad ein wenig mit einer Tür experimentiert für eine Queste an der ich grade arbeite und vielleicht kannst du ja etwas damit anfangen, auch wenn bei dir ja im Moment alles läuft wie es soll. Aber wer weiss was dir noch so alles einfällt. :-D

Das stimmt soweit:D. Habe in der Zwischenzeit noch eine Hütte gebaut, nochmal ein neues Spiel angefangen und daher seit meinem letzten Post nicht mehr hier rein geschaut 8)

Da in deinem Fall davon auszugehen ist, daß keine NSCs jemals mit der Tür interagieren werden ...

Da muss ich doch etwas mehr zu meiner Mod erläutern und da einiges OT ist, schreib ichs mal in

Hier mal ein Bericht über meine Mod:

Mir ist aufgefallen, dass einige NPC's des öfteren zwischen den Ortschaften unterwegs sind.
Dummerweise werden sie gerade dann von Berglöwen, Bären udgl. angegriffen und getötet, wenn man gerade in die Nähe kommt.
Leider ist man als PC ständig nicht schnell genug vorort, um helfend eingreifen zu können und ebenso fatal ist es, dass auch manche NPC's in der Gegend herumlaufen, die man später vielleicht für eine Quest aufsuchen soll.

Ich hatte mal die Mod von Jakhar, "Chalet Waldesruh", installiert und festgestellt, dass die Engine diese Verkürzungen ebenfalls nutzt und dadurch die NPC's eher überleben.
Leider sind die Portale in den jeweiligen erwerbbaren Häusern eingerichtet und jedesmal, wenn dieser dämliche Dunmer in meinem Heim in Bravil auftauchte (Ihr wisst schon: "...wenn Ihr noch näher kommt,..."), war ich versucht, dem Kerl Klinge, Axt oder Knüppel über den Schädel zu ziehen.
Das fällt dann aber in die Rubrik Infamie und führt zur Dunklen Bruderschaft, deren Anwerber Lucien ich noch weniger leiden kann. BTW gefällt mir bei Skyrim, dass ich die DB dort vernichten kann, wenn auch nicht überall (siehe Dämmerstern).

Deshalb habe ich mir eine Startunterkunft gebaut, die in der Nähe des Ausgangs aus den Kanälen liegt und eine Verbindung zu einem von mir Transporterraum (ala Star-Trek) genannten unterirdischen Bereich führt, in dem Magierportale zu den einzelnen Städten von Cyrodiil führen und die auch von den NPC's genutzt werden können.

Weil ich mit den Reittieren in Cyrodiil nicht zurecht komme (mit Grausen denke ich immer an Nehrim, wenn ich hinter dem Sohn der Göttin herreiten muss) und die ganze Lauferei einem doch bald ziemlich langweilig wird, habe ich in einer Gegend, die weit ab vom Schuss liegt, ebenfalls ein Gebäude mit einem Magierportal erstellt.
So kamen mittlerweile noch zwei Gebäude dazu.

Vorgestern trat durch die Türscripte ein weiteres Problem auf:

Die Änderung bei den Türen dieser Gebäude hat gestern dazu geführt, dass Umbacano auf dem Weg zu Nenalata in einem meiner Häuser stand und nicht heraus konnte, weil er eben den Schlüssel dazu nicht hatte.
Ich hatte die Türen zu den Portalen im Transporterraum nicht mit einem ähnlichen Script versehen und so hat die Engine eben den kurzen Weg gewählt.
Kurzfristig half dann nur "prid..." und "moveto player".

So was passiert, wenn man nicht alle Möglichkeiten durchdenkt. Ich werde mir deine letzte Erläuterung nochmal durch den Kopf gehen lassen. Vielleicht kann ich damit sowas vermeiden.

Besten Dank nochmal!

Gruß KarldG
 
Zuletzt bearbeitet:
Du könntest Dir mal Celstiel - House of unlimited Fighting anschauen. Dort gibt es einen sogenannten Nexus, der per Teleporter alle Städte miteinander verbindet und der wird auch von NPCs genutzt. Vorteilhaft daran ist, daß sich die Teleporter-Plattformen nicht im Wohngebäude befinden, sondern auf einer eigenen kleinen Insel. Dadurch rennen die NPCs nicht dauern durch die gute Stube und Du mußt nichts abschließen. Celestiel selbst liegt komplett in einem eigenen Worldspace und kann über die stationären Teleporter in den Städten und durch ein überall beschwörbares Portal erreicht werden. Ich benutze die Mod schon ewig und kann mich einfach nicht davon trennen.

Bye, Bbm.
 
  • Like
Reaktionen: KarldG
Hi Leute ich habe folgende Frage unzwar wollte ich ein Script erstellen das dem Spieler beim drücken einer Taste einen Angriff ausführen lässt (eine Standardaniamation also keine eigene)
Script ist folgendes:
scn AttackLeft

begin GameMode
if IsKeyPressed2 256
player.PlayGroup AttackLeft 1
endif
end

Nur leider habe ich dass Problem dass immer noch die Standardanimation (also einmal Links und einmal Rechtsangriff oder wie auch immer das von Oblivion ausgewählt wird) abgespielt wird.
Eigentlich sollte halt zu der entsprechenden Waffengattung die entsprechende Animation (also der Angriff von Links) ausgewählt und dann abgespielt werden.
Ist das überhaupt möglich( hab im Internet nämlich nichts gefunden) oder versuch ich da irgendwas was garnicht funktioniert?
 
Animationen sind so gar nicht meine Expertise, daher kann ich nicht sagen ob das überhaupt geht oder nicht, aber die 256 ist ja wohl die linke Maustaste wenn ich mich nicht täusche? Hast du mal eine andere Taste als "trigger" ausprobiert? Vielleicht liegt es ja da dran? Die Maus ist als standard für die Spielsteuerung vorgesehen und vielleicht stellt sich das Spiel deshalb quer?