Zitat von
Wulfy301
Schade, das es keine brauchbare Lösung gibt!
Nee, du, sooo einfach kommst du jetzt nicht aus dieser Nummer raus!
Was jetzt keine Kritik an euch sein soll!
Wär' ja auch noch schöner...:rolleyes
Ich hatte gehofft das man dieses Skillpunkte Repairsystem einfacher einbauen könnte,
"Einfach" ist immer relativ und hängt auch von den verfügbaren Mitteln ab.
Das folgende script benötigt den NVSE, den du für das Nevada project ja sowieso brauchst.
(MessageEx ist eine undokumentierte Funktion (Corner message) des NVSE, die ich zum Debuggen brauchte.)
Die erforderliche Initiierungsquest hatte ich ja in meinem vorherigen post angesprochen.
Das script funzt (im Rahmen der Beschränkungen beim overriden von hardcoded functions) mMn ganz gut.
(actWeaponHealth ist ein float; get-/setHealth arbeiten aber nur mit int. Das könnte Ärger geben, war mir aber erstmal "Banane".)
Der Zustand einer Waffe kann auch > 100 sein - das hatte ich bei der ganzen Sache nicht bedacht.
Da du aber eh' nicht mehr das intensivste Interesse hast, spar ich mir mal, das noch zu ändern.
Man repariert also ganz "normal" (incl. evtl. 100%-Zustansbalken) und am Ende werden alle Waffen- und Rüstungs"zustände",
deren health>100 ist overriden (hier auf repairSkill reduziert).
Wenn es perfekt sein soll, müsste man im MenuMode die jew. Zustände merken und im GameMode alle veränderten
mit einer schönen Formel overriden.
So, habe fertig.
Hat mir möglicherweise mehr Spaß gemacht als dir, da ich schon immer mal den script extender testen wollte!
Dank dafür!
und bis die Tage,
shak-otay
Code:
scn aaWeaponRepairLimitScript
Float repairSkill
Float actWeaponHealth
Int DoOnce
short i
short itemCnt
ref item
Begin MenuMode 1035
set repairSkill to player.getAV Repair
set doOnce to 1
End
Begin GameMode
if doOnce == 1
set i to 0
set itemCnt to player.getNumItems
Label 1
if i < itemCnt
set item to player.getInventoryObject i
if item != 0 && isFormValid item == 1 && isQuestItem item == 0 && getWeight item > 0 && getValue item > 0 && (getType item == 40 || getType item == 24)
set actWeaponHealth to getHealth item
;ShowMessage aaWeaponHealthMess i actWeaponHealth
if actWeaponHealth > repairSkill
set actWeaponHealth to actWeaponHealth/100*repairSkill
;MessageEx "%n %.1f" item actWeaponHealth
setHealth actWeaponHealth item
endif
endif
set i to i + 1
goto 1
endif
set doOnce to 0
endif
End