World of Gothic Archiv > Editing
Smalltalk im Sitzen
Seite 1 von 1  1 
14.06.2003, 12:41 #1
Auron_X
Beiträge: 929
Smalltalk im Sitzen
code\:

func void ZS_SitAround ()
{
PrintDebugNpc (PD_TA_FRAME, "ZS_SitAround");

B_SetPerception (self);

//-------- Grobpositionierung --------
AI_StandUp (self);
AI_SetWalkmode (self, NPC_WALK);
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart

};

func int ZS_SitAround_Loop ()
{
PrintDebugNpc (PD_TA_LOOP,"ZS_SitAround_Loop");

//-------- Sitzgelegenheit suchen ! --------
if (!C_BodyStateContains(self, BS_SIT))
{
PrintDebugNpc (PD_TA_CHECK, "...NSC sitzt noch nicht!");
if (Wld_IsMobAvailable(self,"BENCH"))
{
PrintDebugNpc (PD_TA_CHECK, "...Bank gefunden!");
AI_UseMob (self,"BENCH",1); // Benutze den Mob einmal bis zum angegebenen State
self.aivar [AIV_HangAroundStatus] = 2;
}
else if (Wld_IsMobAvailable(self,"CHAIR"))
{
PrintDebugNpc (PD_TA_CHECK, "...Stuhl gefunden!");
AI_UseMob (self,"CHAIR",1); // Benutze den Mob einmal bis zum angegebenen State
self.aivar [AIV_HangAroundStatus] = 3;
}
else if (Wld_IsMobAvailable(self,"SMALL THRONE"))
{
PrintDebugNpc (PD_TA_CHECK, "...kl. Thron gefunden!");
AI_UseMob (self,"SMALL THRONE",1); // Benutze den Mob einmal bis zum angegebenen State
self.aivar [AIV_HangAroundStatus] = 4;
}
else if (Wld_IsFPAvailable (self, "SIT"))
{
PrintDebugNpc (PD_TA_CHECK, "...FP 'SIT' gefunden!");
AI_GotoFP (self, "SIT");
AI_AlignToFP( self ); //Richte Dich aus
AI_PlayAniBS (self, "T_STAND_2_SIT", BS_SIT);
self.aivar [AIV_HangAroundStatus] = 1;
}
else
{
PrintDebugNpc (PD_TA_CHECK, "...keine Sitzgelegenheit gefunden!");
AI_StartState (self, ZS_StandAround, 1, ""); // ...also stehen wir!
return LOOP_CONTINUE;
};
}
//-------- Zufalls-Animationen spielen ! --------
else
{

Print ("Gleich muss Smalltalk beginnen");

if (Wld_DetectNpc(self, -1, ZS_SitAround, -1)) && (Npc_GetDistToNpc (self, other)<HAI_DIST_SITSMALLTALK))
{
Print ("!Smalltalk wurde aufgerufen!");
// Neue Texte für Smalltalk (kurze, gemurmelte, Wortfetzen, die als SVMs vorliegen)

// ...wenn Du meinst...
// ...kann schon sein...
// ...war nicht besonders schlau....
// ...ich halt mich da lieber raus...
// ...das ist ein Problem, aber nicht mein Problem...
// ...war doch klar, daß das Ärger gibt...
// ...aber behalt's für Dich, muß nicht gleich jeder wissen...
// ...das passiert mir nicht...
// ...an der Gechichte muß wohl doch was dran sein...
// ...man muß eben aufpassen was man rumerzählt...
// ...solange ich damit nichts zu tun habe...
// ...man darf auch nicht alles glauben, was man hört...
// ...in seiner Haut will ich trotzdem nicht stecken...
// ...immer wieder die selbe Leier...
// ...manche lernen eben garnichts dazu...
// ...früher wäre das ganz anders gelaufen...
// ...gequatscht wird viel...
// ...ich hör nicht mehr auf das Gefasel...
// ...verlaß Dich auf jemanden und Du bist verlassen, das ist eben so...
// ...ich glaube kaum, daß sich daran was ändern wird...
// ...wahrscheinlich hast Du recht...
// ...erstmal abwarten. Es wird nichts so heiß gegessen, wie es gekocht wird...
// ...ich dachte, das wäre schon lange geklärt, aber das ist wohl nicht so...
// ...laß uns über lieber über was anderes reden...

var int talktime;
talktime = Hlp_Random (200);
if (talktime < 5)
{
B_Say ( self, NULL, "$SMALLTALK01");
}
else if (talktime < 10)
{
B_Say ( self, NULL, "$SMALLTALK02");
}
else if (talktime < 15)
{
B_Say ( self, NULL, "$SMALLTALK03");
}
else if (talktime < 20)
{
B_Say ( self, NULL, "$SMALLTALK04");
}
else if (talktime < 25)
{
B_Say ( self, NULL, "$SMALLTALK05");
}
else if (talktime < 30)
{
B_Say ( self, NULL, "$SMALLTALK06");
}
else if (talktime < 35)
{
B_Say ( self, NULL, "$SMALLTALK07");
}
else if (talktime < 40)
{
B_Say ( self, NULL, "$SMALLTALK08");
}
else if (talktime < 45)
{
B_Say ( self, NULL, "$SMALLTALK09");
}
else if (talktime < 50)
{
B_Say ( self, NULL, "$SMALLTALK10");
}
else if (talktime < 55)
{
B_Say ( self, NULL, "$SMALLTALK11");
}
else if (talktime < 60)
{
B_Say ( self, NULL, "$SMALLTALK12");
}
else if (talktime < 65)
{
B_Say ( self, NULL, "$SMALLTALK13");
}
else if (talktime < 70)
{
B_Say ( self, NULL, "$SMALLTALK14");
}
else if (talktime < 75)
{
B_Say ( self, NULL, "$SMALLTALK15");
}
else if (talktime < 80)
{
B_Say ( self, NULL, "$SMALLTALK16");
}
else if (talktime < 85)
{
B_Say ( self, NULL, "$SMALLTALK17");
}
else if (talktime < 90)
{
B_Say ( self, NULL, "$SMALLTALK18");
}
else if (talktime < 95)
{
B_Say ( self, NULL, "$SMALLTALK19");
}
else if (talktime < 100)
{
B_Say ( self, NULL, "$SMALLTALK20");
}
else if (talktime < 105)
{
B_Say ( self, NULL, "$SMALLTALK21");
}
else if (talktime < 110)
{
B_Say ( self, NULL, "$SMALLTALK22");
}
else if (talktime < 115)
{
B_Say ( self, NULL, "$SMALLTALK23");
}
else if (talktime < 120)
{
B_Say ( self, NULL, "$SMALLTALK24");
};
return LOOP_CONTINUE;
};


Print ("Der Smalltalk wurde umgangen");

var int sitreaktion;
sitreaktion = Hlp_Random (100);
PrintDebugInt (PD_TA_DETAIL, "...Zufallsani-Wurf: ", sitreaktion);
if (sitreaktion >= 95)
{
B_Pee(self);
}
else if (sitreaktion >= 90)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_1",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_1",BS_SIT);
};
}
else if (sitreaktion >= 85)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_2",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_2",BS_SIT);
};
}
else if (sitreaktion >= 80)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_3",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_3",BS_SIT);
};
}
else if (sitreaktion >= 75)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_4",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_4",BS_SIT);
};
};
};

AI_Wait (self, 1);
return LOOP_CONTINUE;
};

func void ZS_SitAround_End ()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_SitAround_End");

if (self.aivar[AIV_HangAroundStatus] == 1)
{
AI_PlayAni (self, "T_SIT_2_STAND");
self.aivar[AIV_HangAroundStatus] = 0;
}
else if (self.aivar[AIV_HangAroundStatus] == 4)
{
AI_UseMob (self,"SMALL THRONE",-1);
self.aivar[AIV_HangAroundStatus] = 0;
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_UseMob (self,"BENCH",-1);
self.aivar[AIV_HangAroundStatus] = 0;
}
else if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_UseMob (self,"CHAIR",-1);
self.aivar[AIV_HangAroundStatus] = 0;
};
};



So, eigentlich soll der nur mit anderen quatschen wenn er sitzt, klappt aber net.
Nur so zur Info: HAI_DIST_SITSMALLTALK ist auch definiert, es gibt keine Fehlermeldungen... an der Entfernung liegt es auch definitiv net.

Wisst ihr rat?
14.06.2003, 15:48 #2
GülleMüller
Beiträge: 472

Hi,
quote:
So, eigentlich soll der nur mit anderen quatschen wenn er sitzt, klappt aber net.

Ähm, wie klappt nicht?
Redet der immer, oder nie(also auch wenn er sitzt und ein anderer NPC daneben ist nicht)?

Mit diesen Infos kann ich dir net viel weiterhelfen.
14.06.2003, 15:55 #3
Auron_X
Beiträge: 929

Also, der soll mit denen reden... aber des macht er net, er redet einfach nicht.

Die Texte die ich da noch im Script habe:
davon erscheint der gelich muss Smalltalk beginnen und Smalltalk wurde umgangen, also hat er den irgendwie net ausgeführt... als ob die Bedingung was falsches hat... übrigens habe ich die Entfernung in der Bedingung testweise auf 5000 hochgesetzt, nachdem es bei den Standard 500 nicht geklappt hat.

cya
14.06.2003, 19:57 #4
GülleMüller
Beiträge: 472
Berichtigung: Mein Fehler
Sorry, diese Infos (also die o.g. Funktionen) hätten gereicht, WENN: Ich nicht so total "aus den Scripts" gewesen wäre ;)

Also: Vor if (Wld_DetectNpc(self,-1,ZS_SitAround,-1)) && (Npc_GetDistToNpc(self, other)< HAI_DIST_SITSMALLTALK)) sollte Npc_PerceiveAll(self); stehen, damit Wld_DetectNpc() auch was zurückliefert. Siehe externals.d
(Zitat:
FUNC VOID Npc_PerceiveAll (VAR C_NPC self) {};
// Nimm alle Objekte in Wahrnehmungsreichweite wahr, die dann mit WLD_DetectNpc und Wld_DetectItem auswertbar sind
)

Denk mal des isses,
GüMü::~GüMü();
14.06.2003, 21:07 #5
Auron_X
Beiträge: 929

Ah jo... naja, bisher hatte ich noch net viel mit dem ganzen Wahrnehmungskram zu tun...
Auf jeden Fall THX!!!!:)

cya
Seite 1 von 1  1