Construction Set Skriptthread zum Construction Set

Code:
scn BeitretScript
 
short button
 
Begin OnActivate
 if ( isActionRef Player == 1 ) && ( Player.GetFactionRank [DeineFaction] == -1 )                 ;falls der Spieler noch nicht in der Faction ist & der Spieler aktiviert
  set button to 0
  MessageBox "Wollt ihr beitreten?" "Ja" "Nein"
 else                                                        
  Activate
 endif
End
 
Begin Gamemode
 if Player.GetFactionRank [DeineFaction] == -1
  if button == 0
   set button to GetButtonPressed + 1
  elseif button == 1
   Player.SetFactionRank [DeineFaction], 0
  endif
 endif
End


Hi
Ich habe vor kurzen das script da benötigt um eine Fraction be zu treten aber irgendwie klappt das nicht ich bekomm immer wieder die fehlermeldung das in line 6 was net stimmt?
 
Hast du [DeineFaction] auch mit der ID der Faction ersetzt, bei der der Spieler beitreten soll?
Hat die Faction auch den Rang 0 (erster der erstellt wird, wenn du bei der Faction bei Rank auf New klickst)?


Edit:
@Xaser:
Klammern dienen eigentlich nur zur besseren Übersicht und bewirken gar nichts (solange man sie immer brav wieder schließt). :p
 
Zuletzt bearbeitet:
Hast du [DeineFaction] auch mit der ID der Faction ersetzt, bei der der Spieler beitreten soll?
Hat die Faction auch den Rang 0 (erster der erstellt wird, wenn du bei der Faction bei Rank auf New klickst)?

Ja hab ich also meine Faction hat den rang 0 und die ID hab ich eingegeben.
Warte bitte dan gib ich dir die genaue Fehlermeldung

EDIT:

Also die fehlermeldung genau heißt:


Skript"BeitretSkript",line 6
missing parameter Faction
Compiled skript not saved!
 
Zuletzt bearbeitet:
Sagt doch schon alles:
Dem fehlt eine Faction als Parameter, sprich was du für [DeineFaction] eingesetzt hast ist keine Faction.

Sicher die Faction gespeichert zu haben (evtl. muss man das Fenster dazu schließen).
Sicher, dass du dich nicht vertippt hast?

Zeig mal das genaue Skript, dass könnte helfen.
 
Ok

Also die Faction hab ich sicher gespeichert

Code:
scn BeitretScript
 
short button
 
Begin OnActivate
 if ( isActionRef Player == 1 ) && ( Player.GetFactionRank [DruidenGilde] == -1 )               
  set button to 0
  MessageBox "Wollt ihr beitreten?" "Ja" "Nein"
 else                                                        
  Activate
 endif
End
 
Begin Gamemode
 if Player.GetFactionRank [DruidenGilde] == -1
  if button == 0
   set button to GetButtonPressed + 1
  elseif button == 1
   Player.SetFactionRank [DruidenGilde], 0
  endif
 endif
End

also ich schau nochmal nach wegen meiner faction

EDIT:
JA die Faction ist erstellt
 
Ich nehm mal an die Faction heißt DruidenGilde. Du musst die eckigen Klammern weglassen:
Code:
scn BeitretScript
 
short button
 
Begin OnActivate
 if ( isActionRef Player == 1 ) && ( Player.GetFactionRank DruidenGilde == -1 ) 
  set button to 0
  MessageBox "Wollt ihr beitreten?" "Ja" "Nein"
 else
  Activate
 endif
End
 
Begin Gamemode
 if Player.GetFactionRank DruidenGilde == -1
  if button == 0
   set button to GetButtonPressed + 1
  elseif button == 1
   Player.SetFactionRank DruidenGilde, 0
  endif
 endif
End
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Dyras
Hi!
Ich brauche ein Script, ob ein NPC mitbekommen hat, ob ihm ein Gegenstand geklaut wurde.. also wenn ein NPC merkt, das er beklaut wird, kann man ihn ja nicht mehr beklauen, diesen Status möchte ich abfragen... wie geht das?
 
Das sollte mit dem Befehl "GetDetected" funktionieren.

"GetDetected player" zum Beispiel gibt den Wert 1 zurück, wenn das Ziel (also der NPC mit dem Script) vom Spieler entdeckt wurde.

Mfg
 
Problem; Skripten; Pflanzen beschwören und verschwinden lassen

Hi Leutz!

