rendered paste bodyvoid() state_frame ={ local entity a; local float c; local string numstring, steams, leave_s, str; self.classname = "player"; self.allowfire = FALSE; a = arena_find(self.arena); if (self.state == STATE_CHOOSING) { if (self.admin_menu) return; if (self.wannabe_admin) return; self.team2 = 1; spectator_set(FALSE); self.arena = 0; if ((time > self.menu_time) && (!self.motd_time)) { self.menu_time = time + 1.5; str = "\b- Arena Select -\b\n"; if (self.menu_selection == 1) { str = strcat(str, "\b>\b "); str = strcat(str, substring(world.menu_arena1, 0, strlen(world.menu_arena1) - 1)); str = strcat(str, " \b<\b\n"); } else str = strcat(str, world.menu_arena1); if (self.menu_selection == 2) { str = strcat(str, "\b>\b "); str = strcat(str, substring(world.menu_arena2, 0, strlen(world.menu_arena2) - 1)); str = strcat(str, " \b<\b\n"); } else str = strcat(str, world.menu_arena2); if (self.menu_selection == 3) { str = strcat(str, "\b>\b "); str = strcat(str, substring(world.menu_arena3, 0, strlen(world.menu_arena3) - 1)); str = strcat(str, " \b<\b\n"); } else str = strcat(str, world.menu_arena3); if (self.menu_selection == 4) { str = strcat(str, "\b>\b "); str = strcat(str, substring(world.menu_arena4, 0, strlen(world.menu_arena4) - 1)); str = strcat(str, " \b<\b\n"); } else str = strcat(str, world.menu_arena4); str = strcat(str, "\nTo bind the menu keys, type:\n/cmd menu bind"); centerprint(self, str); } if (self.menu_enter == 1) { self.menu_enter = 0; self.arena = self.menu_selection; self.menu_selection = 1; state_set(STATE_SPECTATING); spectator_set(TRUE); ArenaChange(self, TRUE); } } else if (self.state == STATE_SPECTATING) { self.team2 = 1; spectator_set(TRUE); str = "\b- Spectating -\b\n"; if (self.arenaent.p_count == 1) { if (!self.admin_menu) if (!self.wannabe_admin) if ((time > self.menu_time) && (!self.motd_time)) { if (self.menu_selection == 1) str = strcat(str, "\b>\b \[\1\] Play \b<\b\n\n\n"); else str = strcat(str, "\[\1\] Play \n\n\n"); if (self.menu_selection == 9) str = strcat(str, "\b>\b \[\9\] Leave Arena \b<\b"); else str = strcat(str, "\[\9\] Leave Arena"); if (self.spec_type == SPEC_THIRD_PERSON) { str = strcat(str, "\n\nTracking "); str = strcat(str, self.camtarget.netname); str = strcat(str, "\nStatus: "); str = strcat(str, self.camtargetstatus); self.menu_time = time; // Electro - refresh more often to keep up with targetstatus changing values } else { self.menu_time = time + 1; } centerprint(self, str); } if (self.menu_enter && (!self.admin_menu) && (!self.wannabe_admin)) { self.menu_enter = 0; if (self.menu_selection == 1) { self.menu_selection = 8; self.chosenteam = 1; state_set(STATE_WAITING); } else if (self.menu_selection == 9) { self.menu_selection = 1; ArenaChange(self, FALSE); state_set(STATE_CHOOSING); self.arena = 0; PrintArenaPlayers(self); } } } else { if (!self.admin_menu) if (!self.wannabe_admin) if ((time > self.menu_time) && (!self.motd_time)) { if ((self.arenaent.ammo_shells > 0) || (self.arenaent.ammo_nails > 0)) // Electro - rounds have been played { if (self.arenaent.ammo_shells > self.arenaent.ammo_nails) // red team leads str = strcat(str, "RED \bteam leads\b\n\n"); else if (self.arenaent.ammo_shells < self.arenaent.ammo_nails) str = strcat(str, "BLUE \bteam leads\b\n\n"); else str = strcat(str, "Teams are \btied\b\n\n"); } if (self.spec_type == SPEC_THIRD_PERSON) { if (self.menu_selection == 1) str = strcat(str, "\b>\b \[\1\] Join Red Team \b<\b\n"); else str = strcat(str, "\[\1\] Join Red Team \n"); if (self.menu_selection == 2) str = strcat(str, "\b>\b \[\2\] Join Blue Team \b<\b\n"); else str = strcat(str, "\[\2\] Join Blue Team\n"); if (world.arena) { if (self.menu_selection == 9) str = strcat(str, "\b>\b \[\9\] Leave Arena \b<\b\n"); else str = strcat(str, "\[\9\] Leave Arena \n"); } str = strcat(str, "\nTracking "); str = strcat(str, self.camtarget.netname); str = strcat(str, "\nStatus: "); str = strcat(str, self.camtargetstatus); centerprint(self, str); self.menu_time = time + 0.01; } else { local string red_c, blue_c; red_c = numberstring20(self.arenaent.red_count); blue_c = numberstring20(self.arenaent.blue_count); if (self.menu_selection == 1) { str = strcat(str, "\b>\b \[\1\] \b[\b"); str = strcat(str, red_c); str = strcat(str, "\b]\b Join Red Team \b<\b\n"); } else { str = strcat(str, "\[\1\] \b[\b"); str = strcat(str, red_c); str = strcat(str, "\b]\b Join Red Team \n"); } if (self.menu_selection == 2) { str = strcat(str, "\b>\b \[\2\] \b[\b"); str = strcat(str, blue_c); str = strcat(str, "\b]\b Join Blue Team \b<\b"); } else { str = strcat(str, "\[\2\] \b[\b"); str = strcat(str, blue_c); str = strcat(str, "\b]\b Join Blue Team"); } if (world.arena) { if (self.menu_selection == 9) str = strcat(str, "\n\n\b>\b \[\9\] Leave Arena \b<\b\n"); else str = strcat(str, "\n\n\[\9\] Leave Arena \n"); } centerprint(self, str); self.menu_time = time + 1; } } if (self.menu_enter && (!self.admin_menu) && (!self.wannabe_admin)) { self.menu_enter = 0; if (self.menu_selection == 1) { self.menu_selection = 8; self.chosenteam = TEAM_RED; state_set(STATE_WAITING); arena_bprint(self.arena, self.netname); arena_bprint(self.arena, " \bhas joined team\b red\n"); } else if (self.menu_selection == 2) { self.menu_selection = 8; self.chosenteam = TEAM_BLUE; state_set(STATE_WAITING); arena_bprint(self.arena, self.netname); arena_bprint(self.arena, " \bhas joined team\b blue\n"); } else if (self.menu_selection == 9 && (world.arena)) { self.menu_selection = 1; ArenaChange(self, FALSE); state_set(STATE_CHOOSING); self.arena = 0; self.chosenteam = self.team = self.team2 = TEAM_SPECTATOR; PrintArenaPlayers(self); } } } } else if (self.state == STATE_WAITING || self.state == STATE_DEAD) { self.team2 = 1; spectator_set(TRUE); // clear the dead flag if the round is over so round replay won't find people who died long ago if (self.state == STATE_DEAD) if (a.state != ARENA_STATE_PLAYING) self.state = STATE_WAITING; if (!self.admin_menu) if (!self.wannabe_admin) if ((time > self.menu_time) && (!self.motd_time)) { self.menu_time = time + 1; str = ""; if (time < a.wait) { self.menu_time = time + (a.wait - time) - floor(a.wait - time); c = floor(a.wait - time) + 1; numstring = ftos(c); if (self.arenaent.p_count > 1) { if ((self.arenaent.ammo_shells > 0) || (self.arenaent.ammo_nails > 0)) // Electro - rounds have been played { if (self.arenaent.ammo_shells > self.arenaent.ammo_nails) // red team leads str = strcat(str, "RED \bteam leads\b\n\n"); else if (self.arenaent.ammo_shells < self.arenaent.ammo_nails) str = strcat(str, "BLUE \bteam leads\b\n\n"); else str = strcat(str, "Teams are \btied\b\n\n"); } } str = strcat(str, "\b- Watching -\b\n\n\n"); if (self.spec_type == SPEC_THIRD_PERSON) { if (world.arena) { if (self.menu_selection == 8) str = strcat(str, "\b->\b \[\8\] Spectate \b<-\b\n"); else str = strcat(str, "\[\8\] Spectate \n"); if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Arena \b<-\b\n\n\n"); else str = strcat(str, "\[\9\] Leave Arena\n\n\n"); } else { if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Team \b<-\b\n\n\n"); else str = strcat(str, "\[\9\] Leave Team\n\n\n"); } str = strcat(str, numstring); str = strcat(str, " \bseconds until start\b\n\nTracking "); str = strcat(str, self.camtarget.netname); str = strcat(str, "\nStatus: "); str = strcat(str, self.camtargetstatus); centerprint(self, str); } else { if (world.arena) { if (self.menu_selection == 8) str = strcat(str, "\b->\b \[\8\] Spectate \b<-\b\n"); else str = strcat(str, "\[\8\] Spectate \n"); if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Arena \b<-\b\n\n\n"); else str = strcat(str, "\[\9\] Leave Arena\n\n\n"); } else { if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Team \b<-\b\n\n\n"); else str = strcat(str, "\[\9\] Leave Team\n\n\n"); } str = strcat(str, numstring); str = strcat(str, " \bseconds until start\b"); centerprint(self, str); } } else { str = strcat(str, "\b- Watching -\b\n\n\n"); if (self.spec_type == SPEC_THIRD_PERSON) { if (world.arena) { if (self.menu_selection == 8) str = strcat(str, "\b->\b \[\8\] Spectate \b<-\b\n"); else str = strcat(str, "\[\8\] Spectate \n"); if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Arena \b<-\b"); else str = strcat(str, "\[\9\] Leave Arena"); } else { if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Team \b<-\b"); else str = strcat(str, "\[\9\] Leave Team"); } str = strcat(str, "\n\nTracking "); str = strcat(str, self.camtarget.netname); str = strcat(str, "\nStatus: "); str = strcat(str, self.camtargetstatus); centerprint(self, str); } else { if (world.arena) { if (self.menu_selection == 8) str = strcat(str, "\b->\b \[\8\] Spectate \b<-\b\n"); else str = strcat(str, "\[\8\] Spectate \n"); if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Arena \b<-\b"); else str = strcat(str, "\[\9\] Leave Arena"); } else { if (self.menu_selection == 9) str = strcat(str, "\b->\b \[\9\] Leave Team \b<-\b"); else str = strcat(str, "\[\9\] Leave Team "); } centerprint(self, str); } } } if (self.menu_enter && (!self.admin_menu) && (!self.wannabe_admin)) { self.menu_enter = 0; if (self.menu_selection == 8) { if (world.arena) state_set(STATE_SPECTATING); self.menu_selection = 1; self.chosenteam = self.team = self.team2 = TEAM_SPECTATOR; } else if (self.menu_selection == 9) { self.menu_selection = 1; if (world.arena) { ArenaChange(self, FALSE); state_set(STATE_CHOOSING); self.arena = 0; } else { state_set(STATE_SPECTATING); spectator_set(TRUE); } self.chosenteam = self.team = self.team2 = TEAM_SPECTATOR; } } } else if (self.state == STATE_PLAYING) { self.team2 = self.chosenteam; spectator_set(FALSE); // update position in waiting line for next round (older times are closer to front of line) if (a.state == ARENA_STATE_PLAYING || a.state == ARENA_STATE_WARMUP) self.arena_line = time; else state_set(STATE_WAITING); } else { bprint(PRINT_HIGH, "\berror\b: self.state not valid, resetting to STATE_CHOOSING\n"); self.arena = 0; self.forcerespawn = TRUE; state_set(STATE_CHOOSING); self.chosenteam = self.team = self.team2 = TEAM_SPECTATOR; } self.arenaent = arena_find(self.arena);};