fallen1994
Участник
- Сообщения
- 2,357
- Реакции
- 538
Есть такой плагин Aura, автор которого Sidex.
Плагин очень хороший, но функций в нем мало, хотелось бы добавить парочку.
Было бы очень не плохо это реализовать, так же как и исправили Kill Bonus
Плагин тоже будет популярен :)
Плагин очень хороший, но функций в нем мало, хотелось бы добавить парочку.
- Добавить установку скорости(Опционально)
- Сделать так что бы ХП добавлялось не сразу, а к примеру секунд через 5 (для дм полезно, или сделать так, что бы при отключения СпавнПротект, хп возвращалось)
- Было бы не плохо еще добавить невидимость (Опционально)
Было бы очень не плохо это реализовать, так же как и исправили Kill Bonus
Плагин тоже будет популярен :)
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <clientprefs>
#define MAXCLIENTS 256
new Handle:Timers[MAXCLIENTS+1];
new Handle:AuraCookie;
new String:AuraCookieStr[64];
new g_BeamSprite;
new g_HaloSprite;
public Plugin:myinfo =
{
name = "Aura",
author = "SideX",
description = "Setup Aura on clients",
version = "0.1",
url = "http://www.yourserv.ru/"
}
public OnPluginStart()
{
HookEvent("player_spawn", Event_PlayerSpawn);
AuraCookie = RegClientCookie("aura", "AURA", CookieAccess_Public);
RegConsoleCmd("glow_toggle", Command_Toggle);
RegConsoleCmd("glow_color", Command_Color);
RegConsoleCmd("glow_getcolor", Command_GetColor);
}
public OnClientPutInServer(client)
{
SetClientCookie(client, AuraCookie, "1");
}
public OnMapStart()
{
g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");
}
public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new String:SteamId[64];
new client = GetClientOfUserId(GetEventInt(event, "userid"));
GetClientAuthString(client, SteamId, sizeof(SteamId));
GetClientCookie(client, AuraCookie, AuraCookieStr, sizeof(AuraCookieStr));
if (ReadSteamIdFile(SteamId))
{
if (StringToInt(AuraCookieStr) == 1 && Timers[client] == INVALID_HANDLE)
{
Timers[client] = CreateTimer(0.05, Timer_Beacon, client, TIMER_REPEAT);
PrintToChat(client, "\x05[Аура] \x04Аура включена. Вы можете выключить ее с помощью glow_toggle.");
}
SetEntityHealth(client, GetClientHealth(client) + GetAddHealth(SteamId));
}
}
public Action:Command_Toggle(client, args)
{
new String:SteamId[64];
GetClientAuthString(client, SteamId, sizeof(SteamId));
if (ReadSteamIdFile(SteamId))
{
GetClientCookie(client, AuraCookie, AuraCookieStr, sizeof(AuraCookieStr));
if (StringToInt(AuraCookieStr) == 1)
{
SetClientCookie(client, AuraCookie, "0");
CloseHandle(Timers[client]);
Timers[client] = INVALID_HANDLE;
PrintToChat(client, "\x05[Аура] \x04Аура выключена. Вы можете включить ее обратно с помощью glow_toggle.");
}
else
{
SetClientCookie(client, AuraCookie, "1");
Timers[client] = CreateTimer(0.05, Timer_Beacon, client, TIMER_REPEAT);
PrintToChat(client, "\x05[Аура] \x04Аура включена. Вы можете выключить ее с помощью glow_toggle.");
}
}
else
{
PrintToConsole(client, "You're can't use aura.");
return Plugin_Handled;
}
return Plugin_Handled;
}
public Action:Command_Color(client, args)
{
if (args != 4)
{
PrintToConsole(client, "Incorrect usage! Usage: glow_color r g b a, where r g b - color, a - alpha.");
return Plugin_Handled;
}
new String:Arg1[32], String:Arg2[32], String:Arg3[32], String:Arg4[32];
GetCmdArg(1, Arg1, sizeof(Arg1));
GetCmdArg(2, Arg2, sizeof(Arg2));
GetCmdArg(3, Arg3, sizeof(Arg3));
GetCmdArg(4, Arg4, sizeof(Arg4));
new String:SteamId[64];
GetClientAuthString(client, SteamId, sizeof(SteamId));
if (ReadSteamIdFile(SteamId))
{
new String:file[255];
BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
new Handle:kv = CreateKeyValues("SteamId");
FileToKeyValues(kv, file);
KvJumpToKey(kv, SteamId);
KvSetString(kv, "r", Arg1);
KvSetString(kv, "g", Arg2);
KvSetString(kv, "b", Arg3);
KvSetString(kv, "a", Arg4);
KvRewind(kv);
KeyValuesToFile(kv, file);
PrintToConsole(client, "Aura color change successful");
PrintToChat(client, "\x05[Аура] \x04Цвет ауры успешно изменен.");
CloseHandle(kv);
}
else
{
PrintToConsole(client, "You're can't use aura.");
return Plugin_Handled;
}
return Plugin_Handled;
}
public Action:Command_GetColor(client, args)
{
new String:SteamId[64];
GetClientAuthString(client, SteamId, sizeof(SteamId));
if (ReadSteamIdFile(SteamId))
{
new r, g, b, a;
new String:file[255];
BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
new Handle:kv = CreateKeyValues("SteamId");
FileToKeyValues(kv, file);
KvJumpToKey(kv, SteamId);
r = KvGetNum(kv, "r");
g = KvGetNum(kv, "g");
b = KvGetNum(kv, "b");
a = KvGetNum(kv, "a");
PrintToConsole(client, "Your aura color: %d %d %d %d", r, g, b, a);
PrintToChat(client, "\x05[Аура] \x04Ваш цвет ауры: %d %d %d %d", r, g, b, a);
CloseHandle(kv);
}
else
{
PrintToConsole(client, "You're can't use aura.");
return Plugin_Handled;
}
return Plugin_Handled;
}
public OnClientDisconnect(client)
{
CloseHandle(Timers[client]);
Timers[client] = INVALID_HANDLE;
}
bool:ReadSteamIdFile(String:SteamId[])
{
new String:file[255];
BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
new Handle:kv = CreateKeyValues("SteamId");
FileToKeyValues(kv, file);
if (KvGotoFirstSubKey(kv))
{
do
{
new String:buffer[256];
KvGetSectionName(kv, buffer, sizeof(buffer));
if (StrEqual(SteamId, buffer))
return true;
}
while (KvGotoNextKey(kv));
CloseHandle(kv);
return false;
}
return false;
}
GetAddHealth(String:SteamId[])
{
new health;
new String:file[255];
BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
new Handle:kv = CreateKeyValues("SteamId");
FileToKeyValues(kv, file);
KvJumpToKey(kv, SteamId);
health = KvGetNum(kv, "hp");
CloseHandle(kv);
return health;
}
ReadColor(String:SteamId[])
{
new color[4];
new r, g, b, a;
new String:file[255];
BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
new Handle:kv = CreateKeyValues("SteamId");
FileToKeyValues(kv, file);
KvJumpToKey(kv, SteamId);
r = KvGetNum(kv, "r");
g = KvGetNum(kv, "g");
b = KvGetNum(kv, "b");
a = KvGetNum(kv, "a");
CloseHandle(kv);
color[0] = r;
color[1] = g;
color[2] = b;
color[3] = a;
return color;
}
public Action:Timer_Beacon(Handle:timer, any:client)
{
new String:SteamId[64];
GetClientAuthString(client, SteamId, sizeof(SteamId));
if (IsPlayerAlive(client))
SetupBeacon(client, ReadColor(SteamId));
}
SetupBeacon(client, color[4])
{
new Float:vec[3];
GetClientAbsOrigin(client, vec);
vec[2] += 10;
TE_SetupBeamRingPoint(vec, 50.0, 60.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.1, 10.0, 0.0, color, 10, 0);
TE_SendToAll();
}