Ich habe ein Problem:?, ich baue momentan ein Haus, wo ich natürlich auch eine Gärtnerei einbauen möchte. Ich habe einen Schalter in die Wand gebaut, der einem einen Zauber hinzufügt(wenn ich aus dem Raum gehe, wird er mir wieder entfernt), der mir eine Message Box anzeigt, die mich fragt was für eine Pflanze ich beschwören möchte. Es kommt zwar ne Oflanze, wenn ich zauber, aber sie verschwindet nicht. Bitte helft mir mir dem Script, auch gerne ein Script gewünscht, dass einem die Pflanze direkt beschwört(gemeint: wenn Schalter aktiviert wird kommt die MessageBox..."(aber bitte nur mit timer(10 sek.), denn ich bring das nicht ganz zusammen:oops::huh:). Der Marker für die Blumen heißt schlicht und einfach "Ziel". Bitte mit Überprüfung, ob die Pflanze schon existiert!
Hier das Script
Code:
scn 00PflanzenScript

Short beschworen
Short button
Ref a
Ref b
Ref c

Begin ScriptEffectStart
MessageBox "Welche Pflanze wollt Ihr beschwören?", "Akelei", "Alkanet", "Aloe Vera", "Nichts beschwören"
end

Begin GameMode
Set button to GetButtonPressed
	If button == 0
		If beschworen == 0
		a.disable
		Set beschworen to 1
		endif
	Elseif button == 1			
		If beschworen == 0
		b.disable
		Set beschworen to 1
		endif
	Elseif button == 2
		If beschworen == 0
		c.disable
		Set beschworen to 1
		endif
	Elseif button == 3
		If beschworen == 0
		Return
		endif
	endif
end

Begin ScriptEffectFinish
	elseif beschworen == 1
		a.disable
	endif
	elseif beschworen == 1
		b.disable
	endif
	elseif beschworen == 1
		c.disable
	endif
	set beschworen to 0
End




Danke im Voraus für eure Hilfe!
 
Zuletzt bearbeitet:
Die Elseif im ScriptEffectFinish-Bock mit einem If ersetzen.
Den Gamemode-Bock mit einem ScriptEffectUpdate-Block ersetzen.
Mir ist nur unverständlich, warum die Pflanzen erscheinen, obwohl die disabled werden. (disable lässt Sachen unsichtbar werden (Kollision wird ebenfalls deaktiviert), enable lässt disablete Sachen wieder erscheinen).

Code:
scn 00PflanzenScript

Short beschworen
Short button
Ref a
Ref b
Ref c

Begin ScriptEffectStart
MessageBox "Welche Pflanze wollt Ihr beschwören?", "Akelei", "Alkanet", "Aloe Vera", "Nichts beschwören"
end

Begin ScriptEffectUpdate
Set button to GetButtonPressed
	If button == 0
		If beschworen == 0
		a.enable
		Set beschworen to 1
		endif
	Elseif button == 1			
		If beschworen == 0
		b.enable
		Set beschworen to 1
		endif
	Elseif button == 2
		If beschworen == 0
		c.enable
		Set beschworen to 1
		endif
	Elseif button == 3
		If beschworen == 0
		Return
		endif
	endif
end

Begin ScriptEffectFinish
	if beschworen == 1
		a.disable
		b.disable
		c.disable
	endif
	set beschworen to 0
End
 
Also der Script von Low Post sieht absolut korrekt aus, jedoch frage ich mich (bei euch beiden), warum dort die Referenzen a, b und c im Script deklariert werden. Die Referenzen sollte man schon im Object Window den Pflanzen zuweisen, und außerdem werden a, b, und c auch nicht während des Scriptes auf die Pflanzen bezogen. Also kann man eigentlich weglassen. Ich denke, ihr wisst scho, was ich meine, cih schreibe den Script aber trotzdem noch mal hier rein. ^^
Code:
scn 00PflanzenScript ;ich würde eigentlich keine zwei 0 am Anfang verwenden

Short beschworen
Short button

Begin ScriptEffectStart
MessageBox "Welche Pflanze wollt Ihr beschwören?", "Akelei", "Alkanet", "Aloe Vera", "Nichts beschwören"
end

Begin ScriptEffectUpdate
Set button to GetButtonPressed

If beschworen == 0
	If button == 0
		a.enable
	Elseif button == 1			
		b.enable
	Elseif button == 2
		c.enable
	Elseif button == 3
		Return
	endif
set beschworen to 1
end

Begin ScriptEffectFinish
	if beschworen == 1
		a.disable
		b.disable
		c.disable
	endif
	set beschworen to 0
End
Der Script ist zwar vom Sinn her gleich, jedoch etwas kürzer. ^^

MfG Gildur
 
Mir ist nur unverständlich, warum die Pflanzen erscheinen, obwohl die disabled werden.erscheinen).
[/CODE]
Tschuldigung, hab mich verschrieben, war schon müde, da mir dieses sch*** Skript schon so lange Kopf zerbrechen bereitet. Statt a.disable oder so gehört "set a to Ziel.placeatme Columbine 1,1,1" Trotzdem großes Danke, werd mich jetzt mal vor's CS setzen
 
@ Gildur, 00 vor dem Scriptnamen sind nur da, dass es als erstes angezeigt wird und ich nicht immer suchen muss

Aber die Pflanzen existieren im CS ja nichtmal, also wie soll ich sie enablen?
Sie werden ja beschworen und dann verschwinden sie wieder
 
ja aber wenn dus eh nur in eine Raum machst kannste ja in die Mitte oder so nen minigarten stellen, darein viele pflanzen, welche du initedly diasablest amchst und denen ne ref gibst.. so sollte das mit nem Timer viel einfach sein, als nen extra beschwörungsscript.. ich persönlich habe auch ne Frage:

Ich habe ein Script, welches bewirken soll, das wenn eine gewisse Stage erreicht wird, und dann das Objeckt aktiviert wird, die Stage erhöht wird, das aber nur einmal.. mein script sieht so aus:
Code:
scn 000MWMQ2Map

short Doonce

Begin OnActivate
If isActionRef player == 1 && Doonce == 0 && GetStage 000MWMQ2 20 == 1
			SetStage 000MWMQ2 30
			Set Doonce to 1
		Activate
	endif
		Activate
end

nur egal b die Stagee nun 20 30 oder garkeine ist, ich kann die schriftrolle nicht öffnen, und es tut sich nix, wo liegt der fehler?
 
Hi,

Könnt ihr mir bei einem Skript helfen? Ich weiß nicht, ob danach schon in diesem Thread gefragt wurde.

Also, wie stelle ich es an, dass der Player einen Gegenstand erhält nachdem der Spielstand geladen wurde?

Ich glaube, dass der Befehl Startquest (oder so ähnlich) auftaucht, richtig? Sonst weiß ich nicht, wie das Skript aussehen könnte. Ich bin ja erst angefangen zu skripten;).
 
Hi darklady310187 (woher stammen die Zahlen? ^^),

ich denke, die meisten machen es mit einer Quest. Also du erstellst eine Quest (egal, ob du eine Quest an sich brauchst). Nun, jetzt erstellst du einen Quest-Script. Du gehst ganz normal in das Script-fenster, dort aktivierst du statt "Object" dann "Quest", sodass dieser Script nur auf Quests kann. Jetzt schreibst du folgenden Script:
Code:
scn DLQuestSCRIPT

short DoOnce

Begin GameMode
If DoOnce == 0
player.additem [ItemID] [Anzahl]
set DoOnce to 1
Endif
End
Außerdem solltest du daran denken, dass bei der Quest ein Harken bei "Start enabled" ist. Das ist sehr wichtig, denn nur dann startet die Quest zu Beginn. Wenn ich mich nicht ganz irre, brauchst du auch noch eine Stage. Bin mir nicht ganz sicher, mach aber leiber doch eine. Kann ja nicht schaden ;)
Also einfach eine neue Stage erstellen, Zahl 1 eingeben, fertig.

MfG Gildur
 
  • Like
Reaktionen: darklady310187
Tschuldigung, hab mich verschrieben, war schon müde, da mir dieses sch*** Skript schon so lange Kopf zerbrechen bereitet. Statt a.disable oder so gehört "set a to Ziel.placeatme Columbine 1,1,1" Trotzdem großes Danke, werd mich jetzt mal vor's CS setzen

Funktioniert zwar auch, allerdings verursacht das ein "aufblähen" des Spielstands, falls es zu oft angewendet wird (die Disableten Objekte verschwinden nähmlich nicht aus dem Spielstand).
Ich würde eher(wie Xaser) an die Koordinaten des Ziels von jeder PlanzenVariante eines setzen, das Initally Disabled ist und der Ref eine ID geben. Vergiss aber nicht ein Häckchen bei Persistent Referenz zu machen.
Als IDs kannst du ja a, b und c verwenden (analog zum Script). Dann muss du da nichts mehr abändern (außer die ref-Variablen rauslöschen; nimm einfach Gildurs Skript, der hat das schon gemacht).