mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2025-03-04 01:35:23 +03:00
parent
8cd9086937
commit
75f142e18a
@ -1763,9 +1763,31 @@ void CBaseTrigger::TeleportTouch(CBaseEntity *pOther)
|
|||||||
|
|
||||||
if (pOther->IsPlayer())
|
if (pOther->IsPlayer())
|
||||||
{
|
{
|
||||||
// make origin adjustments in case the teleportee is a player. (origin in center, not at feet)
|
#ifdef REGAMEDLL_ADD
|
||||||
|
// If a landmark was specified, offset the player relative to the landmark
|
||||||
|
if (m_iszLandmarkName)
|
||||||
|
{
|
||||||
|
edict_t *pentLandmark = FIND_ENTITY_BY_TARGETNAME(nullptr, STRING(m_iszLandmarkName));
|
||||||
|
|
||||||
|
if (!FNullEnt(pentLandmark))
|
||||||
|
{
|
||||||
|
Vector diff = pevToucher->origin - VARS(pentLandmark)->origin;
|
||||||
|
tmp += diff;
|
||||||
|
tmp.z--; // offset by +1 because -1 will run out of this scope.
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// fallback, shouldn't happen but anyway.
|
||||||
tmp.z -= pOther->pev->mins.z;
|
tmp.z -= pOther->pev->mins.z;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
// make origin adjustments in case the teleportee is a player. (origin in center, not at feet)
|
||||||
|
{
|
||||||
|
tmp.z -= pOther->pev->mins.z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tmp.z++;
|
tmp.z++;
|
||||||
|
|
||||||
@ -1817,6 +1839,26 @@ void CTriggerTeleport::Spawn()
|
|||||||
SetTouch(&CTriggerTeleport::TeleportTouch);
|
SetTouch(&CTriggerTeleport::TeleportTouch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CTriggerTeleport::KeyValue(KeyValueData *pkvd)
|
||||||
|
{
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
if (FStrEq(pkvd->szKeyName, "landmark"))
|
||||||
|
{
|
||||||
|
if (Q_strlen(pkvd->szValue) > 0)
|
||||||
|
{
|
||||||
|
m_iszLandmarkName = ALLOC_STRING(pkvd->szValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If empty, handle it in the teleport touch instead
|
||||||
|
pkvd->fHandled = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
CBaseTrigger::KeyValue(pkvd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(info_teleport_destination, CPointEntity, CCSPointEntity)
|
LINK_ENTITY_TO_CLASS(info_teleport_destination, CPointEntity, CCSPointEntity)
|
||||||
LINK_ENTITY_TO_CLASS(func_buyzone, CBuyZone, CCSBuyZone)
|
LINK_ENTITY_TO_CLASS(func_buyzone, CBuyZone, CCSBuyZone)
|
||||||
|
|
||||||
|
@ -204,6 +204,11 @@ public:
|
|||||||
void EXPORT CounterUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
void EXPORT CounterUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
void EXPORT ToggleUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
void EXPORT ToggleUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
void InitTrigger();
|
void InitTrigger();
|
||||||
|
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
// For trigger_teleport TriggerTouch
|
||||||
|
int m_iszLandmarkName = 0;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SF_TRIGGER_HURT_TARGETONCE BIT(0) // Only fire hurt target once
|
#define SF_TRIGGER_HURT_TARGETONCE BIT(0) // Only fire hurt target once
|
||||||
@ -393,6 +398,7 @@ class CTriggerTeleport: public CBaseTrigger
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBuyZone: public CBaseTrigger
|
class CBuyZone: public CBaseTrigger
|
||||||
|
@ -1934,6 +1934,7 @@
|
|||||||
bombradius(integer) : "Bomb Radius" : 500
|
bombradius(integer) : "Bomb Radius" : 500
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@PointClass base(Targetname) iconsprite("sprites/CS/info_target.spr") = info_landmark : "Transition/Relative teleport Landmark" []
|
||||||
@PointClass base(Targetname) iconsprite("sprites/CS/info_target.spr") = info_null : "info_null (spotlight target)" []
|
@PointClass base(Targetname) iconsprite("sprites/CS/info_target.spr") = info_null : "info_null (spotlight target)" []
|
||||||
@PointClass iconsprite("sprites/CS/info_player_deathmatch.spr") base(PlayerClass) = info_player_deathmatch : "Terrorist start" []
|
@PointClass iconsprite("sprites/CS/info_player_deathmatch.spr") base(PlayerClass) = info_player_deathmatch : "Terrorist start" []
|
||||||
@PointClass iconsprite("sprites/CS/info_player_start.spr") base(PlayerClass) = info_player_start : "Counter-terrorist start" []
|
@PointClass iconsprite("sprites/CS/info_player_start.spr") base(PlayerClass) = info_player_start : "Counter-terrorist start" []
|
||||||
@ -2264,6 +2265,7 @@
|
|||||||
|
|
||||||
@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport"
|
@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport"
|
||||||
[
|
[
|
||||||
|
landmark(string) : "Landmark name"
|
||||||
spawnflags(flags) =
|
spawnflags(flags) =
|
||||||
[
|
[
|
||||||
256: "Keep angles" : 0
|
256: "Keep angles" : 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user