Construction Set Der Scriptthread

Cast "my_mine_explosion" Player

Kann man statt Player auch Actor schreiben? Denn sonst castet das ja nur auf den Player, wie du schon angedeutet hast, oder?

Ich kann den Scipt erst am Wochenende testen, also weiß ich auch nicht ob er funktioniert.

Und ich bräuchte noch einen anderen Script für Sprengtoff. Ich weiß nicht wie ich das mit dem Schaden machen soll. Der Effect auf Tribunal mit der Felswand, also Death1, wäre gut, aber der macht ja allein keinen Schaden...
 
Also die ersten beiden Scripts funktionieren noch, mein Problem ist derzeit, dass der neue Activator keine Kollisionsabfrage besitzt, ich weiß aber nicht warum.
 
ich brauch ein script, was wenn ein creatur erscheint, diese creatur sofort wieder gelöscht wird und stattdessen ein ordinator o.ä. erscheint....
 
Wie erscheint die Kreatur denn?

Ist sie schon vorher da und wird nur enabled oder soll auch die Kreatur neu erschaffen werden?
 
ich mein damit: da man npc nicht per "zufall" (leveled list) in die welt setzten kann, dachte ich "man könte doch per lc creaturen einfügen, die dann verschwinden und durch npc´s ersetzt werden"
 
Okay, das ist kein Problem.

Du erstellst eine neue Kreatur, nur für diesen Zweck und legst auf sie folgendes Script:

Code:
begin my_creature_script

short state

if ( state == 1 )
if ( GetDisabled == 1 )
set state to 2
SetDelete 1
return
endif
endif

if ( state == 0 )
PlaceAtMe "npc_id" 1 0 0
disable
set state to 1
endif

end
 
  • Like
Reaktionen: Fuchsli
also ich hab nen zettel und will machen dass man einen Zauber erlernt wenn man den zettel öffnet und trotzdem den zettel lesen kann. ich hab selber was herumexperimentiert und das hier rausbekommen:

Begin ZettelScript

if ( OnActivate == 1 )
player->Addspell "summon skeletal minion"
return
Activate
endif

End

dazu folgender fehler: script "esp-ID" esp has not be compiled
wenn ich den zettel ingame aktiviere dann öffnet er sich nicht und ich hab den zauber erlernt...bloß aufnehmen kann ich ihn nich und den text kann ich auch nich lesen. Weiß da einer was man da machen kann? Wäre echt nett danke im voraus

Noch eine Frage: wie bringe ich Tiere zum Zaubern, also dass sie sich selbstheilen? Ich hab da ne Ratte und ne choice wenn man die anklickt soll das tier sich heilen mit nem zauber oder irgendetwas anderem (ist mir nicht bekannt) aber das gute tier dreht sich nur in meine Richtung und dann wieder in die Richtung wo es hergeguckt hat
 
Zuletzt bearbeitet von einem Moderator:
Erstmal entferne das Return aus dem Script. Dann sollte es funktionieren.

Damit du ein Script im Spiel verwenden kannst, musst du es im Editor einmal ohne Fehler speichern können (dabei findet das Compillieren statt).

Zu deiner Ratte: erstelle einen entsprechenden Heilzauber für sie und lege dann folgenden Befehl in die Resultzeile des entsprechenden Dialogs:
Cast "my_heilzauber" "Id_meiner_Ratte"
 
also beim zettel: der geht auf ich hab den zauber erlernt kann ihn lesen und wieder schließen...aber wenn ich auf nehmen drücke dann ertönt dieser zettelsound zweimal, das nehmen verschwindet und ich kann nurnoch schließen. wenn ich auf schließen drücke dann kann ich wieder nix machen und wenn ich dann nen rechtsklick mache komm ich wieder ins spiel und kann weiterspielen hab den zettel aber nich im inventar.:huh:

Die Ratte macht immernoch dasselbe, ich habs auch mit anderen zaubern ausprobiert, die kann irgendwie nich zaubern. Allerdings kann ein Skrib das auch nicht und der macht ingame ja so ein lähmungszeugs auf einen.:huh:

Was kann man da machen und was ist nich richtig?:(
 
Probier es für den Zettel mal mit folgendem Script:

Code:
Begin ZettelScript

short doOnce

if ( OnActivate == 1 )
  if ( doOnce == 0 )
    player->Addspell "summon skeletal minion"
    set doOnce to 1
    Activate
  else
    Activate
  endif
endif

End
 
den zettel hab ich gewechselt das script auch und es funzt immernoch nicht! :cry: ich glaub ich mach das mit return und einfach ne message mit... obwohl es nich so geplant war...trotzdem danke
 
den zettel hab ich gewechselt das script auch und es funzt immernoch nicht! :cry: ich glaub ich mach das mit return und einfach ne message mit... obwohl es nich so geplant war...trotzdem danke
Was genau funktioniert denn nicht?

Das Script von Killfetzer ist in Ordnung soweit ich es beurteilen kann... das Problem besteht allerdings darin, dass dir der Menumode dazwischenfunken könnte. Man soll den Zauber bekommen, wenn man den Zettel auch wirklich gelesen hat, ist das richtig? Dann würde ich das Script eher so aufbauen, das auch im Inventar geprüft wird, ob du den Zettel liest, oder nur bewegst:

Code:
Begin LexasZauberzettel_sc
short doOnce
short OnPCEquip

IF ( menumode == 0 )
 IF ( OnActivate == 0 )
  Return
 EndIF
 IF ( doOnce == 0 )
  player->Addspell "summon skeletal minion"
  set doOnce to 1
 EndIF
 Activate
 Return
EndIF

IF ( OnActivate == 0 )
 Return
EndIF

IF ( OnPCEquip == 1 )
 IF ( doOnce == 0 )
  player->Addspell "summon skeletal minion"
  set doOnce to 1
 EndIF
EndIF

Activate

End
Versuch das mal - ich hab es nicht ingame getestet, aber wenn mich mein altes Hirn nicht täuscht, sollte es funktionieren :)
 
  • Like
Reaktionen: 1 Person
hmm....noch ne frage:
Kann man eigentlich sowas wie selbstschussanlagen scripten?
Also mal genauer....gemeint ist ein gegenstand aus dem Feuerbälle (Oder sonstige magische Geschosse) auf den Spieler fliegen und ihm so schaden zufügen...so ca im Abstand von 5 Sekunden...wär nett wenns sowas gäbe danke im voraus

José
 
Natürlich ist sowas möglich. Einfach einen Zauber auf Ziel nehmen und dann auf einen Activator folgendes Script legen:

Code:
begin my_selsbtschussanlage_script

short state
float timer

if ( state == 0 )
if ( GetDistance Player <= 1024 )
Cast "my_zauber" Player
set state to 1
endif
endif

if ( state == 1 )
set timer to timer + GetSecondsPassed
if ( timer >= 2 )
set timer to 0
set state to 0
endif
endif

end
 
hmm....noch ne frage:
Kann man eigentlich sowas wie selbstschussanlagen scripten?
Also mal genauer....gemeint ist ein gegenstand aus dem Feuerbälle (Oder sonstige magische Geschosse) auf den Spieler fliegen und ihm so schaden zufügen...so ca im Abstand von 5 Sekunden...wär nett wenns sowas gäbe danke im voraus
Hast du Tribunal?

Wenn ja, gibt es sowas sogar (Dwemer Proximity Mine)... die machen eigentlich schon haargenau das, was du willst.
 
ich brauche 2 sckripte in einem.
Das script solles ermöglichen, das man nur mit einem bestimmten bolzen schiesen kann und dass wenn dieser bolzen nicht mehr dah ist, sich die waffe in eine andere "verwandelt", und umgekehr
 
Wie jetzt genau?

