/
HideMap.cs
115 lines (104 loc) · 3.32 KB
/
HideMap.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using UnityEngine;
using System.Collections.Generic;
using CompanionServer.Handlers;
using System.Collections;
namespace Oxide.Plugins
{
[Info("HideMap", "bmgjet", "1.0.0")]
[Description("Blanks out the map")]
public class HideMap : RustPlugin
{
const string PermHidemap = "HideMap.enabled";
private Coroutine _routine;
public List<MapMarkerGenericRadius> markers = new List<MapMarkerGenericRadius>();
private void Init()
{
permission.RegisterPermission(PermHidemap, this);
}
void OnServerInitialized()
{
if (BasePlayer.activePlayerList.Count != 0 && _routine == null)
{
RunMapBlank();
}
foreach (VendingMachine machine in UnityEngine.Object.FindObjectsOfType<VendingMachine>())
{
machine.SetFlag(BaseEntity.Flags.Reserved4, false, false);
machine.UpdateMapMarker();
}
}
private void OnPlayerConnected(BasePlayer player)
{
if (_routine == null)
{
RunMapBlank();
}
}
void Unload()
{
MarkerDisplayingDelete(null, null, null);
if (_routine != null)
{
ServerMgr.Instance.StopCoroutine(_routine);
}
}
IEnumerator BlankRoutine()
{
do
{
DrawMap();
yield return CoroutineEx.waitForSeconds(2f);
} while (true);
}
void MarkerDisplayingDelete(BasePlayer player, string command, string[] args)
{
foreach (var m in markers)
{
if (m != null)
{
m.Kill();
m.SendUpdate();
}
}
markers.Clear();
}
object CanNetworkTo(MapMarkerGenericRadius marker, BasePlayer player)
{
if (!markers.Contains(marker) || (!player.IPlayer.HasPermission(PermHidemap) && markers.Contains(marker)))
{
return null;
}
return false;
}
void RunMapBlank()
{
_routine = ServerMgr.Instance.StartCoroutine(BlankRoutine());
Puts("BlankMap Thread Started!");
}
void DrawMap()
{
try
{
MarkerDisplayingDelete(null, null, null);
}
catch { }
MapMarkerGenericRadius MapMarkerCustom;
MapMarkerCustom = GameManager.server.CreateEntity("assets/prefabs/tools/map/genericradiusmarker.prefab", new Vector3(0,0,0)) as MapMarkerGenericRadius;
MapMarkerCustom.alpha = 1.0f;
MapMarkerCustom.color1 = Color.black;
MapMarkerCustom.color2 = Color.black;
MapMarkerCustom.radius = 100;
markers.Add(MapMarkerCustom);
foreach (var m in markers)
{
try
{
m.Spawn();
MapMarker.serverMapMarkers.Remove(m);
m.SendUpdate();
}
catch { }
}
}
}
}