Construction Set Skriptthread zum Construction Set

Ah, danke für die Verbesserung. Das sind meine (noch nicht) berühmten Flüchtigkeitsfehler ;)

Kann mir denn niemand bei meinem Problem helfen?
 
Habe ich ja auch versucht (siehe zweites Script). Hat aber auch nicht wirklich was gebracht. Ich habe trotzdem noch Obliviontore vorgefunden. :cry:
 
nimm mal diesen Part testweise raus:
Code:
    ; if we're not at max gates, we might open a new one here
     ; dies geht nur, wenn die Morrowind-Oblivion Überleitung abgeschlossen ist
     if MWOBL == 100
    if MQ00.openGates < MQ00.maxOpenGates && ( getdisabled == 1 || ( MQ00.allowGatesToReopen == 1 && destroyed == 1 ) )
        set rand to GetRandomPercent 
        if rand <= MQ00.randomGateChance
            set mySpawnMarker to getParentRef
            mySpawnMarker.enable
            enablelinkedpathpoints
            set MQ00.openGates to MQ00.openGates + 1
            if destroyed == 1
                setDestroyed 0
                set destroyed to 0
 
  • Like
Reaktionen: bjoernret
Kann mir noch jemand was zu meinem problem sagen?

hab wie gesagt eine variable mit GetObjectHealth am anfang des Skriptes eingestellt und sie dann mit SetObjectHealth abgefragt
nur wird der status der neuen rüssi trotzdem auf 100 gesetzt
 
Zuletzt bearbeitet:
Halli Hallo,
Ich hab jetz nochmal eine Frage, und zwar:

Ich beschäftige mich zurzeit mehr mit Animationen und versuche eine spezielle einzufügen. Jetzt hab ich also einen speziellen Key eingefügt und sofern dieser gedrückt wird spielt die Animation ab. Das funktioniert auch..
Aber sie hört nicht wieder auf. Hat vielleicht jemand eine Idee wie ich sie beenden könnte?

Ich hab es versucht mit
Code:
PlayGroup Idle 0
Aber das hat nicht funktioniert. mit SkipAnim funktionierts auch nicht da freezed der spieler ein.

Die Animation wird über eine variable gesteuert. Bei 1 wird die Ani ausgeführt per PickIdle. Also hab ich versucht die Variable auf 0 zu setzen und dann wieder PickIdle einzusetzen. Hat nicht funktioniert.

Hat vielleicht jemand noch eine andere Idee?
 
Hallo

PHP:
short var
ref alle

begin OnEquip
set alle to getSelf
if ( alle.GetIsReference player == 1 || alle IsActor == 1)
    message "if funktioniert"
    set var to 1
endif
end

iwie wird die message nicht angezeigt wenn ich mich mit den gegenstand ausrüste :huh:

weiß jemand rat?
 
nimm mal diesen Part testweise raus:
Code:
    ; if we're not at max gates, we might open a new one here
     ; dies geht nur, wenn die Morrowind-Oblivion Überleitung abgeschlossen ist
     if MWOBL == 100
    if MQ00.openGates < MQ00.maxOpenGates && ( getdisabled == 1 || ( MQ00.allowGatesToReopen == 1 && destroyed == 1 ) )
        set rand to GetRandomPercent 
        if rand <= MQ00.randomGateChance
            set mySpawnMarker to getParentRef
            mySpawnMarker.enable
            enablelinkedpathpoints
            set MQ00.openGates to MQ00.openGates + 1
            if destroyed == 1
                setDestroyed 0
                set destroyed to 0

Ich habe jetzt ein paar Stündchen Oblivion gespielt und kein Obliviontor gefunden. Das mag nichts bedeuten, aber ich werte es als positives Zeichen. Nur wird diese Stelle ja später für die Obliviontore benötigt. Wie kann ich verhindern, dass diese Stelle vor Beendigung der Quest ausgeführt wird?
 
@Orios:
Das sollte funktionieren...
Code:
scn name

short once

Begin onEquip player [COLOR="Red"];"player" kannst du weglassen, wenn es egal ist, wer den Gegenstand ausrüstet...[/COLOR]
 if once == 0
  set once to 1
  ; do stuff
 endif
end
 
  • Like
Reaktionen: Orios das Auge
danke aber ich brauch unbedingt die ref variable

hier der ganze Skript

PHP:
scn aaarmorbrokenb
long BaseHealth
long CurrentHealth
float Status
short vari
ref alle

begin OnEquip
set alle to getSelf
if ( alle.GetIsReference player == 1 || alle IsActor == 1)
    message "if funktioniert"
    set vari to 1
endif
end

begin GameMode
set BaseHealth to getObjectHealth aamodiamelion
if ( vari == 1) 
    if ( alle.GetEquipped aamodiamelion )
        message "if funktioniert ENDLICH!"
        set CurrentHealth to alle.GetEquippedCurrentHealth 2
        set Status to CurrentHealth / BaseHealth
        if ( Status <=  0.75 )
                message "Test Rüstung ist Beschädigt"
                alle.UnEquipItem aamodiamelion
                alle.removeitem aamodiamelion 1
                alle.AddItem aamodiamelionbroken 1
                alle.EquipItem aamodiamelionbroken                
       endif
    endif
endif
end
 
Zuletzt bearbeitet:
habs probiert aber keine veränderung

Ps:zwischen frage: kannst du mir vieleicht sagen wie ich in meinem Skript eine Variable für den setobjecthealth befehl Deklarier?
 
Bei "setObjectHealth" muss man keine Variable deklarieren, weil sie ja nicht gesetzt wird... Du setzt die "Health" ja auf einen Wert (dieser sollte - wenn es eine variable ist - allerdings als "long" deklariert werden...).

Wie ich das Skript schreiben würde:
Code:
scn name

short init
short EquipDelay
ref Actor

Begin onEquip <player>
 if init == 0
  set Actor to getContainer
  set init to 1
 endif
end

Begin onUnEquip
 if init == 1
  set init to 0
 endif
end

Begin GameMode
 if init == 1
  if getCurrentHealth / getObjectHealth >= 0 && getCurrentHealth / getObjectHealth <= 0.75
   message "Rüstung ist beschädigt!"
   removeMe
   Actor.addItem aamodiamelionbrokenb 1
   set init to 2
  endif
 elseif init == 2
  if EquipDelay >= 1
   Actor.EquipItem aamodiamelionbrokenb
   set init to 0
   set EquipDelay to 0
  else
   set EquipDelay to EquipDelay + 1
  endif
 endif
end

Habs nicht getestet (auch nicht, ob es sich speichern lässt) und hab auch noch nie mit OBSE-Befehlen gearbeitet, also kann ich nicht dafür garantieren...
 
Zuletzt bearbeitet:
Ach, hab ganz vergessen, das zu ändern... Ich hatte die Variable erst Container genannt, aber weil es ja ein Actor ist, habe ich sie umbenannt und wohl vergessen, das bei den anderen auch zu tun... also: "Container" == "Actor" :D
 
folgende 3 fehlermeldungen

1. obse

invalid if/endif block structure on line 41

2. Script error

script "name" line 23 mismatched if/else/endif block starting on line 23

3. Script error

script "name" line 23 mismatched if/then/else block

sry meine bescheidenen Skriptkentnisse reichen nicht aus um das alleine zu beheben
 
Habs mal editiert... Bei den letzten beiden Fehlermeldungen kann ich dir die Ursache nennen: ein vergessenes "endif". Probiers nochmal aus und guck, ob die erste Fehlermeldung noch besteht...
 
  • Like
Reaktionen: Orios das Auge