Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 10 von 10

Thema: Suche 2 Skripts

  1. #1

    Suche 2 Skripts

    Hallo. Wieder mal ist der Vampir auf der Suche nach Skripts und hat leider keine Ahnung davon.
    Ich brauche 2 Stück :

    1.
    Das Skript soll nur auftreten , wenn der Spieler Vampir ist. Es soll aktiviert werden , wenn man sich UNGESEHEN hinter einem NPC in schleichposition befindet. Nun könnte man ja normalerweise Taschendiebstahl. Da soll aber eine Messagebox kommen "Was wollt ihr tun? Und dann "Taschendiebstahl oder Blutsaugen" bei letzterem soll abhängig vom Schleichwert des Spielers (mit Boni) in % festgelegt werden , ob es klappt. Wenn es funktioniert soll einfach der übliche "Euer Hunger auf Blut ist gestillt....für den Moment" Message kommen und der Spieler wieder auf Vampirstufe 25 zurückgesetzt. Bei Fehlschlag soll genau das selbe passieren , wie wenn man beim Taschendiebstahl erwischt wird. Klar dass man , wenn man Taschendiebstahl wählt , normal Taschendiebstahl macht.

    2.
    Das Skript soll nur aktiviert werden wenn der Spieler die Eigenschaft "ZZZvampireinstinct" hat.Sobald er nur noch 10%(oder weniger) seiner Maximalen Lebensenergie(mit Boni) hat , soll er den Buff "ZZZvampireInstinctpowers" bekommen und außerdem soll er seine momentan angelegte Waffe ablegen(nicht wegwerfen oder zerstören oder so , nur ablegen) und er soll für die Dauer des Effekts keine Waffen anlegen können. Der Effekt soll abklingen sobald der Spieler wieder mehr HP hat als 10%
    Dann soll der Buff "ZZZvampireinstinctpowers" wieder entfernt werden und der Spieler soll wieder Waffen anlegen können. Die Eigenschaft "ZZZvampireinstinct" soll unverändert bleiben.

  2. #2
    Ich fürchte, die Scripte wirst du nicht bekommen. Denn es gibt sie meines Wissens nach noch nicht. In dem Fall mußt du sie selbst schreiben -> http://cs.elderscrolls.com/constwiki....php/Main_Page <- da findest du diverse Tutoriale.

    Das Problem an deinem Scriptwunsch ist, daß es einfacher wäre, während eines Sturms brennende Teddybären regnen zu lassen, die beim Aufprall in Melonen zerplatzen.

    Ein Script alleine reicht nicht, es muß auch laufen. Gleichzeitig sollte es aber auch nur laufen, während es benötigt wird. Und hier beginnt das Problem... was damit weitergeht, daß manche Sachen die du willst nur mit sehr komischen Scriptumgehungen möglich sind. Sehr aufwendig.

    1. Die Bedingungen sind einfach (IsSneaking == 1, GetDetected == 0, et cetera), viel problematischer ist aber das neue Auswahlmenü. Ehrlich gesagt habe ich keine Idee, wie man daran kommen kann ohne sämtlichen NPCs ein Script zu verpassen.

    2.
    float threshold
    short vi
    set threshold to player.getav health
    set threshold to threshold / 10.0
    if player.getav health < threshold && vi != 1
    ; code
    set vi to 1
    endif
    if vi == 1 && player.getav health > threshold
    ; code
    set vi to 0
    endif
    Jetzt mußt du nur noch den Code für die Waffen finden. Imho eine Unmöglichkeit - es gibt zwar ein unequipbefehl, aber den müßtest du für *jede* Waffe einbauen - *und* der würde nicht für PlugIn-Waffen gelten. Soweit ich das sehe, wäre das vernünftig nur mit OBSE möglich.

  3. #3
    Puh ,ist das kompliziert , das lass ich lieber sein und verzichte auf die Scripte.
    Aber eine andere Scriptfrage , die vermutlich leichter zu erfüllen ist : Was für ein Script muss ich an eine Truhe hängen , damit ihr jeden Tag ein bestimmtes Item hinzugefügt wird.(Jeden Tag das selbe)

  4. #4
    Zitat Zitat von Lord Asgar Beitrag anzeigen
    Aber eine andere Scriptfrage , die vermutlich leichter zu erfüllen ist : Was für ein Script muss ich an eine Truhe hängen , damit ihr jeden Tag ein bestimmtes Item hinzugefügt wird.(Jeden Tag das selbe)
    Setz sie einfach auf Respawn und füge das gewünschte Item in.

    Ansonsten müßtest du dir mal das Script der Alchemietruhe im Erzmagierzimmer anschauen .

  5. #5
    Hab auf die schnelle und mit Blick auf das Truhen-Script der Erzmagiertruhe folgendes Script geschrieben und an die Truhe gehängt :


    Zitat Zitat
    Scn ZZZscriptfuertruhe

    begin gamemode

    short startday


    short dayspassed

    additem lockpick 1

    end
    Aber irgendwie füllt es die Truhe dauenrt mit Items auf und nicht mal in der richtigen Menge! Weiss jemand , was da nicht passt?Mit respawn will ich`s net machen.

  6. #6
    Also zuerst mal müssen die Variablen afaik vor das begin gamemode.

    2. muss da noch eine if-Abfrage rein, denn momentan wird dein Skript in jedem frame ausgeführt, womit pro frame 1 Dietrich der Truhe hinzugefügt wird. Außerdem: was nützen dir die Variablen, wenn du sie weder veränderst, noch irgentwo abfragst?

    3. würde ich das ganze als Questskript (einer unsichtbaren Quest) machen, da es bei deiner Lösung (Skript auf Truhe) nur arbeiten würde, wenn der Spieler in der Nähe der Truhe ist. Nachteil ist halt, dass dann die ganze Zeit im Hintergrund ein Skript läuft, was evtl. die Performance belastet.

    Probier mal dieses Skript:
    Code:
    scn MeineTruhenAuffüllScript
    
    short olddayVAR
    short dayVAR
    short done
    
    begin gamemode
    
    if ( done == 0 )
     set olddayVAR to getdayspassed
     set dayVAR to getdayspassed
    ;ich bin mir jetzt aber nicht sicher, ob es diese Funktion gibt und das CS-Wiki ist momentan leider down
     set done to 1
    if ( done == 1 ) && ( dayVAR == olddayVAR )
    ;kann man das so abfragen?
     set dayVAR to getdayspassed
     set done to 2
    if ( done == 2 ) && ( dayVAR > olddayVAR )
    ;kann man das so abfragen?
     meineTruhe.additem MeinItem 1
     set done to 1
     set olddayVAR to getdayspassed
    endif
    
    end
    Da jetzt in deiner Truhe soviele "Mein Item"s liegen würden wie Tage vergangen sind würde ich deiner Truhe noch folgendes Skript hinzufügen:

    Zusätzlich musst du noch jeder if-Abfrage im obigen Skript noch folgendes anhängen (Code kopieren; Achtung: Leerzeichen am Anfang):
    Code:
     && ( MeineTruheScript.discovered == 1 )


    Da ich jetzt aber selbst nicht so der große Skripter bin gebe ich keine Garantie darauf, das alles funktioniert (Wie in den Kommentaren gesagt: ich bin mir nicht sicher, dass es alle Befehle gibt, die ich verwende, noch, dass alle if-Abfragen funktionieren). Mach eine Sicherheitskopie deiner *.esp und dann einfach aufprobieren. Mehr als schiefgehen kann's eigentlich nicht. Obwohl, bei Oblivion weiß man eigentlich nie...

  7. #7
    Zitat Zitat von Low Post Beitrag anzeigen
    Also zuerst mal müssen die Variablen afaik vor das begin gamemode.

    2. muss da noch eine if-Abfrage rein, denn momentan wird dein Skript in jedem frame ausgeführt, womit pro frame 1 Dietrich der Truhe hinzugefügt wird. Außerdem: was nützen dir die Variablen, wenn du sie weder veränderst, noch irgentwo abfragst?

    3. würde ich das ganze als Questskript (einer unsichtbaren Quest) machen, da es bei deiner Lösung (Skript auf Truhe) nur arbeiten würde, wenn der Spieler in der Nähe der Truhe ist. Nachteil ist halt, dass dann die ganze Zeit im Hintergrund ein Skript läuft, was evtl. die Performance belastet.

    Probier mal dieses Skript:
    Code:
    scn MeineTruhenAuffüllScript
    
    short olddayVAR
    short dayVAR
    short done
    
    begin gamemode
    
    if ( done == 0 )
     set olddayVAR to getdayspassed
     set dayVAR to getdayspassed
    ;ich bin mir jetzt aber nicht sicher, ob es diese Funktion gibt und das CS-Wiki ist momentan leider down
     set done to 1
    if ( done == 1 ) && ( dayVAR == olddayVAR )
    ;kann man das so abfragen?
     set dayVAR to getdayspassed
     set done to 2
    if ( done == 2 ) && ( dayVAR > olddayVAR )
    ;kann man das so abfragen?
     meineTruhe.additem MeinItem 1
     set done to 1
     set olddayVAR to getdayspassed
    endif
    
    end
    Da jetzt in deiner Truhe soviele "Mein Item"s liegen würden wie Tage vergangen sind würde ich deiner Truhe noch folgendes Skript hinzufügen:

    Zusätzlich musst du noch jeder if-Abfrage im obigen Skript noch folgendes anhängen (Code kopieren; Achtung: Leerzeichen am Anfang):
    Code:
     && ( MeineTruheScript.discovered == 1 )


    Da ich jetzt aber selbst nicht so der große Skripter bin gebe ich keine Garantie darauf, das alles funktioniert (Wie in den Kommentaren gesagt: ich bin mir nicht sicher, dass es alle Befehle gibt, die ich verwende, noch, dass alle if-Abfragen funktionieren). Mach eine Sicherheitskopie deiner *.esp und dann einfach aufprobieren. Mehr als schiefgehen kann's eigentlich nicht. Obwohl, bei Oblivion weiß man eigentlich nie...

    Wow , die Welt des Scriptings ist ja wahnsinnig kompliziert!
    Leider erkennte das CS den befehl discovered nicht an.

    EDIT : Vielleicht könnte man einen andere Befehl machen , zb ob der Spieler einen bestimmten Hebel umgelegt hat oder ob der die Truhe schonmal aktiviert hat?
    Geändert von Lord Asgar (20.08.2007 um 16:20 Uhr)

  8. #8
    Hallo Low Post,

    Zitat Zitat von Low Post Beitrag anzeigen
    Also zuerst mal müssen die Variablen afaik vor das begin gamemode.
    Müssen tun sie nicht. Im Prinzip müssen Variablen lediglich vor ihrer Verwendung deklariert sein. Aber es ist guter Programmierstil und hat sich der besseren Übersichtlichkeit halber so eingebürgert, Variablen zu Beginn anzugeben.

    Zitat Zitat
    3. würde ich das ganze als Questskript (einer unsichtbaren Quest) machen, da es bei deiner Lösung (Skript auf Truhe) nur arbeiten würde, wenn der Spieler in der Nähe der Truhe ist. Nachteil ist halt, dass dann die ganze Zeit im Hintergrund ein Skript läuft, was evtl. die Performance belastet.
    Meiner Ansicht und auch Erfahrung nach, wird der Performance-Einfluss von Skripten häufig überbewertet. Ich arbeite schon lange Zeit an einer Mod mit vielen, wirklich sehr vielen und langen Skripten. Einige dicke Brummer müssen nochdazu ständig laufen. Wenn ich mir die Situation im Scriptprofiler anschaue, verursachen die Skripte die meiste Zeit gerade mal so um die 1 bis 2% Prozessorauslastung. Wenn's hoch kommt auch schon mal mehr. Das sind dann Situationen, in denen rechenintensive Funktionen zum tragen kommen, wie z.B. GetLineOfSight. Doch dabei handelt es sich um Ausnahmen. Questskripte, die (in der Grundeinstellung) alle 5 Sekunden einmal laufen, kann man imho ganz vernachlässigen, sofern man nicht gerade hunderte davon laufen hat.

    Womit ich natürlich nicht sagen möchte, dass man sich nicht trotzdem darum bemühen sollte, seine Skripte so effizient wie möglich zu schreiben. Hier bei der Kiste etwa bräuchte es eigentlich weder ein Questskript (bzw. einen GameMode-Block im Skript der Kiste). Man könnte im OnActivate-Block ausrechnen, wieviele Gegenstände seit dem letzten Öffnen der Kiste hinzugekommen sind. Ungefähr so müsste es klappen (aber ungetestet):

    PHP-Code:
    scn KistenSkript

    short LastDay
    short CurrentDay
    short DoOnce
    short Count

    begin OnActivate

        
    if DoOnce == 0
            set DoOnce to 1
            set LastDay to GameDaysPassed
            AddItem Lockpick 1
        
    endif

        
    set CurrentDay to GameDaysPassed

        set Count to CurrentDay 
    LastDay

        AddItem Lockpick Count

        set LastDay to CurrentDay
        
        activate

    end 
    Beim allerersten Öffnen wird ein Dietrich in die Kiste gelegt (könnte man natürlich auch schon im CS machen) und die "Zeitmessung" initialisiert. Später werden dann jeweils soviele neue Dietriche in die Kiste gelegt, wie Tage seit dem letzten Öffnen vergangen sind. Wenn die Kiste eine größere Anzahl von Dietrichen pro Tag produzieren soll, müsste man Count noch mit der entsprechenden Menge multiplizieren.

    Grüße
    Brausebart

  9. #9
    Zitat Zitat von Lord Asgar Beitrag anzeigen
    Wow , die Welt des Scriptings ist ja wahnsinnig kompliziert!
    Leider erkennte das CS den befehl discovered nicht an.

    EDIT : Vielleicht könnte man einen andere Befehl machen , zb ob der Spieler einen bestimmten Hebel umgelegt hat oder ob der die Truhe schonmal aktiviert hat?
    Also discovered soll kein Befehl sein, sondern eine Variable, die beim ersten aktivieren(discovered == 0 ) auf 1 gestetzt wird.

    Beim compilieren (=speichern) welches Skripts gibt er denn die Fehlermeldung aus?

    Edit:
    OK, nimm das Skript von Brausebart, der scheint sich da besser auszukennen.
    Geändert von Low Post (20.08.2007 um 16:40 Uhr)

  10. #10
    Hab das Script von Brausebart mal ausprobiert , es klappt.Danke

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •