World of Gothic Archiv > NWN-Hilfe
Kleine Scriptfrage
Seite 1 von 1  1 
30.07.2002, 20:10 #1
Ta'idan
Beiträge: 152
Kleine Scriptfrage
Em nun...
Ich bin grad dabei in nem Gasthaus ein par Leute sitzen zu lassen :)
Und da stellt sich mir als "Script? Wasn das" User :D die Frage ob ich jetzt für jeden einzelnen NPC ein eigenes Script machen muss was dann natürlich auch unter eigenem Namen abgeschpeichert wird.
Dazu jeder Sitzgelegenheit nen Unique Tag geben.

Kann man das nich so machen das sich der NPC den nähesten Gegenstand mit Tag "XY" schnappt?

[Nachtrag]
Em nochwas... OnHeartBeat hab ich wohl selbst sichtig verstanden :) (Wird ständig ausgefüht so zu sagen oder?)
Also der PC setzt sich wieder hin nachdem ich ihn angesprochen habe aber er dreht sich immer in meine Richtung... sieht etwas komisch aus auf einem Stuhl :D
Kann man auch unterbinden das man ihn ansprechen kann?

Was ich jetzt garnich überlegt hab... wenn das Sitz Script bei OnHeartBeat steht setzt der PC sich dann auch hin wärend ich mit ihm rede?
Kann man das nich auch so machen der der PC sitzen bleibt? bzw sich auf einem Hocker (ohne Lehne) sich drehen darf auf einem stuhl einfach sitzen bleibt oder eben aufsteht und sich danach wieder richtig hinsetzt`?

BTW : Gibts nicht irgendwo in diesem riesigen Internet ein Script Tut auf deutsch das gaaaanz einfach anfängt die grundlagen zu erklären... und das bitte nich in RPG Style Sprache...das is nämlich grausam.
30.07.2002, 20:18 #2
Leman Russ
Beiträge: 47

Nein das musst du nicht;

Wenn sich mehrere NPC auf Stühle setzen sollen, dann beutzt du für jeden Stuhl den gleichen Tag und für die NPC's OBJECT_SELF

das sollte dann so aussehn!

void main()
{
int nChair = 1;
object oChair;
oChair = GetNearestObjectByTag("Stuhl", OBJECT_SELF, nChair);
ActionSit(oChair);
}
}

Wobei Stuhl der Tag des Stuhls ist!
Einfach bei OnSpawn eintragen
30.07.2002, 20:24 #3
Ta'idan
Beiträge: 152

Aso... und dann schnapps sich der NPC also automatisch den nähesten Stuhl ja?
30.07.2002, 20:48 #4
Leman Russ
Beiträge: 47

Jap, er schnappt sich den nächsten Stuhl mit dem Tag der im script steht!
30.07.2002, 21:01 #5
Ta'idan
Beiträge: 152

Ok thx :)
Dann weiß ich das jetzt auch schonmal.
01.08.2002, 02:17 #6
Ta'idan
Beiträge: 152

Sooo dann meld ich mich ma wieder... langsam check ich die Scripts etwas :)
Habe hier ein nettes im Forum gefunden... weiß aber nicht mehr in welchem Thread und von wem.
code\:

void main()
{
if (!GetIsInCombat() && !IsInConversation(OBJECT_SELF)) // Kontrolle ob NPC nicht in Kampf oder Gespaerch
if (GetCurrentAction() != ACTION_SIT) // Kontrolle ob NPC nicht schon sitzt
{
ClearAllActions();
int i = 1;
object oChair = GetNearestObjectByTag("sitobj", OBJECT_SELF,i);
int bFoundChair = FALSE;
while (bFoundChair == FALSE && GetIsObjectValid(oChair) == TRUE)
{
if (GetIsObjectValid(GetSittingCreature(oChair)) == FALSE)
{
bFoundChair = TRUE;
ActionSit(oChair);
}
else
{
i++;
oChair = GetNearestObjectByTag("sitobj", OBJECT_SELF,i);
}
}
if (bFoundChair == FALSE)
{
ClearAllActions();
ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD);
ActionRandomWalk(); //Hab ich selbst dazu gemacht ;)
}
}
}


Ich hätte gerne das der NPC jetzt erstmal für eine bestimme Zeit ActionRandomWalk(); ausführt und halt erstmal nur durch die gegen läuft.
Wenn es geht sogar so lange bis ein Platz frei ist.
Kann ich auch irgendwie etwas einbauen das durch zufall bestimmt ob ein NPC jetzt aufsteht irgendwo hin geht (z.B. zum Wirt und sich was neues zu Trinken holt :D) und dann das Script von vorne los geht?
Em das soll er natürlich nich machen wenn er garnicht gesessen hat. aber dafür gibts ja Variablen (so doof bin ich nich ;))

btw : wofür is die variable i gut?
01.08.2002, 12:19 #7
GuradonHellsing
Beiträge: 232

erstma ja alles ist mögich wenn man genug aufwand betreibt.

das i steht für das so und sovielete object mit der kennung da z.b. alle stühle den gleichen tag ham wird das i immer weiter hochgezählt bis ein stuhl nicht besetzt ist.
Seite 1 von 1  1