Page 1 of 2 12 LastLast
Results 1 to 10 of 13
  1. #1
    Senior Member
    Join Date
    Nov 2011
    Location
    Germany
    Posts
    154

    [BF4] Insane Limits & VIP Slot Manager: VIP Slot for Help Server Start v1.0

    VIP Slot for Help Server Start for Insane Limits & VIP Slot Manager [BF4]

    With this script you can reward anyone with a reserved slot who help start your server


    ATTENTION:
    1) You need Insane Limits and VIP Slot Mananger (https://forum.myrcon.com/showthread....P-Slot-Manager)
    2) You must set iPlayerToCopy in CODE#1 and CODE#2


    SETUP LIMIT#1
    limit_evaluation: OnJoin
    limit_first_check: Code
    limit_first_check_code: paste the CODE#1 here

    CODE#1
    Code:
    // number of players to be copied to reserve list
    int iPlayerToVip = 10;
    
    // when the players list is copied over
    int iPlayerToCopy = 20;
    
    // number of days rewarded for helping to start the server
    int iRewardDays = 3;
    
    // show events at procon chat
    // yes = true | no = false
    bool bShowToProcon = true;
    
    
    /////////////
    // dont edit
    /////////////
    
    int iVipSlotCreated = 0;
    if (server.Data.issetInt("vipSlotCreated")) iVipSlotCreated = server.Data.getInt("vipSlotCreated");
    
    if (!server.Data.issetObject("vipPlayerList")) server.Data.setObject("vipPlayerList", new List<String>());
    List<String> lVipPlayerList = (List<String>)server.Data.getObject("vipPlayerList");
    
    // add player to temp reserve list
    if (server.PlayerCount < iPlayerToCopy && iVipSlotCreated == 0) {
    	
    	// add new player
    	lVipPlayerList.Add(player.Name);
    	
    	// show temp reserve list
    	String sVipPlayerList = String.Join(", ", lVipPlayerList.ToArray());
    	if (bShowToProcon) plugin.PRoConChat("^b^1VIPSlots^0^n: Player ( " + lVipPlayerList.Count + " ) " + sVipPlayerList);
    
    // create vips
    } else if  (server.PlayerCount == iPlayerToCopy && iVipSlotCreated == 0) {
    
    	// stop creating reserve list
    	server.Data.setInt("vipSlotCreated", 1);
    	
    	// create reserve slots
    	if (bShowToProcon) plugin.PRoConChat("^b^1VIPSlots^0^n: Create VIP-Slots for:");
    	List<String> ReservervedSlots = plugin.GetReservedSlotsList();
    	for (int i = 0; i < lVipPlayerList.Count; i++){
    		if (i == iPlayerToVip) break;
    		
    		// check if player has reserve slot
    		String sPlayerMessage = null;
    		if (ReservervedSlots.Contains(lVipPlayerList[i])) {
    			sPlayerMessage = "Thanks for help to start server, " + lVipPlayerList[i] + "! +" + iRewardDays + " days for your VIP slot";
    			plugin.SendPlayerMessage(lVipPlayerList[i], sPlayerMessage);
    			plugin.SendPlayerYell(lVipPlayerList[i], sPlayerMessage, 5);
    		} else {
    			sPlayerMessage = "Thanks for help to start server, " + lVipPlayerList[i] + "! You have now a VIP slot";
    			plugin.SendPlayerMessage(lVipPlayerList[i], sPlayerMessage);
    			plugin.SendPlayerYell(lVipPlayerList[i], sPlayerMessage, 5);
    		}
    		
    		// add player to reserve list
    		plugin.SendGlobalMessage("/vsm-addvip " + lVipPlayerList[i] + " +" + iRewardDays);
    		if (bShowToProcon) plugin.PRoConChat("^b^1VIPSlots^0^n: (" + (i+1) + ")" + lVipPlayerList[i]);
    	}
    }
    return false;
    SETUP LIMIT#1
    limit_evaluation: OnLeave
    limit_first_check: Code
    limit_first_check_code: paste the CODE#2 here

    CODE#2
    Code:
    // when the players list is copied over
    int iPlayerToCopy = 20;
    
    // show events at procon chat
    // yes = true | no = false
    bool bShowToProcon = true;
    
    
    /////////////
    // dont edit
    /////////////
    
    int iVipSlotCreated = 0;
    if (server.Data.issetInt("vipSlotCreated")) iVipSlotCreated = server.Data.getInt("vipSlotCreated");
    
    //create list and read list
    if (!server.Data.issetObject("vipPlayerList")) server.Data.setObject("vipPlayerList", new List<String>());
    List<String> lVipPlayerList = (List<String>)server.Data.getObject("vipPlayerList");
    
    if (server.PlayerCount < iPlayerToCopy && iVipSlotCreated == 0) {
    	// remove player
    	lVipPlayerList.Remove(player.Name);
    	if (bShowToProcon) plugin.PRoConChat("^b^1VIPSlots^0^n: Removed " + player.Name + " from temporary VIP list");
    }
    
    if (server.PlayerCount == 1) {
    	// vip slots created
    	server.Data.setInt("vipSlotCreated", 0);
    	lVipPlayerList.Clear();
    	if (bShowToProcon) plugin.PRoConChat("^b^1VIPSlots^0^n: Temporary VIP list cleared and open new chance to get vip slots");
    }
    return false;

    --------------------------------------------
    v1.0 (05-05-2017)
    - original version
    Last edited by Grovax; 06-05-2017 at 09:08.

  2. #2
    Senior Member
    Join Date
    Oct 2015
    Location
    Germany
    Posts
    276
    good idea, nice limit!

  3. #3
    Is it possible for anyone to help me?I want to block explosives from locker and metro

  4. #4
    Senior Member
    Join Date
    Nov 2011
    Location
    Germany
    Posts
    154
    Quote Originally Posted by m1o2u3s4 View Post
    Is it possible for anyone to help me?I want to block explosives from locker and metro
    ehm, wrong thread? you can ask here: https://forum.myrcon.com/showthread....imits-Requests

  5. #5
    It seems like this limit doesn't always add the VIPs. I believe it happens when the trigger number of players happens in between rounds. Something you might want to look in to.

    Other than that, it's a really great limit and I enjoy using it!

  6. #6
    Quote Originally Posted by Link4134 View Post
    It seems like this limit doesn't always add the VIPs. I believe it happens when the trigger number of players happens in between rounds. Something you might want to look in to.

    Other than that, it's a really great limit and I enjoy using it!
    Nevermind, I thought it was set to allow new VIPs when the server goes under 4 players. I can easily change this. Great limit!

  7. #7
    Senior Member
    Join Date
    Oct 2015
    Location
    Germany
    Posts
    276
    based on Grovax idea. here a script with the same idea, but a diffrent way to get a free vip.

    FREE !VIP SLOT for Server Starter
    Play between 08:00 till 12:00 o'clock for min. 2 hours to win a !VIP SLOT for 2 days

    SETUP LIMIT#1
    limit_evaluation: OnIntervalServer
    limit_interval: 555
    limit_first_check: Code
    limit_first_check_code: paste the CODE#1 here
    Code:
    /////////////////////////////////
    //   VIP Slot for Server Starter - PART 1-2
    //   IMPORTANT: requires vip slot manager plugin
    //   2 hours playtime (08:00 - 12:00) = vip for 2 days
    /////////////////////////////////
    // info > insane limits einstellungen: limit_evaluation: OnIntervalServer     ;     Interval: 555     ;    limit_first_check: Code       ;        limit_action: none
    
    // SETTINGS
    
    int TimeFrom = 8;   // time from
    int TimeTill = 12;   // time till
    int MinPlaytime = 120;   // min. playtime in minutes to win a vip slot
    int MinPlayersOnline = 6;   // min. players on server
    int WinVipSlotDays = 2;   // vip slot for how many days
    
    // SETTINGS END
    
    
    int t_TimeTill = TimeTill;
    int t_MinPlaytime = MinPlaytime - 5;
    
    //if ((DateTime.Now.ToString("ddd") != "Sa") && (DateTime.Now.ToString("ddd") != "So")) {t_TimeTill = TimeTill + 1;}
    if (server.PlayerCount < MinPlayersOnline) {return false;}
    
    double tmp_playtime = 0;
    string tmp_memory = String.Empty;
    if ((DateTime.Now.Hour >= TimeFrom) && (DateTime.Now.Hour < t_TimeTill)) {
    	List<String> starterList = new List<String>();
    	bool tmp_winner = false;
    	//Thread.Sleep(50);
    	if (DateTime.Now.Minute <= 25) {
    		plugin.SendGlobalMessage("####      FREE !VIP SLOT for Server Starter    ####");
    		plugin.SendGlobalMessage("##   Play between " + TimeFrom.ToString("00") + ":00 till " + TimeTill.ToString() + ":00 o'clock for       ##");
    		plugin.SendGlobalMessage("##   min. " + (MinPlaytime / 60).ToString() + " hours to win a !VIP SLOT for " + WinVipSlotDays.ToString() + " days   ##");
    		plugin.SendGlobalMessage("Type !playtime in chat to check your playtime");
    		plugin.PRoConChat("####      FREE !VIP SLOT for Server Starter    ####");
    		plugin.PRoConChat("##   Play between " + TimeFrom.ToString("00") + ":00 till " + TimeTill.ToString() + ":00 o'clock for       ##");
    		plugin.PRoConChat("##   min. " + (MinPlaytime / 60).ToString() + " hours to win a !VIP SLOT for " + WinVipSlotDays.ToString() + " days   ##");
    		plugin.PRoConChat("Type !playtime in chat to check your playtime");
    	}
    
    
    	List<PlayerInfoInterface> players = new List<PlayerInfoInterface>();
    	players.AddRange(team1.players);
    	players.AddRange(team2.players);
    	players.AddRange(team3.players);
    	players.AddRange(team4.players);
    	if (!plugin.Data.issetObject("server_starter_list")) plugin.Data.setObject("server_starter_list", new List<String>());
    	starterList = (List<String>)plugin.Data.getObject("server_starter_list");
    	foreach(PlayerInfoInterface player_info in players) {
    		tmp_playtime = Math.Round((player_info.TimeTotal / 60), 0);
    		if (tmp_playtime >= t_MinPlaytime) {
    			tmp_memory = DateTime.Now.ToString("dd-MM") + "_" + player_info.Name;
    			if (!starterList.Contains(tmp_memory)) {
    				//vip slot winner
    				starterList.Add(tmp_memory);
    				if ((DateTime.Now.Minute > 25) && (!tmp_winner)) {
    					plugin.SendGlobalMessage("####      FREE !VIP SLOT for Server Starter    ####");
    					plugin.SendGlobalMessage("##   Play between " + TimeFrom.ToString("00") + ":00 till " + TimeTill.ToString() + ":00 o'clock for       ##");
    					plugin.SendGlobalMessage("##   min. " + (MinPlaytime / 60).ToString() + " hours to win a !VIP SLOT for " + WinVipSlotDays.ToString() + " days   ##");
    					plugin.SendGlobalMessage("Type !playtime in chat to check your playtime");
    					plugin.PRoConChat("####      FREE !VIP SLOT for Server Starter    ####");
    					plugin.PRoConChat("##   Play between " + TimeFrom.ToString("00") + ":00 till " + TimeTill.ToString() + ":00 o'clock for       ##");
    					plugin.PRoConChat("##   min. " + (MinPlaytime / 60).ToString() + " hours to win a !VIP SLOT for " + WinVipSlotDays.ToString() + " days   ##");
    					plugin.PRoConChat("Type !playtime in chat to check your playtime");
    				}
    				if (!tmp_winner) plugin.SendGlobalYell("\n***   FREE !VIP SLOT for Server Starter   ***\n" + player_info.Name + " has won a !VIP SLOT for " + WinVipSlotDays.ToString() + " days!", 12);
    				tmp_winner = true;
    				plugin.ConsoleWrite("IL-VIP-Slot-Server-Starter > ^2^b" + player_info.Name + "^0^n has won a VIP Slot for " + WinVipSlotDays.ToString() + " days (playtime: " + tmp_playtime + " min.)");
    				plugin.SendGlobalMessage("/vsm-addvip " + player_info.Name + " +" + WinVipSlotDays.ToString());
    				plugin.SendGlobalMessage(player_info.Name + " has won a !VIP SLOT for " + WinVipSlotDays.ToString() + " days! Type in chat !playtime for more infos");
    				plugin.SendPlayerYell(player_info.Name, "\n***   FREE !VIP SLOT for Server Starter   ***\n" + player_info.Name + " has won a !VIP SLOT for " + WinVipSlotDays.ToString() + " days! \nThanks for your help to fill up the Server", 17);
    				plugin.PRoConChat("IL-VIP-Slot-Server-Starter > ^2^b" + player_info.Name + "^0^n has won a VIP Slot for " + WinVipSlotDays.ToString() + " days (playtime: " + tmp_playtime + " min.)");
    				plugin.PRoConChat(player_info.Name + " has won a !VIP SLOT for " + WinVipSlotDays.ToString() + " days!");
    			}
    		} else {
    			//info spammer playtime
    			if ((tmp_playtime < 6) || ((tmp_playtime >= 70) && (tmp_playtime < 80))) {
    				//TimeSpan tmp_TimeFrom = new TimeSpan(TimeFrom, 0, 0); 
    				TimeSpan tmp_TimeTill = new TimeSpan(TimeTill, 0, 0);
    				//TimeSpan tmp_joined = DateTime.Now.AddSeconds(((player_info.TimeTotal *-1) + (t_MinPlaytime * 60))).TimeOfDay;
    				TimeSpan tmp_joined = DateTime.Now.AddSeconds((player_info.TimeTotal *-1)).AddSeconds((t_MinPlaytime * 60)).TimeOfDay;
    				if ((DateTime.Now.Hour >= TimeFrom) && (tmp_joined < tmp_TimeTill)) {
    					//stay on server to get a slot
    					if (DateTime.Now.Minute > 25) {
    						plugin.SendPlayerMessage(player_info.Name,"####      FREE !VIP SLOT for Server Starter    ####");
    						plugin.SendPlayerMessage(player_info.Name,"##   Play between " + TimeFrom.ToString("00") + ":00 till " + TimeTill.ToString() + ":00 o'clock for       ##");
    						plugin.SendPlayerMessage(player_info.Name,"##   min. " + (MinPlaytime / 60).ToString() + " hours to win a !VIP SLOT for " + WinVipSlotDays.ToString() + " days   ##");
    					}
    					plugin.SendPlayerMessage(player_info.Name,player_info.Name + " !playtime: " + tmp_playtime.ToString() + "/" + MinPlaytime.ToString() + " minutes to win a !VIP");
    					plugin.PRoConChat("VIP Server Starter > " + player_info.Name + " !playtime: " + tmp_playtime.ToString() + "/" + MinPlaytime.ToString() + " minutes to win a !VIP");
    					plugin.SendPlayerYell(player_info.Name, "\n***   FREE !VIP SLOT for Server Starter   ***\n" + player_info.Name + " stay on Server to win a !VIP SLOT", 15);
    				}
    			}
    		}
    	}
    	if (tmp_winner) {
    		plugin.Data.setObject("server_starter_list", starterList);
    		plugin.SendGlobalMessage("Congrats - enjoy your !VIP SLOT");
    		plugin.PRoConChat("Congrats - enjoy your !VIP SLOT");
    	}
    } else if (DateTime.Now.Hour >= 16) {
    	if (plugin.Data.issetObject("server_starter_list")) plugin.Data.unsetObject("server_starter_list");
    }
    SETUP LIMIT#2
    limit_evaluation: OnAnyChat
    limit_interval: 555
    limit_first_check: Code
    limit_first_check_code: paste the CODE#2 here
    Code:
    /////////////////////////////////
    //   VIP Slot for Server Starter - PART 2-2
    //   2 hours playtime (08:00 - 12:00) = vip for 2 days
    /////////////////////////////////
    // info > insane limits einstellungen: limit_evaluation: OnAnyChat     ;     limit_first_check: Code       ;        limit_action: none
    
    int TimeFrom = 8;   // time from
    int TimeTill = 12;   // time till
    int MinPlaytime = 120;   // min. playtime in minutes to win a vip slot
    int WinVipSlotDays = 2;   // vip slot for how many days
    
    
    if ((player.LastChat).Length < 1) { return false; }
    
    if (Regex.Match(player.LastChat, @"!play|!time", RegexOptions.IgnoreCase).Success) {
    	plugin.SendGlobalMessage("FREE !VIP SLOT: Play between " + TimeFrom.ToString("00") + ":00 till " + TimeTill.ToString() + ":00 o'clock");
    	plugin.SendGlobalMessage("for min. " + (MinPlaytime / 60).ToString() + " hours to get a free !VIP SLOT for " + WinVipSlotDays.ToString() + " days");
    	if ((DateTime.Now.Hour >= TimeFrom) && (DateTime.Now.Hour < TimeTill)) {
    		plugin.SendGlobalMessage(player.Name + " !playtime: " + Math.Round((player.TimeTotal / 60), 0).ToString() + "/" + MinPlaytime.ToString() + " minutes to win a !VIP");
    		plugin.PRoConChat(player.Name + " !playtime: " + Math.Round((player.TimeTotal / 60), 0).ToString() + "/" + MinPlaytime.ToString() + " minutes to win a !VIP");
    	} else {
    		plugin.SendGlobalMessage(player.Name + " !playtime: " + Math.Round((player.TimeTotal / 60), 0).ToString() + " minutes");
    		plugin.PRoConChat(player.Name + " !playtime: " + Math.Round((player.TimeTotal / 60), 0).ToString() + " minutes");
    	}
    	plugin.SendGlobalMessage("Current Server Time: " + DateTime.Now.ToString("HH:mm"));
    }
    Developer of the VIP Slot Manager Plugin

  8. #8
    Nice script! Can you add a exclude list to this script? Server admin and people already permanently VIP do not need to win and be public announced, that admin wins just looks stupid when announced to the rest of the server...

  9. #9
    Senior Member
    Join Date
    Oct 2015
    Location
    Germany
    Posts
    276
    Quote Originally Posted by Talzac View Post
    Nice script! Can you add a exclude list to this script? Server admin and people already permanently VIP do not need to win and be public announced, that admin wins just looks stupid when announced to the rest of the server...
    from post #7, code1:

    replace line 52 from:
    Code:
    if (tmp_playtime >= t_MinPlaytime) {
    to
    Code:
    if ((tmp_playtime >= t_MinPlaytime) && (player_info.Name != "MrAdmin1")&& (player_info.Name != "MrAdmin2")) {
    then edit the bf playername "MrAdmin1, MrAdmin2, ..."
    Developer of the VIP Slot Manager Plugin

  10. #10
    Thanks
    but will this work using custom list?
    if ((tmp_playtime >= t_MinPlaytime) && (player_info.Name !=(plugin.isInList(player_info.Name, "already_perm_vip"))

 

 

Posting Permissions

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