sm-plugins/VScripts/scripting/vscript_Aesthetic.sp

402 lines
9.4 KiB
SourcePawn

#pragma semicolon 1
#define DEBUG
#define PLUGIN_AUTHOR "Cloud Strife"
#define PLUGIN_VERSION "1.00"
#define MAP_NAME "ze_a_e_s_t_h_e_t_i_c_v1_1s"
#include <sourcemod>
#include <sdktools>
#include <vscripts/Aesthetic>
#pragma newdecls required
bool bValidMap = false;
Chess g_Chess = null;
ArrayList g_aEyes = null;
public Plugin myinfo =
{
name = "Aesthetic vscripts",
author = PLUGIN_AUTHOR,
description = "",
version = PLUGIN_VERSION,
url = "https://steamcommunity.com/id/cloudstrifeua/"
};
public void OnMapStart()
{
char sCurMap[256];
GetCurrentMap(sCurMap, sizeof(sCurMap));
bValidMap = (strcmp(sCurMap, MAP_NAME, false) == 0);
if(bValidMap)
{
HookEvent("round_start", OnRoundStart, EventHookMode_PostNoCopy);
HookEvent("round_end", OnRoundEnd, EventHookMode_PostNoCopy);
g_aEyes = new ArrayList();
}
}
public void OnRoundStart(Event event, const char[] name, bool dontBroadcast)
{
if(bValidMap)
{
g_Chess = new Chess(GetEntityIndexByName("GreenStart", "path_track"), GetEntityIndexByName("GreenEnd", "path_track"),
GetEntityIndexByName("PurpleStart", "path_track"), GetEntityIndexByName("PurpleEnd", "path_track"));
int tmp = GetEntityIndexByName("GreenEnd", "path_track");
HookSingleEntityOutput(tmp, "OnPass", OnGreenEndPass);
tmp = GetEntityIndexByName("PurpleEnd", "path_track");
HookSingleEntityOutput(tmp, "OnPass", OnPurpleEndPass);
tmp = GetEntityIndexByHammerID(92835, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton1);
tmp = GetEntityIndexByHammerID(92838, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton2);
tmp = GetEntityIndexByHammerID(92841, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton3);
tmp = GetEntityIndexByHammerID(92844, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton4);
tmp = GetEntityIndexByHammerID(92850, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton5);
tmp = GetEntityIndexByHammerID(92847, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton6);
tmp = GetEntityIndexByHammerID(92853, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton7);
tmp = GetEntityIndexByHammerID(92856, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPurpleButton8);
tmp = GetEntityIndexByHammerID(92013, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton1);
tmp = GetEntityIndexByHammerID(92084, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton2);
tmp = GetEntityIndexByHammerID(91906, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton3);
tmp = GetEntityIndexByHammerID(92081, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton4);
tmp = GetEntityIndexByHammerID(92016, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton5);
tmp = GetEntityIndexByHammerID(92075, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton6);
tmp = GetEntityIndexByHammerID(89814, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton7);
tmp = GetEntityIndexByHammerID(92046, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnGreenButton8);
tmp = GetEntityIndexByHammerID(89040, "func_button");
HookSingleEntityOutput(tmp, "OnPressed", OnPressedTrig, true);
tmp = GetEntityIndexByHammerID(490936, "trigger_push");
HookSingleEntityOutput(tmp, "OnStartTouch", OnPushTrigger);
tmp = GetEntityIndexByHammerID(445713, "trigger_push");
HookSingleEntityOutput(tmp, "OnStartTouch", OnPushTrigger2);
}
}
public void OnPushTrigger2(const char[] output, int caller, int activator, float delay)
{
float tmp[3];
GetOrigin(activator, tmp);
tmp[2] += 2.0;
SetOrigin(activator, tmp);
}
public void OnPushTrigger(const char[] output, int caller, int activator, float delay)
{
float tmp[3];
GetOrigin(activator, tmp);
tmp[2] += 4.0;
SetOrigin(activator, tmp);
}
public void OnPressedTrig(const char[] output, int caller, int activator, float delay)
{
delete g_Chess;
}
public void OnGreenButton8(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(-1.0, -1.0);
}
}
public void OnGreenButton7(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(0.0, -1.0);
}
}
public void OnGreenButton6(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(1.0, -1.0);
}
}
public void OnGreenButton5(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(1.0, 0.0);
}
}
public void OnGreenButton4(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(1.0, 1.0);
}
}
public void OnGreenButton3(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(0.0, 1.0);
}
}
public void OnGreenButton2(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(-1.0, 1.0);
}
}
public void OnGreenButton1(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveGreen(-1.0, 0.0);
}
}
public void OnPurpleButton8(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(-1.0, -1.0);
}
}
public void OnPurpleButton7(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(0.0, -1.0);
}
}
public void OnPurpleButton6(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(1.0, -1.0);
}
}
public void OnPurpleButton5(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(1.0, 0.0);
}
}
public void OnPurpleButton4(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(1.0, 1.0);
}
}
public void OnPurpleButton3(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(0.0, 1.0);
}
}
public void OnPurpleButton2(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(-1.0, 1.0);
}
}
public void OnPurpleButton1(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MovePurple(-1.0, 0.0);
}
}
public void OnGreenEndPass(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveStartToEnd(g_Chess.greenStart, g_Chess.greenEnd);
g_Chess.CheckInLove();
}
}
public void OnPurpleEndPass(const char[] output, int caller, int activator, float delay)
{
if(g_Chess)
{
g_Chess.MoveStartToEnd(g_Chess.purpleStart, g_Chess.purpleEnd);
g_Chess.CheckInLove();
}
}
public void OnEntitySpawned(int entity, const char[] classname)
{
if(bValidMap)
{
if(IsValidEntity(entity))
{
if(strcmp(classname, "func_breakable") == 0)
{
char sName[128];
GetEntPropString(entity, Prop_Data, "m_iName", sName, sizeof(sName));
if(!sName[0])
return;
int pos = FindCharInString(sName, '&', true);
if(pos != -1)
{ sName[pos] = 0;
if(strcmp(sName, "EyeBoss") == 0)
{
Eye eye = new Eye(entity);
HookSingleEntityOutput(entity, "OnUser2", OnEyeMove);
g_aEyes.Push(eye);
}
}
}
}
}
}
public void OnEyeMove(const char[] output, int caller, int activator, float delay)
{
for (int i = 0; i < g_aEyes.Length; i++)
{
Eye tmp = view_as<Eye>(g_aEyes.Get(i));
if(tmp.entity == caller)
{
tmp.Move();
}
}
}
public void OnEntityDestroyed(int entity)
{
if(bValidMap)
{
if(IsValidEntity(entity))
{
char sClassname[64];
GetEntityClassname(entity, sClassname, sizeof(sClassname));
if(strcmp(sClassname, "func_breakable") == 0)
{
char sName[128];
GetEntPropString(entity, Prop_Data, "m_iName", sName, sizeof(sName));
if(!sName[0])
return;
if(StrContains(sName, "EyeBoss") != -1)
{
for (int i = 0; i < g_aEyes.Length; i++)
{
Eye tmp = view_as<Eye>(g_aEyes.Get(i));
if(entity == tmp.entity)
{
delete tmp;
g_aEyes.Erase(i);
}
}
}
}
}
}
}
public void Cleanup()
{
if(!bValidMap)
return;
delete g_Chess;
for (int i = 0; i < g_aEyes.Length; i++)
{
Eye tmp = view_as<Eye>(g_aEyes.Get(i));
delete tmp;
g_aEyes.Erase(i);
}
}
public void OnRoundEnd(Event event, const char[] name, bool dontBroadcast)
{
Cleanup();
}
public void OnMapEnd()
{
Cleanup();
if(bValidMap)
{
UnhookEvent("round_start", OnRoundStart, EventHookMode_PostNoCopy);
UnhookEvent("round_end", OnRoundEnd, EventHookMode_PostNoCopy);
}
bValidMap = false;
}