Construction Set Skriptthread zum Construction Set

Also ich hab folgendes problem: Ich will ein paar gegenstände aus der luft mit einem zauber fallen lassen, aber mein Script geht nich(die melonen fallen von der position des players durch den boden, aber sie müssten ja aus der luft kommen. kann mir jemand sagen wo da der fehler liegt:

Code:
scn xyz

short count
short height
ref me
ref paket
short yrand
short xrand
short timer

begin scripteffectstart
set me to getself
set timer to getrandompercent * 0.1
end

begin scripteffectupdate
if count<100 && timer == 0 
set paket to me.placeatme 00paket 1
set height to paket.getpos z + 2000 
set yrand to paket.getpos y + 10 * getrandompercent - 10 * getrandompercent
set xrand to paket.getpos x + 10 * getrandompercent - 10 * getrandompercent
paket.setpos z height
paket.setpos y yrand
paket.setpos x xrand
set count to count+1
set timer to getrandompercent * 0.1
Else
set timer to timer -1
endif
end
 
Hi ich habe ne kurz ne kleine frage.

Beim scripten gibs den befehl zB. begin OnEquip dan startet die Quest sobald
man den Gegenstand ausrüstet
Wie heißt der befehl wenn man wen umbringt

Also ich möchte den nächsten Quest stage erreichen sobald ich den typen umgelegt habe das heißt begin On???

Hoffe ihr konntet mich verstehen

LG
Dyras
 
Hi!
Ich breuchte mal einen Befehl, der abfragt, ob ein Gegenstand bereits einmal Aktiviert wurde (ein Buch einmal gelesen wurde)
also irgentwie RefID.activated == 1
 
Mach einen Umweg mit einem OnActivate-Block:

Code:
scn ActivateDetect-Script

short AlreadyActivated                         ;wenn die Variable von anderen Skripten benutzt werden soll benötigst du entweder die ID der Referenz (afaik), oder du verwendest die Variable eines Questskripts/Globale Variable

Begin OnActivate
 if AlreadyActivated == 0
  set AlreadyActivated to 1
  Activate                         ;ist nötig, da der OnActivate-Block [B]anstelle[/B] des aktivierens abläuft
 else
  ;mach irgentwas was beim 2./3./n. mal ablaufen soll, z.B. Activate
 endif
End
 
Hi ich brauche bitte ein script wenn amn eine bestimmte Person anspricht ercsheint eine Message Box " Möchten sie beitreten" "Ja" "Nein"
Wenn man ja drückt ist man der faction dabei.

Danke im Voraus
LG
dyras
 
scn BeitretSkript

short key

begin onactivate
msgbox "Möchten sie beitreten","Ja","Nein"

set key to getbuttonpressed

if key=0 then
[KA]
endif
end
Bei [KA] käme dann das Adden des Players zur Faction, nur hab ich kein Plan wie ^^

3 Sachen:
getbuttonpressed muss in einen Gamomode, oder Menumodeblock
then ist überflüssig
der Befehl lautet [ActorID.]SetFactionRank [DeineFaction], [Rang]

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                                                          ;damit normales Ansprechen noch möglich ist
  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
 
  • Like
Reaktionen: Dyras
Gibt es einen Befehl, mit dem man die Region abfragen kann, in der sich der Player befindet?
Also, dass er dann z.B. stirbt wenn er in eine andere Region geht... :huh:
 
Moin,
ich suche einen Skript der für eine Bestimmte Zeit bei allen Actors und Kreaturen bewirkt, dass sie nicht mehr Kämpfen und sich nicht mehr bewegen.
Gibt es da eine Möglichkeit? Ich finde leider keinen Script Befehl der bewirkt das sich Kreaturen etc. nicht mehr bewegen

mfg
 
Gibt es einen Befehl, mit dem man die Region abfragen kann, in der sich der Player befindet?
Also, dass er dann z.B. stirbt wenn er in eine andere Region geht... :huh:

[Actor-ID.]GetInCell [Cell-ID]
GetInCellParam [Cell-ID] [Actor-ID]
[Actor-ID.]GetInSameCell [Target-ID]
[Actor-ID.]GetInWorldspace [Worldspace-ID]

Zu beachten bei GetInCell und GetInCellParam:
Es werden alle Zellen überprüft, die mit der gewählten Zelle beginnen, wenn man also die Zelle 'ABD' abfragt wird der Wert bei der Zelle 'ABD' 1, allerdings auch bei den Zelle 'abdadat', 'Abdulla', etc.
Um das zu verhindern muss man die in der Abfrage noch extra ausschließen.


Bei deinem Beispiel (mit "meinen" Zellen) wäre dass dann:
Code:
scn DeathzoneScript

Begin Gamemode
 if ( Player.GetInCell ABD == 1 ) && ( Player.GetInCell abdadat != 1 ) && ( Player.GetInCell Abdulla != 1 )
  Player.kill
 endif
End

ich weiß das is ne dumme frage, aber wie kann man zur ner Variablen +1 hinzufügen?

Code:
set Variable to Variable + 1
 
  • Like
Reaktionen: RPG-BlackDragon
Thx schonmal für die eine beantwortete frage, wenn du mir jetzt noch eine beantwortest, gibs nen danke!

ich habe in einem Questscript die Variable "Activated" angegeben, also ist diese doch jetzt eine Globale, und kann in jedem anderen Script verwendet werden oder nicht?

oder muss ich erst in dem Objeckt Script diese Variable setzten, und das Questscript erkennt diese dann????
€: hat sich erledigt...
 
Zuletzt bearbeitet:
Thx schonmal für die eine beantwortete frage, wenn du mir jetzt noch eine beantwortest, gibs nen danke!

ich habe in einem Questscript die Variable "Activated" angegeben, also ist diese doch jetzt eine Globale, und kann in jedem anderen Script verwendet werden oder nicht?

oder muss ich erst in dem Objeckt Script diese Variable setzten, und das Questscript erkennt diese dann????

Globale Variablen erstellst du eigentlich unter Gameplay->Globals.
Variablen aus einem Questskript funktionieren aber genauso, außerdem gibt es bei denen noch die Möglichkeit Ref-Variablen zu erstellen, dass gibt es bei Globals nicht.
Um eine Variable aus deinem Questskript zu verwenden musst du in dem anderen Skript vor die Variable noch ein [Questname.] setzten. Wenn jetzt die Variable also z.B. 'Variable' heißt und die Quest die ID 'QuestBeispielID' hat musst du in dem anderen Skript QuestBeispielID.Variable angeben (das ist der Vorteil von Globals: kürzerer Name ^^).
Bei einem Object-Skript musst du afaik die Referenz-ID davor schreiben.
Bei MagicEffect-Skripten gibt's sicher auch was, da hab ich aber keine Ahnung.



Bei diesem Skript würde jetzt bei jeder Aktivierung die Variable der Quest 'QuestBeispielID' (Name der Quest, sowie Name des Skripts sind egal) um 1 erhöht.
Code:
scn ObjectScript

Begin OnActivate
 set QuestBeispielID.Activated to QuestBeispielID.Activated + 1
End

Um die Schreibarbeit zu veringern kannst du auch Zwischenvariablen verwenden:
Code:
scn ObjectScript

float x                          ;ich weiß ja nicht, was die andere Variable ist; float deckt auch short & long ab. Setzt einfach das entsprechende für float ein, falls du das anders haben willst

Begin OnActivate
 set x to QuestBeispielID.Activated
 set QuestBeispielID.Activated to x + 1
End
Hier ist das zwar mehr Schreibarbeit, aber bei komplexeren Berechungen wird das dann deutlich weniger.
 
  • Like
Reaktionen: Xaser
hmm irgentwie klapt das nicht. ich habe ein Questscript zur Quest 000MWMQ2, in diesem Script gibs die variable Activated.. nun geht aber folgendes Objeckt script nicht, er kennt die Variable nicht:

Code:
scn 000MWMQ2Letter

short Doonce
short Done

Begin OnActivate
	If isActionref player == 1 && Doonce == 0 && Done == 0
		SetStage 000MWMQ2 10
			Set 000MWMQ2.Activated to 000MWMQ2.Activated +1
				Set Done to 1
			Set Doonce to 1
		Activate
	elseif isActionRef player == 1 && Doonce == 1 && Done == 1
		Activate
	elseif isActionRef player == 1 && Doonce == 1 && Done == 0
		Set 000MWMQ2.Activated to 000MWMQ2.Activated +1
			Set Done to 1
		Activate
	endif
end
 
Ich kann dir jetzt leider nicht sagen woran das liegt, mit dem Skript ist eigentlich alles in Ordnung (auch wenn ich die Tabs etwas anders gesetzt hätte, dass sollte aber eigentlich keine Auswirkungen haben).

Mögliche Fehlerursachen:
Hast du mal versucht die Variable anders zu nennen (evtl. ist Activated eine Funktion, o.ä.)?
Vllt. liegst auch am Questnamen (evtl. akzeptiert Obl. keine Zahlen am Anfang).
Bist du dir sicher dich nirgens vertippt zu haben (z.B. im Questskript, c&p hilft da)?
Questkript in der die Variable definiert wird der Quest zugewiesen und Questfenster per OK geschlossen?
...


btw: so würde ich die Tabs setzten:
Code:
scn 000MWMQ2Letter

short Doonce
short Done

Begin OnActivate
	If isActionref player == 1 && Doonce == 0 && Done == 0
		SetStage 000MWMQ2 10
		Set 000MWMQ2.Activated to 000MWMQ2.Activated +1
		Set Done to 1
		Set Doonce to 1
		Activate
	elseif isActionRef player == 1 && Doonce == 1 && Done == 1
		Activate
	elseif isActionRef player == 1 && Doonce == 1 && Done == 0
		Set 000MWMQ2.Activated to 000MWMQ2.Activated +1
		Set Done to 1
		Activate
	endif
End