World of Gothic Archiv > NWN-Hilfe
Meine Npcs sind mir zu Höflich
Seite 1 von 1  1 
21.07.2002, 23:05 #1
Sparschwein
Beiträge: 44
Meine Npcs sind mir zu Höflich
Habe ein Paar Npcs Um Einen Tisch sitzen, wenn ein Spieler sie Anspricht Sollen sie Sitzen bleiben, und Ihren Satz sagen, oder was auch immer.
Wie kann ich sie an den Stuhl nageln?`
Und wenn ich sie Angreifen lassen will, wie bekomme ich sie wieder hoch :D
22.07.2002, 08:08 #2
Gawain15
Beiträge: 1.084

Irgendwo hier schwirrt ein Script rum mit dem die NPCs sitzen bleiben wenn du sie ansprichst... ich kuck nachher nochmal genauer...
22.07.2002, 08:35 #3
Gawain15
Beiträge: 1.084

Soderle bei OnConversation vor der letzten Klammer (}) einfügen:

int nStuhl = 1;
object oStuhl;
oChair = GetNearestObjectByTag("Dein Stuhl", OBJECT_SELF, nStuhl);
ActionSit(oStuhl);

Der Stuhl sollte auch der Stuhl sein auf dem er gerade sitzt.
22.07.2002, 17:47 #4
Silvan
Beiträge: 12
Fehlermeldung
Folgendes Script unter Con...
{
int nMatch = GetListenPatternNumber();
object oShouter = GetLastSpeaker();
object oIntruder;

if (nMatch == -1 && GetCommandable(OBJECT_SELF))
{
ClearAllActions();
BeginConversation();
}
else
if(nMatch != -1 && GetIsObjectValid(oShouter) && !GetIsPC(oShouter) && GetIsFriend(oShouter))
{
if(nMatch == 4)
{
oIntruder = GetLocalObject(oShouter, "NW_BLOCKER_INTRUDER");
}
else if (nMatch == 5)
{
oIntruder = GetLastHostileActor(oShouter);
if(!GetIsObjectValid(oIntruder))
{
oIntruder = GetAttemptedAttackTarget();
if(!GetIsObjectValid(oIntruder))
{
oIntruder = GetAttemptedSpellTarget();
if(!GetIsObjectValid(oIntruder))
{
oIntruder = OBJECT_INVALID;
}
}
}
}
RespondToShout(oShouter, nMatch, oIntruder);
}


if(GetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT))
{
SignalEvent(OBJECT_SELF, EventUserDefined(1004));
}
int nChair = 1;
object oChair;
oChair = GetNearestObjectByTag(Chair, OBJECT_SELF, nChair);
ActionSit(oChair);
}

Folgende Fehlermeldung:
22.07.02 18:47:38: Fehler. 'sitzen_talk' konnte nicht kompiliert werden.
sitzen_talk.nss(62): FEHLER: VARIABLE OHNE TYP DEFINIERT

Was ist falsch?
Gruß
Silvan
22.07.2002, 18:40 #5
Levi
Beiträge: 43

Du musst das erste Chair in GetNearestObjectByTag ja auch in ""s setzen. ;)
23.07.2002, 12:16 #6
Erevain
Beiträge: 253

Frisch gestohlen aus dem Bioware-Forum: :)


void main()
{
if(GetCommandable(OBJECT_SELF)){
//This sets the NPC as the speaker
{
BeginConversation();
//This starts the conversation script.
}
ClearAllActions();
// Clears the actions so the NPC will not follow you with his/her eyes
int nChair = 1;
object oChair;
oChair = GetNearestObjectByTag("chair01", OBJECT_SELF, nChair);
ActionSit(oChair);
//Sits the NPC down
}
}
23.07.2002, 13:44 #7
Sparschwein
Beiträge: 44

Hm Wenn ich mir mit meinen newbieaugen den Script angucke, setzt er sich doch erst nach dem Gepräch hin ?
25.07.2002, 12:03 #8
Erevain
Beiträge: 253

Richtig gesehen, stimmt auffallend. :(
25.07.2002, 12:42 #9
Levi
Beiträge: 43

Naja, fast klappt das skript schon.
Ich hab was ähnliches mit nem Heini der auf dem Boden sitzt.
Wenn ich dem im OnConversation-Skript direkt sage "ClearAllActions" und "ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS,1.0,4000.0);"
bleibt er sitzen.
Das problem: Die Conversation beginnt so nicht.
Wenn ich BeginConversation vor das ClearAllActions mache, so wie in Erevains skript, wird das Gespräch mit ClearAllActions auch gelöscht, sprich der Kerl bleibt stumm. Mach ichs dahinter steht er trotzdem auf.
Seite 1 von 1  1