ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/c_wiz.C
(Generate patch)

Comparing deliantra/server/server/c_wiz.C (file contents):
Revision 1.27 by root, Sat Dec 23 13:56:25 2006 UTC vs.
Revision 1.28 by root, Sat Dec 30 10:16:11 2006 UTC

244 } 244 }
245 245
246 return 1; 246 return 1;
247} 247}
248 248
249//TODO
250#if 0
249int 251int
250command_save_overlay (object *op, char *params) 252command_save_overlay (object *op, char *params)
251{ 253{
252 if (!op) 254 if (!op)
253 return 0; 255 return 0;
264 266
265 ready_map_name (op->map->path, 0); 267 ready_map_name (op->map->path, 0);
266 268
267 return 1; 269 return 1;
268} 270}
271#endif
269 272
270int 273int
271command_shutdown (object *op, char *params) 274command_shutdown (object *op, char *params)
272{ 275{
273 if (op != NULL && !QUERY_FLAG (op, FLAG_WIZ)) 276 if (op != NULL && !QUERY_FLAG (op, FLAG_WIZ))
274 { 277 {
275 new_draw_info (NDI_UNIQUE, 0, op, "Sorry, you can't shutdown the server."); 278 new_draw_info (NDI_UNIQUE, 0, op, "Sorry, you can't shutdown the server.");
276 return 1; 279 return 1;
277 } 280 }
278 281
279 cleanup (); 282 cleanup (0);
283
280 /* not reached */ 284 /* not reached */
281 return 1; 285 return 1;
282} 286}
283 287
284int 288int
323 object *dummy; 327 object *dummy;
324 player *pl; 328 player *pl;
325 329
326 if (!op) 330 if (!op)
327 return 0; 331 return 0;
332
328 if (params == NULL) 333 if (params == NULL)
329 { 334 {
330 new_draw_info (NDI_UNIQUE, 0, op, "Usage: arrest <player>."); 335 new_draw_info (NDI_UNIQUE, 0, op, "Usage: arrest <player>.");
331 return 1; 336 return 1;
332 } 337 }
338
333 pl = get_other_player_from_name (op, params); 339 pl = get_other_player_from_name (op, params);
334 if (!pl) 340 if (!pl)
335 return 1; 341 return 1;
342
336 dummy = get_jail_exit (pl->ob); 343 dummy = get_jail_exit (pl->ob);
337 if (!dummy) 344 if (!dummy)
338 { 345 {
339 /* we have nowhere to send the prisoner.... */ 346 /* we have nowhere to send the prisoner.... */
340 new_draw_info (NDI_UNIQUE, 0, op, "can't jail player, there is no map to hold them"); 347 new_draw_info (NDI_UNIQUE, 0, op, "can't jail player, there is no map to hold them");
341 return 0; 348 return 0;
342 } 349 }
343 enter_exit (pl->ob, dummy); 350
351 pl->ob->enter_exit (dummy);
344 dummy->destroy (); 352 dummy->destroy ();
345 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You have been arrested."); 353 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You have been arrested.");
346 new_draw_info (NDI_UNIQUE, 0, op, "OK."); 354 new_draw_info (NDI_UNIQUE, 0, op, "OK.");
347 LOG (llevInfo, "Player %s arrested by %s\n", &pl->ob->name, &op->name); 355 LOG (llevInfo, "Player %s arrested by %s\n", &pl->ob->name, &op->name);
348 return 1; 356 return 1;
377 385
378 dummy = object::create (); 386 dummy = object::create ();
379 EXIT_PATH (dummy) = op->map->path; 387 EXIT_PATH (dummy) = op->map->path;
380 EXIT_X (dummy) = op->x + freearr_x[i]; 388 EXIT_X (dummy) = op->x + freearr_x[i];
381 EXIT_Y (dummy) = op->y + freearr_y[i]; 389 EXIT_Y (dummy) = op->y + freearr_y[i];
382 enter_exit (pl->ob, dummy); 390 pl->ob->enter_exit (dummy);
383 dummy->destroy (); 391 dummy->destroy ();
384 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You are summoned."); 392 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You are summoned.");
385 new_draw_info (NDI_UNIQUE, 0, op, "OK."); 393 new_draw_info (NDI_UNIQUE, 0, op, "OK.");
386 394
387 return 1; 395 return 1;
421 429
422 dummy = object::create (); 430 dummy = object::create ();
423 EXIT_PATH (dummy) = pl->ob->map->path; 431 EXIT_PATH (dummy) = pl->ob->map->path;
424 EXIT_X (dummy) = pl->ob->x + freearr_x[i]; 432 EXIT_X (dummy) = pl->ob->x + freearr_x[i];
425 EXIT_Y (dummy) = pl->ob->y + freearr_y[i]; 433 EXIT_Y (dummy) = pl->ob->y + freearr_y[i];
426 enter_exit (op, dummy); 434 op->enter_exit (dummy);
427 dummy->destroy (); 435 dummy->destroy ();
428 if (!op->contr->hidden) 436 if (!op->contr->hidden)
429 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You see a portal open."); 437 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You see a portal open.");
430 new_draw_info (NDI_UNIQUE, 0, op, "OK."); 438 new_draw_info (NDI_UNIQUE, 0, op, "OK.");
431 return 1; 439 return 1;
1210 new_draw_info (NDI_UNIQUE, 0, op, "No such player."); 1218 new_draw_info (NDI_UNIQUE, 0, op, "No such player.");
1211 return 1; 1219 return 1;
1212} 1220}
1213 1221
1214int 1222int
1215command_reset (object *op, char *params)
1216{
1217 maptile *m;
1218 object *dummy = NULL, *tmp = NULL;
1219
1220 if (params == NULL)
1221 {
1222 new_draw_info (NDI_UNIQUE, 0, op, "Reset what map [name]?");
1223 return 1;
1224 }
1225
1226 if (strcmp (params, ".") == 0)
1227 params = op->map->path;
1228
1229 m = has_been_loaded (params);
1230 if (m == NULL)
1231 {
1232 new_draw_info (NDI_UNIQUE, 0, op, "No such map.");
1233 return 1;
1234 }
1235
1236 if (m->in_memory != MAP_SWAPPED)
1237 {
1238 if (m->in_memory != MAP_IN_MEMORY)
1239 {
1240 LOG (llevError, "Tried to swap out map which was not in memory.\n");
1241 return 0;
1242 }
1243
1244 /*
1245 * Only attempt to remove the player that is doing the reset, and not other
1246 * players or wiz's.
1247 */
1248 if (op->map == m)
1249 {
1250 dummy = object::create ();
1251 dummy->map = NULL;
1252 EXIT_X (dummy) = op->x;
1253 EXIT_Y (dummy) = op->y;
1254 EXIT_PATH (dummy) = op->map->path;
1255 op->remove ();
1256 op->map = NULL;
1257 tmp = op;
1258 }
1259 swap_map (m);
1260 }
1261
1262 if (m->in_memory == MAP_SWAPPED)
1263 {
1264 LOG (llevDebug, "Resetting map %s.\n", m->path);
1265
1266 /* setting this effectively causes an immediate reload */
1267 m->reset_time = 1;
1268 flush_old_maps ();
1269 new_draw_info (NDI_UNIQUE, 0, op, "OK.");
1270
1271 if (tmp)
1272 {
1273 enter_exit (tmp, dummy);
1274 dummy->destroy ();
1275 }
1276
1277 return 1;
1278 }
1279 else
1280 {
1281 player *pl;
1282 int playercount = 0;
1283
1284 /* Need to re-insert player if swap failed for some reason */
1285 if (tmp)
1286 {
1287 insert_ob_in_map (op, m, NULL, 0);
1288 dummy->destroy ();
1289 }
1290
1291 new_draw_info (NDI_UNIQUE, 0, op, "Reset failed, couldn't swap map, the following players are on it:");
1292
1293 for_all_players (pl)
1294 if (pl->ob->map == m && pl->ob != op)
1295 {
1296 new_draw_info_format (NDI_UNIQUE, 0, op, "%s", &pl->ob->name);
1297 playercount++;
1298 }
1299
1300 if (!playercount)
1301 new_draw_info (NDI_UNIQUE, 0, op, "hmm, I don't see any other players on this map, something else is the problem.");
1302 return 1;
1303 }
1304}
1305
1306int
1307command_nowiz (object *op, char *params) 1223command_nowiz (object *op, char *params)
1308{ /* 'noadm' is alias */ 1224{ /* 'noadm' is alias */
1309 CLEAR_FLAG (op, FLAG_WIZ); 1225 CLEAR_FLAG (op, FLAG_WIZ);
1310 CLEAR_FLAG (op, FLAG_WIZPASS); 1226 CLEAR_FLAG (op, FLAG_WIZPASS);
1311 CLEAR_FLAG (op, FLAG_WIZCAST); 1227 CLEAR_FLAG (op, FLAG_WIZCAST);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines