mirror of
https://github.com/Jackzmc/sourcemod-plugins.git
synced 2025-05-06 21:53:21 +00:00
Fixes
This commit is contained in:
parent
a941649f9a
commit
b62f9fd542
17 changed files with 503 additions and 479 deletions
|
@ -1,172 +1,8 @@
|
|||
stock int CreateEnvBlockerBox(const float pos[3], bool enabled = true) {
|
||||
int entity = CreateEntityByName("env_physics_blocker");
|
||||
if(entity == -1) return -1;
|
||||
DispatchKeyValue(entity, "targetname", "hsblocker");
|
||||
DispatchKeyValue(entity, "initialstate", "1");
|
||||
DispatchKeyValue(entity, "BlockType", "0");
|
||||
TeleportEntity(entity, pos, NULL_VECTOR, NULL_VECTOR);
|
||||
if(DispatchSpawn(entity)) {
|
||||
if(enabled)
|
||||
AcceptEntityInput(entity, "Enable");
|
||||
return entity;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
stock int CreateEnvBlockerScaled(const char[] entClass, const float pos[3], const float scale[3] = { 5.0, 5.0, 5.0 }, bool enabled = true) {
|
||||
int entity = CreateEntityByName(entClass);
|
||||
DispatchKeyValue(entity, "targetname", "hsblocker");
|
||||
DispatchKeyValue(entity, "initialstate", "1");
|
||||
DispatchKeyValue(entity, "BlockType", "0");
|
||||
static float mins[3];
|
||||
mins = scale;
|
||||
NegateVector(mins);
|
||||
DispatchKeyValueVector(entity, "boxmins", mins);
|
||||
DispatchKeyValueVector(entity, "boxmaxs", scale);
|
||||
DispatchKeyValueVector(entity, "mins", mins);
|
||||
DispatchKeyValueVector(entity, "maxs", scale);
|
||||
|
||||
TeleportEntity(entity, pos, NULL_VECTOR, NULL_VECTOR);
|
||||
if(DispatchSpawn(entity)) {
|
||||
#if defined DEBUG_LOG_MAPSTART
|
||||
PrintToServer("spawn blocker scaled %.1f %.1f %.1f scale [%.0f %.0f %.0f]", pos[0], pos[1], pos[2], scale[0], scale[1], scale[2]);
|
||||
#endif
|
||||
SetEntPropVector(entity, Prop_Send, "m_vecMaxs", scale);
|
||||
SetEntPropVector(entity, Prop_Send, "m_vecMins", mins);
|
||||
if(enabled)
|
||||
AcceptEntityInput(entity, "Enable");
|
||||
#if defined DEBUG_BLOCKERS
|
||||
Effect_DrawBeamBoxRotatableToAll(pos, mins, scale, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 150.0, 0.1, 0.1, 0, 0.0, {255, 0, 0, 255}, 0);
|
||||
#endif
|
||||
return entity;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
enum PortalType {
|
||||
Portal_Relative,
|
||||
Portal_Teleport
|
||||
}
|
||||
PortalType entityPortalType[2048];
|
||||
float entityPortalOffsets[2048][3];
|
||||
|
||||
stock int CreatePortal(PortalType type, const char model[64], const float pos[3], const float offset[3] = { 40.0, 40.0, 0.0 }, const float scale[3] = { 5.0, 5.0, 5.0 }) {
|
||||
int entity = CreateEntityByName("trigger_multiple");
|
||||
if(entity == -1) return -1;
|
||||
DispatchKeyValue(entity, "spawnflags", "513");
|
||||
DispatchKeyValue(entity, "solid", "6");
|
||||
DispatchKeyValue(entity, "targetname", "hsportal");
|
||||
DispatchKeyValue(entity, "wait", "0");
|
||||
if(DispatchSpawn(entity)) {
|
||||
TeleportEntity(entity, pos, NULL_VECTOR, NULL_VECTOR);
|
||||
static float mins[3];
|
||||
mins = scale;
|
||||
NegateVector(mins);
|
||||
SetEntPropVector(entity, Prop_Send, "m_vecMaxs", scale);
|
||||
SetEntPropVector(entity, Prop_Send, "m_vecMins", mins);
|
||||
SetEntProp(entity, Prop_Send, "m_nSolidType", 2);
|
||||
|
||||
HookSingleEntityOutput(entity, "OnStartTouch", OnPortalTouch, false);
|
||||
#if defined DEBUG_BLOCKERS
|
||||
Effect_DrawBeamBoxRotatableToAll(pos, mins, scale, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 150.0, 0.1, 0.1, 0, 0.0, {255, 0, 255, 255}, 0);
|
||||
#endif
|
||||
#if defined DEBUG_LOG_MAPSTART
|
||||
PrintToServer("spawn portal %d - pos %.1f %.1f %.1f - scale %.1f %.1f %.1f", entity, pos[0], pos[1], pos[2], scale[0], scale[1], scale[2]);
|
||||
#endif
|
||||
AcceptEntityInput(entity, "Enable");
|
||||
|
||||
entityPortalOffsets[entity] = NULL_VECTOR;
|
||||
|
||||
// Convert relative offset to one based off full scale:
|
||||
entityPortalType[entity] = type;
|
||||
if(type == Portal_Relative) {
|
||||
if(offset[0] != 0.0) entityPortalOffsets[entity][0] = (scale[0] * 2) + offset[0];
|
||||
if(offset[1] != 0.0) entityPortalOffsets[entity][1] = (scale[1] * 2) + offset[1];
|
||||
if(offset[2] != 0.0) entityPortalOffsets[entity][2] = (scale[2] * 2) + offset[2];
|
||||
} else {
|
||||
entityPortalOffsets[entity] = offset;
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void OnPortalTouch(const char[] output, int caller, int activator, float delay) {
|
||||
if(entityPortalType[caller] == Portal_Relative) {
|
||||
float pos[3];
|
||||
GetClientAbsOrigin(activator, pos);
|
||||
float ang[3];
|
||||
GetClientAbsAngles(activator, ang);
|
||||
if(ang[0] < 0) pos[0] -= entityPortalOffsets[caller][0];
|
||||
else pos[0] += entityPortalOffsets[caller][0];
|
||||
if(ang[1] < 0) pos[1] -= entityPortalOffsets[caller][1];
|
||||
else pos[1] += entityPortalOffsets[caller][1];
|
||||
if(ang[2] < 0) pos[2] -= entityPortalOffsets[caller][2];
|
||||
else pos[2] += entityPortalOffsets[caller][2];
|
||||
TeleportEntity(activator, pos, NULL_VECTOR, NULL_VECTOR);
|
||||
} else {
|
||||
TeleportEntity(activator, entityPortalOffsets[caller], NULL_VECTOR, NULL_VECTOR);
|
||||
}
|
||||
}
|
||||
|
||||
stock int StartPropCreate(const char[] entClass, const char[] model, const float pos[3], const float ang[3]) {
|
||||
int entity = CreateEntityByName(entClass);
|
||||
if(entity == -1) return -1;
|
||||
DispatchKeyValue(entity, "model", model);
|
||||
DispatchKeyValue(entity, "solid", "6");
|
||||
DispatchKeyValue(entity, "targetname", "hsprop");
|
||||
DispatchKeyValue(entity, "disableshadows", "1");
|
||||
TeleportEntity(entity, pos, ang, NULL_VECTOR);
|
||||
return entity;
|
||||
}
|
||||
|
||||
stock int CreateProp(const char[] entClass, const char[] model, const float pos[3], const float ang[3]) {
|
||||
int entity = StartPropCreate(entClass, model, pos, ang);
|
||||
if(DispatchSpawn(entity)) {
|
||||
#if defined DEBUG_LOG_MAPSTART
|
||||
PrintToServer("spawn prop %.1f %.1f %.1f model %s", pos[0], pos[1], pos[2], model[7]);
|
||||
#endif
|
||||
return entity;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
stock int CreateDummy(const char[] model, const char[] anim, const float pos[3], const float ang[3] = NULL_VECTOR) {
|
||||
int entity = StartPropCreate("commentary_dummy", model, pos, ang);
|
||||
if(entity == -1) return -1;
|
||||
DispatchKeyValue(entity, "LookAtPlayers", "Yes");
|
||||
DispatchKeyValue(entity, "StartingWeapons", "weapon_rifle_ak47");
|
||||
DispatchKeyValue(entity, "StartingAnim", anim); //idle_calm_rifle
|
||||
DispatchKeyValueFloat(entity, "LookAtPlayers", 40.0);
|
||||
DispatchSpawn(entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
// Taken from silver's https://forums.alliedmods.net/showthread.php?p=1658873
|
||||
stock int CreateDynamicLight(float vOrigin[3], float vAngles[3], int color, float brightness, int style = 0) {
|
||||
int entity = CreateEntityByName("light_dynamic");
|
||||
if( entity == -1)
|
||||
return -1;
|
||||
|
||||
DispatchKeyValue(entity, "_light", "0 0 0 255");
|
||||
DispatchKeyValue(entity, "brightness", "1");
|
||||
DispatchKeyValueFloat(entity, "spotlight_radius", 32.0);
|
||||
DispatchKeyValueFloat(entity, "distance", brightness);
|
||||
DispatchKeyValue(entity, "targetname", "hslamp");
|
||||
DispatchKeyValueFloat(entity, "style", float(style));
|
||||
SetEntProp(entity, Prop_Send, "m_clrRender", color);
|
||||
if(DispatchSpawn(entity)) {
|
||||
TeleportEntity(entity, vOrigin, vAngles, NULL_VECTOR);
|
||||
AcceptEntityInput(entity, "TurnOn");
|
||||
#if defined DEBUG_LOG_MAPSTART
|
||||
PrintToServer("spawn dynamic light %.1f %.1f %.1f", vOrigin[0], vOrigin[1], vOrigin[2]);
|
||||
#endif
|
||||
return entity;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
#define ENT_PROP_NAME "hsprop"
|
||||
#define ENT_BLOCKER_NAME "hsblocker"
|
||||
#define ENT_PORTAL_NAME "hsportal"
|
||||
#define ENT_ENV_NAME "hsenv"
|
||||
#include <gamemodes/ents>
|
||||
|
||||
stock void CheatCommand(int client, const char[] command, const char[] argument1) {
|
||||
int userFlags = GetUserFlagBits(client);
|
||||
|
@ -182,7 +18,7 @@ stock void EntFire(const char[] name, const char[] input) {
|
|||
static char targetname[64];
|
||||
static char cmd[32];
|
||||
#if defined DEBUG_LOG_MAPSTART
|
||||
PrintToServer("[H&S] EntFire: %s \"%s\"", name, input);
|
||||
PrintToServer("EntFire: %s \"%s\"", name, input);
|
||||
#endif
|
||||
int len = SplitString(input, " ", cmd, sizeof(cmd));
|
||||
if(len > -1) SetVariantString(input[len]);
|
||||
|
@ -220,11 +56,6 @@ stock void EntFire(const char[] name, const char[] input) {
|
|||
}
|
||||
}
|
||||
|
||||
int GetHammerId(int entity) {
|
||||
return HasEntProp(entity, Prop_Data, "m_iHammerID") ? GetEntProp(entity, Prop_Data, "m_iHammerID") : -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SetupEntities(bool blockers = true, bool props = true, bool portals = true) {
|
||||
#if defined DEBUG_BLOCKERS
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue