Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
dayzspectator.c
Go to the documentation of this file.
2 {
3  private float m_SpeedMultiplier = 1.0;
4 
5  private float m_SendUpdateAcc = 0.0;
6 
7  void DayZSpectator()
8  {
9  SetEventMask(EntityEvent.FRAME);
10  }
11 
12  override void EOnFrame(IEntity other, float timeSlice)
13  {
14  if (GetUApi().GetInputByID(UACarShiftGearUp).LocalPress())
15  m_SpeedMultiplier = m_SpeedMultiplier + 2;
16  if (GetUApi().GetInputByID(UACarShiftGearDown).LocalPress())
17  m_SpeedMultiplier = m_SpeedMultiplier - 2;
18 
19  float speed = 5.0 * m_SpeedMultiplier;
20  if (GetUApi().GetInputByID(UATurbo).LocalValue())
21  speed *= 2;
22 
23  float forward = GetUApi().GetInputByID(UAMoveForward).LocalValue() - GetUApi().GetInputByID(UAMoveBack).LocalValue();
24  float strafe = GetUApi().GetInputByID(UAMoveRight).LocalValue() - GetUApi().GetInputByID(UAMoveLeft).LocalValue();
25 
26  vector direction = GetDirection();
27  vector directionAside = vector.Up * direction;
28 
29  vector oldPos = GetPosition();
30  vector forwardChange = forward * timeSlice * direction * speed;
31  vector strafeChange = strafe * timeSlice * directionAside * speed;
32  vector newPos = oldPos + forwardChange + strafeChange;
33  float yMin = GetGame().SurfaceRoadY(newPos[0], newPos[2]);
34  if (newPos[1] < yMin)
35  newPos[1] = yMin;
36 
37  SetPosition(newPos);
38 
39  float yawDiff = GetUApi().GetInputByID(UAAimLeft).LocalValue() - GetUApi().GetInputByID(UAAimRight).LocalValue();
40  float pitchDiff = GetUApi().GetInputByID(UAAimDown).LocalValue() - GetUApi().GetInputByID(UAAimUp).LocalValue();
41  vector oldOrient = GetOrientation();
42  vector newOrient = oldOrient;
43  newOrient[0] = newOrient[0] - Math.RAD2DEG * yawDiff * timeSlice;
44  newOrient[1] = newOrient[1] - Math.RAD2DEG * pitchDiff * timeSlice;
45  if (newOrient[1] < -89)
46  newOrient[1] = -89;
47  if (newOrient[1] > 89)
48  newOrient[1] = 89;
49 
50  SetOrientation(newOrient);
51 
52  if (m_SendUpdateAcc > 0.5)
53  {
54  GetGame().UpdateSpectatorPosition(newPos);
55  m_SendUpdateAcc = 0;
56  }
57 
58  m_SendUpdateAcc = m_SendUpdateAcc + timeSlice;
59  }
60 };
GetGame
proto native CGame GetGame()
DayZSpectator
Definition: dayzspectator.c:1
IEntity
Definition: enentity.c:164
GetPosition
class JsonUndergroundAreaTriggerData GetPosition
Definition: undergroundarealoader.c:9
vector
Definition: enconvert.c:105
SetPosition
proto native void SetPosition(vector position)
Set the world position of the Effect.
Definition: effect.c:436
Camera
Definition: camera.c:69
GetUApi
proto native UAInputAPI GetUApi()
Math
Definition: enmath.c:6
EntityEvent
EntityEvent
Entity events for event-mask, or throwing event from code.
Definition: enentity.c:44
GetOrientation
vector GetOrientation()
Definition: areadamagemanager.c:306