Results 1 to 2 of 2
  1. #1
    Senior Member
    Join Date
    Oct 2015
    Location
    Germany
    Posts
    260

    Insane Limits - Admin Votemap - set next map on round end - (working code)

    Insane Limits - Admin Votemap - set next map on round end

    This script is a special votemap for admins/vips. When the round is finished each admin on server can change the next map directly with easy chat commands on round end. It helps to skip a boring map to fill up the server.

    On round end it shows in the in-game-chat the votemap with the first 8 maps from map rotation. Only admins/vips can see this special voting (players from custom list). Normal player will see nothing. If a admin has voted it change the next map directly. It is compatible with BF3, BF4 Server. Required Insane Limits Version 0.9.17.0 or later.


    INSTALLATION
    Setup for Insane Limits (2x limit, 1x custom list)

    STEP 1 - create new limit 1
    Evaluation: OnRoundOver
    First_check: Code
    First_check_code: put the code#1 here
    limit_action: none


    STEP 2 - create new limit 2
    Evaluation: OnAnyChat
    First_check: Code
    First_check_code: put the code#2 here
    limit_action: none


    STEP 3 - create new custom list (playernames with privilege for the admin votemap)
    Insane Limits > Main Settings > "use_custom_lists" = TRUE
    custom list 1 - name: "admin_votemap"
    custom list 1 - data: playername1, playername2, playername3


    Code#1
    Code:
    /////////////////////////////////
    // Admin Votemap - PART 1 //
    /////////////////////////////////
    // this script (part1+part2) gives admins (playername form custom list "admin_votemap") the option to change the next map when the current round is finished. it is a admin votemap on round end.
    // info > required custom list with name: admin_votemap
    // info > settings for insane limits: limit_evaluation: OnRoundOver     ;     limit_first_check: Code        ;        limit_action: none
    
    
    // SETTINGS (you can change this values) //
    int VoteMsgDelay = 15;    //   << set the time in secound for delay to send the votemap msg after round end event
    // SETTINGS END
    
    
    if (server.PlayerCount <= 5) {return false;}
    server.Data.setDouble("SpecialVotemapTimeout", server.TimeRound);
    List<PlayerInfoInterface> players = new List<PlayerInfoInterface>();
    players.AddRange(team1.players);
    players.AddRange(team2.players);
    players.AddRange(team3.players);
    players.AddRange(team4.players);
    foreach(PlayerInfoInterface player_info in players) {
    	if (plugin.isInList(player_info.Name, "admin_votemap")) {
    		//send votemap msg to admins only
    		plugin.SendPlayerMessage(player_info.Name, "--------------    ADMIN VOTEMAP    --------------", VoteMsgDelay);
    		if (server.MapFileNameRotation.Count >= 2) {plugin.SendPlayerMessage(player_info.Name, "/m1 " + plugin.FriendlyMapName(server.MapFileNameRotation[0]) + "  /m2 " + plugin.FriendlyMapName(server.MapFileNameRotation[1]), VoteMsgDelay + 1);}
    		if (server.MapFileNameRotation.Count >= 4) {plugin.SendPlayerMessage(player_info.Name, "/m3 " + plugin.FriendlyMapName(server.MapFileNameRotation[2]) + "  /m4 " + plugin.FriendlyMapName(server.MapFileNameRotation[3]), VoteMsgDelay + 2);}
    		if (server.MapFileNameRotation.Count >= 6) {plugin.SendPlayerMessage(player_info.Name, "/m5 " + plugin.FriendlyMapName(server.MapFileNameRotation[4]) + "  /m6 " + plugin.FriendlyMapName(server.MapFileNameRotation[5]), VoteMsgDelay + 3);}
    		if (server.MapFileNameRotation.Count >= 8) {plugin.SendPlayerMessage(player_info.Name, "/m7 " + plugin.FriendlyMapName(server.MapFileNameRotation[6]) + "  /m8 " + plugin.FriendlyMapName(server.MapFileNameRotation[7]), VoteMsgDelay + 4);}
    		if ((server.MapFileNameRotation.Count == 1) || (server.MapFileNameRotation.Count == 3) || (server.MapFileNameRotation.Count == 5) || (server.MapFileNameRotation.Count == 7)) {plugin.SendPlayerMessage(player_info.Name, "/m" + server.MapFileNameRotation.Count.ToString() + " " + plugin.FriendlyMapName(server.MapFileNameRotation[server.MapFileNameRotation.Count -1]), VoteMsgDelay + 4);}
    		plugin.SendPlayerMessage(player_info.Name, "Next map: " + plugin.FriendlyMapName(server.NextMapFileName) + " - change by type /m#", VoteMsgDelay + 5);
    	}
    }


    Code #2
    Code:
    /////////////////////////////////
    // Admin Votemap - PART 2 //
    /////////////////////////////////
    // this script (part1+part2) gives admins (playername form custom list "admin_votemap") the option to change the next map when the current round is finished. it is a admin votemap on round end.
    // info > required custom list with name: admin_votemap
    // info > settings for insane limits: limit_evaluation: OnAnyChat     ;     limit_first_check: Code        ;        limit_action: none
    
    
    // SETTINGS (you can change this values) //
    int VoteMsgDelay = 15;    //   << set the time in secound for votemap delay (same value like part1)
    // SETTINGS END
    
    
    // check chat command, admin status
    if (((player.LastChat).Length < 1) || ((player.LastChat).Length > 4)) { return false; }
    if (!plugin.isInList(player.Name, "admin_votemap")) { return false; }
    if (server.TimeRound < 300) { return false; }
    
    //check admin votemap is active
    double SpecialVotemapTimeout = 0;
    if (server.Data.issetDouble("SpecialVotemapTimeout")) SpecialVotemapTimeout = server.Data.getDouble("SpecialVotemapTimeout");
    if (SpecialVotemapTimeout + 80 < server.TimeRound) { return false; }
    if (SpecialVotemapTimeout + VoteMsgDelay > server.TimeRound) { return false; }
    
    // check command
    int TmpNextMap = 0;
    if ((player.LastChat == "/m1") && (server.MapFileNameRotation.Count >= 1)) {TmpNextMap = 1;}
    if ((player.LastChat == "/m2") && (server.MapFileNameRotation.Count >= 2)) {TmpNextMap = 2;}
    if ((player.LastChat == "/m3") && (server.MapFileNameRotation.Count >= 3)) {TmpNextMap = 3;}
    if ((player.LastChat == "/m4") && (server.MapFileNameRotation.Count >= 4)) {TmpNextMap = 4;}
    if ((player.LastChat == "/m5") && (server.MapFileNameRotation.Count >= 5)) {TmpNextMap = 5;}
    if ((player.LastChat == "/m6") && (server.MapFileNameRotation.Count >= 6)) {TmpNextMap = 6;}
    if ((player.LastChat == "/m7") && (server.MapFileNameRotation.Count >= 7)) {TmpNextMap = 7;}
    if ((player.LastChat == "/m8") && (server.MapFileNameRotation.Count >= 8)) {TmpNextMap = 8;}
    
    // set next map
    if (TmpNextMap > 0) {
    	plugin.ServerCommand("mapList.setNextMapIndex", (TmpNextMap-1).ToString());
    	plugin.SendGlobalMessage("Next map: " + plugin.FriendlyMapName(server.MapFileNameRotation[TmpNextMap-1]));
    	plugin.ConsoleWrite("IL-Admin-Votemap > ^1^bNEXT MAP^0^n " + plugin.FriendlyMapName(server.MapFileNameRotation[TmpNextMap-1]) + " (" + player.Name + ")");
    	plugin.PRoConChat("IL-Admin-Votemap > ^1^bNEXT MAP^0^n " + plugin.FriendlyMapName(server.MapFileNameRotation[TmpNextMap-1]) + " (" + player.Name + ")");
    }
    Last edited by maxdralle; 22-11-2016 at 19:13.

  2. #2
    very cool limit man, i might use this instead of votemap.

 

 

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •