Mir ist bei meinem Skript auch noch ein Problem bei zu schneller Nutzung des Menüs aufgefallen, was dazu führt, dass ein Menumode evtl. nicht erkannt wird. Das lässt sich aber ohne Probleme über fQuestDelayTime lösen.
Mehrfachnutzung ist imo auch schon enthalten.

Code:
scn AzurasSunQuestScript

short x
short SoulGemMenu
float fQuestDelayTime

Begin Menumode
 if ( ( Menumode 1042 ) || ( Menumode 1049 ) )          ;Enchantment & Recharge Menu
  if ( SoulGemMenu == 0 )
   set x to Player.GetItemCount [ID deines Seelensteins]
   set SoulGemMenu to 1
  endif
 else
  if ( x != Player.GetItemCount [ID deines Seelensteins] )
   if ( SoulGemMenu )
    set x to ( x - Player.GetItemCount [ID deines Seelensteins] )
;    Message " "
;    Message " "
;zum ausblenden der Nachricht einfach die beiden obigen Zeilen entkommentieren (Achtung: blendet evtl. auch wichtige Nachrichten aus)
    if ( x > 0 )
     Player.AddItem [ID deines Seelensteins] x
    else
     MessageBox "Während dem Verzaubern/Waffe aufladen wurde ein [Name deines Seelensteins] hinzugefügt."
    endif
   endif
   set x to Player.GetItemCount [ID deines Seelensteins]
   set SoulGemMenu to 0
  endif
 endif
End

Begin Gamemode
 if ( fQuestDelayTime != 0.5 )
  set fQuestDelayTime to 0.5          ;falls du jemand kennst, der das Verzauberungsmenü/Auflademenü in weniger als einer halben Sekunde verlassen kann den Wert einfach entsprechend verkleinern
 else
  if ( x != Player.GetItemCount [ID deines Seelensteins] )
   if ( SoulGemMenu )
    set x to ( x - Player.GetItemCount [ID deines Seelensteins] )
;    Message " "
;    Message " "
;zum ausblenden der Nachricht einfach die beiden obigen Zeilen entkommentieren (Achtung: blendet evtl. auch wichtige Nachrichten aus)
    if ( x > 0 )
     Player.AddItem [ID deines Seelensteins] x
    else
     MessageBox "Während dem Verzaubern/Waffe aufladen wurde ein [Name deines Seelensteins] hinzugefügt."
    endif
   endif
  set x to Player.GetItemCount [ID deines Seelensteins]
  set SoulGemMenu to 0
  endif
 endif
End

Einbinden:
  1. Stell die Skriptart auf Quest und speicher das Skript ab.
  2. Du gehst auf Character-->Quests
  3. in dem sich öffnendem Fenster machst du in der linken Spalten einen Klick mit der rechten Maustaste --> New
  4. in dem nächsten Fenster gibst du die Editor-ID der Quest an (z.B. AzurasSunQuest). Mit OK bestätigen.
  5. im Reiter Quest Data (am Anfang offen) stellst du unter Script dein Script ein.
  6. Stell noch sicher, dass der Hacken bei Start Game Enabled ist, bzw. mach den Hacken weg und starte die Quest bei hinzufügen des Seelensteins via OnAdd Player.
  7. Abspeichern und fertig