blob: 70d312e1eeb22b6fb9f563e6040a93897e99bc7c [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2SetChats()
3**********
4
5
6FUNKTION
7========
8
9 void SetChats(int chance,mixed strs);
10
11
12DEFINIERT IN
13============
14
15 /std/npc/chat.c
16
17
18ARGUMENTE
19=========
20
21 chance
22 Prozentuale Wahrscheinlichkeit einer Ausgabe
23 strs
24 Stringarray mit den Monsterchats
25
26
27BESCHREIBUNG
28============
29
30 Der NPC gibt mit der Wahrscheinlichkeit <chance> pro Heartbeat einen
31 zufaellig gewaehlten Text aus dem Array <strs> von sich.
32 Die Arrayelemente koennen auch Closures oder
33 process_string()-Funktionen ("@@func@@") enthalten, die dann
34 aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
35 (Fuer keine Ausgabe dann Leerstring "" zurueckgeben!)
36 In diesen Funktionen ist this_player() das Monster selbst!
37 Fuer Zeilenumbrueche ist immer selbst zu sorgen.
38
39
40RUECKGABEWERT
41=============
42
43 keiner
44
45
46BEISPIELE
47=========
48
49 Ein einfaches Beispiel:
50 // Prototype fuer Closure.
51 static string info1();
52 void create()
53 { ...
54 SetChats(20,
55 ({"Der Ork sagt: Hau ab, bevor ich Dich fresse.\n",
56 "Der Ork grinst Dich unverschaemt an.\n",
57 "Der Ork wedelt mit seinem Saebel vor Deinem Gesicht herum.\n",
58 "Der Ork droht Dir mit der Faust.\n",
59 #'info1,
60 "@@info2@@"}));
61 }
62 // Funktion als Closure. Prototype notwendig!
63 static string info1()
64 { if(QueryProp(P_HP)<QueryProp(P_ALIGN))
65 return"Gleich werde ich von hier fliehen!\n";
66 return"";
67 }
68 // Funktion als process_string().
69 string info2()
70 { return QueryProp(P_HP)==QueryProp(P_MAX_HP)?
71 "Der Ork grinst: Mir geht es fantastisch!\n":
72 "Der Ork seufzt: Mir ging es wirklich schon mal besser.\n";
73 }
74
75
76BEMERKUNGEN
77===========
78
79 Im Kampf werden keine Chats ausgegeben. Es ist dann SetAttackChats()
80 zu verwenden.
81 Funktionen als process_string() sollte man nicht mehr verwenden.
82 <chance> wird in der Property P_CHAT_CHANCE abgelegt. Um einen NPC
83 voruebergehend 'stillzulegen', kann man P_CHAT_CHANCE auf 0 setzen.
84 Wenn kein Spieler anwesend ist, haben NPC in der Regel keinen Heartbeat,
85 weswegen dann auch die Chats ausgeschaltet sind.
86 Spieler koennen NPC 'stillen', d.h. Chats und AttackChats abschalten.
87
88
89SIEHE AUCH
90==========
91
92 P_CHAT_CHANCE, SetAttackChats(), process_string()
93
94Last modified: Sat Jan 18 18:48:06 2003 by Patryn