Construction Set Der Scriptthread

ok, das hab ich...
(sogar gewusst;))

so jetzt hab ich noch die beiden Probleme...

Ich möchte natürlich, dass meine Monster im Wasser auch schwimmen...
meinetwegen können die auch dumm dabei aussehen, aber wenn ein paar Ratten am Boden darauf warten, dass man sie umbringt ist das scho etwas daneben...
bei der Schlammkrabbe hat es doch auch geklappt. die Schwimmt einem Nach...
die Ratten bleiben aber alle am Boden...

können die Monster nicht ein wenig weiter vom NPC wegkommen?
ich weiß nicht so recht, wie der entsrechende Befehl, den ihr benutzt habt funktioniert, weil ich mir unter 1 128 0 wenig vorstellen kann ;)
 
Bei deinem 1. Problem kann ich dir nicht helfen. Ich habe in meinem Ananke-PI das gleiche Problem mit Horkern, obwohl die normalerweise schwimmen.

Zu deinem 2. Problem:
Ich zitiere mal aus meinem Scruptingtutorial:
PlaceAtPC, „Objekt-ID“, Anzahl, Entfernung, Position
Platziert das ausgewählte Objekt in der gewünschten Anzahl und Entfernung in der Position zum Spieler. Bei der Position heißt 0 vor dem Spieler, 1 hinter ihm, 2 links und 3 rechts. Bei Position werden nur diese Werte akzeptiert. Entfernung ist ein float-Wert.

Ich denke den Rest dürftest du dann schon verstehen ;)
 
ok...
jetzt sagt mir mal, wie ich das hinbekomme, dass mein Held auf der Wasseroberfläche und nicht auf dem Boden des Raumes aufkommt!
ich meine, was anderes als z-kord = 0 fällt mir nicht ein um das zu machen...
ansonsten mach ich halt so ne Plattform...

übrigens:
auf den ersten Blick scheint nun alles fertig zu sein...

allerdings wird man nur nach dem ersten Sieg über die Monster zurück zum Hauptraum teleportiert und nach dem 2. Sieg im selben oder in einem anderen Schwierigkeitsgrad nicht mehr...

Wenn man stirbt kommt man auch nicht mehr zurück sondern ist halt tot...

und eigentlich hätte ich gerne, wenn die Monster wieder verschwinden, wenn man den Unterwasserraum verlässt.
solte man nämlich den Raum durch den Tod verlassen und später nochmal dorthin gehen, dann sind die Monster vn vormals immernoch da...
und die leichen der besiegten monster auch!
 
Du hast vielleicht Wünsche ;)

Okay, dass mit dem Einmal-Teleport war noch ein Fehler von mir. Ändre den folgenden Absatz im Kontrollscript:
if ( belohnung == 1 )
set belohnung to 0
StopScript my_kontroll_script
endif

Und verschiebe ihn ganz ans Ende des Scripts.

Das mit den Leichen verschwinden, ginge eventuell mit einer Erweiterung des Monsterscripts. Dafür brauchst du aber Tribunal (und/oder Bloodmoon).
Dazu musst du noch eine

Ändere das Monsterscript so ab:
begin my_monster_script

if ( GetDisabled == 1 )
SetDelete 1
return
endif

if ( OnDeath == 1 )
set my_kill_anzahl to my_kill_anzahl + 1
if ( my_kill_anzahl == my_monster_anzahl )
set my_kill_anzahl to 0
set my_monster_anzahl to 0
disable
MessageBox "Ich habe alle Monster besiegt."
endif
endif

if ( Player->OnDeath == 1 )
Disable
endif

end


Jetzt sollten die Leichen der Monster eigentlich verschwinden. Aber teste das besser noch einige Male (mit SetDelete kann man VIEL falsch machen!!!)

EDIT: Ich hatte grad noch eine Idee wegen dem Unterwasserlaufen. Erstelle einen Zauber auf sich selbst mit Wasserwandeln 1 Sekunde und füge direkt vor dem Teleportbefehl noch (jeweils)
Player->Cast "SpellID" Player
ein. Dann läuft zumindest der Spieler auf dem Wasser und fängt richtig an zu schwimmen, wenn der Zauber aufhört zu wirken.
 
Zuletzt bearbeitet:
natürlich hab ich Wünsche!
sonst wär ich doch nicht hier und könnte euch nerven ;)

also zu dem Schreinscript...
ich hab 3 überflüssige endifs weggemacht und sofort lief es besser ;)

jetzt Probier ich mal deine Lösung aus...

aber sagt mir doch nochmal, wie man das hinbekommt, dass der Spieler nicht stirbt.
(DAAAAAAAAAAAAAAA war die Lösung ;))
könnte man das so abändern, dass man nicht im kontrollscript sagt if (player->ondeath == 1 ) sonern if (player->health <= 1 ) ???
dann würde der Spieler nicht sterben...
und player->ressurrect ersetzt man dann mit player->modhealth 9 oder so...
set ist ja blöd, weil... ihr wisst schon ;)

PS:
also dein vorschlag würde rein theorethisch bewirken, dass, wenn der SPieler stirbt, die Monster gelöscht werden...
--> wenn einer mehrere Male Spielt liegen da überall leichen rum...
-->>kann man im konstrollscript beim zurückbeamen auch gleichzeitig die Leichen beseitigen?
 
könnte man das so abändern, dass man nicht im kontrollscript sagt if (player->ondeath == 1 ) sonern if (player->health <= 1 ) ???

Das hatte ich auch in meiner Duellgilde versucht und musste feststellen, dass es nicht funktioniert, denn wenn stell dir mal vor, der Spieler hat noch 10 Lebenspunkte und du fügst ihm 21 Schadenspunkte zu, dann stirbt er ohne dass das modifizierte Leben geholfen hätte.

Und nur so als Anmerkung:
mit ModHealth veränderst du die maximale Lebenspunkteanzahl. Um die aktuelle Lebensenergie zu verändern, musst du ModCurrentHealth verwenden.


-->>kann man im konstrollscript beim zurückbeamen auch gleichzeitig die Leichen beseitigen?
Nein, dass ist nicht möglich, denn um die Monster verschwinden lassen zu können, müssen sie einmalig und persistent sein (sind deine Monster beides nicht) oder du musst ihre genaue Referenz kennen. Und letztere kannst du nicht erfahren. Deshalb musst du diesen Umweg im Monsterscript gehen. Sollte aber eigentlich genauso funktionieren.
(Beachte bitte, dass auch im vorherigen Teil des Scripts noch eine Zeile eingefügt wurde, damit die Monster auch beim Sieg verschwinden.)
 
(Beachte bitte, dass auch im vorherigen Teil des Scripts noch eine Zeile eingefügt wurde, damit die Monster auch beim Sieg verschwinden.)

äh... was? meinst du eine Leerezile? und vorherig?

Das hatte ich auch in meiner Duellgilde versucht und musste feststellen, dass es nicht funktioniert, denn wenn stell dir mal vor, der Spieler hat noch 10 Lebenspunkte und du fügst ihm 21 Schadenspunkte zu, dann stirbt er ohne dass das modifizierte Leben geholfen hätte.

das mit dem ondeath ist aber auch net so toll, weil der computer erst merkt, dass mein Held tot ist und mir anbietet das zuletzt gespeicherte Spiel zu laden und dann erst meinen Characktär wiederbelebt, was mir natürlich nichts mehr bringt....

mir ist da was aufgefallen:

zwischen dem Zeitpunkt, wo einem ein Schaden zugeführt wurde, der Größer als die restlichen lebenspunkte war und dem Zeitpunkt, wo man für tot erklährt wurde hat man doch null lebenspunkte... nicht -17 oder - sondern 0 (hab ich mal ausprobiert... man könnte auch den wert der aktuellen Lebenspunkte man in der Konsole abrufen, wenn der held noch taumelt...)
also könnte man doch dann if ( player->currenthealth == 0 ) benutzen oder?
 
Stimmt, so ginge das.

Aber der Befehl hierfür lautet wieder anders.

Probiers mal mit dieser Abfrage:
if ( GetPCCell "Terra, Monsterfarm" == 1 )
if ( Palyer->GetHealthGetRatio <= 0.01 )
set belohnung to 1
Player->ModCurrentHealth 25
Player->PositionCell 152 -2755 5665 0 "Terra, Monsterfarm"
return
endif
endif



Mit der habe alle Änderungen im Onsterscript noch einmal hervorgehoben:
begin my_monster_script

if ( GetDisabled == 1 )
SetDelete 1
return
endif


if ( OnDeath == 1 )
set my_kill_anzahl to my_kill_anzahl + 1
if ( my_kill_anzahl == my_monster_anzahl )
set my_kill_anzahl to 0
set my_monster_anzahl to 0
disable
MessageBox "Ich habe alle Monster besiegt."
endif
endif

if ( Player->OnDeath == 1 )
Disable
endif


end
 
um den Helden auf die Wasseroberfläche hinabzubekommen kannst Du es ähnlich wie bei Tarhiel machen: Nehme einen von diesen blauen, unsichtbaren Collisions-Markern wie sie am Kaiserlichen Gefangenenschiff aussen dran sind und platziere den als Plattform in der gewünschten Höhe. Wenn Du dann einen NPC/eine Kreatur genau oberhalb dieser Plattform positionierst und die Anweisung gibst:

"NPC_ID"-> Fall

wird er auf der Plattform landen oder (falls keine Plattform da ist) auf dem nächsten Boden unter seinen Füssen. Damit das ohne Verletzung geht gibts die Möglichkeit entweder
"NPC_ID"-> setAcrobatics 1000
den NPC gegen den Aufprall zu schützen oder
"KREATUR_ID"-> setFatigue 4096
macht unverwundbar weil Kreaturen keine Acrobatics haben ;)
 
Zuletzt bearbeitet:
Nehme einen von diesen blauen, unsichtbaren Collisions-Markern wie sie am Kaiserlichen Gefangenenschiff aussen dran sind und platziere den als Plattform in der gewünschten Höhe.

Nimm nicht einen der Klötze vom Gefängnisschiff, denn die sind mit einem Script belegt und verschwinden nach dem Spielstart.
Erstelle dir einen neuen Activator mit dem Mesh EditorMarker_box_01.nif. Dann kannst du das so machen.
 
Ihr seit ja lustig drauf ;)
da sagt ihr mir was, und dann wist ihr das noch nicht mal ;)

naja, vielleicht mach ich das auch mal so, wenn ich ne längere Zeit hier war...
Jetzt hab ich für diesen winzigen Teil des Plug-ins schon ne Woche gebraucht!!!
oh man...

und da kommen ja noch 4 andere Schreine. ;)

aber zum Glück hab ich ja jetzt ein funktionierende Muster.
wenn nicht, dann meld ich mich hier einfach nochmal... ;)


äh... nun, noch ein Problem:

wenn man stirbt, dann wird man zurückteleportiert, aber man ist trotzdem tot...
 
Zuletzt bearbeitet:
Setz doch mal die Werte hoch. Also sowohl den prozentualen Anzeil der Legensenergie, bei der der Spieler abgefangen wird (zB. 0.05 oder 0.1) und stelle auch mehr Lebensenergie wieder her (zB. 100 oder 150).

Dann überlebt man es vielleicht eher. Aber es bleibt das Problem mit der Geschwindigkeit der Scriptabfrage, das ich oben schon beschrieben habe. Du musst nämlich den Tod mindestens einen Frame VOR dem Tod abfangen, damit du nicht stirbst.
 
Ich denke, du wolltest das ganze verstehen ;)

In der Abfrage ob der Spieler noch genügend Leben hat um weiterzukämpfen (im Kontrollscript):

if ( GetPCCell "Terra, Monsterfarm" == 1 )
if ( Palyer->GetHealthGetRatio <= 0.05 )
set belohnung to 1
Player->ModCurrentHealth 150
Player->PositionCell 152 -2755 5665 0 "Terra, Monsterfarm"
return
endif
endif
 
ja das hab ich ja...

aber die sache mit den einem Frame vor dem anderen Script hab ich nicht so ganz verstanden....

kann man eigentlich nicht den anderen Script für eine Zeit oder so ausschalten? oder so?
 
NEIN!!! Du kannst doch nicht das Mainscript ausschalten wollen?!!! :eek:

Jetzt mal im Ernst: Du kannst und darfst es natürlich nicht ausschalten. Deshalb fragst du ja wann der Spieler noch am Leben ist, aber nur noch sehr wenig Lebenspunkte hat. Dies wird dann sozusagen als vorzeitiger Tod gedeutet.
 
  • Like
Reaktionen: Rey-the-Master
ah... gut...
(mal nebenbei: wo kann man lernen gilden zu erstellen?)

ich denke ich probier den letzten Vorschlag deinerseits mal aus...
 
Wegen den Tutorial glaube nicht das es eins gibt. Mein tutorial:
1. Starte CS und lade dein Plugin.
2. Gehe auf Character\ Faction und gehe auf "New".
3. suche dir deine Favorietenb Fertigkeiten aus.
4. Hiddom from PC darf nicht angeklieckt sein.
5. Gib die Ränge ein der niedriegste Rang muss ganz oben stehen.
6. In den 5 Weißen felder neben den Attriebuten wahl kommt in den Ersten und Zweiten die Zahl rein wie hoch mindestens die Attributsfertigkeit sein.
7. Bei den 3ten und 4ten kommt die Zahl rein was für fertigkeiten der Player haben muss es wird z.B. im Spiel vorrausgesetzt zur Beförderung das du sagen wqir mal 2 fertigkeiten mit 50 und eine mit 55 haben musst.
8. die lezte Spalte ist wichtig zur beförderung. bei den Niedrigsten Rang darf nur eine NULL(0) rein. Du kannst z.b die Zahlen von der Magiergilde übernehem also
2. Rang 5
3. Rang 10
4. usw.

9. Du trägst unter Reaction die Reacktion zu den anderen Gilden ein (Musst du nicht machen)
10. Du drückst auf OK
11. Du erstellt die gilde irgendwo auf der Karte mit den dazugehörigen NPC's.
12. Du errstellts Quests bei jedem Questende Tragst du Folgende Zeiel ein
Code:
modPCFacRep, x, "Gilden-ID"

x muss eine Zahl sein wie 1, 2 ,3 usw. ich weiss nicht ob auch negative Zahlen gehen.
das ist dazu da wenn du also bei 5 bist kannst du einmal befördert werden dann brauchst du 10 usw.
13.Bei den Dialog erstellst du bei Beförderung ein paar texte einmal wenn Rank requirement 1 ist dann hat der player nicht die nötigen fertigkeiten bei 2 hat er nicht den nötigen FacRep bei 3 hat er dann beides erfüllt bei 0 hat er nichts von beiden.
14. bei jeder beförderung musst du
Code:
PCRaiseRank "Gilden-ID"
stehen haben
15. Bei der Gilden aufnahme musst du
Code:
PCJoinFaction "GildenID"
16. wenn du Rausgeschmissen werden sollst.
Code:
PCExpell "GildenID"
17. wenn du wieder aufgenohmmen werden sollst
Code:
PCClearExpell "GildenID"
18. Habe ich noch was vergessen oder habe ich was undeutlich ausgedrückt frage noch mal
 
Also ich bräuchte nen script, dass Speere von der decke fallen und steckenbleiben, wenn man nen gegenstand (genauer kelch den ich gemodelt bekomme) andrück.
Wär das möglich?
anstatt speer könnten es auch steine sein... aber speer is besser
 
Ich hab auch noch eine Scriptfrage:
Ich kann bei einem Händler einen Spielzeugroboter kaufen. Dies ist dann ein Item. Wenn ich es aktivier erscheint ein kleiner Spielzeugroboter neben mir. Durch aktivieren dessen erhält man ein menü:
Folgen
Warten
Einpacken
Abbrechen
Der Spielzeugroboter folgt einem. Wenn er stirbt kann man ihn durch erneuten aktivieren des Items herbeirufen.
Wenn der Robot herbeigerufen ist, kann man ihn nicht nochmal herbeirufen. Erst wenn er eingepackt oder gestorben ist.
Der Spielzeugroboter kämpft selber nicht.

*ganzliebzuscripternguck* bidde! xD

mfg Nici