Construction Set Skriptthread zum Construction Set

Ist doch viel zu kompliziert.

Nimm einfach
Code:
Player.SetFactionRank BewohnenFraktion Rank

Hab ich gemacht doch die halten mich immer noch für einen Dieb, obwohl ich das Zimmer gemietet habe. Auch sind da immer noch die roten Hände, wenn ich auf eine Tasse gehe. Schwups nur leicht angetickt schon verhaftet. So ein Quatch, den sich die Entwickler da ausgedacht haben. Noch dazu da eh alles 0 Goldstücke wert ist

Also muss das mal dringend geändert werden.
Tja stellt sich nur die Frage, was da falsch am Script ist. Es liegt auf der Malene die das Zimmer vermietet.

Code:
Scriptname Publican_RoxeyMalene

;CellName: RoxeyInn
;Publican: Malene
;Room: upstairs, second door on the left
;Door Ref: RoxeyRentDoor

short rent
short rentday
short rentmonth
short cleanup
short setup

begin gamemode

if ( rent == 1 )	
         if ( setup == 0 )
		set rentday to GameDay
		set rentmonth to GameMonth
		set setup to 1
		RoxeyRentDoor.unlock	
		RoxeyRentBed0.SetOwnership
;Setzt die Besitzgüter der Fraction wärend der Zimmermiete auf die des Players. Alles kann berührt und genutzt werden. So dachte ich mir das.
		Player.SetFactionRank RoxeyInnFaction 0
	else	
		if ( GameDay != rentday )
			set cleanup to 1
		elseif ( GameMonth != rentmonth )
			set cleanup to 1
		endif
	endif

	if ( Player.GetinCell RoxeyInn == 0 )		
		if ( Cleanup == 1 )
			set Cleanup to 2
		endif
	endif

	if ( Cleanup == 2 )
		set rent to 0 
		set setup to 0
		set rentday to 0
		set rentmonth to 0
		set cleanup to 0
		RoxeyRentDoor.SetOpenState 0
		RoxeyRentDoor.lock 30
		RoxeyRentBed0.SetOwnership Malene
; Soll das wieder rückgängig machen
		Player.SetFactionRank PlayerFaction 0
	endif
endif

End
 
Zuletzt bearbeitet:
Die Gegenstände haben überhaupt keinen Besitzer. Offensichtlich, ist das Besitzen der Fraction, wie es ja in der Anleitung zum CS mal beschrieben wurde,

---------------------------
Zitat so ähnlich: Die Fraction stellt ihr ein, damit sich die im Raum befindlichen Personen nicht gegenseitig des Diebstahls anzeigen...
Zitat ende
----------------------------

doch nicht dafür verantwortlich.

Also müsste man bei sämtlichem Zeug per Script dem Ownership auf Player setzen und beim Ablauf der Mietdauer wieder zurück. Doch wie?
 
ja. der script auf einem disableten Gegenstand wird aber noch immer ausgeführt glaube ich. enable bewirkt, dass der Gegenstand da ist und disable das gegenteil.
 
  • Like
Reaktionen: Almalexian
Ja das ist wieder eine andere Frage.

Hast du dir den Befehl im Wiki mal angesehen?
Da ist doch ein Beispiel angegeben:

Übrigens du benötigst dafür OBSE 0017
Code:
ref pDoor
...
set pDoor to GetFirstRef 24 1
while (pDoor)
  ; do something with pDoor
  set pDoor to GetNextRef
loop

So willst du also jeden Gegenstand im Raum dem Player gehören lassen, musst du es nur ein wenig umändern.

Code:
ref Ingredient
...
set Ingredients to GetFirstRef 25 1
while (Ingredient)
  Ingredient.SetOwnership Player
  set Ingredient to GetNextRef
loop

Einziger Nachteil, du kannst nicht bestimmen das nur die gegenstände in dem Raum dem Player gehören, sondern alle Gegenstände in den nächsten 8 bzw 25 Cells.
Das kannst du aber umgehen in dem du z.B. abfragst ob der Spieler in dem Raum ist, z.B. mit einem Trigger. Halt ne Variable die beim betreten und beim verlassen des Raumes hoch/runtergesetzt wird und die dann in dem Loop abgefragt wird.

Hoffe das hilft dir :?
 
  • Like
Reaktionen: robinH
ich hab noch ne Frage: ich habe ein paar (ein paar mehr) Offhand Waffen erstellt, und wollte diese nun beim Ziehen der "normalen" Waffe dem Player ausrüsten lassen automatisch. Was für nen Begin - Block muss ich da nehmen?
 
Es gibt keinen Begin Block dafür, du musst halt überprüfen ob der Spieler die Waffe ausgerüstet hat und abfragen ob die Waffe gezogen ist (Vllt mit IsWeaponOut kann grad nicht genauer nachsehen).
 
  • Like
Reaktionen: Patta93
OK dann lass ich das. dann mach ich die Waffen einfach als normale Items (die Offhand - Sachen) sind sowieso nur für pers. Gebrauch. Danke trotzdem.
 
Ja das ist wieder eine andere Frage.

Hast du dir den Befehl im Wiki mal angesehen?
Da ist doch ein Beispiel angegeben:

Übrigens du benötigst dafür OBSE 0017
Code:
ref pDoor
...
set pDoor to GetFirstRef 24 1
while (pDoor)
  ; do something with pDoor
  set pDoor to GetNextRef
loop

So willst du also jeden Gegenstand im Raum dem Player gehören lassen, musst du es nur ein wenig umändern.

Code:
ref Ingredient
...
set Ingredients to GetFirstRef 25 1
while (Ingredient)
  Ingredient.SetOwnership Player
  set Ingredient to GetNextRef
loop
.........

