Construction Set Morrowind Script mit Timer Funktion (nur wie)

Trecasim

Fremdländer
Hallo Freunde,

nach langer Zeit habe ich mal wieder Morrowind ausgegraben und Modde auch gleich wieder.
Natürlich im Laufe der Zeit alles vergessen und beim Scripten war ich schon immer schwach.
Deswegen währe es lieb wenn mich dabei bitte jemand unterstützen könnte.

Ich habe mir das MOD Gravedigger von Fliggerty für MWSE übersetzt und etwas umgebaut.
Die Totengräberfunktion wird jetzt nicht mehr automatisch aktiviert, man muss erst mal etwas finden um es zu aktivieren.
Soweit funktioniert alles ganz gut, jedoch habe ich das Script für die Einstellungen der Totengräberfunktion in einen Ring eingebaut.

Jetzt das eigentliche Problem, der Ring (Enchantet) festigt die Stärke um 10 Punkte und dadurch wird beim Anlegen dieses Geflunse aktiviert
(Diese Sterne und Lichterscheinungen welche mit Soundeffekt um den Char rumwuseln).
Leider started die Pluginkonfiguration (Script) gleichzeitig und das macht keinen guten Eindruck.
Deshalb habe ich versucht ein Timer Script einzubauen, damit erst das Geflunse Zeit hat zu Flunsen und danach erst die Konfiguration startet.
Aber ich habe es nicht geschafft, trotz TuT's und abschreibe Beispiele.

Hier nun das betreffende Script
(Bitte habt erbarmen mit mir, ich bin ein abschreiber und mach eben so lange rum bis es irgendwie geht)

Code:
begin gd_setup_script

short state
short button
short reset
short OnPCEquip

if ( MenuMode )
    return
endif

if ( CharGenState != -1 )
    Return
endif


if ( OnPCEquip == 0 )
    set reset to 0
endif

if ( reset == 1 )
    return
endif

if ( OnPCEquip == 1 )
    if ( reset == 0 )

if ( state == 0 )
    Set OnPCEquip to 0

if ( GetJournalIndex gd_j_gravedigger < 20)
    Journal "gd_j_gravedigger" 20
    endif
    
MessageBox "Möchtest du als Totengräber die Leichen beseitigen oder verbrennen?" "Beseitigen" "Verbrennen"
    set state to 1
endif
endif
endif


if ( state == 1 )
    set button to GetButtonPressed
    if ( button == -1 )
        return
    elseif ( button == 0 ) ;disappear
        set gd_flame to 0
        set state to 86
    else ;burn
        set gd_flame to 1
        set state to 2
    endif
endif

if ( state == 2 )
    MessageBox "Soll das verbrennen Asche hinterlassen? (alchemistische Zutat)" "Ja" "Nein"
    set state to 3
endif

if ( state == 3 )
    set button to GetButtonPressed
    if ( button == -1 )
        return
    elseif ( button == 0 ) ;yes
        set gd_ashes to 1
    else ;no
        set gd_ashes to 0
    endif
    set state to 4
endif

if ( state == 4 )
    MessageBox "Wie lange sollen die Flammen brennen?" "5 Sekunden" "15 Sekunden" "30 Sekunden"
    set state to 5
endif

if ( state == 5 )
    set button to GetButtonPressed
    if ( button == -1 )
        return
    elseif ( button == 0 ) ;5
        set gd_burn_timer to 5
    elseif ( button == 1 ) ;15
        set gd_burn_timer to 15
    else;30
        set gd_burn_timer to 30
    endif
    set state to 86
endif

if ( state == 86 )
    MessageBox "Totengäber Setup abgeschlossen." "Ok"
    set state to 0
    stopscript gd_setup_script
    set reset to 1
    endif
end

Vielen Dank Trecasim
 
(Bitte habt erbarmen mit mir, ich bin ein abschreiber und mach eben so lange rum bis es irgendwie geht)
Na, dann schreib mal das hier ab:

Code:
begin gd_setup_script
float Timer
short state
short button
short OnPCEquip

if ( MenuMode )
	Return
ElseIF ( CharGenState != -1 )
	Return
