/* New network commands, banning and muting by Victor Rachels */ #ifdef NETWORK #include #include #include #include "strio.h" #include "args.h" #include "types.h" #include "ban.h" #include "network.h" #include "multi.h" #include "player.h" #include "hudmsg.h" //added 6/15/99 - Owen Evans #include "strutil.h" //end added extern void network_dump_player(ubyte * server, ubyte *node, int why); extern int multi_message_index; int bansused = 0; ubyte baniplist[MAX_BANS][3]; void addipban(char * banname) // ban command { int pl; if(!bansused) memset(baniplist,0,MAX_BANS*3); if(!stricmp(banname,Players[Player_num].callsign)) { hud_message(MSGC_GAME_FEEDBACK,"You cannot ban yourself!"); return; } if(!network_i_am_master()) { hud_message(MSGC_GAME_FEEDBACK,"You cannot ban players! You are not master!"); Network_message_reciever=100; snprintf( Network_message, MAX_MESSAGE_LEN, "I'm trying to ban %s!", banname); multi_send_message(); return; } for(pl=0;pl n)) { hud_message(MSGC_GAME_FEEDBACK,"BANN: Player number %i doesn't exist",bannum); Network_message[0]= 0; multi_message_index = 0; multi_sending_message = 0; return; } pl = player_list[bannum - 1]; if(pl == Player_num) { hud_message(MSGC_GAME_FEEDBACK,"You cannot ban yourself"); return; } if(!network_i_am_master()) { hud_message(MSGC_GAME_FEEDBACK,"You cannot ban players. You are not master"); Network_message_reciever=100; snprintf( Network_message, MAX_MESSAGE_LEN, "I'm trying to ban %s!", Players[pl].callsign); multi_send_message(); return; } if(checkban(Players[pl].net_address)) { hud_message(MSGC_GAME_FEEDBACK,"You've already banned that ip..."); network_dump_player(Netgame.players[pl].server,Netgame.players[pl].node,0); return; } else { int banindex; for(banindex=0;banindex multi_get_kill_list(player_list))) { hud_message(MSGC_GAME_FEEDBACK,"UNBANN: Player number %i doesn't exist",bannum); Network_message[0]= 0; multi_message_index = 0; multi_sending_message = 0; return; } if(!network_i_am_master()) { hud_message(MSGC_GAME_FEEDBACK,"UNBANN: You are not master"); return; } { int banindex; if(!(banindex = checkban(Players[player_list[bannum - 1]].net_address))) { hud_message(MSGC_GAME_FEEDBACK,"UNBANN: That player is not banned"); return; } hud_message(MSGC_GAME_FEEDBACK,"%i:%d.%d.%d.* unbanned",bannum,(int)baniplist[banindex-1][0],(int)baniplist[banindex-1][1],(int)baniplist[banindex-1][2]); baniplist[banindex-1][0]=0; baniplist[banindex-1][1]=0; baniplist[banindex-1][2]=0; bansused--; } } void clearbans() { bansused = 0; memset(baniplist,0,MAX_BANS*3); } void listbans() { int i; char onban[MAX_BANS * (15)]; if(!bansused) hud_message(MSGC_GAME_FEEDBACK,"The ban list is empty"); memset(onban,0,MAX_BANS * (2 + CALLSIGN_LEN) * sizeof(char) ); for(i=0;i