PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Repair Skill



Wulfy301
25.10.2012, 18:50
Hallo Leute

mein zweites und letztes Problem ist das neue Reparatursystem in Fallout NV. Man kann egal wie hoch der Repair-Skill ist alles auf 100% reparieren, vorausgesetzt man hat genug Ersatzteile.

In Fallout 3 war die Qualität der Reparatur vom Repair-Skill abhängig, so hoch dieser Wert war, so gut konnte man die Gegenstände reparieren. Also 40 Punkte R-Skill, ermöglichte eine Reparatur von 40 % eines Gegenstandes und nicht mehr.

Mein Wunsch wäre es, im vorhandenen Reparatursystem von Fallout NV diese sperre auch zu haben. Die Ersatzteile werden entsprechend dem Repair-Skill gut oder schlecht genützt und man kann nur bis zum momentanen Repair-Skill reparieren.

Ich verwende zusätzlich noch den Project Nevada Mod und weiß nicht ob man das NV Reparatursystem überhaupt ändern kann, geschweige den wo.


Mfg...

Hexerin
26.10.2012, 00:40
Wenn Du zum Beispiel Reparatur auf 70 bist, kannst Du Deine Waffen auch nur bis 70 reparieren.
Der Balken wird zwar voll aufgefüllt, es sind aber nur 70 Prozent.
Um das zu überprüfen, kannst Du zu dem Major vom Mojave Outpost gehen.
Du wirst sehen, das er Deine gerade reparierte Waffe, nochmals reparieren kann.
(er hat 100 Reparatur)

Wulfy301
26.10.2012, 09:18
Guten Morgen Hexerin

dann wird also der Zustandsbalken falsch dargestellt?

Hexerin
26.10.2012, 09:54
Richtig.
Was noch dazu kommt.
Wenn man einen niedrigen Wert beim Reparieren hat, verbraucht man deutlich mehr Kits oder Ersatzteile für die Reparatur bis der Balken aufgefüllt ist.
Wenn Du es noch schwerer willst, dann nimm von Projekt Nevada die Einstellung "Alternative Reparatur" oder so ähnlich.
Dann wird es noch etwas härter.
Mann kann dann nur mit den Kits reparieren. Waffen zählen nicht mehr als Ersatzteile.

Wulfy301
26.10.2012, 10:24
Hm, ok daran muss ich mich wohl gewöhnen das der Zustandsbalken, wenn er voll ist nur den momentanen RepSkill wieder gibt.

Das "Alternative Reparatur System" ist einfacher, man kann den zu reparieren Gegenstand mit ähnlichen Gegenstände reparieren, ähnlich dem RepPerk (weiß grad nicht wie der heißt). Zumindest ist es im "normal Modus" so.

Wulfy301
27.10.2012, 21:20
War gerade im Mojave Outpost, dort wird nichts angezeigt, das die Gegenstände noch nicht 100% haben. Die Gegenstände sind schon auf 100%, obwohl ich erst 40 Punkte RepairSkill habe. Ich spiele allerdings auch im "normal Modus".

Das hier ist das Projekt Nevada RepairMainScript, vielleicht kann mir jemand damit helfen. Das Ziel wäre, das man nur soweit reparieren kann, wie der momentane RepSkill ist. Geht das, und kann man das überhaupt?


scn PNxRRepairMainScript

short stop
short init

short repairSkill
short lastRepairSkill

short i

ref obj
ref repairList

short size

short count

short tabId
short lastTabId

short refresh
short helpTrap

short weaponSkill
short weaponType
short i
short size

ref scrapList
ref item

short index

float armorDT
ref classList

ref element
short j
short size2

short noTools
short lastNoTools
short skillCheck
short enableScrap

;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Control
Begin GameMode


if stop == 1

set init to 0

; Restore original repair kits
setName "Reparatursatz" NVRepairKit
set count to player.getItemCount PNxRRepairTools

if count > 0
player.removeItem PNxRRepairTools count 1
set count to count / PNxRRepairConversionMult
if count > 0
player.addItem NVRepairKit count
endif
endif

; Classify weapons and safe default lists
setStage PNxRRepairMain 2

; Reset to default repair lists
set i to 0
set size to (listGetCount PNxRRepairDefaultKeysList)

Label 50

if i < size
set item to listGetNthForm PNxRRepairDefaultKeysList i
set repairList to listGetNthForm PNxRRepairDefaultValuesList i

if item != 0 && isFormValid item == 1
if repairList != 0 && isFormValid repairList == 1
setRepairList repairList item
endif
endif

set i to i + 1
goto 50
endif

stopQuest PNxRRepairMain
return
endif

if init == 0 || getGameLoaded == 1
set init to 1
set lastRepairSkill to 0

setName "Reparatursatz" NVRepairKit

; Fix weapons with missing replair lists
if getRepairList WeapDeathclawGauntlet == 0
setRepairList PNxRRepairDeathClawGauntlet WeapDeathclawGauntlet
endif

if getRepairList WeapNVRiotShotgun == 0
setRepairList PNxRRepairThatGun WeapNVRiotShotgun
endif

if getRepairList WeapNVPlasmaDefender == 0
setRepairList PNxRRepairPlasmaDefender WeapNVPlasmaDefender
endif

if getRepairList WeapNVBattleRifleUnique == 0
setRepairList PNxRRepairBattleRifle WeapNVBattleRifleUnique
endif

if getRepairList WeapNVThatGun == 0
setRepairList PNxRRepairThatGun WeapNVThatGun
endif

if getRepairList WeapNVPlasmaDefenderArcade == 0
setRepairList PNxRRepairPlasmaDefender WeapNVPlasmaDefenderArcade
endif
endif

;-----------------------------
; Replace weapon repair kits by repair tools
set count to player.getItemCount NVRepairKit
if count > 0
player.removeItem NVRepairKit count 1
set count to count * PNxRRepairConversionMult
player.addItem PNxRRepairTools count
endif

set refresh to 1

End


;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Dynamic repair lists
Begin MenuMode 1

; Show help message when enabled for the first time
if helpTrap == 0
set helpTrap to 1
showTutorialMenu PNxRRepairHelpMsg
endif

; Replace weapon repair kits by repair tools
set count to player.getItemCount NVRepairKit
if count > 0
player.removeItem NVRepairKit count 1
set count to count * 10
player.addItem PNxRRepairTools count
endif

set tabId to getUIFloat "InventoryMenu\GLOW_BRANCH\IM_Tabline\_CurrentTab"

;-----------------------------




;-----------------------------
; Weapons

if refresh == 1
; Classify weapons and safe default lists
setStage PNxRRepairMain 2
endif

set repairSkill to player.getAV Repair
set noTools to (player.getItemCount PNxRRepairTools == 0)
set enableScrap to player.hasPerk JuryRigging == 1

if repairSkill != lastRepairSkill || noTools != lastNoTools || refresh == 1
set i to 0
set size to player.getNumItems

Label 67

if i < size

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)

; Empty repair list so repair option is blacked out
if noTools == 1
setRepairList PNxRRepairNullList item
else

; Fetch custom repair list
set index to (listGetFormIndex PNxRRepairDefaultKeysList item)
set repairList to (listGetNthForm PNxRRepairDefaultAltValuesList index)
setRepairList repairList item

; Completely clear the list
set PNxCUtilList.inputList to repairList
setStage PNxCUtilList 10

; Always add the item itself
listAddForm repairList item

; Weapon
if getType item == 40

; Add additional class items if repair skill > weapon skill req
if repairSkill >= getWeaponRequiredSkill item

set weaponSkill to getWeaponSkill item
set weaponType to getWeaponType item

; Unarmed (0)
if weaponSkill == 45
set scrapList to PNxRRepairUnarmedScrapList
set classList to PNxRRepairWeaponsClass0List

; Melee (1-2)
elseif weaponSkill == 38

set scrapList to PNxRRepairMeleeScrapList

; Class 1 One-handed Melee
if weaponType == 1
set classList to PNxRRepairWeaponsClass1List

; Class 2 Two-handed Melee
else
set classList to PNxRRepairWeaponsClass2List

endif

; Energy Weapons (3-6)
elseif weaponSkill == 34

set scrapList to PNxRRepairEnergyWeaponsScrapList

; Class 3 Energy Pistols
if weaponType == 4
set classList to PNxRRepairWeaponsClass3List

; Class 4 Energy Rifles (Laser)
elseif weaponType == 7
set classList to PNxRRepairWeaponsClass4List

; Class 5 Energy Rifles (Other)
elseif weaponType == 6
set classList to PNxRRepairWeaponsClass5List

; Class 6 Energy Weapons
else
set classList to PNxRRepairWeaponsClass6List

endif

; Guns (7-10)
elseif weaponSkill == 41

set scrapList to PNxRRepairGunsScrapList

; Class 7 One-handed Guns
if weaponType == 3
set classList to PNxRRepairWeaponsClass7List

; Class 8 Two-handed Automatic Guns
elseif weaponType == 6
set classList to PNxRRepairWeaponsClass8List

; Class 9 Bolt/Lever-action Guns
elseif weaponType == 5
set classList to PNxRRepairWeaponsClass9List

