Construction Set Skriptthread zum Construction Set

@ Low Post
So ich bin am verzweifeln.

Ich hab jetzt das Script mal ausprobiert. Gut ich hab es in mein vorhandenes Script integriert. Das Problem ist nun das alle Items als Verzaubert angezeigt werden. Nur die leeren Slots sind unverzaubert.

Irgend was passt hier noch nicht.

ich hab auch einfach mal das Script 1 zu 1 gegen meins ausgetauscht. Aber wenn ich das dann starte hab ich nen CTD.

Hab halt nach dem Begin GameMode noch folgendes eingetragen das der NPC als Ref dient.

set NPCRef to MeinNpcRef

Also das Script wir über ein Token gestartet auf dem es liegt. Der NPC bekommt es ins Inverntar und dann startet es.

Muss ich das Script anders starten oder übergeben ??

Ich kann Dir auch mal das ganze Script schicken vlt bin ich ja nur blind und hab was übersehen.

Bis denn Thalon

CTD könnte es geben, weil die Nachricht einfach zu lang ist.
Versuch mal das ohne SaveIP/RestoreIP zu regeln.



Wichtig bei dem bisherigen Script ist, dass es nachdem es fertig ist auch gestoppt wird, sonst läuft es ununterbrochen durch.
 
ich habe ein Problem mit folgendem Script:
Code:
scriptName OGMKvatchGateOpenerScript


;moveup 1 = hoch
;moveup 2 = runter
;moveup 0 = aus

short moveup
float zcood
float maxheight

Begin OnActivate
	If (moveup == 0) || (moveup == 2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	Elseif moveup == 1
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	Endif
		set zcood to OGMFallgatter001.getpos z
		activate
End

Begin Gamemode
	If ( Gamehour == 21 ) && ( moveup == 1)
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	endif
	ElseIf (Gamehour == 8) && (moveup == 0) || (moveup ==2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	endif
end

Begin GameMode
	if moveup == 1
		If zcood < maxheight
			set zcood to zcood + 3
			OGMFallgatter001.setpos z zcood
		Endif
		Elseif moveup == 2
			If zcood > maxheight
				set zcood to zcood - 3
				OGMFallgatter001.setpos z zcood
		Endif
	Endif
End

Der Script liegt auf einem SChalter und soll folgendes bewirken:
-durch aktivieren Tor schliessen/öffnen
-automatisches schliessen/öffnen zu bestimmten Tageszeiten

Das Öffnen und Schliessen durch aktivieren des Hebels funktioniert ganz gut. Aber zu den bestimmten Tageszeiten passiert einfach nichts, weiss jemand Rat?

Und wie kann ich machen, das NPC's bei geschlossenen Tor nicht durchehen?
Und das der Player Kopfgeld bekommt, sobald er beim Öffnen von einer Wache gesehen wird?
 
Zuletzt bearbeitet:
also irgendwie geht mein post immer unter, oder habt ihr keine ahnung, wie diese scripte heißen, die ich brauche? Oo

naja, hier noch einmal das gerücht, ich will es verwirklichen, kann aber nicht scripten, also wäre es nett, wenn ihr mir die eine oder andere antwort geben würdet:

das gerücht:

Die wahrscheinlich mächtigste Waffe des Spiels ist das Schwert aus Licht und Schatten. Es ist mächtiger als Umbra und unzerstörbar! Es hat die einmalige Fähigkeit das man mit einem Schlag tötet. die Ladung bertägt 80.000. Wo man es bekommt ist schon etwas komlizierter. geht zum Marktviertel der Kaiserstadt und sucht einen eingang in die Abwasser kanäle. Sucht nach einem Leichnam namens "Kristaz" und sprecht ihn an. eine Geisterhafte Stimme sagt dir das du einen Mann namens "Fredo la Chance" töten sollst. anschliessend eine Wache der Stadt Corrol. zu letzt eine Frau namens "Sanay". tötet diese Drei Leute und kehrt zu dem Leichnam zurück. er fängt an zu lachen und wird zu einem Skelett. redet erneut mit ihm. um seinen Dank auszudrücken gibt er euch das Schwert. Nachdem ihr die Kanalisation verlassen habt, kommen 5 Wachen auf euch zugerannt (bei mir waren es jedenfalls 5) und wollen euch ins Gefängniss werfen. ab dem Moment solltet ihr eure Beine in die Hand nehmen und laufen. auf euch ist ein Kopfgeld von acht Mio Gold ausgesetzt. fast jeder jagt euch. eure nächste aufgabe sollte sein einen Wachmann aus der Stadt zu locken und ihn zu der Mooshöhle brngen. bringt ihn rein und rennt an den Kreaturen vorbei zu dem kleinen blauleuchtenden Tümpel. geht hinein und tötet den Wachmann. euer Kopfgeld ist weg (das geht übrigens immer mit eurem Kopfgeld). wenn ihr jetzt in eure Statistik seht, bemerkt ihr sicherlich das ihr einen neuen Titel erhalten habt.. "Toter Wind". Ihr seid Untot geworden. aber das nimmt keinen einfluss auf eure Charakter eigenschaften und die leute behandeln euch rmal. nur euer aussehen ist... gewöhnungsbedüftig...
freut euch über das schwert... ihr seid damit in der lage zuvor unsterbliche Charaktere zu töten"


welche scripte brauche ich dafür? und wie gehen diese?
 
immer schön Tab drücken :-D Dann gibt es eine schöne Lücke. Du meinst doch das, oder?
Damit es nicht untergeht:
ich habe ein Problem mit folgendem Script:
Code:
scriptName OGMKvatchGateOpenerScript


;moveup 1 = hoch
;moveup 2 = runter
;moveup 0 = aus

short moveup
float zcood
float maxheight

Begin OnActivate
	If (moveup == 0) || (moveup == 2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	Elseif moveup == 1
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	Endif
		set zcood to OGMFallgatter001.getpos z
		activate
End

Begin Gamemode
	If ( Gamehour == 21 ) && ( moveup == 1)
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	endif
	ElseIf (Gamehour == 8) && (moveup == 0) || (moveup ==2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	endif
end

Begin GameMode
	if moveup == 1
		If zcood < maxheight
			set zcood to zcood + 3
			OGMFallgatter001.setpos z zcood
		Endif
		Elseif moveup == 2
			If zcood > maxheight
				set zcood to zcood - 3
				OGMFallgatter001.setpos z zcood
		Endif
	Endif
End

Der Script liegt auf einem SChalter und soll folgendes bewirken:
-durch aktivieren Tor schliessen/öffnen
-automatisches schliessen/öffnen zu bestimmten Tageszeiten

Das Öffnen und Schliessen durch aktivieren des Hebels funktioniert ganz gut. Aber zu den bestimmten Tageszeiten passiert einfach nichts, weiss jemand Rat?

Und wie kann ich machen, das NPC's bei geschlossenen Tor nicht durchehen?
Und das der Player Kopfgeld bekommt, sobald er beim Öffnen von einer Wache gesehen wird?

EDIT/ ich habe den Script nochmal ein bisschen angepasst, die Tore schliessen sich aber um 21 Uhr immer noch nicht:
Code:
scriptName OGMKvatchGateOpenerScript


;moveup 1 = hoch
;moveup 2 = runter
;moveup 0 = aus

short moveup
float zcood
float maxheight

Begin OnActivate
OGMTorhebel001.playgroup forward, 1
	If (moveup == 0) || (moveup == 2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	Elseif moveup == 1
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	Endif
		set zcood to OGMFallgatter001.getpos z
		activate
End

Begin Gamemode
	If ( Gamehour == 21 ) && ( moveup == 1)
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	ElseIf (Gamehour == 8) && (moveup == 0) || (moveup ==2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	endif
		set zcood to OGMFallgatter001.getpos z
		activate
end

Begin GameMode
	if moveup == 1
		If zcood < maxheight
			set zcood to zcood + 3
			OGMFallgatter001.setpos z zcood
		Endif
		Elseif moveup == 2
			If zcood > maxheight
				set zcood to zcood - 3
				OGMFallgatter001.setpos z zcood
		Endif
	Endif
End

und meine alten Fragen bleiben bestehen:
Und wie kann ich machen, das NPC's bei geschlossenen Tor nicht durchehen?
Und das der Player Kopfgeld bekommt, sobald er beim Öffnen von einer Wache gesehen wird?
 
Zuletzt bearbeitet:
So, ich hab hier jetzt auch mal ein Problem mit einem Skript. Um mich an das LayOut des Anfangsposts zu halten:

-Was muss das Script bewirken?
Um es kurz zu sagen: Ich will eine Waffe haben bzw. ein Skript für eine Waffe. Durch das Skript soll die Waffe zum einen Feuerschaden besitzen (wenn das geht. Wenn nicht müsste ichs halt über eine herkömmliche Verzauberung machen)und, was das eigentliche Problem ist: Sie soll den Shadereffekt des Zaubers "Waffe auflösen" besitzen. Wendet man den Zauber ingame auf einen bewaffneten NPC an, dann steht seine Waffe komplett in Flammen und eben diesen Effekt will ich auf einer für den Spieler verwendbaren Waffe haben, samt einem passendem Nebeneffekt, wie zum Beispiel dass die Hitpoint-Anzahl des Gegners bei Treffer um zB ein Viertel verringert wird.

Ich hab bereits mit der Hilfe eines Bekannten, der etwas vom Skripten versteht, versucht das umzusetzen mithilfe eines einfachen Skriptes wie dem hier bzw. in sinnvollen Variationen davon:

scn SKRIPTNAME
Begin OnLoad
pms "ShaderEffectID" 999999999
End

Mal haben wirs dann ohne die "9"en probiert, anstatt "Begin OnLoad" "Begin OnEquip" zu nehmen oder auch mit verschiedenen shadereffekten, aber ingame kam einfach nichts. Dann hatten wir/ich versucht, das Skript als Verzauberung laufen zu lassen, also dass man das Skript ner Verzauberung der Waffe zuweist und nicht der Waffe direkt,aber der im Skript geforderte Shadereffekt trat nicht auf. - Ich konnte zwar der Verzauberung dann szsg einen Skripteffekt zuweisen, aber da hat's dann immer nur die "normalen" Glanz-Effekte (also zB dieses orangene oder weiße Schimmern bei Feuer- oder Eis-Verzauberungen) ingame angezeigt. Effekte wie eben dieses "Waffe auflösen" wurden nicht angezeigt, geschweigedenn der Effekt, der im Skript steht. -
Woran kann das denn liegen, dass der Shadereffekt aus dem Skript nicht angezeigt wird? Bzw. sitzt der Wurm im Skript oder muss ich die Sache irgendwie anders anpacken? Für Hilfe wär ich sehr dankbar :)

Gruß,
Carcharoth


*hilfe*
ich hab irgendwie das Gefühl, ich werde übergangen... oder weiß niemand eine Lösung zu meinem Problem oder versteht niemand, was ich überhaupt will^^?
 
@der dunkelfürst:
Also das dauert jetzt etwas, aber ich hoffe, es lohnt sich:
1.-Du erstellst einen neuen Script. Dieser soll jedoch kein Objekt-, sondern ein Magic-Effect-Script sein. Der sieht dann wie folgt aus:
Code:
scn Scriptname

ref myself

Begin ScriptEffectStart
set myself to getself
setEssential myself 0
End

Begin ScriptEffectUpdate
myself.kill
End
2.-Jetzt erstellst du eine neue Verzauberung (Enchantment) für deine Waffe. In dem neuen Fenster für die Verzauberung muss bei Type "Weapon" selektiert sein (und natürlich musst du auch eine ID vergeben). Nun rechts in der Liste Rechte Maustaste klicken und dann auf "NEW". Im neuen Fenster gehst du auf bei Effect auf "Script Effect", die Werte darunter können alle 1 sein.
Bei "Script" wählst du den eben erstellten Script aus. "school" sollte egal sein, "Visual Effect" kann auf NONE bleiben (Es sei denn du willst einen schönen Effekt auf dem Sterbenden abspielen). Nun bestätigst und schließt du die Fenster mit "OK".

3.-Du wählst jetzt unter "Items" deine Waffe aus und bei "Enchanting" die soeben erstellte Verzauberung. Mit "OK" bestätigen - Fertig.


@Assassin_456:
Versuch mal die fQuestDelayTime weiter runter zu setzen. Ist, glaube ich, eine Global. Also unter "Gameplay->Globals".


@ Carcaroth:
Ganz kurz geschrieben: Du willst eine Waffe haben, die die ganze Zeit brennt, beim Gegner Feuerschaden zufügt und noch einen passenden Nebeneffekt hat? Dann nenne mir den passenden Nebeneffekt und ich erkläre es dir.

MfG Gildur
 
Zuletzt bearbeitet:
Die fQuestDelayTime wird in jedem Skript einzeln gesetzt, somit keine Global.
Im Normalfall werden dafür floats benutzt.

Also:
Code:
Scn yxcv
float fQuestDelayTime

Begin ...
Set fQuestDelayTime To 0.1
End
 
Nein, tut sie nicht. Aber mir fällt gerade auf, dass fQuestDelayTime hier nichts bringt... Ehrlich gesaagt bin ich total ratlos, warum der Script nicht klappt.

Ach ja, eine Frage: du hast an ein oder 2 Stellen ein Endif zu viel. Das ist im Originalscript nicht so, oder?

Beispiel:
Code:
	If ( Gamehour == 21 ) && ( moveup == 1)
		set moveup to 2
		set maxheight to OGMFallgatter001.getpos z - 300
	endif
	ElseIf (Gamehour == 8) && (moveup == 0) || (moveup ==2)
		set moveup to 1
		set maxheight to OGMFallgatter001.getpos z + 300
	endif

Edit: Kurze Erklärung: fQuestDelayTime bringt nichts, da, wie der Name schon sagt, dieses Variable nur in Quest-sccripten klappt. Das sagt jedenfalls das CS-Wiki. Und das hat selten bzw. nie unrecht...
 
Zuletzt bearbeitet:
nein, weiss denn niemand, wieso der Script nicht funzt?

Es funzt eigentlich nur das Öffnen/Schliessen zu einer bestimmten Uhrzeit nicht :?
 
Zuletzt bearbeitet:
Hi Leute,

ich hab mal ne Frage... Ich bin grad erst mit Scripts in Berührung gekommen und das ist quasi mein erster Skript, den ich machen will.

Und zwar möchte ich, dass beim aktivieren einer Tür eine Textbox erscheint, wo man wählen kann, ob man "Eintreten", "Abschließen" oder "Aufschließen" will. Ich denke das sollte ungefähr so aussehen:

Code:
ScriptName LockedDoorScript

short DoorMenu

begin OnActivate ScriptEffectStart
   MessageBox "Was wollt ihr tun?", "Eintreten", "Abschließen", "Aufschließen"
end
begin gamemode
[...] getbuttonpressed
   if [gedrückter Button] == 0
   [...]
   elseif [gedrückter Button] == 1
   *lock 100
   elseif [gedrückter Button] == 2
   *unlock
  endif
end

Alles in eckigen Klammern fehlt mir. Außerdem Korrigiert mich, wenn was falsch ist und wenn die Variable nicht zu lang ist, versucht mir auch noch zu erklären, wie man das ganze davon abhängig mach, ob der Spieler den Schlüssel besitzt.

** Fehlt dort vll. noch ein Ziel, also die Tür, wo das Skript draufliegt???
 
Code:
ScriptName LockedDoorScript

short DoorMenu
short button

begin OnActivate
   MessageBox "Was wollt ihr tun?", "Eintreten", "Abschließen", "Aufschließen"
end
begin gamemode
Set button To GetButtonPressed
   if button == 0
      [...]
   elseif button == 1
      lock 100
   else
      unlock
  endif
end

Die Variable hab ich geändert, da das CS nix mit Leerstellen anfängt.
Es fehlt kein Ziel, wenn Du der Türe das Skript zuweist, ansonsten fehlt da die ID der Türe.
Da Du aber im OnActivate die Message bringst, die beim aktiveren der Tür erscheinen soll, legst Du das Skript am besten auf die Tür.
Was beim Eintreten passiert, hängt davon ab, was Du willst, deshalb lass ich es mal so, wie es ist.

Mit Schlüssel:
Code:
ScriptName LockedDoorScript

short DoorMenu
short button

begin OnActivate
   MessageBox "Was wollt ihr tun?", "Eintreten", "Abschließen", "Aufschließen"
end
begin gamemode
Set button To GetButtonPressed
   if button == 0
      [...]
   elseif button == 1
      If ( Player.GetItemCount [SchlüsselID] >= 1 )
         lock 100
      EndIf     
   else
      If ( Player.GetItemCount [SchlüsselID] >= 1 )
         unlock
      EndIf
      unlock
  endif
end
 
ich ersetze dann noch kurz die Lücke und korrigiere einen kleinen Fehler:
Code:
ScriptName LockedDoorScript

short DoorMenu
short button

begin OnActivate
   MessageBox "Was wollt ihr tun?", "Eintreten", "Abschließen", "Aufschließen"
end
begin gamemode
Set button To GetButtonPressed
   if button == 0
      [COLOR="Red"]activate[/COLOR]
   elseif button == 1
      If ( Player.GetItemCount [SchlüsselID] >= 1 )
         lock 100
      EndIf     
   [COLOR="Red"]elseif button == 2[/COLOR]
      If ( Player.GetItemCount [SchlüsselID] >= 1 )
         unlock
      EndIf
      unlock
  endif
end
activate verlangt keine REF, wenn die Funktion schon im Script auf dem Objekt liegt.

"Elseif button == 2" ist hier wichtig. Denn im GameMode wird abgefragt, ob button == 0 oder 1 ist. Ist das nicht der Fall (und das ist er eben immer, bis zu dem Moment, wo man eine der ersten beiden Antworten selektiert) wird die Tür unlocked. Wahrscheinlich hier nicht so tragisch, aber ich wolte es nur noch mal sagen.

MfG Gildur
 
  • Like
Reaktionen: <DannyBoy>
Edit: Fehler jetzt erst kapiert. Sorry.
Allerdings würde ich die Abfrage in den Activate-Block machen, um das Spiel zu entlasten. Du bracuhst die Antworten ja nur prüfen, wenn die Tür aktiviert wurde.
 
So habs erstmal ohne Schlüssel probiert. Folgendes ist herausgekommen:

1. Die Messagebox erschien.

2. Eintreten funktioniert

3. Die Tür lässt sich abert weder ab - noch aufschließen, was das skript im Prinzip überflüssig macht:cry:
 
Hast Du mein erstes oder zweites Skript genommen?
Beim 2. Skript(von Gildur und mir verbessert) benötigst Du den Schlüssel zum auf-/abschließen.
Code:
ScriptName LockedDoorScript

short DoorMenu
short button

begin OnActivate
   MessageBox "Was wollt ihr tun?", "Eintreten", "Abschließen", "Aufschließen"
end
begin gamemode
Set button To GetButtonPressed
   if button == 0
      activate
   elseif button == 1
      If ( Player.GetItemCount [SchlüsselID] >= 1 )
         lock 100
      EndIf     
   elseif button == 2
      If ( Player.GetItemCount [SchlüsselID] >= 1 )
         unlock
      EndIf
  endif
end

Skript nochmal überarbeitet!!
 
Zuletzt bearbeitet von einem Moderator: