Construction Set Skriptthread zum Construction Set

death lord, das ist gut gemeint von dir, aber ich habe noch keine Scripte dafür weihl ich nicht Scripten kann ohne Englisch Kenntnisse.
 
Zuletzt bearbeitet:
@death lord, das ist das Script der Druckplatte.

scn GeheimDoorSCRIPT

short open

begin onActivate

if open == 0
playgroup forward 1
SchutzMauer1.playgroup forward 0
set open to 1
elseif open == 1
playgroup forward 1
SchutzMauer1.playgroup backward 1
set open to 0
endif


end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: death-lord
@Piet: Wenn du den Script veränderst, erstelle eine Druckplatte mir neuer ID. Sonst wird für alle Druckplatten in Cyrodiil die Statue gebraucht. ;)
 
  • Like
Reaktionen: Piet
@Knochenkeule

Das return würde den Fehler mit den 500 Gold schon beheben, dich aber kein Stück weiter bringen. Bei folgendem Satz von dir hat es bei mir Klick gemacht:

Ich denke, ich werde mir eine Variante ausdenken, in der das Misc-Item nur den Anstoß gibt und dann alles in einem Quest-Script abläuft.

Ich hatte gestern wohl so 'ne Art Tunnelblick drauf und hab nur dein Script gesehen, ohne darüber nachzudenken, wann es ausgeführt werden soll. Im Inventar funktioniert ein solches Script leider nicht, weil es für jeden Blockmode nur ein einziges Mal aufgerufen wird. Für ein mehrstufiges Menu ist es aber zwingend notwendig, das der GameMode mehrfach aufgerufen wird. Deine Idee das Misc-Item nur als Auslöser zu benutzen ist daher goldrichtig und der einzige Weg es hinzukriegen.

Gruß Peter
 
Ehm man kann mit einem Misc Item aus dem Inventar herraus ein Mehrschichtiges Menü machen. Ganz sicher, ich hab es auch schon gemacht.

Wenn ihr mir nochmal den Momentanen Script postet, kann ich helfen ;)
 
@death lord, das ist das Script der Druckplatte.

scn GeheimDoorSCRIPT

short open

begin onActivate

if open == 0
playgroup forward 1
SchutzMauer1.playgroup forward 0
set open to 1
elseif open == 1
playgroup forward 1
SchutzMauer1.playgroup backward 1
set open to 0
endif


end

So muss es aussehen.
Code:
scn GeheimDoorSCRIPT123

short open

begin onActivate

    if open == 0 && player.getitemcount IDderstatue == 1
        playgroup forward 1
        SchutzMauer1.playgroup forward 0
        set open to 1    
    elseif open == 1
        playgroup forward 1
        SchutzMauer1.playgroup backward 1
        set open to 0
    endif


end
So sollte es funktionieren
Du musst auch noch einen neun Script erstellen!
 
  • Like
Reaktionen: Piet
Ehm man kann mit einem Misc Item aus dem Inventar herraus ein Mehrschichtiges Menü machen. Ganz sicher, ich hab es auch schon gemacht.

Wenn ihr mir nochmal den Momentanen Script postet, kann ich helfen ;)

Ich kann dir jetzt nur noch was von der letzten Seite posten.
Einmal das, wie ich es versucht hatte:
Code:
scn KKIrrlichtBankKontoKugel01Script

short level1
short level2
short level3
short button
short button1
short button2

begin OnEquip player
if (level1 == 0)
    Messagebox "Was für eine Aktion wollt ihr durchführen?", "Einzahlung", "Abhebung", "Kontostand einsehen"
    set level1 to 1
endif
end

begin GameMode
set button to GetButtonPressed
if (level1 == 1) && (button == -1)
    set level1 to 0
    return
elseif (level1 == 1) && (button == 0)
    Messagebox "Wie viel wollt ihr einzahlen?", "500", "1.000", "5.000", "10.000", "50.000", "100.000"
    set level2 to 1
