Atrinik Server  4.0
resetmap.c
Go to the documentation of this file.
1 /*************************************************************************
2  * Atrinik, a Multiplayer Online Role Playing Game *
3  * *
4  * Copyright (C) 2009-2014 Alex Tokar and Atrinik Development Team *
5  * *
6  * Fork from Crossfire (Multiplayer game for X-windows). *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  * This program is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16  * GNU General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this program; if not, write to the Free Software *
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
21  * *
22  * The author can be reached at admin@atrinik.org *
23  ************************************************************************/
24 
32 #include <global.h>
33 #include <object.h>
34 
36 void command_resetmap(object *op, const char *command, char *params)
37 {
38  mapstruct *m, *newmap;
39  shstr *mappath;
40 
41  m = NULL;
42  mappath = NULL;
43 
44  if (params == NULL) {
45  m = op->map;
46  } else if (!map_path_isabs(params)) {
47  char *path;
48 
49  path = map_get_path(op->map, params, 0, NULL);
50  mappath = add_string(path);
51  efree(path);
52  } else {
53  mappath = add_string(params);
54  }
55 
56  if (mappath != NULL) {
57  m = has_been_loaded_sh(mappath);
58  free_string_shared(mappath);
59  }
60 
61  if (m == NULL) {
62  draw_info(COLOR_WHITE, op, "No such map.");
63  return;
64  }
65 
66  newmap = map_force_reset(m);
67 
68  if (newmap == NULL) {
69  draw_info_format(COLOR_WHITE, op, "Could not reset map: %s", m->path);
70  return;
71  }
72 
73  draw_info_format(COLOR_WHITE, op, "Successfully reset map: %s",
74  newmap->path);
75 }
shstr * path
Definition: map.h:568
struct mapdef * map
Definition: object.h:139
void command_resetmap(object *op, const char *command, char *params)
Definition: resetmap.c:36
mapstruct * map_force_reset(mapstruct *m)
Definition: map.c:2691
mapstruct * has_been_loaded_sh(shstr *name)
Definition: map.c:389
Definition: map.h:536