- break;
- }
-
- case OP_NEW:
- printf("OP_NEW: %d\n", buf[0]);
- sprintf(msgbuf, "new client %d connected", buf[0]);
- sysmsg(msgbuf);
-
- for (u = &me; u; u = u->next)
- {
- if (u->nr == buf[0])
- Error(ERR_EXIT, "multiplayer server sent duplicate player id");
- else
- v = u;
- }
-
- v->next = u = mmalloc(sizeof(struct user));
- u->nr = buf[0];
- u->name[0] = '\0';
- u->next = NULL;
+static void Handle_OP_START_PLAYING()
+{
+ LevelDirTree *new_leveldir;
+ int new_level_nr;
+ int dummy; /* !!! HAS NO MEANING ANYMORE !!! */
+ unsigned long new_random_seed;
+ char *new_leveldir_identifier;
+
+ new_level_nr = (buffer[2] << 8) + buffer[3];
+ dummy = (buffer[4] << 8) + buffer[5];
+ new_random_seed =
+ (buffer[6] << 24) | (buffer[7] << 16) | (buffer[8] << 8) | (buffer[9]);
+ new_leveldir_identifier = (char *)&buffer[10];
+
+ new_leveldir = getTreeInfoFromIdentifier(leveldir_first,
+ new_leveldir_identifier);
+ if (new_leveldir == NULL)
+ {
+ Error(ERR_WARN, "no such level identifier: '%s'", new_leveldir_identifier);