elseif (level1 == 1) && (button == 1)
    Messagebox "Wie viel wollt ihr abheben?", "500", "1.000", "5.000", "10.000", "50.000", "100.000", "Alles"
    set level3 to 1
elseif (level1 == 1) && (button == 2)
    Message "Euer Kontostand beträgt %.0f", KKIrrlichtBankKontostandGlobal 
    set level1 to 0
endif

set button1 to GetButtonPressed
if (level1 == 1) && (level2 == 1) && (button1 == -1)
    set level2 to 0
    return
elseif (level1 == 1) && (level2 == 1) && (button1 == 0)
    if (player.GetItemCount gold001 >= 500)
        player.removeitem gold001 500
        KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 500
        Message "Ihr habt 500 Gold eingezahlt."
        set level2 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold."
        set level2 to 0
     endif
elseif (level1 == 1) && (level2 == 1) && (button1 == 1)
    if (player.GetItemCount gold001 >= 1000)
        player.removeitem gold001 1000
        KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 1000
        Message "Ihr habt 1.000 Gold eingezahlt."
        set level2 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold."
        set level2 to 0
     endif 
elseif (level1 == 1) && (level2 == 1) && (button1 == 2)
    if (player.GetItemCount gold001 >= 5000)
        player.removeitem gold001 5000
        KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 5000
        Message "Ihr habt 5.000 Gold eingezahlt."
        set level2 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold."
        set level2 to 0
     endif 
elseif (level1 == 1) && (level2 == 1) && (button1 == 3)
    if (player.GetItemCount gold001 >= 10000)
        player.removeitem gold001 10000
        KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 10000
        Message "Ihr habt 10.000 Gold eingezahlt."
        set level2 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold."
        set level2 to 0
     endif 
elseif (level1 == 1) && (level2 == 1) && (button1 == 4)
    if (player.GetItemCount gold001 >= 50000)
        player.removeitem gold001 50000
        KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 50000
        Message "Ihr habt 50.000 Gold eingezahlt."
        set level2 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold."
        set level2 to 0
     endif 
elseif (level1 == 1) && (level2 == 1) && (button1 == 5)
    if (player.GetItemCount gold001 >= 100000)
        player.removeitem gold001 100000
        KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 100000
        Message "Ihr habt 100.000 Gold eingezahlt."
        set level2 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold."
        set level2 to 0
     endif 
endif

set button2 to GetButtonPressed
if (level1 == 1) && (level3 == 1) && (button2 == -1)
    set level3 to 0
    return
elseif (level1 == 1) && (level3 == 1) && (button2 == 0)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= 500)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 500
        player.additem gold001 500
        Message "Ihr habt 500 Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
        set level3 to 0
        set level1 to 0
     endif
elseif (level1 == 1) && (level3 == 1) && (button2 == 1)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= 1000)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 1000
        player.additem gold001 1000
        Message "Ihr habt 1.000 Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
        set level3 to 0
        set level1 to 0
     endif 
elseif (level1 == 1) && (level3 == 1) && (button2 == 2)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= 5000)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 5000
        player.additem gold001 5000
        Message "Ihr habt 5.000 Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
        set level3 to 0
        set level1 to 0
     endif 
elseif (level1 == 1) && (level3 == 1) && (button2 == 3)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= 10000)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 10000
        player.additem gold001 10000
        Message "Ihr habt 10.000 Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
        set level3 to 0
        set level1 to 0
     endif 
elseif (level1 == 1) && (level3 == 1) && (button2 == 4)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= 50000)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 50000
        player.additem gold001 50000
        Message "Ihr habt 50.000 Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
        set level3 to 0
        set level1 to 0
     endif 
elseif (level1 == 1) && (level3 == 1) && (button2 == 5)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= 100000)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 100000
        player.additem gold001 100000
        Message "Ihr habt 100.000 Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
        set level3 to 0
        set level1 to 0
     endif 