Du willst eine Armbrust haben, die man nur mit einem bestimmten Bolzen benutzen kann. Und wenn alle Bolzen dieser Art aufgebraucht sind, willst du dass sich die Waffe in was anderes verwandelt. Sobald du aber wieder diese bestimmten Bolzen bekommst, soll sie sich wieder in die erste Waffe zurückverwandeln?

Wenn dem so ist, brauchst du zwei Waffen (bei mir my_armbrust1 und my_armbrust2; 1 ist die nur mit den besonderen Bolzen zu benutzende). Weiterhin brauchst du die besonderen Bolzen (my_bolzen). Auf die Armbrüste legst du nun folgende Scripte:

Code:
begin my_armbrust1_script

short PCSkipEquip

if ( MenuMode == 1 )
  return
endif

if ( Player->GetItemCount "my_bolzen" == 0 )
  if ( Player->GetItemCount "my_armbrust1" >= 1 )
    Player->AddItem "my_armbrust2" 1
    Player->RemoveItem "my_armbrust1" 1
  endif
endif
  

if ( Player->HasItemEquipped "my_bolzen" == 0 )
  if ( PCSkipEquip == 0 )
    MessageBox "Ihr müsst zuerst die Bolzen anlegen."
    set PCSkipEquip to 1
  endif
else
  if ( PCSkipEquip == 1 )
      set PCSkipEquip to 0
  endif
endif
      
end

Code:
begin my_armbrust2_script

if ( MenuMode == 1 )
  return
endif

if ( Player->GetItemCount "my_armbrust2" >= 1 )
  if ( Player->GetItemCount "my_bolzen" >= 1 )
    Player->AddItem "my_armbrust1" 1
    Player->RemoveItem "my_armbrust2" 1
  endif
endif

end

Ich hab kein MW zur Verfügung um zu testen, musst einfach mal probieren, ob das so funktioniert.
 
  • Like
Reaktionen: Fuchsli
Ich hab kein MW zur Verfügung um zu testen, musst einfach mal probieren, ob das so funktioniert.
@Killfetzer:

Ähm... ich bin mir nicht sicher. Aber ich fürchte deine Scripts könnten leicht zum Crash führen, wenn du sie auf die Waffen legst, denn einen Scriptholder zu removen, während sein Script läuft... ich meine mich dunkel daran zu erinneren, dass das ziemlich probletisch war.

Ich würde daher lieber ein globales Script erstellen, dass im Hintergrund läuft, die Munition prüft und die Waffe ggf. austauscht. Auf den beiden Waffen wäre dann nur ein "Enabler", der das globale Scripting anwirft, sobald man die Waffe in sein Inventar packkt.
 
Also nochmal zu meiner Mine. Ich hab mal an Killfetzer´s Script rumgebastelt, und zwar statt der Kollisionsabfrage einfach ein Timer und ein Explode-Spell. Als Spell hab ich einen der Dwemer Spells genommen, ich glaub den proj_trap_spell oder wie der heißt ( sorry kann nicht nachschauen ). Kann jemand vllt den Fehler finden?

begin my_mine_act_script

short state
float timer

if ( state == 3 )
if ( GetDisabled == 1 )
SetDelete 1
return
endif
endif

if ( MenuMode == 1 )
return
endif

if ( state == 0 )
set timer to timer + GetSecondsPassed
if ( timer >= 1 )
MessageBox "Ihr stellt die Mine auf. Sie ist in wenigen Sekunden scharf. Ihr solltet verschwinden."
set state to 1
set timer to 0
endif
endif

if ( state == 1 )
set timer to timer + GetSecondsPassed
if ( timer >= 4 )
MessageBox "Die Mine ist nun scharf."
set state to 2
set timer to 0
endif
endif

if ( state == 2 )
set timer to timer + GetSecondsPassed
if ( timer >= 10 )
ExplodeSpell "proj_trap_spell"
Disable
set state to 3
set timer to 0
endif
endif

end