Registrierung Häufig gestellte Fragen Suche Mitgliederliste Portal - Planet Skyrim.de Kalender Moderatoren und Administratoren Startseite
Morrowind&OblivionForum.de - PMM-Projects Network » The Elder Scrolls III: Morrowind » Morrowind Editor Help » Eskortieren - Scriptproblem » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Eskortieren - ScriptproblemAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hi

Ich hab schon wieder ein Problem bei einem Script.

Folgendes Script verwende ich, damit ein NPC den PC begleitet, dabei kommt es irgendwann zu einem Kampf, sobald dieser Vorbei ist, kommt der Tagebucheintrag br_anschlag 50 und der NPC soll den PC nicht mehr weiter folgen. Dazu verwende ich diesen Befehl, aber aus irgend einem Grund funktioniert es nicht. Obwohl der Eintrag korrekt kommt, folgt der NPC dem PC weiter, kann mir jemand sagen warum?

Dieser Teil bestimmt nur wann der NPC auftaucht
Da ich den NPC noch benötige soll er nicht sterben sondern nur zusammenbrechen.


Begin br_beleg_begleitung

short noLore
short followNow
short distanceCheck
short br_beleg_talk

float timer

if ( cellchanged == 1 )
..if ( GetJournalindex br_erz < 80 )
...."br_beleg_1"->disable
....return
..endif
endif

if ( cellchanged == 1 )
..if ( GetJournalindex br_erz > 85 )
...."br_beleg_1"->disable
....return
..endif
endif

if ( cellchanged == 1 )
..if ( GetJournalindex br_erz == 80 )
...."br_beleg_1"->enable
....endif
endif


if ( MenuMode == 1 )
..Return
endif

if ( "br_beleg_1"->Gethealth <= 20 )
.."br_beleg_1"->SetHealth 265
.."br_beleg_1"->SetFatigue 0
endif


if ( GetJournalIndex br_anschlag >= 50 )
..set followNow to 0
..AiWander 256 0 0 40 20 20 0 0 0 0 0 0
endif


if ( GetCurrentAiPackage == 3 )
..set followNow to 1
..SetHello 0
..set br_beleg_talk to 0

..if ( timer < 2 )
....set timer to ( timer + GetSecondsPassed )
....return
..endif

..if ( GetJournalIndex br_anschlag >= 50)
....set followNow to 0
....AiWander 256 0 0 40 20 20 0 0 0 0 0 0
....SetHello 30
..endif


..if ( GetDistance Player < NPCVoiceDistance )
....if ( GetDistance Player < 500 )
......set distanceCheck to 0
....endif
....set timer to 0
....return
..endif

..if ( distanceCheck == 0 )
....Say "VoDMFlw_DM001.mp3" "Wo wollt Ihr hin?"
....set distanceCheck to 1
..endif

else
..set followNow to 0
endif

End

Ich habe das Script in nahezu unveränderter Form schon wo anders benutzt , dort funktioniert es problemlos, der Unterschied ist, daß ich dort GetDistance zu einem Activator als Auslöser für das Beenden der Begleitung verwende und nicht GetJournalIndex.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

02.05.2003, 08:14 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hat sich erledigt! Ich hab's hinbekommen, funktioniert jetzt wie geplant.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

02.05.2003, 15:40 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Wäre dann natürlich von Vorteil, du würdest dein neuerworbenes wissen teilen: Wo war der Fehler?


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

02.05.2003, 21:20 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Wo der Fehler war? Jetzt wird's peinlich. Um ehrlich zu sein, ich weiß es auch nicht. Nach dem ich alles, was mir logisch erschienen ist ausprobiert hatte, wollte ich das Script nur verkleiner, damit es übersichtlicher wird. Dazu habe ich alle Kommentare, die ich hier nicht angeführt habe, entfernt und außerdem folgenden Absatz gelöscht:

if ( GetJournalIndex br_anschlag >= 50 )
..set followNow to 0
..AiWander 256 0 0 40 20 20 0 0 0 0 0 0
endif


Da er ja weiter unten, in leicht unterschiedlicher Form nocheinmal vorkommt. Und siehe da auf einmal funktioniert es.
Ich glaube nicht, daß es an diesem Absatz gelegen hat. Die einzige Möglichkeit, die ich mir vorstellen kann, ist daß bei einem der Kommentare der ; gefehlt hat und es deswegen nicht funktioniert hat. Aber wie gesagt so wirklich sicher bin ich mir da auch nicht.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

04.05.2003, 15:59 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Neues ProblemAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich schreib einfach hier weiter, auch wenn es sich um ein ganz anderes Problem handelt:

Ich wollte eine Kreatur erstellen, die sich nur von einer bestimmten waffe töten läßt, also habe ich auf die Kreatur ein Script mit folgenden Zeilen gelegt:

if ( onPCEquip "br_ritualdolch" == 1 )
..StopScript br_gander_script
endif

if ( onPCEquip "br_ritualdolch" == 0 )
.."br_gander"->SetHealth 100
endif


Aber aus ein, mir nicht ganz ersichtlichen Grund funktioniert es nicht. Kann es sein, daß der Befehl OnPCEquip immer auf dem Gegenstand liegen muß auf den er sich bezieht? Fehlermeldung erhalte ich nämlich keine, es funktioniert nur einfach nicht. In der Hilfe habe auch keine Informationen zu dem Befehl gefunden.
Wenn ich im Spiel die Variablen überprüfe erhalte ich onPCEquip =0, egal welche Waffe verwendet wird, es wird also die "tödliche" Waffe nicht erkannt.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

27.05.2003, 12:30 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Bestätigt: OnPCEquip ist gar kein Befehl, sondern eine Variable, die das System automatisch setzt, falls sie im script auf dem Gegenstand vorkommt. Einfacher wär es übrigens, du schaust Dir das script auf lorkans Herz an, da ist auch eine Abfrage darin, ob sunder oder Keening das teil getroffen haben! weis den befehl grade icht auswendig... hitonme waffenid? irgend so was....


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

27.05.2003, 12:45 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
chris_tm
Bard



Dabei seit: Februar 2003
Geschlecht:
Herkunft: München
Beiträge: 37

chris_tm ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Um nochmal über OnPCEquip zu sprechen:

Könnte das funktionieren? :

short check

set check to br_ritualdolch.OnPCEquip

if ( irgendwas == X )
.. if ( check == 1 )
.. .. ..StopScript br_gander_script
.. .. ..set irgendwas to Y

.. elseif ( check == 0 )
.. .. .."br_gander"->SetHealth 100
.. .. ..set irgendwas to Y
.. .. endif
endif

Edit:
Obwohl...eigentlich ne blöde Frage weil wenn an br_gander kein Script hängt wirds wahrscheinlich ne Fehlermeldung ala "OnPCEquip not found on br_gander" geben.


__________________

Meine Site

Dieser Beitrag wurde von chris_tm am 27.05.2003, 13:07 Uhr editiert.

27.05.2003, 12:57 Profil von Füge  deiner Freunde-Liste hinzu Email an chris_tm senden Homepage von chris_tm
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ja, die wird es geben - nimm bitte die hitonme-sache! Funktioniert prima, wird auch im PMM-Mod verwendet und hat keinerlei fehler verursacht!


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

27.05.2003, 13:27 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich hab's mit HitOnMe versucht, aber scheinbar hab ich dich nicht richtig verstanden:

if ( HitOnMe "br_ritualdolch" == 1 )
..StopScript br_gander_script
endif

if ( HitOnMe "br_ritualdolch" == 0 )
.."br_gander"->SetHealth 100
endif

Jetzt läßt sich das Ding überhaupt nicht mehr killen, ich vermute das liegt daran, das die Kreatur bei jedem Durchlauf in dem kein Treffer erfolgt geheilt wird. Aber wie kann ich das verhindern? Muß ich da parallel mit OnPCEquipt arbeiten, oder gibt es einen einfacheren Weg?

Achja, das Script für Lokans Herz hab ich mir angeschaut, aber um ganz ehrlich zu sein blick' ich da nicht durch.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

27.05.2003, 18:28 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ja, Du hast recht, und beim Herzscript ist die unverwundbarkeit ja auch absicht.. ich sehe 2 Lösungsmöglichkeiten:

a) Du ziehst bei jedem Treffer mit der speziellen waffe einen gewissen schaden ab und stellst die Gesundheit mit

sethealth maxgesundheit
modcurrenthealth -Trefferschaden*trefferanzahl

ein

b) Zwischenspeichern der gesundheit:

if ( HitOnMe "br_ritualdolch" == 1 )
.. set merkgesundheit to gethealth
.. set merkGesundheit to maxhealth - merkgesundheit
else
.. sethealth maxgesundheit
.. modcurrenthealth -merkgesundheit
endif

Letzteres in der hoffnung, dass der verursachte schaden in dem Frame abgezogen wird, in dem auch Hitonme ausgelöst wird. Damit keien Elementarschäden dazwischenpfuschen solltest Du auf den Gegner entsprechende Resistenzfähigkeiten legen!


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

27.05.2003, 22:12 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Letzteres in der hoffnung, dass der verursachte schaden in dem Frame abgezogen wird, in dem auch Hitonme ausgelöst wird.


Tja, scheinbar leider nicht . Zumindest hat es bei mir nicht funktioniert. Aber durch deine Vorschläge ist es mir schließlich (um 3 in der Nacht, im Halbkoma ) gelungen eine Version zu basteln die funktioniert:

if ( gethealth > 0 )
..if ( HitOnMe "br_ritualdolch" == 1 )
....set br_gandertreffer to ( br_gandertreffer + 1 )
....return
..else
....set br_ganderhealth to (-10*br_gandertreffer)
....sethealth 200
....modhealth br_ganderhealth
..endif
endif

Der einzige Nachteil dabei: Die Health-Anzeige der Kreatur ist permanent auf max. und macht bei einem Treffer nur einen kleinen Zucker, bis das Ding schließlich unerwartet tod umfällt, aber damit kann ich leben.

Ach ja, der Befehl sethealth läßt sich nicht mit einer Variable verwenden, oder? Ich hab das nämlich einige Male ausprobiert und im Spiel immer einen Syntax Error erhalten.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

28.05.2003, 17:47 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

War noch nie ein guter trockenschwimmer beim scripten - kann aber nicht alles erst testen, was ich poste...

Das mit der lebensanzeige liegt aber daran, dass Du mit ModHealth die Maximalgesundheit manipulierst - ersetze das durch ModCurrentHealth, dann sollte die lebensanzeige funktionieren...


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

28.05.2003, 20:10 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
War noch nie ein guter trockenschwimmer beim scripten - kann aber nicht alles erst testen, was ich poste...

Um Himmels willen, das sollte keinesfalls ein Vorwurf sein. Im Gegenteil, hab beim herum probieren wieder einiges gelernt. Kenn' jetzt einige neue Befehle, die ich vielleicht einmal brauchen kann .
Übrigens mit ModCurrentHealth hattest du recht, jetzt funktioniert's perfekt.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

28.05.2003, 22:14 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Okay, wo ich gerade so schön im "ich-hab-keine-Ahnung-vom scripten-aber probiers-trotzdem" bin, mach ich gleich weiter:

ich wollte einen Schalter erzeugen, der mittels eines Pfeilschusses betätigt werden kann (ich weiß schon, ist ein abegnutztes Klische) und hab dazu einen entsprechenden Activator mit einem Script versehen, daß unter anderem folgende Zeile enthält:

if ( "schalter_7"->onpchitme == 1 )

Aber aus irgendeinen Grund funktioniert das ganze nicht. Funktioniert der Befehl nur mit NPC's und Kreaturen?


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

29.05.2003, 17:54 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Jep, nur mit actors! Einzuige möglichkeit, die mir bekannt ist: Neue (nicht spielbare) rasse erstellen deren einziger Bodypart Dein schalter ist - am besten als kopf, dann kannst Du die rasse öfter für so was benutzen... dann NPC mit dauerhafter paralyse drauf sowie ein stopcombat pro frame - damit die kampfmusik wieder aufhört... ist allerdings furchtbar schwer, das teil dann zu positionieren...


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

29.05.2003, 19:07 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Dann werd ich das ganze wohl besser bleiben lassen. War sowieso keine besonders gute Idee.

Trotzdem, Vielen Dank für deine Hilfe.


__________________


Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein

Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach

29.05.2003, 20:32 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Design by: Garak - Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR