Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 1 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 2 | AddRoomMessage() |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 3 | **************** |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 4 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 5 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 6 | FUNKTION |
| 7 | ======== |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 8 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 9 | void AddRoomMessage(string *msg, int time, mixed *func); |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 10 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 11 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 12 | DEFINIERT IN |
| 13 | ============ |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 14 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 15 | /std/room/description.c |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 16 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 17 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 18 | ARGUMENTE |
| 19 | ========= |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 20 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 21 | msg |
| 22 | Array von Strings mit den Meldungen. |
| 23 | time |
| 24 | Der Abstand zwischen zwei Meldungen in Sekunden. |
| 25 | func (optional) |
| 26 | String oder Array von Strings mit Funktionsnamen |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 27 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 28 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 29 | BESCHREIBUNG |
| 30 | ============ |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 31 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 32 | Mit dieser Funktion legt man fest, dass in bestimmten Zeitabstaenden |
| 33 | Meldungen an den Raum geschickt werden sollen. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 34 | |
Zesstra | 953f997 | 2017-02-18 15:37:36 +0100 | [diff] [blame] | 35 | Es wird alle time Sekunden zufaellig eine der in msg angegebenen |
| 36 | Meldungen ausgegeben. Hat man auch noch func angegeben, so wird |
| 37 | zusaetzlich diese Funktion (bei einem Array: eine zufaellig ausgesuchte |
| 38 | Funktion) im Raum aufgerufen. Als Parameter bekommt die Funktion die |
| 39 | Nummer der ausgegebenen Meldung. |
| 40 | |
| 41 | Bevor man allerdings jeden Raum mit AddRoomMessage() pflastert, sollte |
| 42 | man folgendes bedenken: |
| 43 | o Viele Meldungen in vielen Raeumen tendieren dazu, den Spielern auf |
| 44 | die Nerven zu gehen! |
| 45 | o Da das Timing ueber einen call_out() gesteuert wird, ist das Ganze |
| 46 | aus Sicht des GameDrivers auch noch relativ teuer! |
| 47 | Fazit: weniger ist mehr! |
| 48 | |
| 49 | |
| 50 | BEMERKUNGEN |
| 51 | =========== |
| 52 | |
| 53 | * Falls time < 15 Sekunden ist, wird auf 15 Sekunden aufgerundet. |
| 54 | * der Praefix Add... taeuscht hier. Ein Aufruf von AddRoomMessage() |
| 55 | ueberschreibt alle vorherigen Werte |
| 56 | * THIS_PLAYER() NICHT VERWENDEN! |
| 57 | In Funktionen, die durch AddRoomMessage() ausgeloest werden, darf |
| 58 | this_player() nicht verwendet werden. AddRoomMessage ist call_out- |
| 59 | gesteuert und speichert somit das this_player(). Damit ist this_player() |
| 60 | immer der Spieler, der den Raum geladen, also den Raum als erster |
| 61 | betreten hat. |
| 62 | Spieler also bitte selbst ueber filter(all_inventory(this_object()), |
| 63 | #'interactive) suchen. |
| 64 | |
| 65 | |
| 66 | BEISPIELE |
| 67 | ========= |
| 68 | |
| 69 | Es soll alle halbe Minute eine Meldung ausgegeben werden. Falls es |
| 70 | unter den Fuessen knackt, soll man zudem mit 30%-iger |
| 71 | Wahrscheinlichkeit zusammenzucken: |
| 72 | |
| 73 | inherit "/std/room"; |
| 74 | |
| 75 | void create() { |
| 76 | ::create(); |
| 77 | AddRoomMessage( ({ "In der Ferne schreit ein Kaeuzchen.\n", |
| 78 | "Es raschelt im Gebuesch.\n", |
| 79 | "Etwas knackt unter Deinen Fuessen.\n" }), |
| 80 | 30, ({"sound", "sound_more_rnd"}) ); |
| 81 | ... |
| 82 | } |
| 83 | |
| 84 | void sound(int msg) { |
| 85 | if (msg == 2) // Es hat geknackt... |
| 86 | if (random(10) < 3) // Schreck lass nach! ;-) |
| 87 | tell_room(this_object(), "Erschrocken faehrst Du zusammen!\n" ); |
| 88 | } |
| 89 | |
| 90 | // Extra-Beispiel: wir setzen die Wartedauer (Parameter tim) neu |
| 91 | void sound_more_rnd() { |
| 92 | sound(0); // die Message-Nummer ist hier unwichtig |
| 93 | SetProp(P_MSG_PROB, 25+random(20)); // neue Wartedauer |
| 94 | } |
| 95 | |
| 96 | |
| 97 | SIEHE AUCH |
| 98 | ========== |
| 99 | |
| 100 | Verwandt: tell_room(), ReceiveMsg() |
| 101 | Props: P_ROOM_MSG, P_FUNC_MSG, P_MSG_PROB |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 102 | |
| 103 | 2.Feb 2016 Gloinson |