World of Gothic Archiv > NWN-Hilfe
Wachen erschaffen die in einem MP Modul aufpassen
Seite 1 von 1  1 
11.09.2002, 13:39 #1
Clouty
Beiträge: 39
Wachen erschaffen die in einem MP Modul aufpassen
Moin,

bin noch ganz frisch, soll heißen ich bin neu hier. ;)

ich sitze grade an einem kleinen Modul, ich glaube für welches Spiel das ist brauche ich hier nicht zu erwähnen?!
Es soll ein Modul für‘n Multiplayer werden. Meine Frage dazu ist eigentlich ob diese Hauswachen (NPC) , habe ein paar davon reingesetzt in mein Modul, auch vernünftig wie Wachen reagieren?! Ich meine, zB. Also wenn ich einen anderen NPC angreife und eine Wache sieht das möbelt der mich nieder, klappt das auch wenn ein anderen PC auf meinem Server einen friedliebenden PC angreift das die Wache dann einschreitet. Und was passiert wenn der andere PC zurück haut? Wird der dann auch von der Wache niedergeknüppelt? Muß man da irgendwas spezielles scripten? Also wollte ich sozusagen Wachen bei mir im Modul haben die sich auch als solche „richtig“ verhalten. Hat da wer Ratschläge für mich, oder Tips?

Noch etwas: Eine der Wachen habe ich per Wegpunkte eine Laufroute zugewiesen. Er geht sie auch ab, aber sobald die Wache angesprochen wird redet sie mit mir und bleibt dann an diesem Punkt stehen wie eine Steinstatur und folgt den Wegpunkten nicht mehr. Kann mir da wer helfen, das sie ihre Wegpunkte danach wieder abläuft?

Fettes Danke schon mal fürs durchlesen.

Gruß,
Clouty
11.09.2002, 14:48 #2
Rhaegar
Beiträge: 296

zum Weiterlaufen:

Einfach im Dialogeditor in allen Zeilen die den Dialog beenden das Skript hier ins "Erfolgte Aktionen"-Feld:
code\:

void main()
{
ActionWalkWaypoints();
}



Zum anderen: Sollte eigentlich soweit automatisch funktionieren, bin mir da aber nicht ganz sicher.


___________________________

Verliebt in den UserDefined Event ^^
Überzeugter Episode 2 Hasser[/font]
11.09.2002, 16:18 #3
Clouty
Beiträge: 39

Jo, danke dir erstmal für die Antwort.
Wenn ich das allerdings in eine neue Scriptdatei packe sagt er mir beim kombilieren:
Fehler. 'wegpunkte_weiter' konnte nicht kompiliert werden.
wegpunkte_weiter.nss(3): FEHLER: BEZEICHNER NICHT DEFINIERT (ActionWalkWaypoints)

Habe leider absolut 0 Ahnung vom scripten.

Gruß,
Clouty
11.09.2002, 16:20 #4
Shirat
Beiträge: 511

Poste mal das gesamte Script hier rein!
11.09.2002, 16:38 #5
Elessar
Beiträge: 495

Die Ursache ist schnell gefunden, es braucht ein include:
code\:

#include "NW_I0_GENERIC"
void main()
{
ActionWalkWaypoints();
}

11.09.2002, 16:47 #6
Clouty
Beiträge: 39

Mhhh, ... er sagt immer noch:
'wegpunkte_weiter' konnte nicht kompiliert werden.
wegpunkte_weiter.nss(4): FEHLER: BEZEICHNER NICHT DEFINIERT (ActionWalkWaypoints)

Also, ich habe eine grade Linie an Wegpunkten erstellt. Meine Wache trägt die Bezeichnung "Dorfwache3". Nun habe ich halt den Wegpunkten folgende Bezeichnung gegeben: "WP_Dorfwache3_01", "WP_Dorfwache3_02" usw.

Ist doch richtig so!?

Gruß,
Clouty
11.09.2002, 18:09 #7
Elessar
Beiträge: 495

*räusper*
quote:

#include "NW_I0_GENERIC"
void main()
{
WalkWayPoints();
}


11.09.2002, 19:16 #8
GuradonHellsing
Beiträge: 232

AssignCommand(OBJECTSELF,ActionWalkWaypoints);
//action funktionen sollte man immer ein object zuweisen
12.09.2002, 04:47 #9
Elessar
Beiträge: 495

Ist nicht nötig, höchstens, wenn du ein anderes object hast als OBJECT_SELF, ansonsten ist das automatischen bei der Kreatur, das Problem ist, dass die Funktion WalkWayPoints heisst und nicht ActionWalkWaypoints...
12.09.2002, 16:00 #10
Clouty
Beiträge: 39

:) Ey, danke euch allen für eure Tips!!!
Besonders dir Elessar! Funzt SUPER!

Nochmal ne andere Frage:
Eine Hauswache soll mir eine abgeschlossene Tür öffnen, aber nur dann wenn ich einen bestimmten zB. Schlüssel im Gepäck mit mir trage.

Die Tür habe ich die Eigenschaft "Abgeschlossen" zugewiesen damit man sie nicht einfach so öffnen kann. Dann habe ich der Wache eine Gesprächsdatei zugewiesen in dem der entsprechende Antwortsatz, "Öffne mir die Tür", auch nur dann erscheint wenn ich den Schlüssel im Gepäck habe (über den Script-Wizard gemacht)

Wenn die Wache nun antwortet ist bei dieser Antwort unter "erfolgte Aktionen" folgendes Script:

void main()
{
object oTuer = GetObjectByTag("marlen_door");
ActionUnlockObject(oTuer);
ActionOpenDoor(oTuer);
}

So, im Spiel wenn er das Script ausführen soll, schlägt er aber entweder nur auf die Tür ein, oder er fummelt bestimmt 10 Sekunden am Schloß rum bevor er sie öffnet, wenn überhaupt.

Die Tür ist eine einfache Holztür mit dem Tag "marlen_door".

Kann mir bitte jemand sagen was falsch ist?

Gruß,
Clouty
12.09.2002, 16:26 #11
Rhaegar
Beiträge: 296

Hat der NPC den Schluessel auch?
ActionUnlock funktioniert naemlich soweit ich weiss nur, wenn der NPC den Schluessel auch hat...
12.09.2002, 16:47 #12
Clouty
Beiträge: 39

Also, jetzt habe ich den NPC mal den Schlüssel gegeben, ist aber alles so wie vorher:

Beim ersten mal ansprechen, versucht die Wache die Tür niederzumetzeln. Wenn ich die Wache dann zum zweiten mal anspreche das sie mir doch netterweise die Tür öffnen soll, fummelt die Wache ewig laaange am Schloß herum.

Ich glaube das Script um die Tür zu öffnen, ist auch nicht besonders glücklich im Gesprächsbaum eingebaut. Denn sobald er sagt er öffne die Tür ist das Gespräch beendet nachdem der Spieler die Taste "1" betätigt und die Wache bricht das Script schnell ab. Sieht jedenfalls so aus. Aber wo kann ichs besser setzen?

@Rhaegar, nur mal so zur Neugier. Wieso bist du ein überzeugter Episode II Hasser? Du meinst doch Star Wars, oder?

Clouty
12.09.2002, 17:11 #13
Rhaegar
Beiträge: 296

quote:
Zitat von Clouty
@Rhaegar, nur mal so zur Neugier. Wieso bist du ein überzeugter Episode II Hasser? Du meinst doch Star Wars, oder?



Das kommt ganz darauf an wie man das sieht. Ich jedenfalls verwende die Worte Star Wars und. Episode 2 nur ungern im selben Satz.Und ich kann's wirklich nicht erklaeren.Ich koennte zwar Tausend Sachen aufzaehlen, die ich scheisse fand', aber witzigerweise finden alle die Sachen die mich daran angekotzt haben gerade besonders toll.

Deswegen die zwei Sachen am Film die ich gut fand:
-Obi Wan war wesentlich besser als in Episode 1.
-Coruscant war goettlich

War der erste Film bei dem ich mir jemals ernsthaft ueberlegt habe vor dem Ende aus dem Kino zu gehen.
13.09.2002, 04:54 #14
Elessar
Beiträge: 495

Das einzige was mir dazu einfällt:
Lass mal die Türe sich selber öffnen, ich hatte auch schon Probleme mit Unlock und Wächtern, das Scirpt sähe dann so aus:
code\:

void main()
{
object oTuer = GetObjectByTag("marlen_door");
AssignCommand(oTuer, ActionUnlockObject(oTuer));
ActionOpenDoor(oTuer);
}

13.09.2002, 13:15 #15
Raziel2
Beiträge: 141

könnt ihr mir sagen wie ich scripten soll wenn ich will das ein NPC Leute Heilt wenn man mit dem NPC spricht
13.09.2002, 18:45 #16
Shamba
Beiträge: 37

Kopier doch einfach das Skript aus einem der Kampagnenmodule (z.B. Kapitel 1, das von Aribeth) ... Mom, ich guck mal kurz wie das heißt ... nw_d1_templeheal
Müsste gehen denke ich ...
13.09.2002, 21:51 #17
Clouty
Beiträge: 39

Kann jetzt erst wieder was posten, meine doofe kleine Schwester war mal wieder an meinem PC. Möchte gar nicht wissen was sie diesmal wieder hier angestellt hat daß nichts mehr ging.

@Rhaegar
Also ich fand/finde Episode II ganz geil. Jeder hat halt seine eigene Meinung. ;) Habe Episode II 6x im Kino gesehen. Finde es echt gut dargestellt wie Palpatine langsam aber unbeirrbar an die Macht kommt. Die "Liebesszenen" fand ich auch ganz gut, viele mochten das getue zwischen Anakin und Padmé ja nicht so. Allerding waren sehr viele Stellen doch arg abgehackt. Vorallem die Kämpfe, zB. Any vs. Dooku. Oder für mich wichtige Stellen fehlten, zB. bei Padmé's Eltern oder wie Sie C3PO fertigstellte. Tja, hebt George sich wohl alles für die SE-Edition 2006/2007 auf.
Wie fandest du den unseren Flummi Yoda? :D

@Elessar

Danke dir, werds mal probieren sobald ich mein NWN wieder installiert habe.

@Raziel2

Dafür habe ich ein Script, falls du es noch brauchst.

void FakeRestore(object oTarget);

void main()
{
object oPC = GetPCSpeaker();
object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oPC);
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
ActionPauseConversation();
ActionCastFakeSpellAtObject(SPELL_GREATER_RESTORATION, OBJECT_SELF);
ActionDoCommand(FakeRestore(oPC));
if(GetIsObjectValid(oHenchman))
{
ActionDoCommand(FakeRestore(oHenchman));
// checks to see if they have any cure crital wound potions; if not, creates it on them.
if (!GetIsObjectValid(GetItemPossessedBy(oHenchman,"NW_IT_MPOTION003")))
{
CreateItemOnObject("NW_IT_MPOTION003",oHenchman,3);
}
}
if(GetIsObjectValid(oAnimal))
{
ActionDoCommand(FakeRestore(oAnimal));
}
if(GetIsObjectValid(oFamiliar))
{
ActionDoCommand(FakeRestore(oFamiliar));
}
if(GetIsObjectValid(oDominated))
{
ActionDoCommand(FakeRestore(oDominated));
}
if(GetIsObjectValid(oSummoned))
{
ActionDoCommand(FakeRestore(oSummoned));
}
ActionResumeConversation();
}

void FakeRestore(object oTarget)
{
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER);

effect eBad = GetFirstEffect(oTarget);
//Search for negative effects
while(GetIsEffectValid(eBad))
{
if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
GetEffectType(eBad) == EFFECT_TYPE_CURSE ||
GetEffectType(eBad) == EFFECT_TYPE_DISEASE ||
GetEffectType(eBad) == EFFECT_TYPE_POISON ||
GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
{
//Remove effect if it is negative.
RemoveEffect(oTarget, eBad);
}
eBad = GetNextEffect(oTarget);
}
if(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
//Apply the VFX impact and effects
int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
effect eHeal = EffectHeal(nHeal);
if (nHeal > 0)
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget);
}

Gruß,
Clouty
Seite 1 von 1  1