World of Gothic Archiv > NWN-Hilfe
Stadtportale
Seite 1 von 2  1  2 
08.09.2002, 11:54 #1
Shirat
Beiträge: 511
Stadtportale
Moin. Ich mache auch gerade ein Modul und hatte dabei die Idee, so etwas ähnliches wie die Stadtportal-Rollen in Diablo 2 da einzubauen. Ne Idee hab' ich auch schon, Skripte auch, aber irgendwie klappt das nicht so ganz...

Also, zuerst hab ich einen Kristall, den hab ich "Stadtportal-Kristall" genannt (Skript-Kennezeichnung "schriftrolledess").

Dann hab' ich bei dem "OnItemActivated"-Ereignis des Moduls folgendes eingebaut:

code\:

void main()
{
object Item = GetItemActivated();

if(Item == GetObjectByTag("schriftrolledess"))
{
CreateObject(OBJECT_TYPE_PLACEABLE,"Stadtportal",GetLocation(GetItemActivator()));
DestroyObject(Item);
}
}



Das Objekt mit dem Tag "Stadtportal" ist ein platzierbares Object, bei dessen OnUse-Funktion ich folgendes eingebaut habe:

code\:

void main()
{
AssignCommand(GetPCSpeaker(),JumpToLocation(GetLocation(GetWaypointByTag ("townportal"))));

SetLocalLocation(GetPCSpeaker(),"TP",GetLocation(OBJECT_SELF));
}



Ich bin mir ziemlich sicher, dass ich irgendetwas falsch gemacht habe. Das erkenne ich daran, dass die ganze Sache nicht funktioniert. Es wäre allerdings nett, wenn sich jemand die Zeit nehmen würde, sich durch meinen Code durchzuwurschteln und mein Problem zu anaylsieren.


___________________________

Visit:
Martins Homepage[/font]
08.09.2002, 13:21 #2
Elessar
Beiträge: 495

Sollte eher so aussehen, der zweite Code, ausserdem muss dein Portal benutzbar sein, weiss ned ob du das gemacht hast, ist unter den Eigenschaften...
code\:

void main()
{
object oPC = GetLastUsedBy();
AssignCommand(oPC, JumpToLocation(GetLocation(GetWaypointByTag
("townportal"))));

SetLocalLocation(oPC, "TP",GetLocation(OBJECT_SELF));
}

08.09.2002, 13:33 #3
The King
Beiträge: 100

quote:
void main()
{
object oPC = GetLastUsedBy();
AssignCommand(oPC, JumpToLocation(GetLocation(GetWaypointByTag
("townportal"))));

SetLocalLocation(oPC, "TP",GetLocation(OBJECT_SELF));
}



Viel mir auch auf! Aber coole Idee die mach ich anstelle eines Rückrufsteins!!
09.09.2002, 16:03 #4
Shirat
Beiträge: 511

Das ist schon mal gut, nur leider hatte ich nämlich noch gar keine Gelegenheit, zu testen, ob das zweite Script klappt. Das momentane Problem ist nämlich, dass noch nicht einmal das erste funzt. :(
09.09.2002, 16:12 #5
The King
Beiträge: 100

Hmm teste das mal..
09.09.2002, 16:38 #6
Shirat
Beiträge: 511

Yo, habs nochmal getestet. Da tut sich nix...
Ich hab' irgendwie das Gefühl, dass die Abfrage im ersten Script dran schuld ist:
code\:
if(Item == GetObjectByTag("schriftrolledess"))

Aber ich weiß nicht, was daran jetzt wirklich falsch ist...


___________________________

Visit:
Martins Homepage[/font]
09.09.2002, 16:42 #7
Elessar
Beiträge: 495

Wenn es mehrere solche Objekte gibt, dann könnte es sein, dass zwei verschiedene verglichen werden, also würde ich es so machen:
code\:

if(GetTag(Item) == "schriftrolledess")


Und zur Sicherheit nochmals den Tag überprüfen...
09.09.2002, 16:48 #8
Shirat
Beiträge: 511

Nur nochmal um eine Sache klarzustellen: Bei den Items gibt es doch zwei Kennzeichnungen: Nämlich "Kennzeichen" und "Vorlagen-ResRef". Im Skript-Editor wird von denen doch die zweite verwendet, oder?

[Edit]
Na gut, es wird doch die erste verwendet (ohmeingottkommichmirjetztblödvor:D)
[/Edit]
09.09.2002, 19:47 #9
Shirat
Beiträge: 511

Hallo?
09.09.2002, 19:51 #10
The King
Beiträge: 100

Ich glaube kenzeichen! Ich entwickle für dich gerade ein anderes Script für TP's als geduld bis morgen Nachmittag!
09.09.2002, 19:58 #11
Shirat
Beiträge: 511

OK, ich hab mittlerweile festgestelle, dass es wirklich an der Abfrage liegt. Auch die von Elessar funzt net. Das hab' ich festgestellt, indem ich in der OnItemActivate-Funktion noch eine SpeakString-Aktion eingebaut hab, die immer aktiviert wird. Das heißt, das Stadtportal-Dingen aktiviert zwar die OnItemActivate-Funktion, kommt aber nicht durch die Abfrage durch. Hm... muss mir die ganze sache noch mal ansehen... *Internetexplorerbeendundtoolsetstart*
09.09.2002, 20:24 #12
Elessar
Beiträge: 495

Hm, komisch...
10.09.2002, 10:49 #13
The King
Beiträge: 100
Hilfe ich scheitere an einem benutzbarem Object
quote:
Also, zuerst hab ich einen Kristall, den hab ich "Stadtportal-Kristall" genannt (Skript-Kennezeichnung "schriftrolledess").


Hab jetzt ein script für dich gemacht allerdings weiss ich nicht wie ich denn gegenstand Stadtportalkirstallbenutzbarmache!

Hier das Script:
Bei onActivateitem bei Moduleigenschaften eingeben:
code\:

object item=GetItemActivated();
object tpkitem = GetObjectByTag("Stadtportalkristall");
object wp =GetWaypointByTag("Stadtportalpunktintown");
location sp = GetLocation(tpkitem);
location spis = GetLocation(wp);

void main()
{
if(item == tpkitem)
{


CreateObject(OBJECT_TYPE_PLACEABLE, "Stadtportal", sp);
CreateObject(OBJECT_TYPE_PLACEABLE, "StadtportalinStadt", spis);
DestroyObject(item);
}
}



Bei benutzbares Object Stadtportal eingeben:

code\:

object pc=GetLastUsedBy();
location tp2=GetLocation(GetObjectByTag("StadtportalinStadt"));

void main()
{
AssignCommand(pc, JumpToLocation(tp2));
}



Bei benutzbares Object StadtportalinStadt eingeben:

code\:

object pc= GetLastUsedBy();
object tp1 = GetObjectByTag("Stadtportal");
object tp2= GetObjectByTag("StadtportalinStadt");
location tpins = GetLocation(tp1);

void main()
{
AssignCommand(pc, JumpToLocation(tpins));
ActionDoCommand(DestroyObject(tp2));
ActionDoCommand(DestroyObject(tp1));

}


10.09.2002, 14:05 #14
Shirat
Beiträge: 511

Gut. Muss ich gleich ausprobieren... :D
10.09.2002, 14:17 #15
Shirat
Beiträge: 511

Noch eine andere Frage:
Wenn ich bei mir den Stadtportal-Kristall direkt im Inventar auswähle, dann kann ich ihn angeblich net benutzen kann (im Kreismenü ist der "Benutzen"-Button dann nur so diffus dargestellt und angeblich kann Ich ihn 0-mal benutzen. Wenn ich ihn auf die Quickleiste ziehe, kann ich ihn allerdings benutzen, da steht dann auch "*wieauchimmererheißt* setzt besondere Fähigkeiten eines Gegenstands ein". Vielleicht liegt die ganze Sache ja auch daran. Hab allerdings keine Ahnung, wie ich das ändern könnte. Ich bin mir mittlerweile sogar ziemlich sicher, dass es daran liegt. Weil mein Script ja eigentlich auch hätte funktionieren müssten, genau wie das von "The King", aber die funzen beide net, obwohl sie ja eigentlich klappen müssten... *immernochweiterlaber*. Auf jeden Fall hab' ich keine Ahnung, wie ich das umstellen kann, dass auch im Kreismenü angezeigt wird, dass ich det dingen benutzen kann.
10.09.2002, 14:25 #16
Shirat
Beiträge: 511

[...]

[Edit]Hier stand Scheiße, und da ich keinen unnötig verwirren will und auch diesen Post net löschen kann, mache ich einfach alles darin weg :D[/Edit]
10.09.2002, 18:39 #17
The King
Beiträge: 100

Ha ich habs geschafft!!! Dass if(item == tpkitem) war der Fehler Morgen kümmere ich mich darum aber hier das Vorläufige Script(Du darfst kein anderes ITEM aktivieren!)

Erstelle ein kleines Item mit kennung und name Stadtportalschriftrolle
Setzt die Ladungen auf 1. Bei Eigenschafften musst du Zauberwirken besondere Eigenschafften nur von Träger wirken reintun und alle anderen raus. Geh dan bei Zauberwirken besondere Eigenschafften nur von Träger wirken auf bearbeiten und stell es auf:1Ladung/Benutzung!

Mach ein Wp namens Stadtportalpunktintown


Dann gieb dieses Script bei OnActivateItem ein:

code\:

object item=GetItemActivated();
object tpkitem = GetObjectByTag("Stadtportalschriftrolle");
object wp = GetWaypointByTag("Stadtportalpunktintown");
object pc = GetItemActivator();
location sp = GetLocation(pc);
location spis = GetLocation(wp);

void main()
{
AssignCommand(pc, ActionSpeakString("Item ist activiert"));
//if(item == tpkitem) DAS IF WAR DER FEHLER
//{ HABS WEGELASSEN UM DASS KÜMMERE ICH MICH MORGEN
AssignCommand(pc, ActionSpeakString("item == ptkitem"));
CreateObject(OBJECT_TYPE_PLACEABLE, "Stadtportal", sp);
CreateObject(OBJECT_TYPE_PLACEABLE, "StadtportalinStadt", spis);
//}
}


Dann mach ein platz. Object das wie ein portal auschaut giebt ihm den Namen und kenzeichen Stadtportal und stell es auf benutzbar gieb das hier bei onused ein:
code\:

object pc=GetLastUsedBy();
location tp2=GetLocation(GetObjectByTag("StadtportalinStadt"));

void main()
{
AssignCommand(pc, JumpToLocation(tp2));
}


Dann mach ein platz. Object das wie ein portal auschaut giebt ihm den Namen und kenzeichen StadtportalinStadtund stell es auf benutzbar gieb das hier bei onused ein:
code\:

object pc= GetLastUsedBy();
object tp1 = GetObjectByTag("Stadtportal");
object tp2= GetObjectByTag("StadtportalinStadt");
location tpins = GetLocation(tp1);

void main()
{
AssignCommand(pc, JumpToLocation(tpins));
ActionDoCommand(DestroyObject(tp2));
ActionDoCommand(DestroyObject(tp1));

}


10.09.2002, 19:15 #18
Shirat
Beiträge: 511

Hast du das ausprobiert? Egal, ich teste auf jeden mal.
Achja, wo war bei dem IF denn der Fehler?
10.09.2002, 19:41 #19
The King
Beiträge: 100

Naja ich bin gerade mal 6 Stunden an diesem verflixten script drann und habe es sicher noch nie getestet!!

(Hab oben gesagt es geht also hab ich es getestet)!

Es geht mit einem Fehler das bei jedem Aktiviertem item das portal kommt!
10.09.2002, 19:47 #20
Shamba
Beiträge: 37
test
Also, es klappt FAST!
Habe es grade mal getestet. Ich konnte mich einmal zur Stadt und wieder zurück teleportieren. Dann sind beide Portale verschwunden! Das Stadtportal konnte ich dann wieder rufen, mich aber nicht mehr in die Stadt teleportieren, da ja dort das Portal fehlte. Sonst läuft es aber einwandfrei!


Der Fehler wird wohl hier liegen wenn ich mich nicht täusche
ActionDoCommand(DestroyObject(tp2));
ActionDoCommand(DestroyObject(tp1));
10.09.2002, 20:55 #21
Shirat
Beiträge: 511

Ich hatte noch das Problem, dass beim erstellen des TP in der Stadt kein Tp erschien. Aber das liegt wohl daran, dass ich mich irgendwo mit den Kennzeichen verwurschtelt hab... aber ansonsten klappt alles.
Wo lag jetzt eigentlich der Fehler mit dem IF?
11.09.2002, 11:03 #22
The King
Beiträge: 100

Es geht einwandfrei!!!!!

Wenn der spieler denn gegenstand benutzt werden zwei tps erstellt éins inder der stadt und eins beim spieler! Wenn du aus der Stadt wieder zurückgehst wird das tp gelöscht!! Sonst könntest du ja ewig hin under her gehen!
11.09.2002, 11:21 #23
Shamba
Beiträge: 37
komisch ...
[hier stand Müll] ...

hab das OnActivateItem Script nicht richtig gelesen, bzw. die eine Zeile übersehen! Tut mir leid. Habe natürlich den WP vergessen *schäm*
11.09.2002, 18:37 #24
The King
Beiträge: 100

Hab denn Fehler das Object zerstört sich nachdem es aktiviertwurde wegen nur einmaliger benutzung selber! Das kann man nur verhindern wenn man 2 Ladungen macht.
11.09.2002, 19:06 #25
LightHawk
Beiträge: 100

Ich hab sas Script mal ausprobiert, und es so gemacht, wie es hier stand...

Nur bekam ich statt einem Portal einen Schrank
Seite 1 von 2  1  2