X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=src%2Flib%2Fcommands%2Fsdump.c;h=97ca3708d9c208929c2766ea633a4832261fe47e;hp=6b91c90d03b5dde03ecae78e03a8e62a286ecee8;hb=9b7adfbe;hpb=5f263a7753dc728809ff85c993af975f6c76e61e diff --git a/src/lib/commands/sdump.c b/src/lib/commands/sdump.c index 6b91c90d0..97ca3708d 100644 --- a/src/lib/commands/sdump.c +++ b/src/lib/commands/sdump.c @@ -48,227 +48,361 @@ int sdump(void) { - int nships; - struct nstr_item ni; - struct shpstr ship; - int vec[I_MAX+1]; - int field[128]; - struct natstr *np; - int n,i; - time_t now; + int nships; + struct nstr_item ni; + struct shpstr ship; + int vec[I_MAX + 1]; + int field[128]; + struct natstr *np; + int n, i; + time_t now; - if (!snxtitem(&ni, EF_SHIP, player->argp[1])) - return RET_SYN; - prdate(); + if (!snxtitem(&ni, EF_SHIP, player->argp[1])) + return RET_SYN; + prdate(); - if (!player->argp[2]) { - for (n = 1; n <= 34; n++) field[n-1] = n; - field[n-1] = 0; - } else { - n = 2; - i = 0; - while (player->argp[n]) { - if (!strcmp("type",player->argp[n])) { - field[i++] = 1; - } else if (!strcmp("x",player->argp[n])) { - field[i++] = 2; - } else if (!strcmp("y",player->argp[n])) { - field[i++] = 3; - } else if (!strcmp("flt",player->argp[n])) { - field[i++] = 4; - } else if (!strcmp("eff",player->argp[n])) { - field[i++] = 5; - } else if (!strcmp("civ",player->argp[n])) { - field[i++] = 6; - } else if (!strcmp("mil",player->argp[n])) { - field[i++] = 7; - } else if (!strcmp("uw",player->argp[n])) { - field[i++] = 8; - } else if (!strcmp("food",player->argp[n])) { - field[i++] = 9; - } else if (!strcmp("pln",player->argp[n])) { - field[i++] = 10; - } else if (!strcmp("he",player->argp[n])) { - field[i++] = 11; - } else if (!strcmp("xl",player->argp[n])) { - field[i++] = 12; - } else if (!strcmp("land",player->argp[n])) { - field[i++] = 13; - } else if (!strcmp("mob",player->argp[n])) { - field[i++] = 14; - } else if (!strcmp("fuel",player->argp[n])) { - field[i++] = 15; - } else if (!strcmp("tech",player->argp[n])) { - field[i++] = 16; - } else if (!strcmp("shell",player->argp[n])) { - field[i++] = 17; - } else if (!strcmp("gun",player->argp[n])) { - field[i++] = 18; - } else if (!strcmp("petrol",player->argp[n])) { - field[i++] = 19; - } else if (!strcmp("iron",player->argp[n])) { - field[i++] = 20; - } else if (!strcmp("dust",player->argp[n])) { - field[i++] = 21; - } else if (!strcmp("bar",player->argp[n])) { - field[i++] = 22; - } else if (!strcmp("oil",player->argp[n])) { - field[i++] = 23; - } else if (!strcmp("lcm",player->argp[n])) { - field[i++] = 24; - } else if (!strcmp("hcm",player->argp[n])) { - field[i++] = 25; - } else if (!strcmp("rad",player->argp[n])) { - field[i++] = 26; - } else if (!strcmp("def",player->argp[n])) { - field[i++] = 27; - } else if (!strcmp("spd",player->argp[n])) { - field[i++] = 28; - } else if (!strcmp("vis",player->argp[n])) { - field[i++] = 29; - } else if (!strcmp("rng",player->argp[n])) { - field[i++] = 30; - } else if (!strcmp("fir",player->argp[n])) { - field[i++] = 31; - } else if (!strcmp("origx", player->argp[n])) { - field[i++] = 32; - } else if (!strcmp("origy", player->argp[n])) { - field[i++] = 33; - } else if (!strcmp("name",player->argp[n])) { - field[i++] = 34; - } else { - pr("Unrecognized field %s\n",player->argp[n]); - } - if (n++ > 100) { - pr("Too many fields\n"); - return RET_FAIL; - } - } - field[i] = 0; + if (!player->argp[2]) { + for (n = 1; n <= 34; n++) + field[n - 1] = n; + field[n - 1] = 0; + } else { + n = 2; + i = 0; + while (player->argp[n]) { + if (!strcmp("type", player->argp[n])) { + field[i++] = 1; + } else if (!strcmp("x", player->argp[n])) { + field[i++] = 2; + } else if (!strcmp("y", player->argp[n])) { + field[i++] = 3; + } else if (!strcmp("flt", player->argp[n])) { + field[i++] = 4; + } else if (!strcmp("eff", player->argp[n])) { + field[i++] = 5; + } else if (!strcmp("civ", player->argp[n])) { + field[i++] = 6; + } else if (!strcmp("mil", player->argp[n])) { + field[i++] = 7; + } else if (!strcmp("uw", player->argp[n])) { + field[i++] = 8; + } else if (!strcmp("food", player->argp[n])) { + field[i++] = 9; + } else if (!strcmp("pln", player->argp[n])) { + field[i++] = 10; + } else if (!strcmp("he", player->argp[n])) { + field[i++] = 11; + } else if (!strcmp("xl", player->argp[n])) { + field[i++] = 12; + } else if (!strcmp("land", player->argp[n])) { + field[i++] = 13; + } else if (!strcmp("mob", player->argp[n])) { + field[i++] = 14; + } else if (!strcmp("fuel", player->argp[n])) { + field[i++] = 15; + } else if (!strcmp("tech", player->argp[n])) { + field[i++] = 16; + } else if (!strcmp("shell", player->argp[n])) { + field[i++] = 17; + } else if (!strcmp("gun", player->argp[n])) { + field[i++] = 18; + } else if (!strcmp("petrol", player->argp[n])) { + field[i++] = 19; + } else if (!strcmp("iron", player->argp[n])) { + field[i++] = 20; + } else if (!strcmp("dust", player->argp[n])) { + field[i++] = 21; + } else if (!strcmp("bar", player->argp[n])) { + field[i++] = 22; + } else if (!strcmp("oil", player->argp[n])) { + field[i++] = 23; + } else if (!strcmp("lcm", player->argp[n])) { + field[i++] = 24; + } else if (!strcmp("hcm", player->argp[n])) { + field[i++] = 25; + } else if (!strcmp("rad", player->argp[n])) { + field[i++] = 26; + } else if (!strcmp("def", player->argp[n])) { + field[i++] = 27; + } else if (!strcmp("spd", player->argp[n])) { + field[i++] = 28; + } else if (!strcmp("vis", player->argp[n])) { + field[i++] = 29; + } else if (!strcmp("rng", player->argp[n])) { + field[i++] = 30; + } else if (!strcmp("fir", player->argp[n])) { + field[i++] = 31; + } else if (!strcmp("origx", player->argp[n])) { + field[i++] = 32; + } else if (!strcmp("origy", player->argp[n])) { + field[i++] = 33; + } else if (!strcmp("name", player->argp[n])) { + field[i++] = 34; + } else { + pr("Unrecognized field %s\n", player->argp[n]); + } + if (n++ > 100) { + pr("Too many fields\n"); + return RET_FAIL; + } } + field[i] = 0; + } + if (player->god) + pr(" "); + time(&now); + pr("DUMP SHIPS %d\n", now); + if (player->god) + pr("own "); + pr("id"); + n = 0; + while (field[n]) { + switch (field[n]) { + case 1: + pr(" type"); + break; + case 2: + pr(" x"); + break; + case 3: + pr(" y"); + break; + case 4: + pr(" flt"); + break; + case 5: + pr(" eff"); + break; + case 6: + pr(" civ"); + break; + case 7: + pr(" mil"); + break; + case 8: + pr(" uw"); + break; + case 9: + pr(" food"); + break; + case 10: + pr(" pln"); + break; + case 11: + pr(" he"); + break; + case 12: + pr(" xl"); + break; + case 13: + pr(" land"); + break; + case 14: + pr(" mob"); + break; + case 15: + pr(" fuel"); + break; + case 16: + pr(" tech"); + break; + case 17: + pr(" shell"); + break; + case 18: + pr(" gun"); + break; + case 19: + pr(" petrol"); + break; + case 20: + pr(" iron"); + break; + case 21: + pr(" dust"); + break; + case 22: + pr(" bar"); + break; + case 23: + pr(" oil"); + break; + case 24: + pr(" lcm"); + break; + case 25: + pr(" hcm"); + break; + case 26: + pr(" rad"); + break; + case 27: + pr(" def"); + break; + case 28: + pr(" spd"); + break; + case 29: + pr(" vis"); + break; + case 30: + pr(" rng"); + break; + case 31: + pr(" fir"); + break; + case 32: + pr(" origx"); + break; + case 33: + pr(" origy"); + break; + case 34: + pr(" name"); + break; + } + n++; + } + pr("\n"); + + nships = 0; + np = getnatp(player->cnum); + while (nxtitem(&ni, (s_char *)&ship)) { + if (!player->owner || ship.shp_own == 0) + continue; + if (ship.shp_type < 0 || ship.shp_type > shp_maxno) { + pr("bad ship type %d (#%d)\n", ship.shp_type, ni.cur); + continue; + } + count_planes(&ship); + count_units(&ship); + nships++; if (player->god) - pr(" "); - time(&now); - pr("DUMP SHIPS %d\n", now); - if (player->god) - pr("own "); - pr("id"); + pr("%3d ", ship.shp_own); + pr("%d", ni.cur); n = 0; + getvec(VT_ITEM, vec, (s_char *)&ship, EF_SHIP); while (field[n]) { - switch (field[n]) { - case 1: pr(" type"); break; - case 2: pr(" x"); break; - case 3: pr(" y"); break; - case 4: pr(" flt"); break; - case 5: pr(" eff"); break; - case 6: pr(" civ"); break; - case 7: pr(" mil"); break; - case 8: pr(" uw"); break; - case 9: pr(" food"); break; - case 10: pr(" pln"); break; - case 11: pr(" he"); break; - case 12: pr(" xl"); break; - case 13: pr(" land"); break; - case 14: pr(" mob"); break; - case 15: pr(" fuel"); break; - case 16: pr(" tech"); break; - case 17: pr(" shell"); break; - case 18: pr(" gun"); break; - case 19: pr(" petrol"); break; - case 20: pr(" iron"); break; - case 21: pr(" dust"); break; - case 22: pr(" bar"); break; - case 23: pr(" oil"); break; - case 24: pr(" lcm"); break; - case 25: pr(" hcm"); break; - case 26: pr(" rad"); break; - case 27: pr(" def"); break; - case 28: pr(" spd"); break; - case 29: pr(" vis"); break; - case 30: pr(" rng"); break; - case 31: pr(" fir"); break; - case 32: pr(" origx"); break; - case 33: pr(" origy"); break; - case 34: pr(" name"); break; - } - n++; + switch (field[n++]) { + case 1: + pr(" %0.4s", mchr[(int)ship.shp_type].m_name); + break; + case 2: + pr(" %d", xrel(np, ship.shp_x)); + break; + case 3: + pr(" %d", yrel(np, ship.shp_y)); + break; + case 4: + if (ship.shp_fleet == ' ') + pr(" ~"); + else + pr(" %c", ship.shp_fleet); + break; + case 5: + pr(" %d", ship.shp_effic); + break; + case 6: + pr(" %d", vec[I_CIVIL]); + break; + case 7: + pr(" %d", vec[I_MILIT]); + break; + case 8: + pr(" %d", vec[I_UW]); + break; + case 9: + pr(" %d", vec[I_FOOD]); + break; + case 10: + pr(" %d", ship.shp_nplane); + break; + case 11: + pr(" %d", ship.shp_nchoppers); + break; + case 12: + pr(" %d", ship.shp_nxlight); + break; + case 13: + pr(" %d", ship.shp_nland); + break; + case 14: + pr(" %d", ship.shp_mobil); + break; + case 15: + if (opt_FUEL) + pr(" %d", ship.shp_fuel); + else + pr(" 0"); + break; + case 16: + pr(" %d", ship.shp_tech); + break; + case 17: + pr(" %d", vec[I_SHELL]); + break; + case 18: + pr(" %d", vec[I_GUN]); + break; + case 19: + pr(" %d", vec[I_PETROL]); + break; + case 20: + pr(" %d", vec[I_IRON]); + break; + case 21: + pr(" %d", vec[I_DUST]); + break; + case 22: + pr(" %d", vec[I_BAR]); + break; + case 23: + pr(" %d", vec[I_OIL]); + break; + case 24: + pr(" %d", vec[I_LCM]); + break; + case 25: + pr(" %d", vec[I_HCM]); + break; + case 26: + pr(" %d", vec[I_RAD]); + break; + case 27: + pr(" %d", ship.shp_armor); + break; + case 28: + pr(" %d", ship.shp_speed); + break; + case 29: + pr(" %d", ship.shp_visib); + break; + case 30: + pr(" %d", ship.shp_frnge); + break; + case 31: + pr(" %d", ship.shp_glim); + break; + case 32: + pr(" %d", xrel(np, ship.shp_orig_x)); + break; + case 33: + pr(" %d", yrel(np, ship.shp_orig_y)); + break; + case 34: + pr(" %c%s%c", '"', ship.shp_name, '"'); + break; + } } pr("\n"); - - nships = 0; - np = getnatp(player->cnum); - while (nxtitem(&ni, (s_char *)&ship)) { - if (!player->owner || ship.shp_own == 0) - continue; - if (ship.shp_type < 0 || ship.shp_type > shp_maxno) { - pr("bad ship type %d (#%d)\n", - ship.shp_type, ni.cur); - continue; - } - count_planes(&ship); - count_units(&ship); - nships++; - if (player->god) - pr("%3d ", ship.shp_own); - pr("%d", ni.cur); - n = 0; - getvec(VT_ITEM, vec, (s_char *)&ship, EF_SHIP); - while (field[n]) { - switch (field[n++]) { - case 1: pr(" %0.4s", mchr[(int)ship.shp_type].m_name); break; - case 2: pr(" %d", xrel(np, ship.shp_x)); break; - case 3: pr(" %d", yrel(np, ship.shp_y)); break; - case 4: if (ship.shp_fleet == ' ') - pr(" ~"); - else - pr(" %c", ship.shp_fleet); - break; - case 5: pr(" %d", ship.shp_effic); break; - case 6: pr(" %d", vec[I_CIVIL]); break; - case 7: pr(" %d", vec[I_MILIT]); break; - case 8: pr(" %d", vec[I_UW]); break; - case 9: pr(" %d", vec[I_FOOD]); break; - case 10: pr(" %d", ship.shp_nplane); break; - case 11: pr(" %d",ship.shp_nchoppers); break; - case 12: pr(" %d",ship.shp_nxlight); break; - case 13: pr(" %d", ship.shp_nland); break; - case 14: pr(" %d", ship.shp_mobil); break; - case 15: if (opt_FUEL) - pr(" %d",ship.shp_fuel); - else - pr(" 0"); - break; - case 16: pr(" %d", ship.shp_tech); break; - case 17: pr(" %d", vec[I_SHELL]); break; - case 18: pr(" %d", vec[I_GUN]); break; - case 19: pr(" %d", vec[I_PETROL]); break; - case 20: pr(" %d", vec[I_IRON]); break; - case 21: pr(" %d", vec[I_DUST]); break; - case 22: pr(" %d", vec[I_BAR]); break; - case 23: pr(" %d", vec[I_OIL]); break; - case 24: pr(" %d", vec[I_LCM]); break; - case 25: pr(" %d", vec[I_HCM]); break; - case 26: pr(" %d", vec[I_RAD]); break; - case 27: pr(" %d", ship.shp_armor); break; - case 28: pr(" %d", ship.shp_speed); break; - case 29: pr(" %d", ship.shp_visib); break; - case 30: pr(" %d", ship.shp_frnge); break; - case 31: pr(" %d", ship.shp_glim); break; - case 32: pr(" %d", xrel(np, ship.shp_orig_x)); break; - case 33: pr(" %d", yrel(np, ship.shp_orig_y)); break; - case 34: pr(" %c%s%c", '"', ship.shp_name, '"'); break; - } - } - pr("\n"); - } - if (nships == 0) { - if (player->argp[1]) - pr("%s: No ship(s)\n", player->argp[1]); - else - pr("%s: No ship(s)\n", ""); - return RET_FAIL; - }else - pr("%d ship%s\n", nships, splur(nships)); - return RET_OK; + } + if (nships == 0) { + if (player->argp[1]) + pr("%s: No ship(s)\n", player->argp[1]); + else + pr("%s: No ship(s)\n", ""); + return RET_FAIL; + } else + pr("%d ship%s\n", nships, splur(nships)); + return RET_OK; }