World of Gothic Archiv > NWN-Hilfe
rückrufstein im eigenen modul
Seite 1 von 1  1 
19.09.2002, 12:11 #1
Frumfondel
Beiträge: 464
rückrufstein im eigenen modul
hi.
gleich vorweg, ich hab vom scripten keine ahnung.
dennoch habe ich einen versuch gestartet, ein eigenes (leider nur h&s) modul zu basteln.
klappt auch soweit ganz gut mit monstern, gebieten, übergänge etc.

nun würde ich gerne den rückrufstein einbauen, hab aber keinen blassen wie...:(

rein theoretisch müßte ich doch nur den stein irgendwie mit nem portal/rückrufportal in verbindung bringen... aber wie?

weiß jemand wie das geht? besser: kann mir das bitte jmd etwas ausführlicher erklären/beispiel posten??
wäre euch echt dankbar...

mfg fondel
19.09.2002, 13:12 #2
Micha LNH HSV
Beiträge: 251

Rhaegar weiss das bestimmt ...
Zur Not könntest Du vom Originalspiel
mal das 1. Kapitel öffnen und da etwas
abgucken indem Du Dir den Tempel mal
genauer anguckst ...
19.09.2002, 15:42 #3
GuradonHellsing
Beiträge: 232

siehe meine Sig saug dir das forgotten book
21.09.2002, 12:03 #4
DTime
Beiträge: 155

Schau dir im Toolset mal das OnUsed Skript des Rückrufsteins an.

Mach dir dort wo der Spieler hinkommen soll einen Wegpunkt. Jetzt erstellst du dir einen Gegenstand, bei dem du im OnUsed Skript die selbe Struktur wie beim Rückrufstein benutzt!

Das dürfte wohl die einfachste Methode sein! Du kannst aber mir einigen Modifikationen sogar mehrere alternative Ziele angeben, jeweils einen eigenen Wegpunkt erstellen.
Die wird wohl am einfachsten mit nem Dialog zu lösen sein!
Du erstellst einen Dialog mit dem Gegenstand und gibst zum Beispiel folgendes vor:

"Wohin soll ich dich bringen"
1.) Zum Tempel
2.) Im Moment will ich nirgendwo hin [Dialog Ende]

bei 1.) gibst du unter Erfolgte Aktion dann den Befehl ActionJumpToObject mit dem Tag des Wegpunktes ein... und Schwups hast du einen Teleportergegenstand.
Du kannst damit auch später weitere Möglichkeiten des Teleports angeben, indem du weitere Dialogebäume unter "Wohin soll ich dich bringen" einfügst, die unter "Text erscheint wenn" eine Variablen Abfrage haben (diese Variable vergibst du noch belieben, z.B. bei erfüllter Quest!). Dann bei "erfolgte Aktion" obiges Schema verwenden und fertig ist´s.

Da ich selber ein Skriptpraxis ungeübter Knilch bin, die Theorie aber wohl gut anz nett ist für n Teleportergegenstand, kann dir vielleicht ein anderer die genauen Codes schreiben (will mich doch nicht blamieren ;) ).
21.09.2002, 18:26 #5
Frumfondel
Beiträge: 464

thx a lot! :)
22.09.2002, 07:56 #6
Elessar
Beiträge: 495

DTime: Der Witz ist ja, dass Gegenstände keine Scripts haben, du musst das ganze also unter ItemActivatet oder so in den Module Eigenschaften scripten, sollte aber weiter kein Problem sein...
22.09.2002, 14:35 #7
DTime
Beiträge: 155

Oh ja, sorry das hatte ich vergessen! Auch eine Konversation ist ja glaub ich nur mit nem Skript möglich (oder... ach herjee, muß mich mal wieder mehr mit dem Toolset rumschlagen ;) ). Aber Ich denke die Idee ist ganz nett. So kann man sich ja inzelligente Gegenstände erstellen, mit ein bißchen Phantasie.....
23.09.2002, 07:19 #8
Frumfondel
Beiträge: 464

quote:
void main()
{
if(GetItemActivated()==GetObjectByTag("NW_IT_RECALL", 0))
{
location LastRecallUsed;
LastRecallUsed = GetLocation(GetItemActivator());
SetLocalLocation(GetItemActivator(),"LastRecallUsed",LastRecallUsed);
SetLocalInt(GetItemActivator(),"HasRecalled",1);
AssignCommand(GetItemActivator(),JumpToLocation(GetLocation(GetObjectByT ag("NW_RECALL_PORTAL"))));
}
}



bei Moduleigenschaften --> Ereignisse --> OnActivateItem eintragen, dann funktioniert das mit dem Rückrufstein



so. das hab ich gefunden. bleibt nur eine frage:
wie komm ich wieder zurück???
23.09.2002, 20:20 #9
Elessar
Beiträge: 495

Füge das folgende Script beim Portal ein, das dich zurückbringen soll:
code\:

void main()
{
object oPC = GetEnteringObject();
location LastRecallUsed = GetLocalLocation(oPC(),"LastRecallUsed");
LastRecallUsed = GetLocation(GetItemActivator());
SetLocalInt(GetItemActivator(),"HasRecalled",0);
AssignCommand(GetItemActivator(),JumpToLocation(LastRecallUsed));
}



nicht getestet, nicht kompiliert...
23.09.2002, 21:51 #10
Frumfondel
Beiträge: 464

@ elessar:

thx erstmal, ich gehe mal davon aus, daß ich beim gesprächseditor bei erfolgte aktionen dein script reinschreiben soll. falls ja bringt er nen "kann nicht kompiliert werden FEHLER: BEZEICHNER NICHT DEFINIERT (oPC)" in zeile 4... :(

mfg fondel
25.09.2002, 11:19 #11
Elessar
Beiträge: 495

Arg, hau mich... danke
code\:


void main()
{
object oPC = GetEnteringObject();
location LastRecallUsed = GetLocalLocation(oPC,"LastRecallUsed");
LastRecallUsed = GetLocation(GetItemActivator());
SetLocalInt(GetItemActivator(),"HasRecalled",0);
AssignCommand(GetItemActivator(),JumpToLocation(LastRecallUsed));
}



aber ich sagte nicht kompiliert ;) und so schwer war der Fehler nu auch ned zum finden ;)
10.10.2002, 17:33 #12
Clouty
Beiträge: 39

Moin,

für mein Modul wollte ich auch einen Rückrufstein haben, habe auch die Scripts von hier richtig eingefügt ... und habe sogar schon andere ausprobiert, aber jedesmal dasselbe. Das Wegteleportieren klappt allererste Sahne, nur das zurück teleportieren klappt bei mir nie! Hat da jemand von euch einen Rat? Wie gesagt, bei diesem Script das hier über meinem Beitrag steht klappt das zurück teleportieren nivcht bei mir, obwohl es in einem gespräch unter "erfolgte aktionen" steht.

Zuletzt habe ich dies hier probiert, mit demselben ergebniss:

Unter eigenschaften des moduls/OnActivateItem:
---
void main()
{
object oActivatedObject = GetItemActivated();
string sActivatedItemTag = GetTag(oActivatedObject);
if(sActivatedItemTag == "recall")
{
object oDestination = GetObjectByTag("NW_RECALL_PORTAL");
if(GetIsObjectValid(oDestination)==TRUE)
{
SetLocalLocation(GetItemActivator(),"MY_L_LOC_TENT",GetLocation(GetItemActivator()));
object oClicker = GetItemActivator();
AssignCommand(oClicker, ClearAllActions());
AssignCommand(oClicker, JumpToObject(oDestination));
AssignCommand(oClicker, ActionDoCommand(ClearAllActions()));
}
}
}
---
Unter "erfolgte aktionen" in einem gespräch dann:
---
void main()
{
object oEnterer=GetEnteringObject();
location lLoc=GetLocalLocation(oEnterer,"MY_L_LOC_TENT");
AssignCommand(oEnterer,ActionJumpToLocation(lLoc));
}
---

Clouty
Seite 1 von 1  1