can i add, a delay timers to activate the flag, and a message warning to move?
credits @archit
credits @archit
Code:
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using Addon;
namespace Teleport
{
public class Class1 : CPlugin
{
Dictionary<string, Vector> flagsorigin = new Dictionary<string, Vector>();
Dictionary<string, Vector> flagsdesti = new Dictionary<string, Vector>();
public override void OnServerLoad()
{
ServerPrint("KILLERFLAGS plugin loaded!");
}
public override void OnMapChange()
{
makeflags();
}
public override void OnFastRestart()
{
makeflags();
}
public static double Distance(Vector vec1, Vector vec2)
{
return Math.Sqrt(Math.Pow(vec1.X - vec2.X, 2) + Math.Pow(vec1.Y - vec2.Y, 2) + Math.Pow(vec1.Z - vec2.Z, 2));
}
public override void OnAddonFrame()
{
foreach (string key in flagsorigin.Keys)
{
if (key.Split(',')[0] == GetDvar("mapname"))
{
if (GetClients() != null)
{
foreach (ServerClient Client in GetClients())
{
if (Distance(new Vector(Client.OriginX, Client.OriginY, Client.OriginZ), flagsorigin[key]) <= 300f)
{
Client.OriginX = flagsdesti[key].X;
Client.OriginY = flagsdesti[key].Y;
Client.OriginZ = flagsdesti[key].Z;
}
}
}
}
}
}
void makeflags()
{
try
{
string flag = GetServerCFG("KILLERFLAGS", "die", "0");
if (flag != "0")
{
for (int i = 1; i <= int.Parse(flag); i++)
{
string flaged = GetServerCFG("KILLERFLAGS", string.Format("die{0}", i.ToString()), "null");
if (flaged != null)
{
string map = flaged.Split(',')[0];
string vector = flaged.Split(',')[1];
string vector2 = vector.Split('(')[1];
string vector3 = vector2.Split(')')[0];
string vec1 = vector3.Split('_')[0];
string vec2 = vector3.Split('_')[1];
string vec3 = vector3.Split('_')[2];
Vector vec = new Vector(Convert.ToSingle(vec1), Convert.ToSingle(vec2), Convert.ToSingle(vec3));
if (!flagsorigin.ContainsValue(vec))
flagsorigin.Add(string.Format("{0},{1}", map, i.ToString()), vec);
vector = flaged.Split(',')[2];
vector2 = vector.Split('(')[1];
vector3 = vector2.Split(')')[0];
vec1 = vector3.Split('_')[0];
vec2 = vector3.Split('_')[1];
vec3 = vector3.Split('_')[2];
vec = new Vector(Convert.ToSingle(vec1), Convert.ToSingle(vec2), Convert.ToSingle(vec3));
if (!flagsdesti.ContainsValue(vec))
flagsdesti.Add(string.Format("{0},{1}", map, i.ToString()), vec);
}
}
foreach (string key in flagsdesti.Keys)
{
if (key.Split(',')[0] == GetDvar("mapname"))
{
Entity en = SpawnModel("script_brushmodel", "prop_flag_neutral", flagsdesti[key]);
}
}
foreach (string key in flagsdesti.Keys)
{
if (key.Split(',')[0] == GetDvar("mapname"))
{
Entity en = SpawnModel("script_brushmodel", "prop_flag_neutral", flagsorigin[key]);
}
}
}
}
catch (Exception e)
{
ServerPrint(e.ToString());
}
}
}
}