elseif (level1 == 1) && (level3 == 1) && (button2 == 6)
    if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 > 0)
        KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 KKIrrlichtBankKontostandGlobal
        player.additem gold001 KKIrrlichtBankKontostandGlobal
        Message "Ihr habt alles Gold abgehoben."
        set level3 to 0
        set level1 to 0
     else
        Message "Euer Konto ist leer."
        set level3 to 0
        set level1 to 0
     endif 
endif


end

Der Lösungsvorschlag von pk62:
Code:
scn KKIrrlichtBankKontoKugel01Script

short level
short button
long Betrag

begin OnEquip player
if (level == 0)
	Messagebox "Was für eine Aktion wollt ihr durchführen?", "Einzahlung", "Abhebung", "Kontostand einsehen"
	set level to 1
else
	set level to 0
endif
end

begin GameMode

set button to GetButtonPressed

if (button == -1)
	return
endif

if (level == 1)
	if (button == 0)
		Messagebox "Wie viel wollt ihr einzahlen?", "500", "1.000", "5.000", "10.000", "50.000", "100.000"
		set level to 2
	elseif (button == 1)
		Messagebox "Wie viel wollt ihr abheben?", "500", "1.000", "5.000", "10.000", "50.000", "100.000", "Alles"
		set level to 3
	elseif (button == 2)
		Message "Euer Kontostand beträgt %.0f", KKIrrlichtBankKontostandGlobal 
		set level to 0
	endif
        return
endif

if (level == 2)
	if (button == 0)
		set Betrag to 500
	elseif (button == 1)
		set Betrag to 1000
	elseif (button == 2)
		set Betrag to 5000
	elseif (button == 3)
		set Betrag to 10000
	elseif (button == 4)
		set Betrag to 50000
	elseif (button == 5)
		set Betrag to 100000
	endif
	if (player.GetItemCount gold001 >= Betrag)
		player.removeitem gold001 Betrag
		KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 Betrag
		Message "Ihr habt %.0f Gold eingezahlt.", Betrag
	else
		Message "Ihr verfügt nicht über genügend Gold."
	endif
	set level to 0
endif

if (level == 3)
	if (button == 0)
		set Betrag to 500
	elseif (button == 1)
		set Betrag to 1000
	elseif (button == 2)
		set Betrag to 5000
	elseif (button == 3)
		set Betrag to 10000
	elseif (button == 4)
		set Betrag to 50000
	elseif (button == 5)
		set Betrag to 100000
	elseif (button2 == 6)
		set Betrag to -1
		if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 > 0)
			KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 KKIrrlichtBankKontostandGlobal
			player.additem gold001 KKIrrlichtBankKontostandGlobal
			Message "Ihr habt alles Gold abgehoben."
		else
			Message "Euer Konto ist leer."
		endif
	endif
	if (Betrag > -1)
		if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= Betrag)
			KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 Betrag
			player.additem gold001 Betrag
			Message "Ihr habt %.0f Gold abgehoben.", Betrag
		else
			Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
		endif 
	endif
	set level to 0
endif

end

Ein Lösungsvorschlag von SirTroy:
Code:
Scriptname KKIrrlichtBankScript

Float KKMode
Short Button

Long Betrag

Begin OnEquip
	If KKMode == 0
		MessageBox "Was wollt ihr machen?", "Einzahlen", "Abheben", "Kontostand einsehen"
		Set Button to GetButtonPressed
		Set KKMode to 1
	Endif
End

Begin GameMode
	If KKMode == 1
		If Button == -1
			Set Button to GetButtonPressed
		Elseif Button == 0
			Set KKMode to 10
		Elseif Button == 1
			Set KKMode to 20
		Elseif Button == 2
			Set KKMode to 30
		Endif
	Elseif KKMode == 10
		Messagebox "Wie viel wollt ihr einzahlen?", "500", "1.000", "5.000", "10.000", "50.000", "100.000"
		Set KKMode to 10.1
		If KKMode == 10.1
			Set Button to GetButtonPressed
				if (button == 0)
					set Betrag to 500
				elseif (button == 1)
					set Betrag to 1000
				elseif (button == 2)
					set Betrag to 5000
				elseif (button == 3)
					set Betrag to 10000
				elseif (button == 4)
					set Betrag to 50000
				elseif (button == 5)
					set Betrag to 100000
				endif
				if (player.GetItemCount gold001 >= Betrag)
					player.removeitem gold001 Betrag
					KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 Betrag
					Message "Ihr habt %.0f Gold eingezahlt.", Betrag
				else
					Message "Ihr verfügt nicht über genügend Gold."
				endif
				Set KKMode to 0
		Endif
	Elseif KKMode == 20
		Messagebox "Wie viel wollt ihr abheben?", "500", "1.000", "5.000", "10.000", "50.000", "100.000", "Alles"
		Set KKMode to 20.1
		If KKMode == 20.1
			Set Button to GetButtonPressed
			if (button == 0)
				set Betrag to 500
			elseif (button == 1)
				set Betrag to 1000
			elseif (button == 2)
				set Betrag to 5000
			elseif (button == 3)
				set Betrag to 10000
			elseif (button == 4)
				set Betrag to 50000
			elseif (button == 5)
				set Betrag to 100000
			elseif (button == 6)
				Set Betrag to KKIrrlichtBankKontostandGlobal
			Endif
			if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= Betrag)
				KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 Betrag
				player.additem gold001 Betrag
				Message "Ihr habt %.0f Gold abgehoben", Betrag
			else
				Message "Ihr habt nicht genügend Geld auf dem Konto."
			endif
			Set KKMode to 0
		Endif
	Elseif KKMode == 30
		Message "Euer Kontostand beträgt %.0f Gold", KKIrrlichtBankKontostandGlobal
		Set KKMode to 0
	Endif
End
 
Also, ich hab den Vorschlag von R. genommen.

Das wichtigste bei den Multi-Level Menüs sind zum einen die Level Abfragen und zum anderen das IMMER der Button zurück gesetzt wird. Sonst gilt selbiger nämlich direkt für das nächste Menü auch ;)

Code:
scn KKIrrlichtBankKontoKugel01Script

short level
short button
short running
long Betrag

begin OnEquip player
if (level == 0 && running == 0)
	Messagebox "Was für eine Aktion wollt ihr durchführen?", "Einzahlung", "Abhebung", "Kontostand einsehen"
	set level to 10
	set running to 1
endif
end

begin GameMode

set button to GetButtonPressed


if (level == 10 && running == 1)
	if (button == 0)
		Messagebox "Wie viel wollt ihr einzahlen?", "500", "1.000", "5.000", "10.000", "50.000", "100.000"
		set button to -10
		set level to 20
	elseif (button == 1)
		Messagebox "Wie viel wollt ihr abheben?", "500", "1.000", "5.000", "10.000", "50.000", "100.000", "Alles"
		set button to -10
		set level to 30
	elseif (button == 2)
		Message "Euer Kontostand beträgt %.0f", KKIrrlichtBankKontostandGlobal
		set button to -10
		set level to 0
	endif
        return
endif

if (level == 20 && running == 1)
	if (button == 0)
		set Betrag to 500
		set button to -10
	elseif (button == 1)
		set Betrag to 1000
		set button to -10
	elseif (button == 2)
		set Betrag to 5000
		set button to -10
	elseif (button == 3)
		set Betrag to 10000
		set button to -10
	elseif (button == 4)
		set Betrag to 50000
		set button to -10
	elseif (button == 5)
		set Betrag to 100000
		set button to -10
	endif
	if (player.GetItemCount gold001 >= Betrag)
		player.removeitem gold001 Betrag
		KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 Betrag
		Message "Ihr habt %.0f Gold eingezahlt.", Betrag
	else
		Message "Ihr verfügt nicht über genügend Gold."
	endif
	set level to 0
endif

if (level == 30 && running == 1)
	if (button == 0)
		set Betrag to 500
		set button to -10
	elseif (button == 1)
		set Betrag to 1000
		set button to -10
	elseif (button == 2)
		set Betrag to 5000
		set button to -10
	elseif (button == 3)
		set Betrag to 10000
		set button to -10
	elseif (button == 4)
		set Betrag to 50000
		set button to -10
	elseif (button == 5)
		set Betrag to 100000
		set button to -10
	elseif (button2 == 6)
		set Betrag to -1
		set button to -10
		if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 > 0)
			KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 KKIrrlichtBankKontostandGlobal
			player.additem gold001 KKIrrlichtBankKontostandGlobal
			Message "Ihr habt alles Gold abgehoben."
		else
			Message "Euer Konto ist leer."
		endif
	endif
	if (Betrag > -1)
		if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= Betrag)
			KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 Betrag
			player.additem gold001 Betrag
			Message "Ihr habt %.0f Gold abgehoben.", Betrag
		else
			Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
		endif 
	endif
	set level to 0
endif

end

Ich hab jetzt auch wirklich nur änderungen am Menü vorgenommen. Sonst nichts.
 
Hi Fans,

ich wollte mal Fragen, ob es möglich ist das man eine Druckplatte die eine geheime Wand öffnen soll, mit einen Script belegen kann, wo die Druckplatte erst funktioniert wenn ein bestimmtes Gewicht darauf liegt.

Mein Ziel ist es das ich eine Statue nehme und diese dann auf ein bestimmtes Gewicht einstelle und erst wenn die Statue mit dem bestimmten Gewicht auf die Druckplatte gestellt wird, öffnet sich diese geheime Wand.

Danke im voraus.
mfg Piet

Du könntest eventuell eine Triggerbox über die Druckplatte legen und ihr folgendes Skript geben:
Code:
scn name

short triggered
ref mySelf
ref target
ref triggeredRef

Begin onTriggerMob
 if triggered == 0
  set triggeredRef to getActionRef
  if triggeredRef.getIsID <ID der Statue> == 1
   set mySelf to getSelf
   set target to getParentRef
   target.activate mySelf 1
   set triggered to 1
  endif
 endif
end

Die Statue müsste ein Misc-Item sein und kann von dem Spieler auf die Druckplatte gestellt werden; der Statue musst du nur die richtige ID geben...
 
  • Like
Reaktionen: Piet
So, habs gerade mal probiert.
Klappt immer noch nicht ganz.

Die erste Messagebox kommt, man wählt etwas, die zweite kommt (jeweils beim ersten und beim zweiten button).
Wenn man etwas einzahlt, ist der Betrag, egal bei welchem button, 0. Es wird allerdings nichts automatisch eingezahlt, schon mal ein Fortschritt.

Des weiteren muss running natürlich noch wieder auf 0 gesetzt werden, sonst geht das ganze nur einmal.
 
Hi, ich bräuchte für den ersten Fall meines Mods :-D einen Befehl, der einen NPC permanent seine KI-Packages vergessen lässt. Ein NPC soll nämlich ab einem bestimmten Zeitpunk an einen Ort geportet werden und da stehen bleiben. Kennt da jemand was? Ich dachte, es wäre evp aber das hat nicht so richtig gefunzt... :?
 
Du erstellst ein neues Package mit dem Standort und fügst folgenden Befehl in dein Script ein:
Code:
[URL="http://www.ei-der-zeit.com/LexikonCSIV/tesiv-cs/befehle/AddScriptPackage.html"]ActorID.AddScriptPackage PackageID[/URL]
Dieses Package löst du mit folgenden Befehl wieder auf:
Code:
[URL="http://www.ei-der-zeit.com/LexikonCSIV/tesiv-cs/befehle/RemoveScriptPackage.html"]ActorID.RemoveScriptPackage[/URL]
Dann führt der NPC wieder seine normalen Packages aus.

@MoW: Der Befehl RemoveScriptPackage löst nur die durch den Befehl AddScriptPackage hinzugefügten Packages auf ;)
 
  • Like
Reaktionen: killerkarotte
Nimm doch sonst
Code:
[URL="http://cs.elderscrolls.com/constwiki/index.php/ToggleActorsAI"]toggleActorsAI[/URL]
Du musst einfach eine "1" oder "0" dahinter setzen um dem Befehl die richtige Richtung zu geben.

Edit: Hab gerade noch nen besseren gefunden:
Code:
[URL="http://cs.elderscrolls.com/constwiki/index.php/SetActorsAI"]setActorsAI <0/1>[/URL]
 
Zuletzt bearbeitet:
  • Like
Reaktionen: killerkarotte
tai deaktiviert den NPC aber komplett, sprechen können soll er schon noch. ;)
Funzt leider alles nicht. Nachdem ich beispielsweise Delphine Jend als Mörderin beschuldigt habe, steht bei meinem Topic folgendes Script:
player.additem 0f 150
setstage KK01Bravil 15
DelphineJendRef.moveto KK01Marker1
DelphineJendRef.addscriptpackage KK01BravilPrison
KK01Marker1 ist ein XMarker in einer Braviler Kerkerzelle und das Package verweist mit Travel To auf den XMarker. Ich konnte das doch mal... aber ich häng irgendwie fest, die Leute bleiben bei ihren normalen Tätigkeiten... :?
 
@Knochenkeule

Die erste Messagebox kommt, man wählt etwas, die zweite kommt (jeweils beim ersten und beim zweiten button).
Wenn man etwas einzahlt, ist der Betrag, egal bei welchem button, 0. Es wird allerdings nichts automatisch eingezahlt, schon mal ein Fortschritt.

Wie bereits geschrieben, liegt das daran, daß GameMode bei offenem Inventar nicht funktionier. Kann man hier im CS-Wiki nachlesen (man achte auf das Fettgedruckte):
http://cs.elderscrolls.com/constwiki/index.php/GameMode

Da mich das ganze selbst interessiert, hab ich mich mal damit beschäftigt und herausgefunden, daß es im MenuMode funktioniert und man auf eine externe Handhabung tatsächlich verzichten kann.

Das folgende habe ich selbst ausprobiert und es hat bei mir funktioniert:

Code:
scn KKIrrlichtBankKontoKugel01Script

short level
short button
short MenuOpen
long  Betrag

begin OnEquip player
	if (level == 0)
		Messagebox "Was für eine Aktion wollt ihr durchführen?", "Einzahlung", "Abhebung", "Kontostand einsehen"
		set level to 1
	else
		set level to 0
	endif

	set MenuOpen to 1
end

begin MenuMode 1002  ;1002 = Inventar offen
	if MenuOpen ==  1
		set button to GetButtonPressed

		if (button == -1)
			return
		endif

		if (level == 1)
			if (button == 0)
				Messagebox "Wie viel wollt ihr einzahlen?", "500", "1.000", "5.000", "10.000", "50.000", "100.000"
				set level to 2
			elseif (button == 1)
				Messagebox "Wie viel wollt ihr abheben?", "500", "1.000", "5.000", "10.000", "50.000", "100.000", "Alles"
				set level to 3
			elseif (button == 2)
				Message "Euer Kontostand beträgt %.0f", KKIrrlichtBankKontostandGlobal 
				set level to 0
			endif
			return
		endif

		if (level == 2)
			if (button == 0)
				set Betrag to 500
			elseif (button == 1)
				set Betrag to 1000
			elseif (button == 2)
				set Betrag to 5000
			elseif (button == 3)
				set Betrag to 10000
			elseif (button == 4)
				set Betrag to 50000
			elseif (button == 5)
				set Betrag to 100000
			endif
			if (player.GetItemCount gold001 >= Betrag)
				player.removeitem gold001 Betrag
				KKIrrlichtBankSpielerKontoTruhe01REF.additem gold001 Betrag
				Message "Ihr habt %.0f Gold eingezahlt.", Betrag
			else
				Message "Ihr verfügt nicht über genügend Gold."
			endif
			set level to 0
			set MenuOpen to 0
		endif

		if (level == 3)
			if (button == 0)
				set Betrag to 500
			elseif (button == 1)
				set Betrag to 1000
			elseif (button == 2)
				set Betrag to 5000
			elseif (button == 3)
				set Betrag to 10000
			elseif (button == 4)
				set Betrag to 50000
			elseif (button == 5)
				set Betrag to 100000
			elseif (button == 6)
				set Betrag to -1
				if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 > 0)
					KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 KKIrrlichtBankKontostandGlobal
					player.additem gold001 KKIrrlichtBankKontostandGlobal
					Message "Ihr habt alles Gold abgehoben."
				else
					Message "Euer Konto ist leer."
				endif
			endif
			if (Betrag > -1)
				if (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001 >= Betrag)
					KKIrrlichtBankSpielerKontoTruhe01REF.removeitem gold001 Betrag
					player.additem gold001 Betrag
					Message "Ihr habt %.0f Gold abgehoben.", Betrag
				else
					Message "Ihr verfügt nicht über genügend Gold auf eurem Konto."
				endif 
			endif
			set level to 0
			set MenuOpen to 0
		endif
		; Nächste Zeile entfernen wenn das in deiner Mod woanders geregelt wird
		set KKIrrlichtBankKontostandGlobal to (KKIrrlichtBankSpielerKontoTruhe01REF.GetItemCount gold001)
	endif
end

Da mir nicht ganz klar ist, wo die Variable "KKIrrlichtBankKontostandGlobal" aktuallisiert wird, habe ich das mal ins Script eingefügt. Kannst du ja löschen, wenn das in deiner Mod woanders geregelt wird.
Die Message mit Ein- und Auszahlung kannst du dir eigentlich auch sparen. Wie ich beim Testen gemerkt habe, bringt Oblivion sowieso eine Nachricht wenn sich die Goldmenge des Spielers ändert.

Gruß Peter
 
DieQuest hat bisher drei Scripts. Einmal ein Quest-Script, dass im Grunde den ganzen Ablauf regelt. Noch nicht ganz fertig ist da sowas wie Zinsen.
Da wird das mit der Global bereits geregelt.

Dann noch eins auf einem anderen Misc-Item, dass die einen Punkt in der Quest starten lässt und sozusagen die Verbindung zur Bank herstellt, sodass der Spieler ein Konto eröffnen kann.

Was mich verwundert hat:
Ich habe es probiert, über die Kontokugel einfach nur eine Variable in der Quest-Script hochzusetzen über diese Zeile:
Code:
set KKIrrlichtBankMainSettingsQuest.block to 1

Die Varibale wird auch hochgesetzt, allerdings läuft das Quest-Script bereits ab der einleitenden Abfrage, nämlich "if (block == 1)" nicht weiter.

Mal schauen, obs nun mit dieser Lösung hinhaut.

Edit:
Also, es werden dem Spieler nun entsprechend viele Septime entfernt, allerdings keine der Truhe hinzugefügt.
Die Message kommt, der Inhalt der Truhe bleibt jedoch 0. (Laut der Global.)

Merkwürdiger Weise kann ich ingame in der Konsole weder über GetItemCount den Goldbetrag in der Truhe abfragen, noch mich zu einem X-Marker in der Zelle, wo diese Truhe steht, teleportieren. In beiden Fällen wird mir angezeigt, dass die ID ungültig ist, obwohl es exakt die REF-ID ist, die die beiden Objekte haben:?
Ich wollte nämlich mal überprüfen, ob da was in der Truhe landet. Das kann ich deshalb aber nicht.
 
Zuletzt bearbeitet:
Hab mein Problem gefunden - nach ein paar Stunden geht sie einfach wieder nach Hause, und jeder andere Tatverdächtige macht es genauso. Ich will sie aber permanent im Gefängnis behalten, wie mach ich das? :huh: