Construction Set Skriptthread zum Construction Set

Achso, Sorry. Dann wie meine Vorposter schon gesagt haben mit einem disable Befehl.

Oder so:

Code:
scn WaffenSkript01

Begin OnActivate

message: "Die Waffe zerfällt in euren Händen zu Staub"

wafferef. disable

End
 
Zuletzt bearbeitet:
@DarkRuler: Sofern es dafür keinen haargenau passenden OBSE-Befehl gibt, wirst du Schwierigkeiten haben, das zu realisieren. Die Kalkulation des Waffenschadens ist von vielen Komponenten abhängig und nicht alle davon kannst du abfragen, sodass du nicht wissen kannst, welcher Schaden genau verursacht wird. Eine Darstellung davon findest du auf UESP.
Den Waffenschaden an sich bekommst du also nicht. Eine Ausweichmöglichkeit wäre, dass du in einem Quest-Skript per "getCrosshairRef" die Referenz bekommst, die vom Spieler gerade attackiert wird. Dann kannst du dort laufend abfragen, wie sich die Lebensenergie verändert. Das könnte dann in etwa so aussehen:
Code:
scn name

float fQuestDelayTime

short hit
ref target

long health
long oldHealth
long healthMod
long playerHealth
long newHealth

Begin GameMode

if fQuestDelayTime != 0.001
 set fQuestDelayTime to 0.001
endif

if player.getEquipped <Schwert-ID> == 0
 return
endif

if player.isWeaponOut == 0
 return
endif

if hit == 0
 set target to getCrosshairRef
 if target == 0
  return
 endif
 set health to target.getAV health
 set oldHealth to health
 return
endif

set health to target.getAV health
if health < oldHealth
 set healthMod to ((oldHealth - health) / X)
 set playerHealth to player.getAV health
 set newHealth to (playerHealth + healthMod)
 player.setAV health newHealth
endif
set hit to 0

end

Das könnte eventuell etwas auf die Performance gehen und kann falsch funktionieren, wenn der Spieler sich im Getümmel befindet. Zusätzlich musst du noch einen Magic-Effect erstellen, den du als Verzauberung auf die Waffe legst:
Code:
scn name

Begin ScriptEffectStart
 set <Quest-ID>.hit to 1
end

Ich hab das jetzt nicht getestet, aber nach meinem Verständnis sollte es funktionieren. Ideal wäre es natürlich trotzdem, wenn es einen entsprechenden OBSE-Befehl gäbe...
 
  • Like
Reaktionen: TheDarkRuler
Danke für deine tolle Hilfe, Diarrhoe.
Ich habe inzwischen allerdings wie von Kahmul geraten, einen eher schlichten Script erstellt, welcher dem Spieler nach dem Tod des Gegners etwas Leben dazugibt. :D

:bye:
DarkRuler2500
 
Ich hätte eine Frage. Wäre jemand so freundlich mir den Vanilla-Script für die Nekromantenaltäre so umzuformen, dass es immer funktioniert. Also nur einen großen leeren Seelenstein rein, Seelenfalle drauf und schwarzer Seelenstein raus?

Code:
ScriptName NecroAltarScript

;This handles creation of Black Soul Gems at Necromancer Altars

ref self



Begin OnMagicEffectHit STRP 



;For every Grand Soul Gem in the container, swap out 1 with a Black Soul Gem

if ( MGNecroAnchorites.Halo == 1 )
    set self to GetSelf
    cast MGAnchoriteAltarSpell self
    if ( GetItemCount SoulGemEmpty5Grand > 0 )
        removeitem SoulGemEmpty5Grand 1
        additem BlackSoulGem 1
    endif
    if ( GetStage MG11NecroMoon == 50 )
        SetStage MG11NecroMoon 60
    endif
endif

End


Begin OnMagicEffectHit 

;if IsSpellTarget StandardSoulTrap3journeyman == 1
;    MessageBox Test
;    set self to GetSelf
;    cast MGAnchoriteAltarSpell self
;    if ( GetStage MG11NecroMoon == 50 )
;        SetStage MG11NecroMoon 60
;    endif

;endif


End


EDIT: Ups. Sorry für den Doppelpost.
Kann ein Mod die Posts zusammenführen?
 
Zuletzt bearbeitet:
Ich denke, es müsste gehen, wenn du dies aus dem Script entfernst:
Code:
ScriptName NecroAltarScript

;This handles creation of Black Soul Gems at Necromancer Altars

ref self



Begin OnMagicEffectHit STRP 



;For every Grand Soul Gem in the container, swap out 1 with a Black Soul Gem

[COLOR="Red"]if ( MGNecroAnchorites.Halo == 1 )[/COLOR]
    set self to GetSelf
    cast MGAnchoriteAltarSpell self
    if ( GetItemCount SoulGemEmpty5Grand > 0 )
        removeitem SoulGemEmpty5Grand 1
        additem BlackSoulGem 1
    endif
[COLOR="Red"]    if ( GetStage MG11NecroMoon == 50 )
        SetStage MG11NecroMoon 60[/COLOR]
[COLOR="Red"]    endif[/COLOR]
[COLOR="Red"]endif[/COLOR]

End


Begin OnMagicEffectHit 

;if IsSpellTarget StandardSoulTrap3journeyman == 1
;    MessageBox Test
;    set self to GetSelf
;    cast MGAnchoriteAltarSpell self
;    if ( GetStage MG11NecroMoon == 50 )
;        SetStage MG11NecroMoon 60
;    endif

;endif


End
 
  • Like
Reaktionen: TheDarkRuler
Hallo

Neue Frage:
Ich habe mit StreamMusik einen Track ausgewählt, doch der wird nicht abgespielt. Kann mir jemand mal genau beschreiben, wie sowas funzt?
Wie muss der Script aufgebaut sein?
 