ElseIF ( State == 0 )
	IF ( OnPCEquip == 1 )
		set OnPCEquip to 0
		set State to 1
		set Timer to ( 3 + 0*GetSecondsPassed )
	EndIF
	return
endif


IF ( state == 1 )
	IF ( Timer > 0 )
		set Timer to ( Timer - GetSecondsPassed )
		return
	EndIF

	IF ( GetJournalIndex gd_j_gravedigger < 20)
		Journal "gd_j_gravedigger" 20
	EndIF

	MessageBox "Möchtest du als Totengräber die Leichen beseitigen oder verbrennen?" "Beseitigen" "Verbrennen"
	set state to 2
EndIF

if ( state == 2 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == 0 ) ;disappear
		set gd_flame to 0
		set state to 86
	else ;burn
		set gd_flame to 1
		set state to 3
	endif
endif

if ( state == 3 )
	MessageBox "Soll das verbrennen Asche hinterlassen? (alchemistische Zutat)" "Ja" "Nein"
	set state to 4
endif

if ( state == 4 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == 0 ) ;yes
		set gd_ashes to 1
	else ;no
		set gd_ashes to 0
	endif
	set state to 5
endif

if ( state == 5 )
	MessageBox "Wie lange sollen die Flammen brennen?" "5 Sekunden" "15 Sekunden" "30 Sekunden"
	set state to 6
endif

if ( state == 6 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == 0 ) ;5
		set gd_burn_timer to 5
	elseif ( button == 1 ) ;15
		set gd_burn_timer to 15
	else;30
		set gd_burn_timer to 30
	endif
	set state to 86
endif

if ( state == 86 )
	MessageBox "Totengäber Setup abgeschlossen." "Ok"
	set state to 0
	stopscript gd_setup_script
endif

end
Hab es zwar nicht kompiliert, aber sollte seinen Dienst tun, falls ich nicht irgendwo ein Semikolon gelöscht oder ein ENDIF vergessen habe XD. Den Timer kannste der Länge nach justieren. Vorsicht, ich hab noch ein wenig mehr als nur das gemacht, also wenn bitte das ganze Script nehmen.

Sollte es funktionieren, gehe hin, schlachte ein Guar zu meinen Ehren und lobpreise meinen Namen.

Äh...

Viel Erfolg :lol:
 
Vielen Lieben Dank http://forum.scharesoft.de/member.php?3206-£exa£exa,

funktioniert einwandfrei mit den Timer, die Zeit brauchte ich auh ned ändern.
Jetzt hab ich nur das Problem, wenn ich auf einen Leiche mit der Schaufel draufhaue, fängt die auch an zu brennen.
Weis aber ned ob das vorher auch schon so war.
Heute is zumindest Feierabend. Morgen is auch noch ein Zeit.

Liebe Grüße Trecasim
 
Hm.

Schieb noch mal das "set OnPCEquip to 0" vom Anfang in den "if ( state == 86 )" Block. Andernfalls könnte durch den Timer ein unangenehmer Effekt eintreten, wenn der Spieler den Ring anlegt, und ihn innerhalb der Timerdauer ab- und wieder anlegt. Dann würde der Dialog ggfs. zweimal kommen.
 
Da ich wegen dem Fehler rumprobiert habe is das mit den Scripten jetzt ganz anders.
Ich habe mal zum Test extra scripte gemacht welche dann die von Fliggerty aufrufen.
Der Fehler mit dem Verbrennen beim drauf hauen auf die leiche bleibt aber.
Passiert aber nur wenn man eine Waffe mit Feuerschaden angelegt hat.
Ob es so im Original auch ist, habe ich noch nicht getestet.
Hab das erst eben rausgefunden dass es wohl bei Magischen Waffen so ist.
Aber des Plugin Funktioniert jetzt soweit.
Is zwar ned Fehlerfrei, aber was solls.
Meine Freundin Fragt schon andauernd wie weit ich bin, denn sie will endlich spielen.
Ich hab mal alles zusammen hochgeladen, wenn du willst kannste ja mal auf die Beta drauf kiecken.

http://dfiles.eu/files/6mmslquof


Liebe Grüße Trecasim