int main(void) { int i, next; struct queuewait *lwait; openmem(0); printf("Status tourn: %u \n",status->tourn); printf(" Queue name (number) sem max free cnt flags"); printf(" first,last \n"); for (i=0; i < MAXQUEUE; i++){ printf("%20s(%1i) %2i %2i %2i %2u %4i %3i,%3i\n", queues[i].q_name, i, queues[i].enter_sem, queues[i].max_slots, queues[i].free_slots, queues[i].count, queues[i].q_flags, queues[i].first, queues[i].last); next = queues[i].first; while (next != -1){ lwait = &(waiting[next]); printf(" Process %i, ",lwait->process); printf(" prev %3i,",lwait->previous); printf(" me: %3i,",lwait->mynum); printf(" next %3i,\n",lwait->next); next = lwait->next; } } return 1; /* satisfy lint */ }
int main() { int x; for(x=0; x<1000; x++) { openmem(1); fprintf(stderr, "%4d %6d\n", x, context->daemon); status->gameup &= ~GU_GAMEOK; detachmem(); } }
int main(int argc, char **argv) { int i; char buf[1000]; int seconds = 10, part; int c; while((c = getopt(argc, argv, "n:")) != -1) { switch(c) { case 'n': seconds = atoi(optarg); if(seconds < 0) usage(argv[0]); break; default: usage(argv[0]); break; } } openmem(0, 0); part = seconds % STEP; if (part) sleep(part); for (seconds -= part; seconds > 0; seconds -= STEP) { sprintf(buf, "->ALL ** Attention: The galaxy will be reset in %d seconds.", seconds); pmessage(buf, 0, MALL, SERVNAME); sleep(STEP); } sprintf(buf, "%s->ALL ** Manual galaxy reset **", SERVNAME); pmessage(buf, 0, MALL, SERVNAME); zap(); /* *newgalaxy = 1;*/ status2->newgalaxy = 1; exit(0); }
int main(int argc, char **argv) { int player; char buf[1000]; int c; if (argc < 2) Usage(); getpath(); openmem(0); player=atoi(argv[1]); if ((player == 0) && (*argv[1] != '0')) { c = *argv[1]; if (c >= 'a' && c <= 'z') player = c - 'a' + 10; else { Usage(); } } if (player >= MAXPLAYER) { printf("MAXPLAYER is set to %d, and you want %d?\n", MAXPLAYER, player); exit(1); } /* request to free slot? */ if (argc > 2) { if (*argv[2] == 'F') { int pid; pid = players[player].p_process; players[player].p_disconnect = BADVERSION_DENIED; usleep(200000); /* guarantee an update will occur */ if (players[player].p_status == PFREE) exit(0); /* slot free, he went */ if (pid != players[player].p_process) exit(0); /* pid changed, he went */ if (players[player].p_process > 1) { /* p_disconnect must have failed */ if (kill(players[player].p_process, SIGTERM) == 0) exit(0); } /* if we have no pid_t, or the pid_t was wrong, free slot */ freeslot(&players[player]); exit(0); } } if (players[player].p_status != PALIVE) { if(players[player].p_status != POBSERV) { printf("Slot is not alive.\n"); exit(1); } } if (argc > 2) switch (*argv[2]) { case 'T': { /* change team */ int team; switch (argv[2][1]) { case 'f': team = 1; break; case 'r': team = 2; break; case 'k': team = 4; break; case 'o': team = 8; break; default: team = 0; } change_team_quietly(players[player].p_no, team, players[player].p_team); } break; case 'e': /* eject (GHOSTTIME applies in daemon) */ sprintf(buf, "GOD->ALL %s has been ejected from the game.", players[player].p_longname); players[player].p_whydead=KQUIT; players[player].p_explode=10; players[player].p_status=3; players[player].p_whodead=0; amessage(buf, 0, MALL); break; case 't': /* teleport */ switch(argv[2][1]) { case 'f': p_x_y_set(&players[player], planets[0].pl_x, planets[0].pl_y); break; case 'r': p_x_y_set(&players[player], planets[10].pl_x, planets[10].pl_y); break; case 'k': p_x_y_set(&players[player], planets[20].pl_x, planets[20].pl_y); break; case 'o': p_x_y_set(&players[player], planets[30].pl_x, planets[30].pl_y); break; case 'c': p_x_y_set(&players[player], GWIDTH/2, GWIDTH/2); break; default: printf("Valid teleports: frkoc.\n"); exit(1); } break; case 's': /* ship type change */ switch (argv[2][1]) { case 'a': refit(&players[player], ASSAULT); break; case 'b': refit(&players[player], BATTLESHIP); break; case 'c': refit(&players[player], CRUISER); break; case 'd': refit(&players[player], DESTROYER); break; case 'g': refit(&players[player], SGALAXY); break; case 's': refit(&players[player], SCOUT); break; case 'o': refit(&players[player], STARBASE); break; case 'A': refit(&players[player], ATT); break; case 'S': getship(&players[player].p_ship, SCOUT); players[player].p_ship.s_torpdamage = 1; players[player].p_ship.s_torpfuse = 8; players[player].p_ship.s_phaserdamage = 1; players[player].p_ship.s_plasmadamage = 1; players[player].p_ship.s_plasmaspeed = 1; players[player].p_ship.s_plasmaturns = 1; players[player].p_ship.s_maxshield = 750; break; default: printf("Valid ship types: abcdgsoAS.\n"); exit(1); break; } players[player].p_damage = 0; players[player].p_shield = players[player].p_ship.s_maxshield; players[player].p_wtemp = 0; players[player].p_etemp = 0; players[player].p_fuel = players[player].p_ship.s_maxfuel; if (argv[2][1] == 'o') players[player].p_flags |= PFDOCKOK; break; case 'p': /* puck? */ players[player].p_ship.s_tractstr = 1; players[player].p_ship.s_torpdamage = -1; players[player].p_ship.s_plasmadamage = -1; players[player].p_ship.s_phaserdamage = -1; players[player].p_hostile = 0; players[player].p_swar = 0; players[player].p_war = 0; players[player].p_team = 0; /* indep */ players[player].p_ship.s_type = SCOUT; players[player].p_ship.s_mass = 200; players[player].p_ship.s_repair = 30000; break; case 'S': /* super ship */ players[player].p_ship.s_maxshield = 750; players[player].p_shield = 750; players[player].p_ship.s_maxdamage = 750; players[player].p_damage = 0; players[player].p_ship.s_maxegntemp = 5000; players[player].p_etemp = 0; break; case 'D': /* demote, but not beyond ensign */ if(players[player].p_stats.st_rank == 0) players[player].p_stats.st_rank++; --players[player].p_stats.st_rank; break; case 'P': /* promote, but not beyond admiral */ if( players[player].p_stats.st_rank < (NUMRANKS - 1) ) ++players[player].p_stats.st_rank; break; case 'k': /* kill increment */ if (strlen(argv[2]) > 1) players[player].p_kills += atoi(argv[2]+1); else players[player].p_kills += 1.0; break; case 'a': /* army increment */ if (strlen(argv[2]) > 1) players[player].p_armies = atoi(argv[2]+1); else players[player].p_armies += 6; break; case 'C': /* clock surrender reset */ teams[players[player].p_team].te_surrender = 6; break; case 'h': /* harm */ players[player].p_shield = 0; players[player].p_damage = players[player].p_ship.s_maxdamage/2; break; case 'H': /* hack */ { struct player *me = &players[player]; /* make independent and hostile to only prior team */ int team = players[player].p_team; players[player].p_hostile = team; players[player].p_swar = team; players[player].p_war = team; players[player].p_team = 0; sprintf(players[player].p_mapchars, "%c%c", teamlet[players[player].p_team], shipnos[player]); sprintf(players[player].p_longname, "%s (%s)", players[player].p_name, players[player].p_mapchars); /* cripple */ players[player].p_shield = 0; players[player].p_damage = players[player].p_ship.s_maxdamage/2; /* raise shields */ players[player].p_flags |= PFSHIELD; players[player].p_flags &= ~(PFBOMB | PFREPAIR | PFBEAMUP | PFBEAMDOWN); /* break tractors and decloak */ me->p_flags &= ~(PFTRACT | PFPRESS); me->p_flags &= ~PFCLOAK; /* set speed 0 */ me->p_desspeed = 0; bay_release(me); me->p_flags &= ~(PFREPAIR | PFBOMB | PFORBIT | PFBEAMUP | PFBEAMDOWN); /* make unable to act */ players[player].p_flags |= PFTWARP; /* show as puck */ players[player].p_ship.s_type = SCOUT; } break; case 'u': /* raise shields */ players[player].p_flags |= PFSHIELD; players[player].p_flags &= ~(PFBOMB | PFREPAIR | PFBEAMUP | PFBEAMDOWN); break; case 'd': /* lower shields */ players[player].p_flags &= ~(PFSHIELD); break; case 'R': /* robot kill? */ if (players[player].p_flags & PFROBOT) { players[player].p_ship.s_type = STARBASE; players[player].p_whydead=KPROVIDENCE; players[player].p_explode=10; players[player].p_status=3; players[player].p_whodead=0; } break; case 'L': /* starbase loss adjust */ #ifdef LTD_STATS #ifndef LTD_PER_RACE players[player].p_stats.ltd[0][LTD_SB].deaths.total--; #endif #else players[player].p_stats.st_sblosses--; #endif break; case 'r': /* repair ship */ p_heal(&players[player]); break; case 'f': /* flatten kills / armies */ players[player].p_kills = 0; players[player].p_armies = 0; break; case 'n': /* toggle carry flag */ players[player].p_no_pick = !players[player].p_no_pick; sprintf(buf, "GOD->%s %s %s pick up armies", team_code(players[player].p_team), players[player].p_longname, players[player].p_no_pick ? "is no longer able to" : "can once again"); amessage(buf, players[player].p_team, MTEAM); break; default: Usage(); } /* end switch */ else { sprintf(buf, "GOD->ALL %s was utterly obliterated.", players[player].p_longname); players[player].p_ship.s_type=STARBASE; players[player].p_whydead=KPROVIDENCE; players[player].p_explode=10; players[player].p_status=3; players[player].p_whodead=0; amessage(buf, 0, MALL); } return 0; }
int main(int argc, char **argv) { double dx, dy; int i,j; int pre; static struct itimerval udt; openmem(0); for (i=1; i<argc; i++) { if (argv[i][0]=='-') { switch(argv[i][1]) { case 't': topgun=1; if (argv[i+1] && (argv[i+1][0] != '-')) topguntime = atoi(argv[++i]); if (argv[i+1] && (argv[i+1][0] != '-')) topgundelay = atoi(argv[++i]); break; case 'r': rotcore = 1; break; case 'R': rotall = 1; break; case 'd': if (argv[i+1] && (argv[i+1][0] != '-')) rotdelay = atoi(argv[++i]); break; case 'i': if (argv[i+1] && (argv[i+1][0] != '-')) sscanf(argv[++i], "%lf", &increment); incrementrecip=1/increment; /* printf("Increment: %f.\n", increment); */ break; case 'm': if (argv[i+1] && (argv[i+1][0] != '-')) mesdelay = atoi(argv[++i]); else mesdelay = 60; break; default: usage(argv[0]); exit(1); break; } } } pre = 3.5/increment; dpre = (double) pre; Cosine = (float*) calloc(sizeof(float), pre); Sine = (float*) calloc(sizeof(float), pre); for (i = 0; i < pre; i++) { Cosine[i] = cos((double)i*increment); Sine[i] = sin((double)i*increment); } pl_home[0] = 0; pl_core[0][0] = 5; pl_core[0][1] = 7; pl_core[0][2] = 8; pl_core[0][3] = 9; pl_home[1] = 10; pl_core[1][0] = 12; pl_core[1][1] = 15; pl_core[1][2] = 16; pl_core[1][3] = 19; pl_home[2] = 20; pl_core[2][0] = 24; pl_core[2][1] = 26; pl_core[2][2] = 29; pl_core[2][3] = 25; pl_home[3] = 30; pl_core[3][0] = 34; pl_core[3][1] = 37; pl_core[3][2] = 38; pl_core[3][3] = 39; for (i = 0; i < 40; i++) { dx = (double) (planets[i].pl_x - GWIDTH/2); dy = (double) (GWIDTH/2 - planets[i].pl_y); pl_dist[i] = sqrt(dx * dx + dy * dy); } for (j = 0; j < 4; j++) for (i = 0; i < 4; i++) { dx = (double) (planets[pl_core[j][i]].pl_x - planets[pl_home[j]].pl_x); dy = (double) (planets[pl_home[j]].pl_y - planets[pl_core[j][i]].pl_y); pl_dist1[j][i] = sqrt(dx * dx + dy * dy); } if (topgun) { topgun=0; ttimer=5; } /* start topgun in 5 sec */ rtimer = rotdelay; mtimer = mesdelay; signal(SIGALRM, action); udt.it_interval.tv_sec = PUPDATE_SEC; udt.it_interval.tv_usec = PUPDATE; udt.it_value.tv_sec = PUPDATE_SEC; udt.it_value.tv_usec = PUPDATE; (void) setitimer(ITIMER_REAL, &udt, (struct itimerval *) 0); for (;;) pause(); }
int setship(const char *cmds) { const char delimiters[] = " "; char *copy, *token; struct player *me; copy = strdup(cmds); token = strtok(copy, delimiters); if (!token) { usage(); return 1; } openmem(0); state_0: me = player_by_number(token); if (me == NULL) { fprintf(stderr, "unknown slot\n"); exit(1); } state_1: if (!(token = strtok (NULL, delimiters))) return 0; if (!strcmp(token, "show-position")) { printf("frame %d", context->frame); printf(" speed %d", me->p_speed); printf(" dir %d", me->p_dir); printf(" position %d %d", me->p_x, me->p_y); printf("\n"); goto state_1; } if (!strcmp(token, "position")) { int p_x, p_y; if (!(token = strtok (NULL, delimiters))) return 0; p_x = atoi(token); if (!(token = strtok (NULL, delimiters))) return 0; p_y = atoi(token); p_x_y_set(me, p_x, p_y); goto state_1; } if (!strcmp(token, "dir")) { if (!(token = strtok (NULL, delimiters))) return 0; me->p_dir = atoi(token); me->p_desdir = atoi(token); bay_release(me); me->p_flags &= ~(PFBOMB | PFORBIT | PFBEAMUP | PFBEAMDOWN); goto state_1; } if (!strcmp(token, "speed")) { if (!(token = strtok (NULL, delimiters))) return 0; me->p_desspeed = atoi(token); me->p_flags &= ~(PFREPAIR | PFBOMB | PFORBIT | PFBEAMUP | PFBEAMDOWN); me->p_flags &= ~(PFPLOCK | PFPLLOCK); goto state_1; } if (!strcmp(token, "wait-for-stop")) { while (me->p_speed) usleep(20000); goto state_1; } if (!strcmp(token, "lock-planet")) { if (!(token = strtok (NULL, delimiters))) return 0; struct planet *pl = planet_find(token); //* lock on, from lock_planet() in interface.c me->p_flags |= PFPLLOCK; me->p_flags &= ~(PFPLOCK|PFORBIT|PFBEAMUP|PFBEAMDOWN|PFBOMB); me->p_planet = pl->pl_no; goto state_1; } if (!strcmp(token, "wait-for-orbit")) { while (!(me->p_flags & PFORBIT)) usleep(20000); goto state_1; } if (!strcmp(token, "wobble")) { t_attribute |= TWOBBLE; goto state_1; } if (!strcmp(token, "no-wobble")) { t_attribute &= ~TWOBBLE; goto state_1; } if (!strcmp(token, "torp-speed")) { if (!(token = strtok (NULL, delimiters))) return 0; t_torpspeed = atoi(token); goto state_1; } if (!strcmp(token, "fire-test-torpedo")) { if (!(token = strtok (NULL, delimiters))) return 0; struct ship *myship = &me->p_ship; struct torp *k = t_find(me, TFREE); me->p_ntorp++; k->t_status = TMOVE; k->t_type = TPLASMA; k->t_attribute = t_attribute; k->t_owner = me->p_no; t_x_y_set(k, me->p_x, me->p_y); k->t_turns = myship->s_torpturns; k->t_damage = 0; k->t_gspeed = (t_torpspeed == -1 ? myship->s_torpspeed : t_torpspeed) * WARP1; k->t_fuse = 500; k->t_dir = atoi(token); k->t_war = me->p_war; k->t_team = me->p_team; k->t_whodet = NODET; goto state_1; } if (!strcmp(token, "show-test-torpedo-position")) { struct torp *k = t_find(me, TMOVE); if (k != NULL) { printf("torp %d x %d y %d\n", k->t_dir, k->t_x, k->t_y); } goto state_1; } if (!strcmp(token, "destroy-test-torpedo")) { struct torp *k = t_find(me, TMOVE); if (k != NULL) { k->t_status = TOFF; } goto state_1; } if (!strcmp(token, "monitor-coordinates")) { for (;;) { printf("p_x %X p_y %X p_x_internal %X p_y_internal %X\n", me->p_x, me->p_y, me->p_x_internal, me->p_y_internal); usleep(20000); } goto state_1; } if (!strcmp(token, "monitor-docking")) { for (;;) { printf("p_flags & PFDOCK %X p_dock_with %X p_dock_bay %X\n", me->p_flags & PFDOCK, me->p_dock_with, me->p_dock_bay); usleep(20000); } goto state_1; } if (!strcmp(token, "sleep")) { if (!(token = strtok(NULL, delimiters))) return 0; sleep(atoi(token)); goto state_1; } if (!strcmp(token, "set-inl-draft")) { if (!(token = strtok(NULL, delimiters))) return 0; me->p_inl_draft = atoi(token); goto state_1; } if (!strcmp(token, "monitor-inl-draft")) { for (;;) { printf("p_inl_captain %d p_inl_draft %d (%s) p_inl_x %d p_inl_y %d p_inl_pick %d\n", me->p_inl_captain, me->p_inl_draft, inl_draft_name(me->p_inl_draft), me->p_inl_x, me->p_inl_y, me->p_inl_pick); usleep(20000); } goto state_1; } if (!strcmp(token, "show-inl-draft")) { printf("p_inl_captain %d p_inl_draft %d (%s) p_inl_x %d p_inl_y %d p_inl_pick %d\n", me->p_inl_captain, me->p_inl_draft, inl_draft_name(me->p_inl_draft), me->p_inl_x, me->p_inl_y, me->p_inl_pick); goto state_1; } if (!strcmp(token, "wait-for-inl-draft-to-end")) { for (;;) { if (me->p_inl_draft == INL_DRAFT_OFF) exit(0); usleep(20000); } goto state_1; } if (!strcmp(token, "player")) { me->p_flags &= ~PFOBSERV; me->p_status = PALIVE; goto state_1; } if (!strcmp(token, "observer")) { me->p_flags |= PFOBSERV; me->p_status = POBSERV; goto state_1; } if (!strcmp(token, "captain")) { me->p_inl_captain = 1; goto state_1; } if (!strcmp(token, "no-captain")) { me->p_inl_captain = 0; goto state_1; } if (!strcmp(token, "damage")) { if (!(token = strtok (NULL, delimiters))) return 0; me->p_damage = me->p_ship.s_maxdamage - atoi(token); goto state_1; } if (!strcmp(token, "shields")) { if (!(token = strtok (NULL, delimiters))) return 0; me->p_shield = atoi(token); goto state_1; } if (!strcmp(token, "fuel")) { if (!(token = strtok (NULL, delimiters))) return 0; me->p_fuel = atoi(token); goto state_1; } if (!strcmp(token, "disconnect")) { if (!(token = strtok (NULL, delimiters))) return 0; me->p_disconnect = atoi(token); goto state_1; } goto state_0; }
int main(int argc, char **argv) { int team, s_type; char *dpyname = NULL; int usage = 0; int err = 0; char *name, *ptr, *cp; struct passwd *pwent; int passive = 0; int xpmopt = 1; int useORopt = 0; int useCookieOpt = 0; int dontUseCookieOpt = 0; /* char *defaultsFile=NULL;*/ pseudo[0] = defpasswd[0] = '\0'; name = *argv++; argc--; if ((ptr = strrchr(name, '/')) != NULL) name = ptr + 1; while (*argv) { if (**argv != '-') { serverName = *argv; /* don't abort argument processing */ argv++; argc--; } else { ++*argv; argc--; ptr = *argv++; while (*ptr) { switch (*ptr) { case 'C': /* character name */ (void) strncpy(pseudo, *argv, sizeof(pseudo)); argv++; argc--; break; case 'P': /* authorization password */ (void) strncpy(defpasswd, *argv, sizeof(defpasswd)); { int i; for (i = 0; (*argv)[i]; i++) (*argv)[i] = 0; } argv++; argc--; break; case 'u': usage++; break; case 's': if (*argv) { xtrekPort = atoi(*argv); passive = 1; argv++; argc--; } break; case 'p': if (*argv) { xtrekPort = atoi(*argv); argv++; argc--; } break; case 'd': dpyname = *argv; argc--; argv++; break; case 'm': usemeta = 1; break; case 'h': serverName = *argv; argc--; argv++; break; case 't': title = *argv; argc--; argv++; break; case 'r': defaultsFile = *argv; argv++; argc--; break; #ifdef AUTHORIZE case 'o': RSA_Client = -1; break; case 'R': RSA_Client = -2; break; #else case 'o': case 'R': printf("This client does not have binary authorization.\n"); break; #endif case 'e': #ifdef AUTHORIZE checkExpire(1); #else printf("This client does not RSA verify and will not expire.\n"); #endif exit(0); break; case 'f': /* list ftp sites */ fprintf(stderr, "\n\ The newest version of the Paradise client can be found at:\n\ ftp.netrek.org in /pub/netrek/paradise/bin/\n"); exit(0); case 'G': if (*argv) { ghoststart++; ghost_pno = atoi(*argv); printf("Emergency restart being attempted...\n"); argv++; argc--; } break; case '2': /* force paradise */ paradise = 1; break; case 'F': /* File playback */ if (*argv) { playFile = strdup(*argv); playback = 1; argv++; argc--; } break; case 'x': xpmopt = 0; break; case 'k': /* cookie mode [BDyess] */ useCookieOpt = 1; break; case 'K': /* no-cookies :( [BDyess] */ dontUseCookieOpt = 1; break; case 'v': verbose_image_loading = 1; break; case 'O': /* turn on GXor image drawing [BDyess]*/ useORopt = 1; break; case 'c': /* dump .paradiserc defaults [BDyess] */ dump_defaults = 1; break; default: fprintf(stderr, "%s: unknown option '%c'\n", name, *ptr); err++; break; } ptr++; } } } inittrigtables(); initStars(); /* moved from redraw.c at KAO\'s suggestion */ if (usage || err) { printUsage(name); #ifdef AUTHORIZE checkExpire(1); #endif exit(0); /* exit(err); Exits from checkExpire */ } defaultsFile = initDefaults(defaultsFile); if(xpmopt) xpm = 1; else xpm = booleanDefault("xpm",xpm); if(xpm) printf("XPM mode enabled.\n"); /* command line option overrides .paradiserc value [BDyess] */ if(useORopt) useOR = 1; else useOR = booleanDefault("useOR",useOR); if(useOR) printf("OR mode enabled.\n"); if(useOR || !xpm) cookie = 0; /* default no-cookies unless in XPM mode w/out OR [BDyess] */ /* note: need a milk mode :) */ if(useCookieOpt) cookie = 1; else if(dontUseCookieOpt) cookie = 0; else cookie = booleanDefault("cookie",cookie); if(cookie) printf("Cookie mode enabled.\n"); #ifdef AUTHORIZE if (RSA_Client != -1) checkExpire(0); #endif /* compatability */ if (argc > 0) serverName = argv[0]; srandom(getpid() + time((long *) 0)); if(playback || booleanDefault("playback",0)) { defNickName = "playback"; usemeta=0; serverName = "playback"; } else { if (serverName) { char temp[80], *s; sprintf(temp, "server.%s", serverName); if ((s = stringDefault(temp,NULL))) { printf("Using nickname \"%s\" for server %s\n", serverName, s); defNickName = serverName; serverName = s; defFlavor = stringDefault("flavor",NULL); } } if (!serverName) { serverName = stringDefault("server",NULL); } if (!serverName && !passive) { serverName = DEFAULT_SERVER; usemeta = 1; /* no server specified, show the menu */ } if (passive) serverName = "passive"; /* newwin gets a wrong title otherwise */ if (xtrekPort < 0) xtrekPort = intDefault("port", -1); if (xtrekPort < 0) xtrekPort = DEFAULT_PORT; } /* playback */ build_default_configuration(); metaserverAddress = stringDefault("metaserver", "metaserver.netrek.org"); if (usemeta) openmeta(); W_Initialize(dpyname); metaFork = booleanDefault("metaFork", metaFork); /* do the metawindow thang */ if (usemeta) { metawindow(); metainput(); if (metaFork) W_Initialize(dpyname); newwin(dpyname, name); } else /* this creates the necessary x windows for the game */ newwin(dpyname, name); /* open memory...? */ openmem(); if (!startPlayback()) { if (!passive) { serverName = callServer(xtrekPort, serverName); } else { connectToServer(xtrekPort); } } sendFeature("FEATURE_PACKETS", 'S', 1, 0, 0); timeStart = time(NULL); findslot(); /* sets all the settings from defaults file (.xtrekrc probably) */ resetDefaults(); #ifdef UNIX_SOUND init_sound(); play_sound(SND_PARADISE); #endif mapAll(); /* signal(SIGINT, SIG_IGN);*/ signal(SIGCHLD, reaper); /* Get login name */ if ((pwent = getpwuid(getuid())) != NULL) (void) strncpy(login, pwent->pw_name, sizeof(login)); else (void) strncpy(login, "Bozo", sizeof(login)); login[sizeof(login) - 1] = '\0'; if (pseudo[0] == '\0') { char *freeme; strncpy(pseudo, freeme = stringDefault("name",login), sizeof(pseudo)); free(freeme); } pseudo[sizeof(pseudo) - 1] = '\0'; if (defpasswd[0] == '\0') { char buf[100]; /* added password by character name -JR */ sprintf(buf,"password.%s",pseudo); if((cp = stringDefault(buf,NULL)) || (cp = stringDefault("password",NULL))) (void) strncpy(defpasswd, cp, sizeof(defpasswd)); } defpasswd[sizeof(defpasswd) - 1] = '\0'; /* sendLoginReq("Gray Lensman", "hh", "sfd", 0); loginAccept = -1; while (loginAccept == -1) { socketPause(1,0); readFromServer(); } */ getname(pseudo, defpasswd); loggedIn = 1; /* Set p_hostile to hostile, so if keeppeace is on, the guy starts off hating everyone (like a good fighter should) */ me->p_hostile = (1 << number_of_teams) - 1; redrawTstats(); me->p_planets = 0; me->p_genoplanets = 0; me->p_armsbomb = 0; me->p_genoarmsbomb = 0; /* Set up a reasonable default */ me->p_whydead = KNOREASON; me->p_teami = -1; s_type = defaultShip(CRUISER); /* from rlb7h 11/15/91 TC */ if (booleanDefault("netStats", 1)) startPing(); /* tell the server that we support pings */ /* hack to make galaxy class ships work. This could be more elegant, but the configuration code would have to be modified quite a bit, since the client doesn't know if it's on a paradise server until after it connects, and it needs the configuration info before it connects. */ init_galaxy_class(); initkeymap(-1); /* needs to have ship types initialized -JR */ setjmp(env); /* Reentry point of game */ if (ghoststart) { int i; ghoststart = 0; for (i = -1; i < 5; i++) if (teaminfo[i].letter == me->p_mapchars[0]) break; me->p_teami = i; if (me->p_damage > me->p_ship->s_maxdamage) { me->p_status = POUTFIT; } else me->p_status = PALIVE; } else me->p_status = POUTFIT; while (1) { switch (me->p_status) { case POUTFIT: case PTQUEUE: /* give the player the motd and find out which team he wants */ new_entrywindow(&team, &s_type); allowPlayerlist = 1; if (W_IsMapped(playerw)) playerlist(); if (!playback) if (team == -1) { W_DestroyWindow(w); sendByeReq(); sleep(1); printf("OK, bye!\n"); EXIT(0); } sendVersion(); myship = getship(myship->s_type); currentship = myship->s_type; /* sendOptionsPacket(); this would totally blast any flags you had on the server */ redrawall = 1; enter(); calibrate_stats(); W_ClearWindow(w); /* for (i = 0; i < NSIG; i++) { signal(i, SIG_IGN); } */ me->p_status = PALIVE; /* Put player in game */ #ifdef UNIX_SOUND kill_sound (); #endif hockeyInit(); if (showStats) /* Default showstats are on. */ W_MapWindow(statwin); if (showNewStats) /* default showNewStats are off. [BDyess] */ W_MapWindow(newstatwin); if (tryUdp && commMode != COMM_UDP) { sendUdpReq(COMM_UDP); } if (tryShort) { sendShortReq(SPK_VON); tryShort = 0; /* only try it once */ } /* Send request for a full update */ if (askforUpdate) { if(recv_short) sendShortReq(SPK_SALL); else sendUdpReq(COMM_UPDATE); } sendUpdatePacket(1000000 / updateSpeed); W_Deiconify(baseWin); break; case PALIVE: case PEXPLODE: case PDEAD: case POBSERVE: /* Get input until the player quits or dies */ input(); W_ClearWindow(mapw); break; default: printf("client has p_status=%d. how strange\n", me->p_status); me->p_status = POUTFIT; } } /* NOTREACHED */ }