Construction Set Skriptthread zum Construction Set

Menumode 1030 ist das Klassenwahlmenü. Da wird ja die Charakterspezialisierung auf Kampf, Magie oder List festgelegt.
Chosen ist einfach nur eine Variable, die es dann im gamemode-block möglich macht, zu erkennen, ob man schon im menumode 1030 war. Weil man zu Anfang des Klassenauswahlmenüs noch nichts gewählt hat, folglich noch keine Spezialisierung erkennbar ist, würde das Script vermutlich nicht ausgeführt. Daher die Trennung ;)
 
  • Like
Reaktionen: samael
ok habs versucht, führt bei mir zu bugs, da ich schon die Klasse gewählt habe.. kA was los ist
hat irgendwo einen Fehler und startet nicht...
hast du ne ahnung wo ich einen fehler gemacht habe?

PHP:
scn SamaelSpellStart

begin gamemode

if getClassSpecialization == 1 && player.GetIsRace SamaelsRace == 1
player.addspell SamaelFighterAbility01
player.removespell SamaelMageAbility01
player.removespell SamaelThiefAbility01
endif
if getClassSpecialization == 2 && player.GetIsRace SamaelsRace == 1
player.addspell SamaelMageAbility01
player.removespell SamaelFighterAbility01
player.removespell SamaelThiefAbility01
endif
if getClassSpecialization == 3 && player.GetIsRace SamaelsRace == 1
player.addspell SamaelThiefAbility01
player.removespell SamaelFighterAbility01
player.removespell SamaelMageAbility01
endif
end

vorhin hatte ich 0-1-2 stehen, doch statt der Magierfähigkeit gab er mir die kriegerfähigkeit...
un jetzt startt er nicht
 
Nicht vergessen, im GameMode-Block die Variable wieder runterzusetzen. Dann klappt es auch, wenn der Spieler am Gefängnisausgang seine Klasse ändert. Du musst dann zusätzlich nur noch die anderen Zauber entfernen; nicht, dass der Spieler sich alle 3 Eigenschaften "erschummelt".

Ich hätte eigentlich einen anderen Skriptansatz gewählt, aber der von DarkSinthoras ist etwas eleganter und wahrscheinlich besser. Nur am Aufbau würde ich ein wenig ändern:
Code:
scn name

short chosen

Begin MenuMode 1030

set chosen to 1

end


Begin GameMode

if chosen
 set chosen to 0
 if player.getClassSpecialization == 0
  player.addspell "KriegerZauber"
  player.removeSpell "MagierZauber"
  player.removeSpell "DiebZauber"
 elseif player.getClassSpecialization == 1
  player.addspell "MagierZauber"
  player.removeSpell "KriegerZauber"
  player.removeSpell "DiebZauber"
 elseif player.getClassSpecialization == 2
  player.addspell "DiebZauber"
  player.removeSpell "KriegerZauber"
  player.removeSpell "DiebZauber"
 endif
endif

end
 
  • Like
Reaktionen: DarkSinthoras
Mir ist bei dem menuMode aufgefallen, dass beim Umwählen (wenn ich von Krieger auf Magier umwechsel) nix passiert, Krieger bleibt...
 
Mir ist bei dem menuMode aufgefallen, dass beim Umwählen (wenn ich von Krieger auf Magier umwechsel) nix passiert, Krieger bleibt...

Die benutzte Syntax für "getClassSpecialization" ist auch falsch. Der Befehl gibt 0, 1 und 2 für Krieger, Magier und Dieb zurück, du hast ihn jedoch mit den Werten 1, 2 und 3 verwendet.
 
so habe den Script wi folgt ausprobiert

PHP:
scn SamaelSpellStart2

short chosen

Begin MenuMode 1030

set chosen to 1

end


Begin GameMode

if chosen
 set chosen to 0
 if player.getClassSpecialization == 0 && player.GetIsRace SamaelsRace == 1
  player.addspell SamaelFighterAbility01
  player.removeSpell SamaelMageAbility01
  player.removeSpell SamaelThiefAbility01
 elseif player.getClassSpecialization == 1 && player.GetIsRace SamaelsRace == 1
  player.addspell SamaelMageAbility01
  player.removeSpell SamaelFighterAbility01
  player.removeSpell SamaelThiefAbility01
 elseif player.getClassSpecialization == 2 && player.GetIsRace SamaelsRace == 1
  player.addspell SamaelThiefAbility01
  player.removeSpell SamaelFighterAbility01
  player.removeSpell SamaelMageAbility01
 endif
endif

end

Ergebnis:
starte die Klassenwahl und habe im Voraus Magie wchsel auf Krieger, doch nichts passiert...
Egal was ist, die zauber werden nicht addiert...
 
Du hast ja auch vergessen, was ich eben angemerkt habe :p
if chosen == 1

Ansonsten sehe ich nämlich keine Fehler mehr...ich kann davon ausgehen, dass du die Zauber schon fertig erstellt hast oder? :lol:
 
Es macht in diesem Fall keinen Unterschied, ob du "if chosen" oder "if chosen == 1" schreibst.
Du solltest aber noch ein paar zusätzlich Funktionen fürs Debugging einfügen. Dann kanst du sehen, an welcher Stelle das Skript nicht funktioniert, wie zum Beispiel "printC <Text>". Oder du könntest in der Konsole "sqv <Quest-ID>", bzw. "show <Quest-ID>.<Variable>" benutzen und nachsehen, ob eine Variable nicht so gesetzt ist, wie sie sollte.
 
Mir fällt grade auf, dass meine Rasse ohne Race Fixes Probleme haben wird^^
wie heißen die beiden Scripts (Also AnfangsScript und SchreinScript), die würde ich gerne über einen eigenen Script zum starten zwingen. (Sorry, dass ich soviel hilfe brauche...)
 
Du musst die Quest Charactergen auf 10 setzen, also
PHP:
setstage charactergen 10
, ab da kommen dann Kaiser und Klingen in Richtung der Zelle.

Die Schreinquest von Boethia hat die ID "DABoethia"... wie das da mit dem Script geregelt ist, weiß ich allerdings nicht ;)
 
  • Like
Reaktionen: samael
Hallo, mal eine Frage:
Ich hatte ein Script auf eine Tür gelegt, um über eine Messagebox eine Abfrage zu starten.

Nun wird der Sound der Tür nicht mehr abgespielt und ich habe Playsound in das Script eingefügt.

Folgender Effekt ist jetzt da: gehe ich zum ersten mal durch die Tür ist nichts zu hören, erst beim zweiten mal.

Wie kann man dies ändern?


Code:
scn UACdoorEntrance02
short Antwort
 
Begin OnActivate
   MessageBox "Erforsche den neuen Bereich?", "Ja", "Nein"
end
 
Begin GameMode
  set Antwort to GetButtonPressed
    If Antwort == 0
      Playsound DRSStoneOpen
      Playsound DRSStoneClose
      player.moveto 010096fd
    endif
end
 
 
Hmm genau sagen kann ich dir dazu nichts, aber versuch mal das:

PHP:
scn UACdoorEntrance02
short Antwort
 
Begin OnActivate
   MessageBox "Erforsche den neuen Bereich?", "Ja", "Nein"
end
 
Begin GameMode
  set Antwort to GetButtonPressed
    If Antwort == 0
      Playsound DRSStoneOpen
      player.moveto 010096fd
      Playsound DRSStoneClose
    endif
    if Antwort == 1
      return
    endif
end
Könnte sein, dass sich deine Sounds überlagert haben... jetzt kommt der eine Sound, sobald man an der neuen Position ist.
 
  • Like
Reaktionen: Meclaton
Eine gute Frage, die dir jemand anders beantworten muss :D Schade dass Diarrhoe off ist :lol:

Ansonsten könntest du versuchen, die Tür gleich als Activator zu machen...das könnte evtl auch was bringen...

Alle Angaben ohne Gewähr ^^
 
Habe es mal kurz durchgespielt der Effekt bleibt der gleiche, erst wenn ich ein zweitesmal die Tür durchschreite wird der Sound gespielt.

In deinem Fall nur der Sound vor Player.moveto
 
Mir ist ne Idee gekommen:

setze einfach die Sounds normal für die Tür ein, verbinde die Tür mit einer anderen und verstecke die Tür unter einem Objekt.
Den Teleportmarker setzt du dann an die Stelle deines xMarkers "010096fd"
Die Skriptabfrage reduzierst du dann auf den "Ja/Nein-Teil"

PHP:
scn UACdoorEntrance02
short Antwort
 
Begin OnActivate
   MessageBox "Erforsche den neuen Bereich?", "Ja", "Nein"
end
 
Begin GameMode
  set Antwort to GetButtonPressed
    If Antwort == 0
      activate
    endif
    If Antwort == 1
      return
    endif
end
 
  • Like
Reaktionen: Meclaton