Hoffe das hilft dir :?

Das ist ja alles nett gemeint, doch für mich alles zu hoch. Wo soll ich das was du da schreibts denn nun hinschreiben? Ich nutzte den OBSE 16. Welcher Befehl kommt denn von 17?
Warum hast du die 24 zur 25 gemacht?
Was kommt dahin, wo du die Punkte gesetzt hast?
Hilfe bin völlig durcheinander jetzt. Und wie frage ich die Celle ab?

EDIT: Da mir wohl keiner richtig helfen kann und das wohl zu schwer ist zu bauen, gibt es einen Console Befehl mit dem ich den Ownership auf Player und wieder zurück setzten kann?

Wenn ja könnte man doch ein Zauber erstellen, mit dem man das gewünschte Item auf den entsprechenden Ownership ( in dem Falle dem Player) zaubert. Oder gibt es so einen Zauber schon?
 
Zuletzt bearbeitet:
Also, der Befehl GetFirstRef/GetNextRef existiert erst seit OBSE 17. Punkt aus Ende.

Er hat die 24 in eine 25 geändert, weil diese Zahl definiert, wonach gesucht wird, und da du ja keine Türen suchen willst....
 
Das ist ja alles nett gemeint, doch für mich alles zu hoch. Wo soll ich das was du da schreibts denn nun hinschreiben? Ich nutzte den OBSE 16. Welcher Befehl kommt denn von 17?
Warum hast du die 24 zur 25 gemacht?
Was kommt dahin, wo du die Punkte gesetzt hast?
Hilfe bin völlig durcheinander jetzt. Und wie frage ich die Celle ab?

EDIT: Da mir wohl keiner richtig helfen kann und das wohl zu schwer ist zu bauen, gibt es einen Console Befehl mit dem ich den Ownership auf Player und wieder zurück setzten kann?

Wenn ja könnte man doch ein Zauber erstellen, mit dem man das gewünschte Item auf den entsprechenden Ownership ( in dem Falle dem Player) zaubert. Oder gibt es so einen Zauber schon?

Also:
Nein GetFirst/NextRef ist KEIN Obse 0017 befehl, er wurde mit OBSe 0017 nur noch weiter verbessert. While ist ein OBSE 0017 befehl, wie es vorher war keine ahnung sorry.
Also die pünktchen stehen für den rest des Scripts. Du machst einfach eine Quest und ein Questscript. In dem Questscript setzt du halt diese befehle ein, also
Code:
ref Ingredient
...
set Ingredient to GetFirstRef 25 1
while (Ingredient)
  Ingredient.SetOwnership Player
  set Ingredient to GetNextRef
loop
Für die Zutaten wie Äpfel, Birnen, Bananen. Wie gesagt sollst du einen Trigger am anfang des Zimmers machen der beim Triggern eine Variable raufsetzt. Diese Variable fragst du in dem Loop ab also
Code:
ref Ingredient
...
set Ingredient to GetFirstRef 25 1
while (Ingredient)
  [COLOR="Red"]If Var1 == 1[/COLOR]
  Ingredient.SetOwnership Player
  set Ingredient to GetNextRef
  Endif
loop

So werden alle Zutaten in näherer umgebung Eigentum des Spielers.
So jetzt fügst du noch das gegenteil ein, also wenn der Spieler nicht im Raum ist:
Code:
ref Ingredient
...
set Ingredient to GetFirstRef 25 1
while (Ingredient)
  If Var1 == 1
  Ingredient.SetOwnership Player
  set Ingredient to GetNextRef
  [COLOR="Red"]Elseif Var1 != 1[/COLOR]
  Ingredient.SetOwnership Person
  set Ingredient to GetNextRef
  Endif
loop

25 ist Ingredient, 24 Door. Eine Liste dazu findest du im CSWiki unter den Einträgen von GetFirst/NextRef.
Die Zelle direkt kannst du nicht abfragen, nur den Interior an sich (also "Worldspace" Interiors). Musst halt mal ein bisschen rumprobieren, gehört halt zum Scripten dazu, sonst lernt man ja nie was ;)
 
  • Like
Reaktionen: robinH
Ich glaub das bringt nichts ich bin damit überfordert. Dazu bräuchte ich ein turtorial um das umzusetzen wi edu das sagst.

Meine andere Idee wäre der Zauberspruch. Ich habe wieder mal nach langer Suche einen Konsolenbefehl dafür gefunden.

Stammt aus Fallout3 läuft aber auch mit Oblivion genau wie der Resurrect.
Objectauswahl treffen und Setownership eingeben.

Nun bräuchte man ein Zauber, bei dem das am besten eingebaut werden kann. Also einen den man als Refferenz nehmen könnte. Da ich es nicht so mit der Magie habe und auch kaum ein Zauber deshalb kenne. Welcher passt da am besten um sich das mal anzuschauen?
 
Ist es möglich, die Distanz zwischen einem Marker in einem Interior und einem Objekt in einem Exterior zu messen?

Ich weiß zwar, dass es den Befehl "GetDistance" gibt, aber ich weiß nicht, ob der auch bei der Messung von Interior nach Exterior möglich ist.
 
Gibt es denn eine Möglichkeit, trotzdem die Distanz zu messen? Kann auch ruhig kompliziert sein.

Vielleicht, dass der Spieler erst vor die Tür teleportiert wird, oder so.
 
also du könntest einen XMarker in die Interiorzelle setzen (direkt vor die Tür) und einen XMarker vor die Tür im Exterior. Jetzt speicherst du die Distanz des Interiors in eine Variable und die des Exteriors in eine andere und Addierst diese dann zusammen. Dann sollest du ungefähr auf den Wert kommen ;)
 
  • Like
Reaktionen: bjoernret