the map file (make sure to change the byte before the string to the number
of its characters).
+Dialogs
+~~~~~~~
+
+dialog (int) (string) - loads the "string.txt" dialog with type "int" and enter
+ directing mode: Fly around, press numpad 1-10 to change the players' head
+ target, press 1-10 to define who is saying the current line and move on to
+ the next line. The type argument can be one of:
+ 0-9 = player index, activates when "attacking" them
+ 10+ = "special", activates automatically when in range; player ID is
+ the module of the type (e.g. type 18 would be special, player 8)
+ 40-49 = some other thing, someone really needs to cleanup this logic :)
+fixdialog (int) (string) - replaces the dialog of given index by the one
+ described in the "string.txt" file.
+ddialog (int) - deletes given dialog (if no argument or -1, deletes the last
+ dialog). Does not work when actually playing a dialog.
+play (int) - plays given dialog.
+
Graphics
~~~~~~~~
strcat(Hotspot::hotspots.back().text, "\n");
}
-void ch_dialogue(const char* args)
+void ch_dialog(const char* args)
{
int type;
char buf1[32];
Dialog::whichdialogue = Dialog::dialogs.size();
}
-void ch_fixdialogue(const char* args)
+void ch_fixdialog(const char* args)
{
char buf1[32];
int whichdi;
Dialog::currentDialog().participantyaw[playerId] = Person::players[playerId]->yaw;
}
-void ch_ddialogue(const char*)
+void ch_ddialog(const char* args)
{
- if (!Dialog::dialogs.empty()) {
+ if (Dialog::dialogs.empty() || Dialog::inDialog()) {
+ return;
+ }
+
+ int dlg = -1;
+ sscanf(args, "%d", &dlg);
+ if (dlg == -1) {
+ // Remove last entry
Dialog::dialogs.pop_back();
+ return;
}
+
+ if (dlg >= int(Dialog::dialogs.size())) {
+ // Invalid index, abort
+ return;
+ }
+
+ // Erase given index, higher indexes will be decreased by 1
+ Dialog::dialogs.erase(Dialog::dialogs.begin() + dlg);
}
void ch_dhs(const char*)
DECLARE_COMMAND(path)
DECLARE_COMMAND(hs)
DECLARE_COMMAND(dhs)
-DECLARE_COMMAND(dialogue)
-DECLARE_COMMAND(fixdialogue)
-DECLARE_COMMAND(ddialogue)
+DECLARE_COMMAND(dialog)
+DECLARE_COMMAND(fixdialog)
+DECLARE_COMMAND(ddialog)
DECLARE_COMMAND(fixtype)
DECLARE_COMMAND(fixrotation)
DECLARE_COMMAND(immobile)