Stars a multiplayer server. If playing is non-zero, then the server is a player in the game Server only
| 710 | // game |
| 711 | // Server only |
| 712 | void MultiStartServer(int playing, char *scriptname, int dedicated_server_num_teams) { |
| 713 | // Clear out some stuff |
| 714 | for (int i = 0; i < MAX_NET_PLAYERS; i++) { |
| 715 | memset(&NetPlayers[i], 0, sizeof(netplayer)); |
| 716 | Multi_send_size[i] = 0; |
| 717 | |
| 718 | for (int t = 0; t < MAX_NET_PLAYERS; t++) |
| 719 | Multi_last_sent_time[i][t] = 0; |
| 720 | |
| 721 | Player_fire_packet[i].fired_on_this_frame = PFP_NO_FIRED; |
| 722 | |
| 723 | Multi_reliable_send_size[i] = 0; |
| 724 | Multi_reliable_last_send_time[i] = 0; |
| 725 | |
| 726 | Multi_reliable_urgent[i] = 0; |
| 727 | Multi_last_send_visible[i] = 0; |
| 728 | Multi_visible_players[i] = 0xFFFFFFFF; |
| 729 | |
| 730 | Num_moved_robots[i] = 0; |
| 731 | Num_changed_anim[i] = 0; |
| 732 | Num_changed_turret[i] = 0; |
| 733 | Num_changed_wb_anim[i] = 0; |
| 734 | last_sent_bytes[i] = timer_GetTime(); |
| 735 | NetPlayers[i].file_xfer_flags = NETFILE_NONE; |
| 736 | NetPlayers[i].ship_logo[0] = 0; |
| 737 | NetPlayers[i].voice_taunt1[0] = 0; |
| 738 | NetPlayers[i].voice_taunt2[0] = 0; |
| 739 | NetPlayers[i].voice_taunt3[0] = 0; |
| 740 | NetPlayers[i].voice_taunt4[0] = 0; |
| 741 | NetPlayers[i].pilot_pic_id = PPIC_INVALID_ID; |
| 742 | NetPlayers[i].custom_file_seq = NETFILE_ID_NOFILE; |
| 743 | PlayerSetCustomTexture(i, NULL); |
| 744 | |
| 745 | NetPlayers[i].ping_time = 0; |
| 746 | NetPlayers[i].last_ping_time = 0; |
| 747 | } |
| 748 | NetPlayers[Player_num].custom_file_seq = 0xff; |
| 749 | Current_pilot.get_multiplayer_data(NetPlayers[Player_num].ship_logo, NetPlayers[Player_num].voice_taunt1, |
| 750 | NetPlayers[Player_num].voice_taunt2, NULL, NetPlayers[Player_num].voice_taunt3, |
| 751 | NetPlayers[Player_num].voice_taunt4); |
| 752 | |
| 753 | // ship_logo |
| 754 | if (NetPlayers[Player_num].ship_logo[0]) |
| 755 | PlayerSetCustomTexture(Player_num, NetPlayers[Player_num].ship_logo); |
| 756 | |
| 757 | Player_num = 0; |
| 758 | NetPlayers[Player_num].flags = NPF_SERVER | NPF_CONNECTED; |
| 759 | |
| 760 | // Strip trailing .d3m if there is one |
| 761 | int sl = strlen(scriptname); |
| 762 | if (scriptname[sl - 4] == '.' && scriptname[sl - 3] == 'd' && scriptname[sl - 2] == '3' && scriptname[sl - 1] == 'm') |
| 763 | scriptname[sl - 4] = 0; |
| 764 | |
| 765 | NetPlayers[Player_num].sequence = NETSEQ_PREGAME; |
| 766 | |
| 767 | Netgame.local_role = LR_SERVER; |
| 768 | Netgame.server_sequence = 0; |
| 769 | Netgame.server_version = MULTI_VERSION; |
no test coverage detected