Ergebnis 1 bis 2 von 2
  1. #1 Zitieren
    Rookie
    Registriert seit
    Sep 2015
    Beiträge
    2
    Ich habe begonnen eine Mod zu bauen, allerdings steht der Bau dieser Mod aus irgendwelchen, mir unergründlichen Gründen auf der Kippe. Ich habe diesen Script auf einen Activator gelegt.
    Code:
    scn GRStandingTorch01Script
    
    short state
    
    
    begin onactivate
    	if ( state == 0 ) && ( player.getitemcount torch02 > 0 )
    		GRStandingTorch01FireRef.enable
    		set state to 1
    	endif
    	if ( state == 1 )
    		GRStandingTorch01FireRef.disable
    		set state to 0
    	endif
    end
    Aber die Flamme ist nur für einen Bruchteil zu sehen und verschwindet dann wieder.
    DarkKnight3000 ist offline
  2. #2 Zitieren
    General
    Registriert seit
    Jun 2012
    Beiträge
    3.395
    Zitat Zitat von DarkKnight3000 Beitrag anzeigen
    Ich habe begonnen eine Mod zu bauen, allerdings steht der Bau dieser Mod aus irgendwelchen, mir unergründlichen Gründen auf der Kippe. Ich habe diesen Script auf einen Activator gelegt.
    Code:
        if ( state == 0 ) && ( player.getitemcount torch02 > 0 )
            GRStandingTorch01FireRef.enable
            set state to 1
        endif
        if ( state == 1 )
            GRStandingTorch01FireRef.disable
            set state to 0
        endif
    end
    Aber die Flamme ist nur für einen Bruchteil zu sehen und verschwindet dann wieder.
    Ist auch kein Wunder. Das Skript läuft vom Beginn bis zum "end" komplett durch und prüft Zeile für Zeile was es machen soll. Sobald der Aktivator eingeschaltet wird setzt du die Variable "State" auf 1. Eine halbe Sekunde später kommt das Skript an den Punkt wo abgefragt wird ob State ==1 ist. Diese Bedingung ist jetzt erfüllt also wird der Befehl in diesem If Block ausgeführt und die StandingTorch disabled.

    Versuch es mal so:
    Code:
    Begin OnActivate
       if GRStandingTorch01FireRef.GetDisabled == 1
          GRStandingTorch01FireRef.enable
       elseif GRStandingTorch01FireRef.GetDisabled != 1
           GRStandingTorch01FireRef.disable
       endif
    end
    Die ElseIf Funktion greift nur wenn das vorhergehende If nicht erfüllt ist. GetDisabled spuckt den Wert 1 aus wenn ein Gegenstand disabled ist.

    Was jetzt passieren sollte ist, daß das Script abfragt ob der Gegenstand disabled ist (== 1). Falls das zutrifft wird enabled. Da das ElseIf nur zum tragen kommt wenn das If nicht erfüllt ist (was es aber ist) sollte das Script jetzt zum Ende springen.

    Wird der Schalter jetzt wieder aktiviert ist die If Bedingung nicht erfüllt - der Gegenstand ist ja nicht länger disabled. Also geht das Script weiter und findet den ElseIf Teil der ihm sagt was als Alternative in dieser Lage zu tun ist und der Gegenstand wird wieder disabled.

    (Randbemerkung: Theoretisch sollte es in der ElseIf Zeile des Scripts das "GRStandingTorch01FireRef.GetDisabled != 1" nicht brauchen, da der Zustand ja nur 0 oder 1 sein kann, aber ElseIf Abfragen ganz ohne folgende Bedingungen, also Scriptzeilen die nur aus einem "ElseIf" bestehen, können Probleme verursachen. Immer besser da eine Bedingung einzubauen.)
    [Bild: DPAG_2009_Bernhard_Grzimek.jpg]
    Liebe Freunde, heute habe ich Ihnen ein Eszett mitgebracht. Dieser possierliche Buchstabe, vor wenigen Jahren noch überall in Deutschland anzutreffen, ist inzwischen leider vom Aussterben bedroht.
    Andy1967 ist offline Geändert von Andy1967 (30.09.2015 um 07:32 Uhr)

Berechtigungen

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