; Class 10 Miniguns
else
set classList to PNxRRepairWeaponsClass10List

endif

; Explosives (11-13)
elseif weaponSkill == 35

set scrapList to PNxRRepairExplosivesScrapList

; Class 11 Grenade Launchers
if weaponType == 5
set classList to PNxRRepairWeaponsClass11List

; Class 12 Grenade machine guns
elseif weaponType == 8
set classList to PNxRRepairWeaponsClass12List

; Class 13 Missile Launchers
elseif weaponType == 9
set classList to PNxRRepairWeaponsClass13List
endif
endif


; Add class lists
if classList != 0
; Add classList to repairList
set j to 0
set size2 to (listGetCount classList )

label 78
if j < size2
set element to listGetNthForm classList j

if listGetFormIndex repairList element == -1
listAddForm repairList element 0
endif

set j to j + 1
goto 78
endif
endif

; Add scrap lists
if enableScrap == 1 && scrapList != 0
; Add scrapList to repairList
set j to 0
set size2 to (listGetCount scrapList )

label 71
if j < size2
set element to listGetNthForm scrapList j

if listGetFormIndex repairList element == -1
listAddForm repairList element 0
endif

set j to j + 1
goto 71
endif
endif

endif

; Armors
elseif getType item == 24

set armorDT to getArmorDT item

; PA
if isPowerArmor item == 1
set skillCheck to 100
set classList to PNxRRepairPowerArmorList

; Use elements from original repair list for glasses
elseif listGetFormIndex RepairGlasses item != -1
set skillCheck to 0
set classList to RepairGlasses

else
; Clothing
if armorDT == 0
set skillCheck to 0
set classList to PNxRRepairClothingArmorList
; Light Armor
elseif armorDT < 10
set skillCheck to 25
set classList to PNxRRepairLightArmorList
; Medium Armor
elseif armorDT < 20
set skillCheck to 50
set classList to PNxRRepairMediumArmorList
; Heavy Armor
else
set skillCheck to 75
set classList to PNxRRepairHeavyArmorList
endif
endif

; No Extra repair options
if repairSkill >= skillCheck

; Add elements from class list to repair list
if classList != 0
set j to 0
set size2 to (listGetCount classList)

label 70
if j < size2
set element to listGetNthForm classList j

if getEquipType element == getEquipType item
if listGetFormIndex repairList element == -1
listAddForm repairList element 0
endif
endif

set j to j + 1
goto 70
endif
endif
endif
endif
endif
endif

set i to i + 1
goto 67

endif
endif

set lastRepairSkill to repairSkill
set lastNoTools to noTools

set refresh to 0

End


;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Begin MenuMode

if menuMode 1035 == 1
if player.getItemCount PNxRRepairToken == 0
player.addItem PNxRRepairToken 1 1
endif
else
if player.getItemCount PNxRRepairToken > 0
player.removeItem PNxRRepairToken 1 1
endif
endif

End

shak-otay
03.11.2012, 22:06
Das Ziel wäre, das man nur soweit reparieren kann, wie der momentane RepSkill ist. Geht das, und kann man das überhaupt?


Das Naheliegendste wäre, in der Fallout3.esm nachzusehen,
wie das mit dem repair limit gelöst ist und das in einer NV-mod nachzubilden.

Wenn das allerdings hardcoded ist, hätten wir ein ähnliches Problem
wie mit dem sleep Heal, wo die hardgecodete Heilung überschrieben werden musste.

Einen menuMode-Ansatz (menuMode 1035= Pipboy Repair) kann man hier wohl
vergessen, weil bei Aufruf von player.srm z.B. die 100%-Reparierfähigkeit
zum Tragen käme, was du ja gerade nicht willst.

Jedenfalls brauchst du z.B.
set repairSkill to player.getAV Repair,
player.getWeaponHealthPerc und player.setWeaponHealthPerc,
um ein script zusammmenbasteln.

Ich scripte nur selten für Fallout, so dass ich dir nicht sagen kann,
wie man das script dann am besten mit der zu reparierenden Waffe
verbindet; über eine Werkbank oder über einen Spell?

Das NVRepairKit nutzt den BaseEffect RepairKitEffect.
Kannst du im G.E.C.K. leicht über Edit/Find Text finden (FalloutNV.esm).

Wulfy301
04.11.2012, 20:05
Danke für deine Antwort shak-otay!

Muss Fallout 3 erst noch installieren und reinschauen!
Hab einen Venom Repair Perk gefunden, nur bin ich nicht sicher was der genau macht, hat aber auf jeden Fall etwas mit der Reparatur zu tun.
16567
16568

Eingebaut und ausprobiert hab ich schon, aber ich kann keine Wirkung im Spiel erkennen!

Boïndil
05.11.2012, 06:14
Es geht mir nicht darum, dich zu entmutigen, aber ich glaube nicht, dass man das hardcecodete Reparatur-System im Inventar ändern kann. Aber auf jeden Fall ist diese Perk von Venom die falsche Spur, erscheint eher wie ein unfertiger Perk(der basierend auf Repair-Skill den Waffenschaden ändert?) und Perks können keine Limits auf einer reparierten Waffe setzen.
Wenn, müsste man wahrscheinlich einen Marker im MenuMode 1035 setzen, der die Waffe anschliessend schädigt. Dazu müsste man aber rausfinden, welche Waffe das ist und es gibt nach meinem Wissen keine Funktion dafür, die Waffe ist ja nicht ausgerüstet. Vielleicht wäre es möglich, Items im Inventar aktivierbar zu machen (http://geck.bethsoft.com/index.php/OnActivate), aber du willst sicher keine Scripte auf alle Ausrüstung setzen.
Der einzige Weg erscheint mir ein Script auf einer speziellen Reparatur-Werkbank, dann kannst du den Reparatur-Status rechnerisch ermitteln und setzen, habe so ein Script auf die Heilbögen auf Zeta gesetzt. Ob es sinnvoll ist, eine Funktion aus dem PipBoy auszulagern, bezweifle ich.

Das Script RepairKitEffectScript in NV kann man hingegen ändern, aber das betrifft nur das Kit. Dieses bezieht den Original-Zustand der Waffe ja nicht mit ein, errechnet einen Reparatur-Wert basierend auf deinem Skill und zählt ihn auf den Zustand der aktuellen Waffe, was (theoretische)Werte über 100 ergeben kann.

shak-otay
05.11.2012, 17:40
Dazu müsste man aber rausfinden, welche Waffe das ist Ja, das ist ein echter Knackpunkt...:(

@Wulfy301:

ich habe trotzdem mal ein script gemacht, mit dem du etwas rumbasteln kannst.

Bei der Initiierungsquest ein script proc. delay von 0.5 einstellen.
(Bei mir gibt's bei default 'nen black screen, auch wenn der menuMode-Block leer ist.)

Wenn du eine Waffe per linkem Mausklick selektierst (also ausrüstest) und dann 'R'
(für Reparieren) und 'E' (Abbrechen) drückst, hat die selektierte Waffe einen Zustand
entsprechend deinem Reparatur-Skill (falls der Prozentwert nicht schon darüber lag).


scn aaWeaponRepairLimitScript

Float repairSkill
;Int DoOnce

Begin MenuMode 1035
set repairSkill to player.getAV Repair

if player.getWeaponHealthPerc < repairSkill
player.setWeaponHealthPerc repairSkill
;ShowMessage aaOnMenu
endif
End

Begin GameMode

End

Wie/ob man ein 'R' auf nichtselektierte Waffen overriden kann, muss du selbst herausfinden;
ebenso, wie man die Waffen aus der jeweiligen repair list mit einbringt.

Wenn man nach 'R' ganz normal mit den Waffen aus der repair list reparieren will,
müsste man im GameMode den Nach-Reparatur-Zustand overriden.

-> Bliebe immer noch das Problem mit nichtselektierten Waffen.


PS: da hat übrigens schonmal jmd. vergeblich gesucht:D
http://forums.nexusmods.com/index.php?/topic/501186-help-limiting-repair-skill/

edit: so, mit 'nem Repairskill von 81 'ne MP von 25 auf 94 repariert und dann auf 76 limitiert.


scn aaWeaponRepairLimitScript

Float repairSkill
Float actWeaponHealth
Int DoOnce

Begin MenuMode 1035
set repairSkill to player.getAV Repair
set doOnce to 1
End

Begin GameMode

if doOnce==1
set actWeaponHealth to player.getWeaponHealthPerc
;ShowMessage aaWeaponHealthMess actWeaponHealth
set actWeaponHealth to actWeaponHealth/100*repairSkill
;ShowMessage aaWeaponHealthMess actWeaponHealth
player.setWeaponHealthPerc actWeaponHealth
set doOnce to 0
endif

End

Das Wahre isses aber nich, weil man im Pipboy-Inventory den 94 er Balken sieht.
Das reduziert sich erst, wenn man das Inventory schließt und wieder öffnet.

Wulfy301
06.11.2012, 18:54
Hallo ihr beiden, ich bedanke mich für eure Bemühungen!:A

Schade, das es keine brauchbare Lösung gibt! Weiter Zeit darin zu investieren ist unnötig, der Aufwand ist einfach zu hoch. Ich hatte gehofft das man dieses Skillpunkte Repairsystem einfacher einbauen könnte, aber das es so schwierig, gar in gewohnter Form unmöglich ist, hätte ich nicht gedacht.
Was jetzt keine Kritik an euch sein soll!

Nochmals, danke das ihr mir helfen wolltet!:wink

shak-otay
07.11.2012, 18:05
Schade, das es keine brauchbare Lösung gibt! Nee, du, sooo einfach kommst du jetzt nicht aus dieser Nummer raus!:D


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


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

Wulfy301
07.11.2012, 20:35
Ne,ne,ne - Von wegen kein Interesse mehr!:P
Ich dachte wenn es hardcoded ist, dann ist Schluss mit Scripten????(

Muss jetzt erst mal dein Script ausprobieren, damit ich verstehe was noch nicht ganz rund läuft.:gruebel
Man du bist vielleicht ne Type, mal einfach so ein Kaninchen aus den Hut zaubern, echt Wahnsinn!:eek:

Hoppla, was mach ich da falsch?
16586

shak-otay
07.11.2012, 21:55
mal einfach so ein Kaninchen aus den Hut zaubern, echt Wahnsinn!
Naja, beim Nevada project "abschreiben" ist nicht besonders schwer...


Hoppla, was mach ich da falsch?Hast du das G.E.C.K. mit nvse_loader.exe -editor aufgerufen?

(Wenn du nur Geck.exe startest, kennt es die NVSE-Funktionen nicht.)

Falls es doch eine andere Ursache sein sollte, hier die esp (http://www.uploadmb.com/dw.php?id=1352320411).

Wulfy301
07.11.2012, 22:44
Hmm, hab deine esp heruntergeladen und mit fomm aktiviert, aber im Spiel kann ich immer noch bis 100 Reparieren. Wenn man raus geht aus der Pipboy Ansicht, kommen Textfenster mit Zahlenwerte. Da in deiner esp keine Questdatei ist hab eine erstellt, das selbe Ergebnis mit und ohne Questdat.

shak-otay
07.11.2012, 23:43
Hmm, hab deine esp heruntergeladen und mit fomm aktiviert, aber im Spiel kann ich immer noch bis 100 Reparieren. Das gleiche Prinzip wie beim SleepHeal: hardcodete Änderungen müssen im GameMode überschrieben werden.
Dass der Zustandsbalken ggf. auf 100% geht, könnte man nur verhindern, wenn man sich in die 'R' - Routine einhängt.
Man kann zwar die NVSE source ändern und neu compilieren, aber das Einhängen in die repair-Routine wäre dann doch "etwas" aufwändiger.


Wenn man raus geht aus der Pipboy Ansicht, kommen Textfenster mit Zahlenwerte.Die zeigen (nur zu debug-Zwecken) die vorher/nachher-Zustandswerte an.


Da in deiner esp keine Questdatei ist hab eine erstellt, das selbe Ergebnis mit und ohne Questdat.Die Quest heißt WeaponsRL. Siehst du, wenn du die esp markierst und im G.E.C.K. Data-Fenster auf Details klickst.

Im Moment ist es so, dass eine auf 100 reparierte Waffe auf den Zustand 81 overridden wird, wenn der repairSkill 81 ist.
Das ist ja nur ein proof of concept, was zeigen soll, dass es prinzipiell möglich ist.

edit: Hauptsache, es ist sichergestellt, dass der NVSE aktiv ist.
Hab's mal ohne gestartet, dann funzt die Reduzierung auf 81 natürlich nicht.

Witzigerweise funzt aber die corner message; d.h. das ist gar keine NVSE-Funktion, sondern eine "FalloutNV-immanente".

edit2: wenn du vor (oder statt) MessageEx ShowMessage aaWeaponHealthMess i actWeaponHealth
einfügst, wird die Reduzierung besser nachvollziehbar.

Allerdings wird ein Zustandswert > repairSkill nach jedem 'R' reduziert; vllt. kannst du dies

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. ja umsetzen.

Wulfy301
08.11.2012, 10:55
Hallo shak-otay

Ich kann noch immer keine Änderungen an deiner esp machen.
Hab wie in der readme steht, eine Verknüpfung zur nvse_loader.exe gemacht und dort als Ziel das hier eingegeben -> C:\Programme\Steam\SteamApps\common\fallout new vegas\nvse_loader.exe" "-editor"
Das geck wird damit geladen, aber bei jeder Änderung an deinem Script gibts immer noch die oben erwähnte Fehlermeldung.
Was tun?

Zu deinem Script, ich glaube nicht das ich viel dazu beitragen kann, für mich sind das Zahlen und Buchstaben die lustig aneinander gereiht sind - sorry!:cry
So wie ich das jetzt verstanden habe, repariert man auf 100% und wird dann auf den momentanen Repskillwert zurückgesetzt, ist nicht gerade das was man eigentlich haben wollte. Das müsste auf jeden Fall verbessert werden.
Des weiteren kann man am Repbalken nicht sehen das man nur bis zum momentanen Repskillwert repariert, sonder der ist trotzdem auf 100%, obwohl er eben z.B. 50% anzeigen müsste. Damit kann man aber leben!
Zu guter Letzt das erwähnte "Zustandswert > repairSkill nach jedem 'R' reduziert" sollte wie du sagst verbessert werden.

Boïndil
08.11.2012, 11:11
Damit wird eben alles kaputt gemacht, was über Reparatur-Skill ist, wenn ich das richtig verstanden habe. Und das passiert erst, nachdem du wieder im Spiel(GameMode) bist. Ich glaube nicht, dass man das so brauchen kann, wenn es auch die einzige Möglichkeit ist. Und du möchtest ja sicher nicht, dass früh im Spiel alle Items auf 27% gebracht werden, wenn du eines reparierst.
Du hast eben keine Möglichkeit, rauszufinden, welches Item du gerade reparierst und es so schnell zu ändern, dass die Anzeige stimmt. Der PipBoy zeigt nicht alle Script-Änderungen sofort an, selbst wenn sie möglich wären. Und wenn du per Hack rausfinden könntest, welche Items du repariert hast, dann gibt es die Script-Sprache auch mit Extender nicht her, dass du eine Anzahl von Werten in einer Variable speicherst, die anschliessend durchlaufen wid(Arrays). Mit Skyrim könnte man das hingegen.
Wenn man mich dafür bezahlen würde, so eine Funktion umzusetzen, würde ich damit beginne, die Memory von NV mit der Cheat Engine zu hacken oder mal den Script Extender auseinander nehmen und vielleicht würde ich irgend wann mal eine DLL hinkriegen oder so. Bordmittel würde ich dabei überhaupt nicht einbeziehen, die sind nach meinem Wissen völlig untauglich für die Aufgabe, ausser du kannst damit leben, dass alle Items im Inventar auf deinen Reparatur-Skill gebracht werden, wenn du eines reparierst.

shak-otay
08.11.2012, 15:34
C:\Programme\Steam\SteamApps\common\fallout new vegas\nvse_loader.exe" "-editor"
Das geck wird damit geladen, aber bei jeder Änderung an deinem Script gibts immer noch die oben erwähnte Fehlermeldung.
Was tun?Hallo Wulfy301,

ich schätze, die "" bei "-editor" musst du weglassen.

edit: hmm, wenn das Geck startet, ist es vllt. was anderes. Kannst du denn das script ohne Änderung saven
und dann das script-Fenster schließen?
Bzw., poste mal, was du änderst.


So wie ich das jetzt verstanden habe, repariert man auf 100% und wird dann auf den momentanen Repskillwert zurückgesetzt, ist nicht gerade das was man eigentlich haben wollte. Das müsste auf jeden Fall verbessert werden.Ein "proof of concept" ist in der Regel nicht vollständig ausgearbeitet.


Des weiteren kann man am Repbalken nicht sehen das man nur bis zum momentanen Repskillwert repariert, sonder der ist trotzdem auf 100%, obwohl er eben z.B. 50% anzeigen müsste. Damit kann man aber leben!Ja, muss man wohl; hatte ich aber drauf hingewiesen.


Zu guter Letzt das erwähnte "Zustandswert > repairSkill nach jedem 'R' reduziert" sollte wie du sagst verbessert werden.
Habe ich mir schon gedacht, dass ich das selber machen muss.:D
Kann aber etwas dauern, da ich natürlich schwerpunktmäßig an meinen eigenen Projekten arbeite.

Du kannst mir aber gerne "zuarbeiten", z.B. indem du herausfindest, was der 100%-Balken für unterschiedliche Items bedeutet.
D.h., was heißt 100% bei 'ner MP? Zustandswert==100? oder 2000?
Was ist der maximale Zustandswert, der überhaupt vorkommen kann? 10000?

Dann könntest du nach der Repairformel (neue Waffen health bzw. Zustand nach repair abhängig vom repair skill) suchen.
Hatte ich schonmal iwo, aber wenn ich das alles selber machen muss, dauert's natürlich entsprechend länger.

Wulfy301
08.11.2012, 16:32
Ich wollte das hier
edit2: wenn du vor (oder statt) MessageEx ShowMessage aaWeaponHealthMess i actWeaponHealth ändern. Hab es jetzt aber hingekriegt, speichern geht!
Dein (original) Script scheint aber nicht zu funktionieren, Waffe genommen, repariert, aus dem pipboy raus, Textmeldungen gekommen, zum NKR reparier Typen gelascht um nachzusehen wie der Waffenstatus ist. Die reparierte Waffe hat 100%, kein abgezogener Malus erkennbar. Das Spiel natürlich mit nvse_loader gestartet!

Boïndil
08.11.2012, 17:46
Ich glaube, ich weiss, wieso das Script nicht funzt. Es gibt kein GetHealth und SetHealth, zumindest nicht in der Dokumentation.
http://geck.bethsoft.com/index.php/Category:Functions_(FOSE)
http://geck.bethsoft.com/index.php/Category:Functions

Gilt nur für die ausgerüstete Waffe:
http://geck.bethsoft.com/index.php/GetWeaponHealthPerc
http://geck.bethsoft.com/index.php/SetWeaponHealthPerc

Nur FOSE, nur ausgerüstetes Objekt:
http://geck.bethsoft.com/index.php/SetObjectHealth
http://geck.bethsoft.com/index.php/GetEquippedCurrentHealth

Vanilla akzeptiert überhaupt nur Waffen und auch nur solche, die ausgerüstet sind. Und FOSE akzeptiert auch nur Ausrüstung, die ausgerüstet ist. Man nenne das mal nicht grob lückenhaft.Vielleicht sind die Dokumentationen nicht vollständig, aber nach dem kann man in keiner Weise das Inventar durchlaufen und Reparatur-Status auslesen oder setzen.

shak-otay
08.11.2012, 18:36
Ich glaube, ich weiss, wieso das Script nicht funzt. Es gibt kein GetHealth und SetHealth, zumindest nicht in der Dokumentation.
Boïndil, was is los mit dir?;-)
http://fose.silverlock.org/fose_command_doc.html#SetHealth

Ich mach' das hier nur nebenbei und anerkenne dich als Fallout-script-Experten.

Aber tu' mir bitte den Gefallen, und recherchier vernünftig, bevor du einfach loskritisierst.
Soviel Respekt untereinander sollte doch gegeben sein?

@Wulfi301: ich muss gleich wieder los; wenn du die anderen Sachen noch nachgucken könntest, kann ich bestimmt am WE
mal etwas Zeit freischaufeln.
Vllt. hilft uns ja Boïndil auch. Muss seine links mal in Ruhe checken; aber heute nicht mehr...

Boïndil
08.11.2012, 20:17
Hatte bisher nur auf der GECK-Seite nachgesehen. Wollte überhaupt niemandem an den Karrren fahren und ich behaupte auch nicht, dass ich alles kenne..

shak-otay
09.11.2012, 00:33
Die reparierte Waffe hat 100%, kein abgezogener Malus erkennbar. Das Spiel natürlich mit nvse_loader gestartet!Also erstmal, allen Unkenrufen zum Trotz: getHealth und setHealth funzen bei mir (Fallout NV mit Patch 1.4.0.525 und nvse_2_beta12).

Habe mal if actWeaponHealth > repairSkill samt endif auskommentiert und 15x 'R' gedrückt und wieder raus. Der Zustand der Items verringert sich kontinuierlich um den Faktor repairSkill/100.

Allerdings passen die Zustandsbalken nicht zu den Zustandswerten. Vllt. sollte man für actWeaponHealth doch besser int (short) verwenden.
Muss ich mal in Ruhe eruieren... tapfer bleiben- wir schaffen das.:D

edit: hmm, ja, da gibt's ein Problem mit stacked items.
Habe alle Waffen gedropped bis auf 5 MPs.
Wenn man die item-loop (die nur Waffen und Armor behandelt) durchnudelt, werden die Rüstungen incl. health angezeigt,
aber nur eine MP. das ist natürlich sehr bescheiden.

Sieht nach einem "known problem" aus:

If using to only drop a part of a stack of items, it's unclear which will be dropped.
For instance, if you drop 3 of 5 Baseball Bats, they may be the 3 with the least health, most health, etc.

Bliebe zu hoffen, dass die angezeigte health der MP die Summe aller MPs ist, aber wenn man dann die neue health auf die MP setzt,
wer weiss, was dann passiert.

Naja, ich muss schon wieder los. Falls du wider Erwarten doch noch selbst etwas forschen willst:
ersetze ShowMessage ... bzw. MessageEx ... durch
PrintToConsole "%.0f %n %.1f", i, item, actWeaponHealth,
dann erscheinen die Ausgaben alle in der Konsole.

edit2: so, nachdem ich rätselte, warum GetRefCount NICHT die Anzahl der MPs im Stack ausgibt,
sondern einfach das script stoppt, habe ich jetzt die Erklärung gefunden.

Boïndil hatte ja schon gechrieben, dass man den Reparatur-Status (Health) von Inventar-Items
nicht auslesen kann; aber nicht warum das so ist.

Hier ist die Begründung: http://forums.nexusmods.com/index.php?/topic/293866-nvse-mod-woes/page__p__2671603#entry2671603

In Kurzfassung: Inventar-Items haben keine Referenz. (oder nur 'ne temporäre?)
GetInventoryObject liefert nur das zugehörige base object zurück.

Dann haben Get-/SetHealth offenbar die health der base objects gezeigt/geändert, was natürlich nicht Sinn der Sache war.

Zuletzt schreibt rickerhk im Januar 2011: "With the current state of NVSE, you can't get the health of an item in a container unless it's equipped."

D.h., die Waffe muss ausgerüstet sein, damit man auf ihre health zugreifen kann.

Damit ist hier erstmal EndeImGelände. Aber die repair-Geschichte hat(te) ihren Reiz.

bis die Tage...

Wulfy301
11.11.2012, 19:03
Hallo shak-otay

danke das du so viel Arbeit und Zeit reingesteckt hast!
Hab leider nicht mithelfen können, meine kleine Tochter brauchte etwas mehr Aufmerksamkeit und da konnte ich nicht nein sagen. Kein Problem das es nicht geklappt hat, aber vielen dank nochmals - du bist spitze!:right

shak-otay
11.11.2012, 19:33
Hallo shak-otay

danke das du so viel Arbeit und Zeit reingesteckt hast!Hallo Wulfy301,
keine Ursache; war mal eine willkommene Abwechslung gegenüber dem C-Coding.
Außerdem versuche ich generell, alles (wenigsten einigermaßen) zuende zu bringen, was ich begonnen habe.


Kein Problem das es nicht geklappt hat,
Ich arbeite an einer Lösung basierend auf meinem ersten Ansatz. Muss da nur noch verhindern, dass
auch repariert wird, wenn die Waffe nicht ausgerüstet ist.
Kann ich zwar unterbinden, aber auf Kosten eines script-Stopps. Kriege ich aber vllt. auch noch gelöst.


aber vielen dank nochmals - du bist spitze!:rightKannst du garnicht wissen.:D
Wenn es eine Lösung gibt, wird die aber voraussetzen, dass die zu reparierende Waffe ausgerüstet sein muss.

Es ist aber mMn sogar immersiver, wenn man die Waffe zum Reparieren in die Hand nehmen muss, als wenn
das im Inventar passiert. (Eigentlich müsste der Held ja auch einen Rucksack tragen.)

edit: so, das Selektionsproblem ist zwar nicht gelöst, aber das Prinzip funzt soweit:http://www7.pic-upload.de/thumb/12.11.12/t4ueff1d2ow.jpg (http://www.pic-upload.de/view-16864995/limitedWeaponRepair.jpg.html)
Eine MP mit health 22.5 wird mit einer mit health 13 repariert. Repair skill ist 81.
Die hardcoded repair gibt nach der Formel
repaired condition (%) = 5 + 22.5 +13/20 + 15 x 81 /100 = 40.3
d.h. die Differenz ist 17.8 und wird durch die mod auf 14.4 reduziert, was in der Summe 36.9 ergibt.

Um zu garantieren, dass nicht höher als repair skill repariert werden kann, müsste man noch die max health der
MP mit einbeziehen. Da es aber noch 2 Probs mit higher priority gibt, habe ich das weggelassen.

Nämlich: damit das so funzt, wie beschrieben, muss a) die zu reparierende Waffe ausgerüstet und
b) per Maus mit dem Rechteckauswahlrahmen selektiert sein, bevor man 'R' für repair drückt..

Beachtet man a) nicht, gibt's zwar 'ne Meldung, aber die hardcoded repair wird nicht limitiert.
Gilt a), aber nicht b), gibt's ne hardcoded repair auf die "falsche" Waffe.
Gilt beides nicht, gibt 'ne unlimitierte hardcoded repair.

Das ist natürlich eine große Einschränkung, weshalb ich das auch nicht als mod veröffentlichen würde.

http://www.uploadmb.com/dw.php?id=1352724805

Vllt. gibt's ja iwann mal eine bessere Lösung.

bis die Tage...