forked from UNLOZE/sm-plugins
Rename of unused plugins
either not used at all or in disabled
This commit is contained in:
@@ -0,0 +1,431 @@
|
||||
#include <zombiereloaded>
|
||||
#include <sourcemod>
|
||||
#include <sdktools>
|
||||
#include <multicolors>
|
||||
|
||||
public Plugin myinfo =
|
||||
{
|
||||
name = "Meteors",
|
||||
author = "Neon",
|
||||
description = "",
|
||||
version = "Meteors",
|
||||
url = "https://steamcommunity.com/id/n3ontm"
|
||||
}
|
||||
|
||||
//ambient/explosions/explode_9.wav
|
||||
//models/effects/vol_light128x512.mdl
|
||||
|
||||
new String:debugString[64];
|
||||
|
||||
bool g_bEnabled = false;
|
||||
|
||||
public void OnPluginStart()
|
||||
{
|
||||
HookEvent("round_end", OnRoundEnding);
|
||||
RegAdminCmd("sm_meteors", Command_Meteors, ADMFLAG_ROOT);
|
||||
}
|
||||
|
||||
public void OnMapStart()
|
||||
{
|
||||
g_bEnabled = false;
|
||||
PrecacheModel("models/props/cs_office/vending_machine.mdl");
|
||||
CreateTimer(5.0, MeteorMain, INVALID_HANDLE, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
|
||||
}
|
||||
|
||||
public void OnRoundEnding(Event hEvent, const char[] sEvent, bool bDontBroadcast)
|
||||
{
|
||||
g_bEnabled = false;
|
||||
}
|
||||
|
||||
public Action Command_Meteors(int client, int args)
|
||||
{
|
||||
if (g_bEnabled)
|
||||
{
|
||||
g_bEnabled = false;
|
||||
CPrintToChatAll("{darkred}[Meteors] {white}%N has disabled Meteors!", client);
|
||||
}
|
||||
else if (!(g_bEnabled))
|
||||
{
|
||||
g_bEnabled = true;
|
||||
CPrintToChatAll("{darkred}[Meteors] {white}%N has enabled Meteors!", client);
|
||||
}
|
||||
}
|
||||
|
||||
public Action MeteorMain(Handle timer)
|
||||
{
|
||||
if (!(g_bEnabled))
|
||||
return;
|
||||
|
||||
int victimClient = GetTargetClient()
|
||||
|
||||
if (victimClient == -1)
|
||||
return;
|
||||
|
||||
int indicator = SpawnIndicator(victimClient);
|
||||
int model = SpawnMeteor2(victimClient);
|
||||
int hurt = SpawnTriggerHurt(victimClient);
|
||||
int move = SpawnMoveLinear(victimClient);
|
||||
int explosion = SpawnExplosion(victimClient);
|
||||
int sound = SpawnAmbientGeneric(victimClient);
|
||||
int particle = SpawnParticle(victimClient);
|
||||
int particle2 = SpawnParticle(victimClient);
|
||||
|
||||
SetVariantString("!activator");
|
||||
AcceptEntityInput(model, "SetParent", move);
|
||||
|
||||
SetVariantString("!activator");
|
||||
AcceptEntityInput(hurt, "SetParent", move);
|
||||
|
||||
SetVariantString("!activator");
|
||||
AcceptEntityInput(particle, "SetParent", move);
|
||||
|
||||
SetVariantString("!activator");
|
||||
AcceptEntityInput(particle2, "SetParent", move);
|
||||
|
||||
AcceptEntityInput(move, "Open");
|
||||
}
|
||||
|
||||
public Action SpawnParticle(int client)
|
||||
{
|
||||
new Entity;
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("info_particle_system")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "info_particle_system_%i", Entity);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_particle");
|
||||
DispatchKeyValue(Entity, "effect_name", "fire_large_01");
|
||||
DispatchSpawn(Entity);
|
||||
ActivateEntity(Entity);
|
||||
AcceptEntityInput(Entity, "start");
|
||||
|
||||
float fVector[3];
|
||||
float fAngles[3];
|
||||
GetClientAbsOrigin(client, fVector);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
fVector[2] += 7000.0;
|
||||
|
||||
TeleportEntity(Entity, fVector, NULL_VECTOR, NULL_VECTOR);
|
||||
|
||||
return Entity;
|
||||
|
||||
}
|
||||
|
||||
public Action SpawnAmbientGeneric(int client)
|
||||
{
|
||||
new Entity;
|
||||
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("ambient_generic")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "ambient_generic_%i", Entity);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_sound");
|
||||
DispatchKeyValue(Entity, "spawnflags", "48");
|
||||
DispatchKeyValue(Entity, "SourceEntityName", "meteor_model2");
|
||||
DispatchKeyValue(Entity, "radius", "3050");
|
||||
DispatchKeyValue(Entity, "message", "ambient/explosions/explode_9.wav");
|
||||
DispatchKeyValue(Entity, "volume", "10");
|
||||
DispatchKeyValue(Entity, "health", "10");
|
||||
DispatchKeyValue(Entity, "preset", "0");
|
||||
DispatchKeyValue(Entity, "pitch", "100");
|
||||
DispatchKeyValue(Entity, "pitchstart", "100");
|
||||
DispatchSpawn(Entity);
|
||||
ActivateEntity(Entity);
|
||||
|
||||
return Entity;
|
||||
}
|
||||
|
||||
public Action SpawnTriggerHurt(int client)
|
||||
{
|
||||
new Entity;
|
||||
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("trigger_hurt")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "trigger_hurt_%i", Entity);
|
||||
|
||||
float fVector[3];
|
||||
float fAngles[3];
|
||||
GetClientAbsOrigin(client, fVector);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
fVector[2] += 7000.0;
|
||||
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_hurt");
|
||||
DispatchKeyValue(Entity, "spawnflags", "1");
|
||||
DispatchKeyValue(Entity, "StartDisabled", "0");
|
||||
DispatchKeyValueVector(Entity, "origin", fVector);
|
||||
DispatchKeyValue(Entity, "nodmgforce", "0");
|
||||
DispatchKeyValue(Entity, "damage", "320");
|
||||
DispatchKeyValue(Entity, "damagetype", "128");
|
||||
DispatchKeyValue(Entity, "damagemodel", "0");
|
||||
DispatchSpawn(Entity);
|
||||
ActivateEntity(Entity);
|
||||
|
||||
SetEntityModel(Entity, "models/props/cs_office/vending_machine.mdl");
|
||||
|
||||
new Float:minbounds[3] = {-50.0, -50.0, -100.0};
|
||||
new Float:maxbounds[3] = {50.0, 50.0, 100.0};
|
||||
SetEntPropVector(Entity, Prop_Send, "m_vecMins", minbounds);
|
||||
SetEntPropVector(Entity, Prop_Send, "m_vecMaxs", maxbounds);
|
||||
|
||||
SetEntProp(Entity, Prop_Send, "m_nSolidType", 2);
|
||||
|
||||
new enteffects = GetEntProp(Entity, Prop_Send, "m_fEffects");
|
||||
enteffects |= 32;
|
||||
SetEntProp(Entity, Prop_Send, "m_fEffects", enteffects);
|
||||
|
||||
return Entity;
|
||||
}
|
||||
|
||||
public Action SpawnMeteor2(int client)
|
||||
{
|
||||
new Entity;
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("prop_physics_multiplayer")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "prop_physics_multiplayer_%i", Entity);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_model2");
|
||||
DispatchKeyValue(Entity, "model", "models/props/cs_militia/militiarock05.mdl");
|
||||
DispatchKeyValue(Entity, "spawnflags", "8");
|
||||
DispatchKeyValue(Entity, "pressuredelay", "0");
|
||||
DispatchKeyValue(Entity, "physicsmode", "2");
|
||||
DispatchKeyValue(Entity, "physdamagescale", "0.1");
|
||||
DispatchKeyValue(Entity, "modelscale", "2.0");
|
||||
DispatchSpawn(Entity);
|
||||
|
||||
float fVector[3];
|
||||
float fAngles[3];
|
||||
GetClientAbsOrigin(client, fVector);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
fVector[2] += 7000.0;
|
||||
//fVector[1] += 1000.0;
|
||||
|
||||
TeleportEntity(Entity, fVector, NULL_VECTOR, NULL_VECTOR);
|
||||
|
||||
return Entity;
|
||||
|
||||
}
|
||||
public Action SpawnExplosion(int client)
|
||||
{
|
||||
new Entity;
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("env_explosion")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "env_explosion_%i", Entity);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_explosion");
|
||||
DispatchKeyValue(Entity, "fireballsprite", "sprites/zerogxplode.spr");
|
||||
DispatchKeyValue(Entity, "rendermode", "5");
|
||||
DispatchKeyValue(Entity, "iMagnitude", "300");
|
||||
DispatchKeyValue(Entity, "iRadiusOverride", "70");
|
||||
|
||||
DispatchKeyValue(Entity, "spawnflags", "81");
|
||||
|
||||
DispatchSpawn(Entity);
|
||||
|
||||
float fVector[3];
|
||||
float fAngles[3];
|
||||
GetClientAbsOrigin(client, fVector);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
TeleportEntity(Entity, fVector, NULL_VECTOR, NULL_VECTOR);
|
||||
|
||||
return Entity;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Action SpawnMeteor(int client)
|
||||
{
|
||||
new Entity;
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("prop_dynamic")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "prop_dynamic_%i", Entity);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_model");
|
||||
DispatchKeyValue(Entity, "model", "models/props/cs_militia/militiarock05.mdl");
|
||||
DispatchKeyValue(Entity, "solid", "0");
|
||||
DispatchKeyValue(Entity, "modelscale", "1.0");
|
||||
DispatchKeyValue(Entity, "renderamt", "255");
|
||||
DispatchKeyValue(Entity, "rendercolor", "0 181 240");
|
||||
DispatchKeyValue(Entity, "renderfx", "0");
|
||||
DispatchKeyValue(Entity, "rendermode", "0");
|
||||
|
||||
DispatchSpawn(Entity);
|
||||
|
||||
float fVector[3];
|
||||
float fAngles[3];
|
||||
GetClientAbsOrigin(client, fVector);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
fVector[2] += 7000.0;
|
||||
//fVector[1] += 1000.0;
|
||||
|
||||
TeleportEntity(Entity, fVector, NULL_VECTOR, NULL_VECTOR);
|
||||
|
||||
return Entity;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Action SpawnMoveLinear(int client)
|
||||
{
|
||||
new Entity;
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("func_movelinear")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "func_movelinear_%i", Entity);
|
||||
|
||||
float fVectorClient[3];
|
||||
float fVectorStart[3];
|
||||
float fAngles[3];
|
||||
float fVectorCalculated[3];
|
||||
float fAnglesCalculated[3];
|
||||
GetClientAbsOrigin(client, fVectorClient);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
fVectorStart = fVectorClient;
|
||||
fVectorStart[2] += 7000.0;
|
||||
|
||||
SubtractVectors(fVectorClient, fVectorStart, fVectorCalculated);
|
||||
float distanceF = GetVectorLength(fVectorCalculated, false)
|
||||
distanceF -= 128.0;
|
||||
NormalizeVector(fVectorCalculated, fVectorCalculated);
|
||||
GetVectorAngles(fVectorCalculated, fAnglesCalculated);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_linear");
|
||||
DispatchKeyValueVector(Entity, "movedir", fAnglesCalculated);
|
||||
DispatchKeyValueVector(Entity, "origin", fVectorStart);
|
||||
DispatchKeyValue(Entity, "speed", "3000");
|
||||
DispatchKeyValueFloat(Entity, "movedistance", distanceF);
|
||||
DispatchKeyValue(Entity, "spawnflags", "8");
|
||||
DispatchKeyValue(Entity, "rendermode", "3");
|
||||
DispatchKeyValue(Entity, "rendercolor", "136 0 0");
|
||||
DispatchKeyValue(Entity, "OnFullyOpen", "!self,KillHierarchy,,0.01,1");
|
||||
DispatchKeyValue(Entity, "OnFullyOpen", "meteor_indicator,Kill,,0,1");
|
||||
DispatchKeyValue(Entity, "OnFullyOpen", "meteor_explosion,Explode,,0,1");
|
||||
DispatchKeyValue(Entity, "OnFullyOpen", "meteor_explosion,Kill,,0.01,1");
|
||||
DispatchKeyValue(Entity, "OnFullyOpen", "meteor_sound,PlaySound,,0,1");
|
||||
DispatchKeyValue(Entity, "OnFullyOpen", "meteor_sound,Kill,,0.01,1");
|
||||
DispatchSpawn(Entity);
|
||||
|
||||
return Entity;
|
||||
}
|
||||
|
||||
|
||||
public Action SpawnIndicator(int client)
|
||||
{
|
||||
new Entity;
|
||||
// Spawn dynamic prop entity
|
||||
if ((Entity = CreateEntityByName("prop_dynamic")) == INVALID_ENT_REFERENCE)
|
||||
return -1;
|
||||
|
||||
// Generate unique id for the entity
|
||||
new String:StrEntityName[64]; Format(StrEntityName, sizeof(StrEntityName), "prop_dynamic_%i", Entity);
|
||||
|
||||
// Setup entity
|
||||
DispatchKeyValue(Entity, "targetname", "meteor_indicator");
|
||||
DispatchKeyValue(Entity, "model", "models/effects/vol_light128x512.mdl");
|
||||
DispatchKeyValue(Entity, "solid", "0");
|
||||
DispatchKeyValue(Entity, "modelscale", "1.0");
|
||||
DispatchKeyValue(Entity, "angles", "0 0 180");
|
||||
DispatchKeyValue(Entity, "renderamt", "255");
|
||||
DispatchKeyValue(Entity, "rendercolor", "0 181 240");
|
||||
DispatchKeyValue(Entity, "renderfx", "0");
|
||||
DispatchKeyValue(Entity, "rendermode", "0");
|
||||
|
||||
DispatchSpawn(Entity);
|
||||
|
||||
float fVector[3];
|
||||
float fAngles[3];
|
||||
GetClientAbsOrigin(client, fVector);
|
||||
GetClientAbsAngles(client, fAngles);
|
||||
|
||||
//fVector[2] += 320.0;
|
||||
|
||||
TeleportEntity(Entity, fVector, NULL_VECTOR, NULL_VECTOR);
|
||||
|
||||
return Entity;
|
||||
}
|
||||
|
||||
public int GetTargetClient()
|
||||
{
|
||||
|
||||
int outsideClientCount = 0;
|
||||
new int:outsideClients[MaxClients];
|
||||
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsClientInGame(i) && IsPlayerAlive(i) && (ZR_IsClientHuman(i)) && (GetClientDistanceToCeiling(i) > 200.0))
|
||||
{
|
||||
outsideClients[outsideClientCount] = i
|
||||
outsideClientCount += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (outsideClientCount == 0)
|
||||
return -1;
|
||||
|
||||
int randomIndex = GetRandomInt(0, outsideClientCount - 1)
|
||||
|
||||
return outsideClients[randomIndex];
|
||||
|
||||
}
|
||||
|
||||
public float GetClientDistanceToCeiling(int client)
|
||||
{
|
||||
float distanceF = 0.0;
|
||||
|
||||
new Float:fOrigin[3], Float:fCeiling[3];
|
||||
GetClientAbsOrigin(client, fOrigin);
|
||||
|
||||
fOrigin[2] += 10.0;
|
||||
|
||||
TR_TraceRayFilter(fOrigin, Float:{-90.0,0.0,0.0}, MASK_PLAYERSOLID, RayType_Infinite, TraceRayNoPlayers, client);
|
||||
if (TR_DidHit())
|
||||
{
|
||||
TR_GetEndPosition(fCeiling);
|
||||
fOrigin[2] -= 10.0;
|
||||
distanceF = GetVectorDistance(fOrigin, fCeiling);
|
||||
}
|
||||
//PrintToChatAll("Client: %d - %f", client,distanceF);
|
||||
return distanceF;
|
||||
}
|
||||
|
||||
public bool:TraceRayNoPlayers(entity, mask, any:data)
|
||||
{
|
||||
if(entity == data || (entity >= 1 && entity <= MaxClients))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user