Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29
  1. #11
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Aber hallo, shak-otay du bist echt spitze!

    Ich tippe mal bei "Set Diff to fullHP - CurrentHP", oder?

    Mfg...

    P.S. Habs gerade getestet und da stimmt was nicht! Wenn man nur eine Stunde schläft, wird die Gesundheit auf fast null reduziert, schläft man wieder eine Stunde wird man etwas geheilt, schläft man 8 Stunden ist man fast geheilt.

    Kann man das nicht so einstellen, das man jede Stunde einen bestimmten Wert geheilt wird und gut?
    Geändert von Wulfy301 (23.10.2012 um 19:38 Uhr)

  2. #12
    Newbie Avatar von shak-otay
    Registriert seit
    04.09.2012
    Beiträge
    39

    Standard

    Zitat Zitat von Wulfy301 Beitrag anzeigen
    Aber hallo, shak-otay du bist echt spitze!
    Naja, mein Chef sagt immer, ich bliebe unter meinen Möglichkeiten...

    Ich tippe mal bei "Set Diff to fullHP - CurrentHP", oder?
    Knapp daneben.


    P.S. Habs gerade getestet und da stimmt was nicht! Wenn man nur eine Stunde schläft, wird die Gesundheit auf fast null reduziert, schläft man wieder eine Stunde wird man etwas geheilt, schläft man 8 Stunden ist man fast geheilt.
    Ich schrieb ja, dass das Script noch korrigiert werden muss.

    Kann man das nicht so einstellen, das man jede Stunde einen bestimmten Wert geheilt wird und gut?
    Mit dieser Korrektur solltes passen:
    Set ResultHP to (fullHP - CurrentHP - HPPerHour * SleepTime)

    MfG...

  3. #13
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Das Skript sieht jetzt so aus, funktioniert aber nicht richtig.
    Eine Stunde schlafen etwas Heilung (wie gewünscht), aber auch die Körperteile werden vollständig geheilt.
    8 Stunden schlafen Heilung fast fertig, noch ne Stunde schlafen (auch mehrmals) Heilung bleibt bei etwa 90% stehen.

    Skript ->

    scn aaSleepHealth

    Float FullHP
    Float CurrentHP
    Float Diff
    Float HPPerHour
    Float ResultHP
    Float SleepTime

    Int OncePer

    Begin MenuMode

    If GetPCSleepHours != 0
    if OncePer==0
    Set SleepTime to GetPCSleepHours
    if SleepTime > 8
    Set SleepTime to 8
    endif
    ;ShowMessage AprilMartimerDead
    set fullHP to player.GetBaseActorValue Health
    set CurrentHP to player.GetActorValue Health
    Set Diff to fullHP - CurrentHP
    Set HPPerHour to (Diff / 8)
    Set ResultHP to (fullHP - CurrentHP - HPPerHour * SleepTime)
    Set OncePer to 1
    Endif
    Endif

    End

    Begin GameMode

    If OncePer==1
    player.damageav health ResultHP
    Set OncePer to 0
    Endif

  4. #14
    Newbie Avatar von shak-otay
    Registriert seit
    04.09.2012
    Beiträge
    39

    Standard

    Zitat Zitat von Wulfy301 Beitrag anzeigen
    aber auch die Körperteile werden vollständig geheilt.
    Ja, ich schrieb doch, dass wir die limbs erstmal "außen vor" lassen. Für die Körperteile musst du die ziher-mod ohne die player.damageav health ...-Zeile aktivieren, denkich.

    8 Stunden schlafen Heilung fast fertig, noch ne Stunde schlafen (auch mehrmals) Heilung bleibt bei etwa 90% stehen.
    Naja, das Feintuning ist immer der aufwändige Part; da musst du schon selber tätig werden.

    Am besten, du malst dir ein Achsenkreuz auf: y-Achse=HP, x-Achse= timeline, also die Stunden.

    (Geradengleichungen y= mx+b (m=Steigung, b= y-Achsenabschnitt) sind ein Begriff, hoffich?)

    SleepTime ist x, y dürfte health - ResultHP sein.
    Stell die Geradengleichung auf berechne daraus die aktuelle Wertetabelle; zeichne die x/y-Paare in die x-y-Ebene ein.

    Dann fülle die Wertetabelle mit den gewünschten Wertepaaren. Du brauchst aber nur 2 Wertepaare,
    um die neue Geradengleichung zu bestimmen. (2-Punkte-Form der Geradengleichung; sollte Stoff der 8. oder 9. Klasse sein)

    Wenn dir das zu kompliziert ist, kannst du die 3 8ten im Script auch mal testweise durch 10 oder 12 ersetzen.

    PS: bitte setze Scripte beim Posten in code-tags (code)script(/code), damit die vernünftig formatiert sind.
    "(", ")" durch "[","]" ersetzen
    Geändert von shak-otay (23.10.2012 um 23:13 Uhr)

  5. #15
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Soweit bin ich jetzt:

    Skript 1 (ziher-mod ) -> Körperteile werden durch Schlaf nicht mit geheilt - funktioniert

    Skript 2 (JoshNZ-shak-otay-mod) -> Heilung erfolgt schrittweise, aber:

    nach einer Stunde Schlaf hüpft der Grafikbalken der Gesundheitsanzeige von 100% Geheilt auf 30% Verletzt zurück. Wieder 1 Stunde schlafen, Balken hüpft von 100% auf 40% zurück, usw.
    egal wie lange und in welchen Zeitabschnitten man schläft, man erreicht nicht mehr als 90% Heilung.

    Handelt es sich hierbei um die erwähnte Feineinstellung?
    Ein herumprobieren mit den 8ter Werten, hat keine sichtbare Besserung ergeben.

    Code:
    [QUOTE]scn aaSleepHealth
    
    Float FullHP
    Float CurrentHP
    Float Diff
    Float HPPerHour
    Float ResultHP
    Float SleepTime
    
    Int OncePer
    
    Begin MenuMode
    
    	If GetPCSleepHours != 0 
                if OncePer==0
    		Set SleepTime to GetPCSleepHours 
    		if SleepTime > 8
    			Set SleepTime to 8
    		endif
    		;ShowMessage AprilMartimerDead
    		set fullHP to player.GetBaseActorValue Health
    		set CurrentHP to player.GetActorValue Health
    		Set Diff to fullHP - CurrentHP 
    		Set HPPerHour to (Diff / 8)
    		Set ResultHP to (fullHP - CurrentHP - HPPerHour * SleepTime)
    		Set OncePer to 1
    	    Endif
    	Endif
    
    End
    
    Begin GameMode
    
    	If OncePer==1
    	     player.damageav health ResultHP
      	     Set OncePer to 0
    	Endif
    
    End
    Kann man das ganze nicht vereinfachen?

    Wäre so was auch möglich:
    - zum momentanen Gesundheitswert wird nach einer Stunde Schlaf, 50 Gesundheitspunkte dazu addiert.
    - nach einer weiteren Stunde werden wieder 50 GP dazu addiert, usw.
    - es ist egal ob man eine Stunde, oder acht Stunden am Stück schläft, es werden je Stunde 50 GP dazu addiert, bis halt die maximale Gesundheit erreicht ist.

    Geht das auch, oder ist das noch komplizierter?

    Mfg...
    Geändert von Wulfy301 (24.10.2012 um 01:21 Uhr)

  6. #16
    Not my Fallout Avatar von Boïndil
    Registriert seit
    20.07.2008
    Ort
    Vaullt 101
    Beiträge
    12.122
    Gamer IDs

    Gamertag: PixelMurder

    Standard

    Wie wäre es damit?
    Set ResultHP To GetPCSleepHours * 50
    Player.RestoreActorValue Health ResultHP
    No mods for Failout 76.

  7. #17
    Newbie Avatar von shak-otay
    Registriert seit
    04.09.2012
    Beiträge
    39

    Standard

    Zitat Zitat von Wulfy301 Beitrag anzeigen
    [...]nach einer Stunde Schlaf hüpft der Grafikbalken der Gesundheitsanzeige von 100% Geheilt auf 30% Verletzt zurück. Wieder 1 Stunde schlafen, Balken hüpft von 100% auf 40% zurück, usw.
    Kann ich so nicht nachvollziehen. Das automatische (oder hardcoded) Heilen ist ja nicht ausgeschaltet.
    D.h., bevor player.damageav health ResultHP im GameMode "greift", haben wir natürlich erstmal
    (sehr kurzfristig) 100% health. Vllt. ist dein PC/GraKa etwas träge, so dass du die Full Health Balken sehen kannst?

    egal wie lange und in welchen Zeitabschnitten man schläft, man erreicht nicht mehr als 90% Heilung.
    Bei mir sind's 95%; könnte ein Rundungsfehler sein.

    Handelt es sich hierbei um die erwähnte Feineinstellung?
    Ja, es handelt sich um ein Problem, das einer Feineinstellung bzw. genaueren Betrachtung bedarf.
    Aber das wollte ich dir überlassen.

    Hiermit kannst du dir die SleepTime (oder auch andere Variablenwerte) ausgeben lassen.
    http://forums.nexusmods.com/index.ph...5#entry3953195

    Der ganze thread dort ist hinsichtlich der SleepTime-Problematik sehr interessant; aber auf Englisch.

  8. #18
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Bevor es weiter geht, muss ich mich für deine große Geduld mit mir bedanken - DANKE!

    Meine Prozentangaben sind nur grob geschätzt - sorry!

    Hab die beiden abgeänderten Befehlszeilen eingefügt, aber entweder an die falsche Stelle, oder es stimmt irgendwas anderes nicht. Nach einer Stunde heilen, wird mein alter Ego komplett geheilt, sprich mehr als 50 HP.

    Den SleepTime Link habe ich noch nicht genauer angesehen, komm gerade von der Arbeit, aber danke dafür!

    Hier das neu geänderte Skript->

    Code:
    scn aaSleepHealth
    
    Float FullHP
    Float CurrentHP
    Float Diff
    Float HPPerHour
    Float ResultHP
    Float SleepTime
    
    Int OncePer
    
    Begin MenuMode
    
    	If GetPCSleepHours != 0 
                if OncePer==0
    		Set SleepTime to GetPCSleepHours 
    		if SleepTime > 8
    			Set SleepTime to 8
    		endif
    		;ShowMessage AprilMartimerDead
    		set fullHP to player.GetBaseActorValue Health
    		set CurrentHP to player.GetActorValue Health
    		Set Diff to fullHP - CurrentHP 
    		Set HPPerHour to (Diff / 8)
    		Set ResultHP To GetPCSleepHours * 50
    		Set OncePer to 1
    	    Endif
    	Endif
    
    End
    
    Begin GameMode
    
    	If OncePer==1
    	     Player.RestoreActorValue Health ResultHP
      	     Set OncePer to 0
    	Endif
    
    End
    Diese Script Abläufe sind mir einfach zu hoch, wieso muss man diese "wenn ich weniger als 8 Stunden schlafe, dann..." Zeilen einbauen? Wieso kann man nicht eine einfache Befehlsfolge wie, siehe nach wie hoch der aktuelle HP Wert ist, rechne pro Stunde 50 HP dazu und hör auf wenn der maximale HP Wert erreicht ist, programmieren?
    Ich bin einfach zu alt für diese Programmart, ich bin mit Dos, Basic und etwas TurboPascal groß geworden!

    Mfg...

  9. #19
    Not my Fallout Avatar von Boïndil
    Registriert seit
    20.07.2008
    Ort
    Vaullt 101
    Beiträge
    12.122
    Gamer IDs

    Gamertag: PixelMurder

    Standard

    Dieses Script ist auf jeden Fall nicht besonders elegant. Eine Abfrage, ob es weniger als 8 Stunden sind, braucht es gar nicht. Selbst wenn es 0 Stunden (*50) wäre, würde wahrscheinlich die Engine keinen Fehler machen.
    Es braucht auch keine Obergrenze für Stunden, denn RestoreActorValue Health füllt Werte auf, bis es nicht mehr geht und wenn es mehr als 100% ist, wird es einfach verworfen.
    Im Prinzip reicht das aus:
    Code:
    scn aaSleepHealth
    
    Float ResultHP
     
    Int OncePer
    
    Begin MenuMode
    
        If GetPCSleepHours != 0 
                if OncePer==0
             Set ResultHP To GetPCSleepHours * 50
            Set OncePer to 1
            Endif
        Endif
    
    End
    
    Begin GameMode
    
        If OncePer==1
             Player.RestoreActorValue Health ResultHP
               Set OncePer to 0
        Endif
    
    End
    No mods for Failout 76.

  10. #20
    Let's Play-Gucker
    Registriert seit
    30.09.2010
    Beiträge
    108

    Standard

    Wow, das ist jetzt aber klein geworden, danke Boïndil !

    Aber (leider gibt es ein aber), es bleibt nach wie vor das Problem bestehen das nach einer Stunde schlafen bereits der maximale HP Wert erreicht ist.
    Kann es an dem zweiten Script liegen, das die Heilung der Körperteile verhindert?

    Code:
    scn aaSleepHealthLimps
    
    float crleg
    float drleg
    float clleg
    float dlleg
    float crarm
    float drarm
    float clarm
    float dlarm
    float chead
    float dhead
    float ctorso
    float dtorso
    float chealth
    float dhealth
    short usedmenu
    
    begin menumode 1012
    
    if ispcsleeping==1
    set chealth to player.GetAV health
    set ctorso to player.GetAV EnduranceCondition
    set chead to player.GetAV PerceptionCondition
    set clarm to player.GetAV LeftAttackCondition
    set crarm to player.GetAV RightAttackCondition
    set clleg to player.GetAV LeftMobilityCondition
    set crleg to player.GetAV RightMobilityCondition
    set usedmenu to 1
    endif
    
    end
    
    begin gamemode
    
    if usedmenu == 1
    set dhealth to player.getav health - chealth
    set dtorso to player.getav EnduranceCondition - ctorso
    set dhead to player.getav PerceptionCondition - chead
    set dlarm to player.getav LeftAttackCondition - clarm
    set drarm to player.getav RightAttackCondition - crarm
    set dlleg to player.getav LeftMobilityCondition - clleg
    set drleg to player.getav RightMobilityCondition - crleg
    
    player.damageav EnduranceCondition dtorso
    player.damageav PerceptionCondition dhead
    player.damageav LeftAttackCondition dlarm
    player.damageav RightAttackCondition drarm
    player.damageav LeftMobilityCondition dlleg
    player.damageav RightMobilityCondition drleg
    set usedmenu to 0
    endif
    
    end

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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