DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnSteppedOn()

override void TrapBase::OnSteppedOn ( EntityAI victim)
inlineprivate

CarScript specific reaction on BearTrap

this is also called on client (OnRPC->SnapOn->OnSteppedOn chain)

См. определение в файле Trap_Bear.c строка 67

68 {
69 if (GetGame().IsServer() && victim)
70 {
71 if (!victim.GetAllowDamage())
72 return;
73
74 if (victim.IsInherited(CarScript))
75 {
77 Param1<EntityAI> params = new Param1<EntityAI>(victim);
78 m_UpdateTimer.Run(UPDATE_TIMER_INTERVAL, this, "OnUpdate", params, true);
79
80 return;
81 }
82 else
83 {
84 foreach (vector raycastSourcePosition: m_RaycastSources)
85 {
86 vector raycastStart = ModelToWorld(raycastSourcePosition);
87 vector raycastEnd = "0 0.5 0" + raycastStart;
88
89 RaycastRVParams rayInput = new RaycastRVParams(raycastStart, raycastEnd, this);
90 rayInput.flags = CollisionFlags.ALLOBJECTS;
91 rayInput.type = ObjIntersectFire;
92 rayInput.radius = 0.05;
93 array<ref RaycastRVResult> results = new array<ref RaycastRVResult>();
94
95 if (DayZPhysics.RaycastRVProxy(rayInput, results))
96 {
97 foreach (RaycastRVResult result: results)
98 {
99 if (result.obj && !result.obj.IsDamageDestroyed() && !result.obj.IsAnyInherited({ItemBase, Plant}))
100 {
101 OnServerSteppedOn(result.obj, result.obj.GetDamageZoneNameByComponentIndex(result.component));
102 return;
103 }
104 }
105 }
106 }
107
108 OnServerSteppedOn(victim, "zone_leg_random");
109 }
110 }
111 else if (!GetGame().IsDedicatedServer())
112 {
113 if (victim)
114 {
115 if (victim.IsInherited(PlayerBase))
116 {
117 victim.SpawnDamageDealtEffect();
118 }
119
121 }
122 }
123 }
void CarScript()
Определения CarScript.c:280
ref Timer m_UpdateTimer
Определения RadialMenu.c:20
const float UPDATE_TIMER_INTERVAL
Определения TrapBase.c:15
float radius
radius along the ray tested
Определения DayZPhysics.c:57
int type
Определения DayZPhysics.c:73
CollisionFlags flags
Определения DayZPhysics.c:63
void OnServerSteppedOn(Object obj, string damageZone)
Определения Trap_Bear.c:136
static const vector m_RaycastSources[RAYCAST_SOURCES_COUNT]
Определения Trap_Bear.c:6
void PlaySoundBiteLeg()
Определения Trap_Bear.c:192
proto native CGame GetGame()
CollisionFlags
Определения EnDebug.c:141

Перекрестные ссылки RaycastRVParams::flags, GetGame(), m_RaycastSources, m_UpdateTimer, OnServerSteppedOn(), PlaySoundBiteLeg(), RaycastRVParams::radius, DayZPhysics::RaycastRVProxy(), RaycastRVParams::type и UPDATE_TIMER_INTERVAL.

Используется в SnapOnObject().