Game4Freak

ExampleEvent

May 8th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.34 KB | None | 0 0
  1. using Rocket.API;
  2. using Rocket.API.Collections;
  3. using Rocket.Core;
  4. using Rocket.Core.Plugins;
  5. using Rocket.Unturned;
  6. using Rocket.Unturned.Chat;
  7. using Rocket.Unturned.Enumerations;
  8. using Rocket.Unturned.Events;
  9. using Rocket.Unturned.Player;
  10. using SDG.Unturned;
  11. using Steamworks;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using System.Reflection;
  16. using System.Threading;
  17. using UnityEngine;
  18.  
  19. namespace Game4Freak.EventManager
  20. {
  21.     public class ExampleEvent
  22.     {
  23.         // Setting variables for this EventType
  24.         private static EventType type = new EventType("freeRandomItem", 2, "<minplayers> <itemIDs[]>", 1);
  25.  
  26.         public ExampleEvent()
  27.         {
  28.         }
  29.  
  30.         public void load()
  31.         {
  32.             // Adding EventType to EventManager
  33.             EventManager.Instance.removeEventType(type.id);
  34.             EventManager.Instance.addEventType(type.id, type.minParameterAmount, type.parameters, type.minPlayers);
  35.             // Connecting to EventManager events
  36.             EventManager.onEventTriggered += onEventTrigger;
  37.             EventManager.onEventNotification += onEventNotify;
  38.         }
  39.  
  40.         public void unload()
  41.         {
  42.             // Disconnecting from EventManager events
  43.             EventManager.onEventTriggered -= onEventTrigger;
  44.             EventManager.onEventNotification -= onEventNotify;
  45.         }
  46.  
  47.         // EventManager.onEventNotification
  48.         private void onEventNotify(Event @event, float secondsBeforeEvent)
  49.         {
  50.             if (@event.type == type.id && EventManager.Instance.Configuration.Instance.freeRandomItemPreNotification)
  51.             {
  52.                 List<float> sortedNotifications = EventManager.Instance.Configuration.Instance.minutesNotificationBefore.OrderBy(i => i).ToList();
  53.                 if (secondsBeforeEvent == sortedNotifications[0] * 60)
  54.                 {
  55.                     UnturnedChat.Say(EventManager.Instance.Translate("exampleevent_on_event_notification", @event.name), UnturnedChat.GetColorFromName(EventManager.Instance.Configuration.Instance.messageColor, Color.green));
  56.                 }
  57.             }
  58.         }
  59.  
  60.         // EventManager.onEventTriggered
  61.         private void onEventTrigger(Event @event)
  62.         {
  63.             if (@event.type == type.id)
  64.             {
  65.                 int minPlayers;
  66.                 if (int.TryParse(@event.parameters[0], out minPlayers) && Provider.clients.Count < minPlayers)
  67.                 {
  68.                     UnturnedChat.Say(EventManager.Instance.Translate("exmapleevent_insufficient_players", @event.name), UnturnedChat.GetColorFromName(EventManager.Instance.Configuration.Instance.messageColor, Color.green));
  69.                     return;
  70.                 }
  71.                 List<string> parameters = @event.parameters;
  72.                 parameters.RemoveRange(0, 1);
  73.                 if (!parametersHaveItemID(parameters))
  74.                 {
  75.                     UnturnedChat.Say(EventManager.Instance.Translate("exampleevent_invalid_ids", @event.name), UnturnedChat.GetColorFromName(EventManager.Instance.Configuration.Instance.messageColor, Color.green));
  76.                     return;
  77.                 }
  78.                 foreach (var sPlayer in Provider.clients)
  79.                 {
  80.                     UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(sPlayer);
  81.                     bool fin = false;
  82.                     while (!fin)
  83.                     {
  84.                         ushort itemID;
  85.                         if (ushort.TryParse(parameters[EventManager.Instance.randomNum(0, parameters.Count - 1)], out itemID))
  86.                         {
  87.                             player.GiveItem(itemID, 1);
  88.                             UnturnedChat.Say(player, EventManager.Instance.Translate("exampleevent_give_away", @event.name), UnturnedChat.GetColorFromName(EventManager.Instance.Configuration.Instance.messageColor, Color.green));
  89.                             fin = true;
  90.                         }
  91.                     }
  92.                 }
  93.             }
  94.         }
  95.  
  96.         public bool parametersHaveItemID(List<string> parameters)
  97.         {
  98.             ushort itemID;
  99.             foreach (var parameter in parameters)
  100.             {
  101.                 if (ushort.TryParse(parameter, out itemID))
  102.                     return true;
  103.             }
  104.             return false;
  105.         }
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment