Construction Set Skriptthread zum Construction Set

Keine Ahnung warum es nicht klappt...
Es geht nur wenn ich die Schwerter mit "begin onequip" Skripte und dann Schwert2 ausrüste damit Schwert1 gelöscht wird aber eben nur dann wenn ich es ausrüste.

Edit: Habe den Fehler gefunden :)
Auf den Schwert liegt noch mein eigenes Skript das irgendwie das "Onadd" anscheind verhindert. Muss ich mir noch was überlegen...

MFG
Sammael666
 
Zuletzt bearbeitet:
So muss ich noch noch wissen wie ich das mache das dass nur jede 5 Level möglich ist. Also das erste Upgrade mit level 5 das zweit mit Level 10 usw.
Und könntest du mir die Option einbauen unter Message box "Special" mit Extra Schwert8, Schwert9 und Schwert 10?
Dafür wäre ich dir dankbar :)
Kann gut mit Blender umgehen also Modellieren nur weightpainten hasse ich vielleicht wenn du mal was brauchst...

MFG
Sammael
 
Zuletzt bearbeitet:
Man kann leider nicht mehr als 10 if-Bedingungen ineinander packen, aber ich versuche mal,das zu umgehen... Hab ich das richtig verstanden, dass du für jedes Schwert immer einfach zusätzlich zu "aufwerten" und "abwerten" noch die Option "in Spezialschwert umtauschen" haben willst?
 
Code:
scn name
short choose1
short choose2
short choose3
short button1
short button2
short button3
short upgrade
short downgrade
short special
short change
short swordlevel

begin onactivate
if player.getitemcount SCHWERT1==1
messagebox"Was wollt ihr tun?" "Schwert aufwerten" "Spezialschwert " "nichts tun"
set swordlevel to 1
set choose1 to 1

elseif player.getitemcount SCHWERT2==1 || player.getitemcount  SCHWERT3==1 || player.getitemcount SCHWERT4==1 ||  player.getitemcount SCHWERT5==1 || player.getitemcount SCHWERT6==1
messagebox"Was wollt ihr tun?" "Schwert aufwerten" "Schwert abwerten" "Spezialschwert ""nichts tun"
set choose2 to 1

elseif player.getitemcount SCHWERT7==1
messagebox"Was wollt Ihr tun?" "Schwert abwerten" "Spezialschwert " "nichts tun"
set choose3 to 1

else
messagebox"Ihr besitzt nicht den nötigen Gegenstand"
endif
end

begin gamemode
if choose1==1
set button1 to getbuttonpressed
 if button1==0
 set upgrade to 1
 set choose1 to 0
 set button1 to 5
 elseif button1==1
 set special to 1
 set choose1 to 0
 set button1 to 5
 elseif button==1
 set choose1 to 0
 endif

elseif choose2==1
set button2 to getbuttonpressed
  if button2==0
  set upgrade to 1
  set choose2 to 0
  elseif button2==1
  set downgrade to 1
  set choose2 to 0
  elseif button2==2
  set special to 1
  set choose2 to 0
  elseif button2==3
  set choose2 to 0
 endif

elseif choose3==1
set button3 to getbuttonpressed
  if button3==0
  set downgrade to 1
  set choose3 to 0
  set button3 to 5
  elseif button3==1
  set special to 1
  set choose3 to 0
  elseif button3==2
  set choose3 to 0
 endif
endif
end

begin gamemode
if upgrade==1
set swordlevel to (swordlevel + 1)
set change to 1
set upgrade to 0
elseif downgrade==1
set swordlevel to (swordlevel - 1)
set change to 1
set downgrade to 0
elseif special==1
set swordlevel to (swordlevel + 100)
set change to 1
set downgrade to 0
endif

if change==1
   if swordlevel==1
   player.additem SCHWERT1 1
   set change to 0
   elseif swordlevel==2
   player.additem SCHWERT2 1
   set change to 0
   elseif swordlevel==3
   player.additem SCHWERT3 1
   set change to 0
   elseif swordlevel==4
   player.additem SCHWERT4 1
   set change to 0
   elseif swordlevel==5
   player.additem SCHWERT5 1
   set change to 0
   elseif swordlevel==6
   player.additem SCHWERT6 1
   set change to 0
   elseif swordlevel==7
   player.additem SCHWERT7 1
   set change to 0
  endif
elseif change==2
   if swordlevel==101
   player.additem SCHWERT1special 1
   player.removeitem SCHWERT1 1
   set change to 0
   elseif swordlevel==102
   player.additem SCHWERT2special 1
   player.removeitem SCHWERT2 1
   set change to 0
   elseif swordlevel==103
   player.additem SCHWERT3special 1
   player.removeitem SCHWERT3 1
   set change to 0
   elseif swordlevel==104
   player.additem SCHWERT4special 1
   player.removeitem SCHWERT4 1
   set change to 0
   elseif swordlevel==105
   player.additem SCHWERT5special 1
   player.removeitem SCHWERT5 1
   set change to 0
   elseif swordlevel==106
   player.additem SCHWERT6special 1
   player.removeitem SCHWERT6 1
   set change to 0
   elseif swordlevel==107
   player.additem SCHWERT7special 1
   player.removeitem SCHWERT7 1
   set change to 0
  endif
else
return
endif
end
Ich glaube, das geht jetzt... Aber da ist noch keine Level-Abfrage drin. Das ist mir jetzt zuviel Arbeit. Vielleicht mach ichs später oder morgen... Guck erstmal ob das mit dem Spezial jetzt funzt^^
 
Ich glaub ich habe mich falsch ausgedrückt. Ich meinte das die Option "Spezial" nur Spezialschwert8, SpezialSchwert9 und SpezialSchwert10 enthält. Also wenn ich die Option Spezial anklicke das eine neue Messagebox erscheint und ich eines der 3 Spezialschwerter auswählen kann und die anderen aus den Inventar entfernt werden. Natürlich mit der Option "Zurück" zu den anderen Schwertern.

MFG
Sammael666
 
Hi,

ich habe ein Problem mit einem Script von einer Mod die ich momentan übersetze.
Und zwar bekomm ich beim Versuch das Script abzuspeichern einen Syntax-Error,
aufgrund dieser Zeile:
set s1 toOBSE -2010
Der CS Extended Script Editor gibt Syntax-Error und unbekannter Befehl ToOBSE aus.

GIbt es ein anderes Programm mit dem das Script abgespeichert werden kann?
 
@ Lord-Alex:
Du kannst den Zauber von einem beliebigen Activator casten lassen. Ich bin mir allerdings nicht sicher, ob die angezauberten Kreaturen dann trotzdem dem Spieler folgen, weil er ja nicht der Zauberer ist. Ansonsten würde OBSE da helfen.

Wie gesagt, ich habe OBSE, also, wie würde es funktionieren?
(Oh, ich nerv euch gier schon seit ewigkeiten mit ein & dem selben zauber... tut mir leid...)
 
Du lässt einen Activator den Zauber casten und benutzt dann "getProjectile" und "setPlayerProjectile", um zu simulieren, dass der Spieler den Zauber wirkt.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Lord-Alex
Hi Leute,

brauche mal Hilfe von euch Cracks.
Kurze Erklärung zum Scenario.
Ein Gaukler schlägt 11.00 Uhr seine Laute.
Natürlich sollte dazu auch das entsprechende Musikstück abgespielt werden.
Da jedoch, wie allgemein bekannt, die seperat gesetzten Sounds immer wieder
abbrechen, sollte es über ein Script geregelt werden.
Also, Gaukler zieht 11.00 Uhr seine Laute, Sound wird abgespielt, Gaukler steckt
die Laute um 20.00 Uhr wieder ein, Sound stoppt.
Dem Gaukler wurde in seinem Package, übrigens schon das Ziehen der Laute zugewiesen.
Es ist also nur noch von Nöten, den Sound zum richtigen Zeitpunkt in ein Script einzubinden.
Bitte um Hilfe diesbezüglich.

MfG
 
Du lässt einen Activator den Zauber casten und benutzt dann "getProjectile" und "setPlayerProjectile", um zu simulieren, dass der Spieler den Zauber wirkt.

Gut... Ähm... Leider endet hier ein begrenztes Verständnis des CS. Und deshalb bräuchte ich (leider) eine kleine Anleitung:
Wie stelle ich den Activator ein, damit er nach dem Zauber, den 2. Zauber castet?
Wie lauten die Scripts dafür?
Was muss ich als Activator einstellen?
Ist das alles überhaupt so möglich, wie ich es vorhabe?
Wie stelle ich einen Activator überhaupt ein?

Ich danke mich hiermit noch einmal ganz rechtherzlich für alle Hilfe, die ihr mir gebt!! Ihr seid klasse! ;)
 
@Little Ice:
Ich nehme mal an, die Sound-Datei ist schon vorhanden. Dann erstellst du einfach unter Miscellaneous --> Sound ein neues Sound-Objekt und platzierst es da, wo der Musikant sitzt. Bei den Soundeinstellungen müsstest du ein bisschen herumspielen und eventuell bei anderen Objekten oder im CS-Wiki nachgucken. Dem platzierten Sound-Objekt gibst du dann eine persistente Referenz-ID, sodass du per Skript darauf zugreifen kannst und machst einen Haken bei "Initially Disabled". Dem Gaukler gibst du dann folgendes Skript:
Code:
scn name

Begin onPackageStart <Musik-Package-ID>

<Sound-Ref>.enable

end


Begin onPackageDone <Musik-Package-ID>

<Sound-Ref>.disable

end


@Lord-Alex:
Du musst den Activator einfach zum Spieler (oder direkt zum Ziel) teleportieren und kannst dann wie sonst auch "Ref.cast <Zauber-ID> <Ziel-Ref>" benutzen. Das führst du natürlich alles im Skript des ersten Zaubers aus. Der Activator muss sich natürlich irgendwo vorher in der Spielwelt befinden (Stichwort: DummyCell). Als Activator solltest du etwas unsichtbares nehmen, zum Beispiel die "null.nif" unter "meshes/magiceffects", ein XMarker als Activator ist sichtbar, wobei ich jetzt nicht genau weiß, ob der Activator auch "disabled" sein kann.
 
@Diarrhoe

Vielen Dank für deine Hilfe.
versuche es mal so hinzubekommen.
Habe es nämlich auch schon mit einem Trigger versucht,
ist jedoch alles nicht das Gelbe vom Ei.
Sollte es nicht klappen, muss ich euch/dich wieder belangen.
Also nochmals Dankeschön.

MfG
 
Du lässt einen Activator den Zauber casten und benutzt dann "getProjectile" und "setPlayerProjectile", um zu simulieren, dass der Spieler den Zauber wirkt.

Wie muss ich diese Scrpits einbauen? Und wo? Und welches ref muss ich vor "SetPlayerProjectile" hingeben? Und geht das auch irgentwie mit Touch Spells (würde nämlich etwas besser funktionieren...)?

(nochmal danke für die Tipps wegen den Activator... es funktioniert ^^)
 
Zuletzt bearbeitet:
Erstmal solltest du versuchen, ohne "getProjectile" und "setPlayerProjectile" zu arbeiten, da ich nicht weiß, wie der Effekt "Kreatur beherrschen" wirkt, wenn er von einem NPC bzw. einem "nicht-Actor" gesprochen wird. Vielleicht ist der Effekt ja so programmiert, dass die angezauberte Kreatur ja automatisch dem Spieler folgt. Wenn sie das nicht tut, musst du die OBSE-Befehle benutzen. Das sähe dann in etwa so aus:
Code:
ref spell

<Activator-Ref>.cast <Zauber-ID> <Ziel-Ref>    ;eventuell musst du hier einen Frame warten
set spell to <Activator-Ref>.getProjectile 2 1 <Zauber-ID>
spell.setPlayerProjectile

Ich bin mir nicht sicher, ob "getProjectile" auch für einen Activator funktioniert. Wenn nicht musst du "getFirstRef"/"getNextRef" benutzen.
 
  • Like
Reaktionen: Lord-Alex
set spell to <Activator-Ref>.getProjectile 2 1 <Zauber-ID>
Bei der Zeile stimmt was nicht... (wenn ich die Spell-ID als Ref angebe kann ich zwar speichern, der Kreaturen-beherrschen-Effeckt wirkt auch, allerdings zählt es leider nicht als "mein Projektil", das heißt, es ist nutzlos...)

Ich bin mir nicht sicher, ob "getProjectile" auch für einen Activator funktioniert. Wenn nicht musst du "getFirstRef"/"getNextRef" benutzen.

Daran könnte es liegen, wie baue ich diese Scripts ein?

(Es ist ja schrecklich, wie lange ein einfacher Zauber braucht & wieviele Fragen er aufwerfen kann...)
 
Hallo, wie mache ich das wenn ich ein Altar habe ich ihn anklicke, auswähle SCHWERT auf den Altar legen das dieses dann auf den Altar erscheint?
 
@Sammael:
Indem du das Schwert schon vorher dort platzierst und einen Haken bei "Initially Disabled" machst. Dann legst du so ein Skript auf den Altar:
Code:
scn name

short button
short state
short menu

Begin onActivate

if menu
 return
elseif isActionRef player
 set menu to 1
 if state
  messagebox "Was möchtet Ihr tun?" "Schwert wegnehmen" "Nichts"
 else
  messagebox "Was möchtet Ihr tun?" "Schwert auf den Altar legen" "Nichts"
 endif
endif

end


Begin GameMode

if menu
 set button to getButtonPressed
 if button == -1
  return
 elseif button == 0
  if state
   set state to 0
   player.addItem <Schwert-ID>
   <Schwert-auf-dem-Altar-Ref>.disable
  else
   if player.getItemCount <Schwert-ID> >= 1
    set state to 1
    player.removeItem <Schwert-ID> 1
    <Schwert-auf-dem-Altar-Ref>.enable
   else
    message "Ihr habt doch gar kein Schwert!"
   endif
  endif
 else
 endif
 set menu to 0
endif

end


@Lord-Alex:
So einfach ist das Skript gar nicht mehr. "GetFirstRef"/"GetNextRef" verwendest du so:
Code:
ref spell
short done

set spell to getFirstRef 34
while spell
 if spell.getProjectileType
  if spell.getProjectileLifetime < 0.5
   if spell.getMagicProjectileSpell == <Zauber-ID>
    spell.setPlayerProjectile
    set done to 1
   endif
  endif
 endif
 if done
  set spell to 0
  set done to 0
 else
  getNextRef
 endif
loop
 
  • Like
Reaktionen: Lord-Alex
Gehts das auch so? Hab ein Schwert als Activator genommen und bei disable ein haken gemacht, jetzt wenn ich den Altar anklicke soll das Schwert aus den Inventar verschwinden und auf den Altar erscheinen. Ist das möglich?