DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PluginUniversalTemperatureSourceServer.c
См. документацию.
1class PluginUniversalTemperatureSourceServer extends PluginBase
2{
3 const int INTERVAL = 1;
4 const float LOOKUP_RADIUS = 20;
5
6 protected float m_AccuTime;
7 protected ref set<PlayerBase> m_ClientList;
8
10
16
17 override void OnUpdate(float delta_time)
18 {
19 if (m_ClientList.Count() > 0)
20 {
21 m_AccuTime += delta_time;
22
23 if (m_AccuTime > INTERVAL)
24 {
25 m_AccuTime = 0;
26 SendDebug();
27 }
28 }
29 }
30
32 {
34
35 if (!player)
36 return;
37
38 vector playerPos = player.GetPosition();
39 array<Object> nearestObjects = new array<Object>();
40
41 GetGame().GetObjectsAtPosition(playerPos, LOOKUP_RADIUS, nearestObjects, null);
42
43 UTemperatureSource uts;
44 UTemperatureSourceDebug utsd;
45
46 foreach (Object nearestObject : nearestObjects)
47 {
48 EntityAI ent = EntityAI.Cast(nearestObject);
49 if (ent && ent.IsUniversalTemperatureSource() && ent != player)
50 {
51 uts = ent.GetUniversalTemperatureSource();
52 utsd = new UTemperatureSourceDebug();
53 utsd.AddHeader(ent.GetType());
54 utsd.Add("position", uts.GetPosition().ToString(false));
55 utsd.Add("fullrange", uts.GetFullRange().ToString());
56 utsd.Add("maxrange", uts.GetMaxRange().ToString());
57 utsd.Add("temperatureCap", uts.GetTemperatureCap().ToString());
58 utsd.Add("temperatureItemCap", uts.GetTemperatureItemCap().ToString());
59 utsd.Commit();
60
61 m_UTemperatureSourceDebugs.Insert(utsd);
62 }
63 }
64
65 if (player.GetItemInHands() && player.GetItemInHands().IsUniversalTemperatureSource())
66 {
67 uts = player.GetItemInHands().GetUniversalTemperatureSource();
68 utsd = new UTemperatureSourceDebug();
69 utsd.AddHeader(player.GetItemInHands().GetType());
70 utsd.Add("position", uts.GetPosition().ToString(false));
71 utsd.Add("fullrange", uts.GetFullRange().ToString());
72 utsd.Add("maxrange", uts.GetMaxRange().ToString());
73 utsd.Add("temperatureCap", uts.GetTemperatureCap().ToString());
74 utsd.Add("temperatureItemCap", uts.GetTemperatureItemCap().ToString());
75 utsd.Commit();
76
77 m_UTemperatureSourceDebugs.Insert(utsd);
78 }
79 }
80
81 void SendDebug()
82 {
83 int clientCount = m_ClientList.Count();
84 foreach (PlayerBase player : m_ClientList)
85 {
86 if (player)
87 {
89 ScriptRPC rpc = new ScriptRPC();
91 rpc.Send(player, ERPCs.DEV_UTS_DEBUG_DATA, true, player.GetIdentity());
92 }
93 else
94 m_ClientList.RemoveItem(player);
95 }
96 }
97
98 void OnRequestReceived(PlayerBase player, bool enable)
99 {
100 int index = m_ClientList.Find(player);
101
102 if (enable)
103 {
104 m_ClientList.Insert(player);
105 }
106 else if (index != -1 && m_ClientList.Count() > 0)
107 {
108 m_ClientList.Remove(index);
109 }
110 }
111
113 {
114 bool enable;
115 ctx.Read(enable);
116
117 OnRequestReceived(player, enable);
118 }
119}
ERPCs
Определения ERPCs.c:2
proto native void GetObjectsAtPosition(vector pos, float radius, out array< Object > objects, out array< CargoBase > proxyCargos)
Returns list of all objects in circle "radius" around position "pos".
Определения Building.c:6
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
float m_AccuTime
[m]
Определения PluginRemotePlayerDebugServer.c:7
void PluginUniversalTemperatureSourceServer()
void OnRPC(ParamsReadContext ctx, PlayerBase player)
const float LOOKUP_RADIUS
[s]
ref array< ref UTemperatureSourceDebug > m_UTemperatureSourceDebugs
ref set< PlayerBase > m_ClientList
Определения PluginRemotePlayerDebugServer.c:3
void OnRequestReceived(PlayerBase player, bool enable)
const int INTERVAL
Определения PluginRemotePlayerDebugServer.c:8
void SendDebug()
Определения PluginRemotePlayerDebugServer.c:53
void GatherTemperatureSources(PlayerBase player)
override void OnUpdate(float delta_time)
Определения PluginBase.c:2
proto native void Send(Object target, int rpc_type, bool guaranteed, PlayerIdentity recipient=NULL)
Initiate remote procedure call. When called on client, RPC is evaluated on server; When called on ser...
Определения gameplay.c:105
proto bool Write(void value_out)
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()