Creator: @JariZ and [ZOOMBY] Alex
Code:
using Addon;
using System;
using System.Threading;
namespace medic
{
public class medic : CPlugin
{
public static bool _isthreadrunning = true;
public string Name
{
get
{
return "Medic";
}
}
public string Version
{
get
{
return "1.0";
}
}
public string Description
{
get
{
return "Medic";
}
}
public bool Good
{
get
{
return true;
}
}
public virtual bool IsThreadRunning
{
get
{
return medic._isthreadrunning;
}
set
{
medic._isthreadrunning = value;
}
}
public static float Difference(float loc, float loc2)
{
return Math.Abs(loc - loc2);
}
public static Teams CalculateOtherTeam(ServerClient Client)
{
Teams result;
if (Client.Team == Teams.Allies)
{
result = Teams.Allies;
}
else
{
if (Client.Team == Teams.Axis)
{
result = Teams.Axis;
}
else
{
result = Teams.FFA;
}
}
return result;
}
private void loadmedic(object *rg)
{
Thread.Sleep(1500);
try
{
ServerClient serverClient = (ServerClient)arg;
base.iPrintLnBold("^2Medic ACTIVATE!", serverClient);
while (this.IsThreadRunning)
{
foreach (ServerClient current in base.GetClients())
{
int num = 10;
if (medic.Difference(serverClient.OriginY, current.OriginY) <= 200f && medic.Difference(serverClient.OriginX, current.OriginX) <= 200f && current.Team == medic.CalculateOtherTeam(serverClient))
{
if (current.Other.Health < 120)
{
base.iPrintLnBold(string.Concat(new object[]
{
"Medic ^3",
serverClient.Name,
" ^1added ",
num,
" HP for you!"
}), current);
base.iPrintLnBold(string.Concat(new object[]
{
"^2You added ^1",
num,
" HP^2 to the player ",
current.Name,
"!"
}), serverClient);
current.Other.Health = current.Other.Health + num;
}
}
}
Thread.Sleep(2000);
}
}
catch
{
}
}
public void Init(ServerClient Client)
{
this.IsThreadRunning = true;
ThreadHandler.AddThread(new WaitCallback(this.loadmedic), Client);
}
public void Remove(ServerClient Client)
{
this.IsThreadRunning = false;
}
public override void OnServerLoad()
{
base.ServerPrint("Medic Plugin By Litgar Loaded! thank JariZ for source code RTD2 and idea!");
}
public override ChatType OnSay(string Message, ServerClient Client)
{
ChatType result;
if (Message == "!medon")
{
this.Init(Client);
result = ChatType.ChatNone;
}
else
{
if (Message == "!medoff")
{
this.Remove(Client);
result = ChatType.ChatNone;
}
else
{
result = ChatType.ChatContinue;
}
}
return result;
}
public override void OnPlayerSpawned(ServerClient Client)
{
this.Remove(Client);
}
}
}Code:
using System;
using System.Collections.Generic;
using System.Threading;
namespace medic
{
internal class ThreadHandler
{
public static List<string> RollThreads = new List<string>();
public static void AddThread(WaitCallback callback, object state)
{
object[] state2 = new object[]
{
callback,
state
};
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadHandler.Invoker), state2);
}
public static void AddThread(WaitCallback callback)
{
ThreadHandler.Thread(callback, null);
}
private static void Invoker(object args)
{
try
{
object[] array = (object[])args;
WaitCallback waitCallback = (WaitCallback)array[0];
object state = array[1];
string item = string.Concat(new string[]
{
waitCallback.Method.DeclaringType.Namespace,
".",
waitCallback.Method.DeclaringType.Name,
".",
waitCallback.Method.Name
});
ThreadHandler.RollThreads.Add(item);
try
{
waitCallback(state);
}
catch
{
}
ThreadHandler.RollThreads.Remove(item);
}
catch
{
}
}
}
}![[Image: 6iiLEmPSEm0.jpg]](http://cs412822.vk.me/v412822257/282c/6iiLEmPSEm0.jpg)
skype egor2398los



sorry