Тогда буду ждать, Спасибо)Да. Ресурс был взят со старого раздела форума и я не успел его перевести и забыл про него
Спасибо! Я как всегда слепой не заметил..sp_time", "5"
ты его хоть скомпилил и перезагрузил после заливки файла smx плагин/карту/сервак?Соответственно я залез в единственный файл который можно редачить. И нашел две вот эти строчки:
...
Заменил на вот это:
...
И соответственно после загрузки файла на сервер ничего не изменилось!
Видимо нет, раз не получилось.ты его хоть скомпилил и перезагрузил после заливки файла smx плагин/карту/сервак?
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:velocity[3], Float:angles[3], &weapon, &weaponSub, &command, &tick, &randomSeed, mouseDir[2])
{
if(bActive[client] && IsPlayerAlive(client) && (buttons & IN_ATTACK || buttons & IN_BACK || buttons & IN_FORWARD || buttons & IN_MOVELEFT || buttons & IN_MOVERIGHT || buttons & IN_DUCK || buttons & IN_JUMP)) RemoveProtection(client);
return Plugin_Continue;
}
Естессно не компилится). Ну и классические варнинги компиляции:#include <sourcemod>
#include <sdktools>
#define VERSION "1.5 [CS:GO Support]"
#pragma semicolon 1
new TeamSpec;
new TeamUna;
new bool:NoTeams = false;
new Handle:SpawnProtectionEnabled;
new Handle:SpawnProtectionTime;
new Handle:SpawnProtectionNotify;
new Handle:SpawnProtectionColor;
new RenderOffs;
enum FX
{
FxNone = 0,
FxPulseFast,
FxPulseSlowWide,
FxPulseFastWide,
FxFadeSlow,
FxFadeFast,
FxSolidSlow,
FxSolidFast,
FxStrobeSlow,
FxStrobeFast,
FxStrobeFaster,
FxFlickerSlow,
FxFlickerFast,
FxNoDissipation,
FxDistort, // Distort/scale/translate flicker
FxHologram, // kRenderFxDistort + distance fade
FxExplode, // Scale up really big!
FxGlowShell, // Glowing Shell
FxClampMinScale, // Keep this sprite from getting very small (SPRITES only!)
FxEnvRain, // for environmental rendermode, make rain
FxEnvSnow, // " " " , make snow
FxSpotlight,
FxRagdoll,
FxPulseFastWider,
};
enum Render
{
Normal = 0, // src
TransColor, // c*a+dest*(1-a)
TransTexture, // src*a+dest*(1-a)
Glow, // src*a+dest -- No Z buffer checks -- Fixed size in screen space
TransAlpha, // src*srca+dest*(1-srca)
TransAdd, // src*a+dest
Environmental, // not drawn, used for environmental effects
TransAddFrameBlend, // use a fractional frame value to blend between animation frames
TransAlphaAdd, // src + dest*(1-a)
WorldGlow, // Same as kRenderGlow but not fixed size in screen space
None, // Don't render.
};
public Plugin:myinfo =
{
name = "Spawn Protection [Added CS:GO Support]",
author = "Fredd",
description = "Adds spawn protection",
version = VERSION,
url = "www.sourcemod.net"
}
public OnPluginStart()
{
CreateConVar("spawnprotection_version", VERSION, "Spawn Protection Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
SpawnProtectionEnabled = CreateConVar("sp_on", "1");
SpawnProtectionTime = CreateConVar("sp_time", "5");
SpawnProtectionNotify = CreateConVar("sp_notify", "1");
SpawnProtectionColor = CreateConVar("sp_color", "0 255 0 120");
AutoExecConfig(true, "spawn_protection");
RenderOffs = FindSendPropOffs("CBasePlayer", "m_clrRender");
decl String:ModName[21];
GetGameFolderName(ModName, sizeof(ModName));
if(StrEqual(ModName, "cstrike", false) || StrEqual(ModName, "dod", false) || StrEqual(ModName, "csgo", false) || StrEqual(ModName, "tf", false))
{
TeamSpec = 1;
TeamUna = 0;
NoTeams = false;
} else if(StrEqual(ModName, "Insurgency", false))
{
TeamSpec = 3;
TeamUna = 0;
NoTeams = false;
}
else if(StrEqual(ModName, "hl2mp", false))
{
NoTeams = true;
} else
{
SetFailState("%s is an unsupported mod", ModName);
}
HookEvent("player_spawn", OnPlayerSpawn);
}
public Action:OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
if(GetConVarInt(SpawnProtectionEnabled) == 1)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
new Team = GetClientTeam(client);
if(NoTeams == false)
{
if(Team == TeamSpec || Team == TeamUna)
return Plugin_Continue;
}
if(!IsPlayerAlive(client))
return Plugin_Continue;
decl String:SzColor[32];
decl String:Colors[4][4];
new Float:Time = float(GetConVarInt(SpawnProtectionTime));
GetConVarString(SpawnProtectionColor, SzColor, sizeof(SzColor));
ExplodeString(SzColor, " ", Colors, 4, 4);
SetEntProp(client, Prop_Data, "m_takedamage", 0, 1);
set_rendering(client, FX:FxDistort, StringToInt(Colors[0]),StringToInt(Colors[1]),StringToInt(Colors[2]), Render:RENDER_TRANSADD, StringToInt(Colors[3]));
CreateTimer(Time, RemoveProtection, client);
if(GetConVarInt(SpawnProtectionNotify) > 0)
PrintToChat(client, "\x04[SpawnProtection] \x01you will be spawn protected for \x04%i \x01seconds", RoundToNearest(Time));
}
return Plugin_Continue;
}
public Action:RemoveProtection(Handle:timer, any:client)
{
if(IsClientInGame(client))
{
SetEntProp(client, Prop_Data, "m_takedamage", 2, 1);
set_rendering(client);
if(GetConVarInt(SpawnProtectionNotify) > 0)
PrintToChat(client, "\x04[SpawnProtection] \x01spawn protection is now off..");
}
}
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:velocity[3], Float:angles[3], &weapon, &weaponSub, &command, &tick, &randomSeed, mouseDir[2])
{
if(bActive[client] && IsPlayerAlive(client) && (buttons & IN_ATTACK || buttons & IN_BACK || buttons & IN_FORWARD || buttons & IN_MOVELEFT || buttons & IN_MOVERIGHT || buttons & IN_DUCK || buttons & IN_JUMP)) RemoveProtection(client);
return Plugin_Continue;
}
stock set_rendering(index, FX:fx=FxNone, r=255, g=255, b=255, Render:render=Normal, amount=255)
{
SetEntProp(index, Prop_Send, "m_nRenderFX", _:fx, 1);
SetEntProp(index, Prop_Send, "m_nRenderMode", _:render, 1);
SetEntData(index, RenderOffs, r, 1, true);
SetEntData(index, RenderOffs + 1, g, 1, true);
SetEntData(index, RenderOffs + 2, b, 1, true);
SetEntData(index, RenderOffs + 3, amount, 1, true);
}
Это координаты мышиВопрос по Вашему коду, там mouseDir[2], это щелчки мыши или движение?
#pragma semicolon 1
#include <sdktools>
#define VERSION "1.5.2"
new RenderOffs;
new bool:bEnabled,
Float:fTime,
bool:bNotify,
iColor[4];
new TeamSpec,
TeamUna,
bool:NoTeams,
bActive[MAXPLAYERS+1];
public Plugin:myinfo =
{
name = "Spawn Protection",
author = "Fredd (optimized by Grey83)",
description = "Adds spawn protection",
version = VERSION,
url = "www.sourcemod.net"
}
public OnPluginStart()
{
decl String:buffer[16];
GetGameFolderName(buffer, sizeof(buffer));
if(StrEqual(buffer, "cstrike", false) || StrEqual(buffer, "dod", false) || StrEqual(buffer, "csgo", false) || StrEqual(buffer, "tf", false))
{
TeamSpec = 1;
TeamUna = 0;
NoTeams = false;
}
else if(StrEqual(buffer, "Insurgency", false))
{
TeamSpec = 3;
TeamUna = 0;
NoTeams = false;
}
else if(StrEqual(buffer, "hl2mp", false))
NoTeams = true;
else SetFailState("%s is an unsupported mod", buffer);
CreateConVar("spawnprotection_version", VERSION, "Spawn Protection Version", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
new Handle:CVar;
HookConVarChange((CVar = CreateConVar("sp_on", "1", _, _, true, _, true, 1.0)), CVarChanged_Enabled);
bEnabled = GetConVarBool(CVar);
HookConVarChange((CVar = CreateConVar("sp_time", "10", _, _, true, 1.0)), CVarChanged_Time);
fTime = GetConVarFloat(CVar);
HookConVarChange((CVar = CreateConVar("sp_notify", "1", _, _, true, _, true, 1.0)), CVarChanged_Notify);
bNotify = GetConVarBool(CVar);
HookConVarChange((CVar = CreateConVar("sp_color", "255 0 0 120", _, FCVAR_PRINTABLEONLY)), CVarChanged_Color);
GetColor(CVar);
AutoExecConfig(true, "spawn_protection");
RenderOffs = FindSendPropInfo("CBasePlayer", "m_clrRender");
HookEvent("player_spawn", OnPlayerSpawn);
}
public CVarChanged_Enabled(Handle:CVar, const String:oldValue[], const String:newValue[])
{
bEnabled = GetConVarBool(CVar);
}
public CVarChanged_Time(Handle:CVar, const String:oldValue[], const String:newValue[])
{
fTime = GetConVarFloat(CVar);
}
public CVarChanged_Notify(Handle:CVar, const String:oldValue[], const String:newValue[])
{
bNotify = GetConVarBool(CVar);
}
public CVarChanged_Color(Handle:CVar, const String:oldValue[], const String:newValue[])
{
GetColor(CVar);
}
GetColor(Handle:CVar)
{
new String:buffer[16], String:s_color[4][4];
GetConVarString(CVar, buffer, sizeof(buffer));
ExplodeString(buffer, " ", s_color, 4, 4);
for(new i, color; i < 4; i++)
{
color = StringToInt(s_color[i]);
if(color < 0) iColor[i] = 0;
else if(color > 255) iColor[i] = 255;
else iColor[i] = color;
}
}
public Action:OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
if(bEnabled)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
new team = GetClientTeam(client);
if(NoTeams && (team == TeamSpec || team == TeamUna))
return Plugin_Continue;
if(!IsPlayerAlive(client))
return Plugin_Continue;
bActive[client] = true;
SetEntProp(client, Prop_Data, "m_takedamage", 0, 1);
CreateTimer(fTime, Timer_RemoveProtection, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
if(RenderOffs != -1)
set_rendering(client, RENDERFX_DISTORT, iColor[0], iColor[1], iColor[2], RENDER_TRANSADD, iColor[3]);
if(bNotify) PrintToChat(client, "\x04[Защита] \x01Ты \x04неуязвим \x01еще \x04%i \x01секунд (не шевелись)", RoundFloat(fTime));
}
return Plugin_Continue;
}
public Action:Timer_RemoveProtection(Handle:timer, any:client)
{
if((client = GetClientOfUserId(client)) && bActive[client]) RemoveProtection(client);
}
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:velocity[3], Float:angles[3], &weapon, &weaponSub, &command, &tick, &randomSeed, mouseDir[2])
{
if(bActive[client] && IsPlayerAlive(client) && (buttons & IN_ATTACK || buttons & IN_BACK || buttons & IN_FORWARD || buttons & IN_MOVELEFT || buttons & IN_MOVERIGHT || buttons & IN_DUCK || buttons & IN_JUMP)) RemoveProtection(client);
return Plugin_Continue;
}
RemoveProtection(client)
{
bActive[client] = false;
SetEntProp(client, Prop_Data, "m_takedamage", 2, 1);
if(RenderOffs != -1) set_rendering(client);
if(bNotify) PrintToChat(client, "\x04[Защита] \x01Неуязвимость \x04отключена");
}
stock set_rendering(client, RenderFx:fx=RENDERFX_NONE, r=255, g=255, b=255, RenderMode:render=RENDER_NORMAL, amount=255)
{
SetEntProp(client, Prop_Send, "m_nRenderFX", fx, 1);
SetEntProp(client, Prop_Send, "m_nRenderMode", render, 1);
SetEntData(client, RenderOffs, r, 1, true);
SetEntData(client, RenderOffs + 1, g, 1, true);
SetEntData(client, RenderOffs + 2, b, 1, true);
SetEntData(client, RenderOffs + 3, amount, 1, true);
}
if(bActive[client] && IsPlayerAlive(client) && (buttons & IN_ATTACK || buttons & IN_BACK || buttons & IN_FORWARD || buttons & IN_MOVELEFT || buttons & IN_MOVERIGHT || buttons & IN_DUCK || buttons & IN_JUMP)) RemoveProtection(client);
Странно: должны оба сообщения высвечиваться одинаково, если ты оба PrintToChat заменилПробовал заменить PrintToChat на PrintHintText (Раскраску тоже убирал), работает только сообщение об отключении защиты.
Попробую, гранд мерси!попробуй поменять IN_FORWARD на IN_RUN
Сделай проверку живой/нет.Можно ли сделать так, чтобы сообщение о защите показывалось только когда ты в команде Т или КТ? А то показывает даже тогда, когда ты зашёл на сервер
не умею, я не кодерСделай проверку живой/нет.
Уроки R1KO надо смотреть)не умею, я не кодер
// Если игрок жив
if (IsPlayerAlive(iClient))
{
// CODE
}
CS GO. Вчера только проверил.@Innomeni, а чо за игра?
Держи =)Не подскажите как сделать чтобы при респавне защиты не было? Было бы очень полезно на surf серверах