next version have damage.
CREATOR:
@master131 [main] extensions
@Jone Calerone
TESTING:
@[MEM]So Close (aka @xtreme2010 )
@ZoxaN
source
Spoiler (Click to View)
Code:
using System;
using System.Collections.Generic;
using Addon;
using System.Collections;
using System.IO;
using System.Timers;
using System.Runtime.InteropServices;
namespace Door
{
public class Door : CPlugin
{
Dictionary<int, int> Client_HudElem_lm = new Dictionary<int, int>();
enum DoorState
{
Button,
Top,
Destroy
};
public int State = 0;
public bool DoorWork = false;
List<Entity> Boxes = new List<Entity>();
public override void OnServerLoad()
{
ServerPrint("Door Loader!");
ServerPrint("thx by [MEM]So Close D:");
ServerPrint("Creator Jone Calerone (aka Tony Montana,Egor Losev) D:");
Th.Elapsed += new ElapsedEventHandler(Event);
Th.Interval = 250;
}
Timer Th = new Timer();
int Counter = 0;
public override void OnMapChange()
{
Counter = 0;
//State = DoorState.Destroy;
Th.Stop();
Boxes.Clear();
State = 0;
DoorWork = false;
string map = GetDvar("mapname");
if (map == "mp_terminal_cls")
{
Boxes.Add(SpawnModel("script_model", "com_plasticcase_trap_friendly", new Vector(-270.6790f, 5523.334f, 220.250f)));
Boxes.Add(SpawnModel("script_model", "com_plasticcase_trap_friendly", new Vector(-270.6790f, 5523.344f, 242.549f)));
Boxes.Add(SpawnModel("script_model", "com_plasticcase_trap_friendly", new Vector(-270.6790f, 5523.344f, 262.549f)));
for (int i = 0; i < Boxes.Count; i++)
{
Extensions.CloneBrushModelToScriptModel(Boxes[i], Extensions.FindAirdropCrateCollisionId());
}
}
}
public void Event(object source, ElapsedEventArgs e)
{
//Counter -
if (Counter <= 15)
{
if (State == (int)DoorState.Button)
{
for (int i = 0; i < Boxes.Count; i++)
{
// 5 = Z
Boxes[i].OriginZ += 5;
}
}
else if (State == (int)DoorState.Top)
{
for (int i = 0; i < Boxes.Count; i++)
{
Boxes[i].OriginZ -= 5;//zoomby loh
}
}
Counter++;
}
else
{
if (State == (int)DoorState.Button)
{
for (int i = 0; i < Boxes.Count; i++)
{
Extensions.CloneBrushModelToScriptModel(Boxes[i], 0);
}
State = (int)DoorState.Top;
}
else
{
for (int i = 0; i < Boxes.Count; i++)
{
Extensions.CloneBrushModelToScriptModel(Boxes[i], Extensions.FindAirdropCrateCollisionId());
}
State = (int)DoorState.Button;
}
DoorWork = false;
Counter = 0;
Th.Stop();
}
}
public override void OnAddonFrame()
{
List<ServerClient> clients;
try
{
clients = GetClients();
if (clients != null && clients.Count > 0)
{
foreach (ServerClient c in GetClients())
{
if (c.Other.isAlive == true/* && !DoorDestroy*/)
{
HudElem hl = GetHudElement(Client_HudElem_lm[c.ClientNum]);
string map = GetDvar("mapname");
/////////
if (map == "mp_terminal_cls")
{
//delete its
if (c.Team == Teams.Allies || c.Team == Teams.Axis)
{
if ((Difference(c.OriginY, 5563.251f) <= 100) && (Difference(c.OriginX, -268.1732f) <= 100) && c.OriginZ >= 192.125f)
{
if (!DoorWork && State == (int)DoorState.Button)
{
hl.SetString("Press ^3F^7 to ^1Open Door");
}
if (!DoorWork && State == (int)DoorState.Top)
{
hl.SetString("Press ^3F^7 to ^1Close Door");
}
if (DoorWork)
{
hl.SetString("Door Work!");
}
if (c.Other.ButtonPressed(Buttons.Activate) && !DoorWork)
{
if (State == (int)DoorState.Button)
{
PlaySoundOnPlayer(c, "elev_door_close");
}
if (State == (int)DoorState.Top)
{
PlaySoundOnPlayer(c, "elev_door_interupt");
}
DoorWork = true;
Counter = 0;
Th.Start();
}
else
{
}
}
else
{
hl.SetString("");
}
}
}
}
}
}
}
catch (Exception z)
{
ServerPrint("Error Doors: " + z.Message);
}
}
public static float Difference(float loc, float loc2)
{
return Math.Abs(loc - loc2);
}
public override void OnPlayerDisconnect(ServerClient client)
{
if (Client_HudElem_lm.ContainsKey(client.ClientNum))
{
HudElem info2 = GetHudElement(Client_HudElem_lm[client.ClientNum]);
info2.Type = HudElementTypes.None;
Client_HudElem_lm.Remove(client.ClientNum);
}
}
public override void OnPlayerConnect(ServerClient client)
{
int HudElemNum1 = CreateHud_lm(client.ClientNum);
if (Client_HudElem_lm.ContainsKey(client.ClientNum))
{
Client_HudElem_lm[client.ClientNum] = HudElemNum1;
}
else
{
Client_HudElem_lm.Add(client.ClientNum, HudElemNum1);
}
}
private int CreateHud_lm(int ClientNum)
{
HudElem hud = CreateNewHudElem();
hud.Type = HudElementTypes.Text;
hud.ShowToEnt = ClientNum;
hud.HideInMenu = true;
hud.Font = HudElementFonts.Default;
hud.FontScale = 1.7f;
hud.PointType = 120;
hud.OriginY = 180f;
hud.OriginX = -100f;
hud.SetString("");
return hud.HudElementNum;
}
}
}

![[Image: 77c85afda648.gif]](http://s018.radikal.ru/i511/1302/21/77c85afda648.gif)
![[Image: i-150.jpg]](http://content.foto.mail.ru/mail/musicant_iura/_answers/i-150.jpg)