Zuletzt bearbeitet von einem Moderator:
Wenns damit immer noch nicht klappt, poste einfach mal deinen Versuch und gib eine Beschreibung, wann er abgespielt werden soll.
 
Hallo Leute

ich brauche eure Hilfe. Ich möchte eine Kiste erstelle wo man Gegenstände, Waffen und Rüstungen hinein legt, und diese Gegenstände nach einem Tag weg sind. Achtung!!! Aber wenn der Tag vorbei ist, soll Gold in der Kiste liegen. Und zwar so viel Gold, wie die Gegenstände Wert sind. Z. B. Stahllangschwert für 300 Goldstücke. Dann sollen nach dem Tag genau 300 Goldstücke bleiben. Bis man diese Abholt. Und immer so weiter. Weiß jemand, wie ich das mache.
fressehalten.gif
Ich würde mich sehr über eure Antworten freuen.

Mfg Assassine hdr95
s_065.gif
 
Bin grad am Skriptschreiben, editier ihn dann hierein.

mfg
Kahmul

PS: Wieso fragste nicht gleich mich? Bin doch im Team. :D
 
Weil grad ich noch versuche Unternehme bis Freitag wie ich dass mit dem Verkaufen am Besten machen sollte. Da habe ich ja so einige Möglichkeite und Vorstellungen. Danke.
 
So, hier der Skript. Bin mir aber nicht so sicher, mit der Gold und Gegenstandsabfrage. Benötigt übrigens OBSE. ;)

Code:
SCN ...

long Gold

short Init
Short Day

Ref Container
Ref Item

float fQuestDelayTime

Begin GameMode

If fQuestDelayTime != 0.001
        set fQuestDelayTime to 0.001

   Endif

If Init == 0
        set Container to <ContainerRef>
        set Item to GetContainer
        set Gold to Item.GetGoldValue
        set Day to GameDaysPassed
        set Init to 1

   Endif


ElseIf Init == 1
     If Day == 1
      If Container.getItemcount Item == 1
        Container.addItem Gold 1
        Container.RemoveItem Item 1
        set Day to 0
        set Init to 2

    Endif
  Endif
Endif

If Day >= 2
  If Init == 2
        set Day to 0
        set Init to 0

   Endif
  Endif



End
 
  • Like
Reaktionen: Myron
Uhhhii. Auch noch OBSE. (Benutzte ich nicht.) Ich kann mir dass aber erst morgen oder am Freitag anschauen. Danke. Vielleicht ist das Scripten doch noch ne Nummer zu groß und ich bleibe bei meinen Häusern.

Mfg Assassine hdr95

PS: Vielleicht übernimmst du dass. Ich schicke dir dann noch ne PN.
 
Ich kann mir den Nutzen des Skripts nicht so richtig erklären... Ich würde es so schreiben (benötigt auch OBSE):
Code:
scn name

short init
short day
float hour

long value
short sValue
short count
short index
ref item

Begin onActivate

set init to 1

end

Begin GameMode

if init == 1
 if getNumItems == 0
  set init to 0
  return
 else
  set day to (gameDaysPassed + 1)
  set hour to gameHour
  set init to 2
 endif
endif

if init == 2
 if gameDaysPassed < day
  return
 elseif gameDaysPassed == day
  if gameHour < hour
   return
  endif
 endif
 set count to getNumItems
 set init to 3
endif

if init == 3
 if index <= count
  set item to getInventoryObject index
  set value to (value + (item.getGoldValue * getItemCount item))
  set index to (index + 1)
 endif
 if index > count
  removeAllItems
  set sValue to value
  addItem Gold001 sValue
  set item to 4
 endif
endif

end
 
Ich bräuchte wieder einmal Hilfe ...

Beim Erreichen einer Queststage soll eine vorher verschlossene Tür (unmöglich; ohne Schlüssel) geöffnet werden.

Wie lautet der passende Begriff?

:bye:
DarkRuler2500
 
Danke, SirTroy.

:bye:
DarkRuler2500

EDIT:
Hätte sofort noch eine Frage :

Wie bekomme ich Zufallsabfragen in einen Script?
Ich will, dass mit etwa 10%iger Wahrscheinlichkeit ein Script auf einen Gegner gewirkt wird, wenn ich meine Waffe schwinge.
 
Zuletzt bearbeitet:
Ich bin mir bei Zufallskripten nie sicher, aber ich habe es so in Erinnerung:

Code:
scn Scriptname

short random

Begin OnHit
set random to GetRandomPercent

If random < 10
;hier kommt das Script rein, welches auf den Gegner wirken soll
endif
end
So, ich hoffe, ich habe jetzt hier keinen Mist geschrieben, sonst korrigiert mich bitte :-D
 
Ich glaube, das geht anderster. ;)
Da du ja sowieso OBSE verwendest, kann ich ja OBSE benutzen. :D
Skript kommt dann gleich... oder auch morgen, wenn ich so auf die Uhr schaue. :shock: :roll:

mfg
Kahmul

EDIT: Hat doch noch geklappt:

Code:
SCN ...

Ref NPC
Ref Target

Short Random
Short Init

Float fQuestDelayTime


Begin GameMode

If fQuestDelayTime != 0.001
        set fQuestDelayTime to 0.001

   Endif


If Init == 0
        set NPC to GetCrossHairRef
        set Random to Rand 1 10
        set Init to 1

ElseIf Init != 1
        return

ElseIf Init == 1
        set Target to NPC
        set Init to 2

   Endif



End


Begin OnHit Target

If Player.getEquipped <Waffe> == 1 && If Random == 10 && If Init == 2
      ; Was du machen willst
      set Init to 0

Else
   
   set Init to 0
   return


  Endif



End
 
Zuletzt bearbeitet: