Лазер для магазина от ФрозДарк

smoke96

Участник
Сообщения
1,134
Реакции
175
Вообщем такое дело , сделал плагин который должен добавлять лазерный прицел к снайперкам , компилется без ошибок в логах сервера тоже нет ошибок от плагина , но он не работает не знаю почему , просто не появляется лазер и всё ( уже голова кругом , подскажите , что мне исправить? Исход под спойлером (куска кода для реги в шопе нет , а то школота слила половину плагинов которые я писал с Алмазом, Рико и т.д)
g_bHasLA - позволяет отследить если ли предмет в игрока или нет.
#include <sdktools>


new Handle:g_CvarEnable = INVALID_HANDLE;

new g_sprite;
new g_glow;

new m_iFOV;

new Handle:g_CvarRed = INVALID_HANDLE;
new Handle:g_CvarBlue = INVALID_HANDLE;
new Handle:g_CvarGreen = INVALID_HANDLE;

new Handle:g_CvarTrans = INVALID_HANDLE;
new Handle:g_CvarLife = INVALID_HANDLE;
new Handle:g_CvarWidth = INVALID_HANDLE;
new Handle:g_CvarDotWidth = INVALID_HANDLE;


public OnPluginStart()
{
g_CvarEnable = CreateConVar("sm_laser_on", "1", "Вкл./Выкл. лазер");

g_CvarRed = CreateConVar("sm_shop_laser_red", "200", "Красный");
g_CvarGreen = CreateConVar("sm_shop_laser_green", "0", "Зелёный");
g_CvarBlue = CreateConVar("sm_shop_laser_blue", "0", "Синий");
g_CvarTrans = CreateConVar("sm_shop_laser_alpha", "17", "Прозрачность");

g_CvarLife = CreateConVar("sm_shop_laser_life", "0.1", "Жизнь лазера");
g_CvarWidth = CreateConVar("sm_shop_laser_width", "0.12", "Ширина луча");
g_CvarDotWidth = CreateConVar("sm_shop_laser_dot_width", "0.25", "Ширина точки");

m_iFOV = FindSendPropOffs("CBasePlayer","m_iFOV");
}

public OnMapStart()
{
g_sprite = PrecacheModel("materials/sprites/laserbeam.vmt");
g_glow = PrecacheModel("materials/sprites/redglow1.vmt");
}

public OnGameFrame()
{
for (new i=1; i<=MaxClients; i++)
{
new iClient = GetClientOfUserId(i);
if(iClient && g_bHasLA[iClient] && IsClientInGame(i) && IsClientConnected(i) && IsPlayerAlive(i))
{
new i_playerTeam = GetClientTeam(i);

new String:s_playerWeapon[32];
GetClientWeapon(i, s_playerWeapon, sizeof(s_playerWeapon));

new i_playerFOV;
i_playerFOV = GetEntData(i, m_iFOV);

if(GetConVarBool(g_CvarEnable) && (i_playerTeam > 1))
if(StrEqual("weapon_awp", s_playerWeapon) || StrEqual("weapon_sg550", s_playerWeapon) || StrEqual("weapon_g3sg1", s_playerWeapon))
if((i_playerFOV == 15) || (i_playerFOV == 40) || (i_playerFOV == 10))
CreateBeam(i);
}
}
}

public Action:CreateBeam(any:iClient)
{
new Float:f_playerViewOrigin[3];
GetClientAbsOrigin(iClient, f_playerViewOrigin);
if(GetClientButtons(iClient) & IN_DUCK)
f_playerViewOrigin[2] += 40;
else
f_playerViewOrigin[2] += 60;

new Float:f_playerViewDestination[3];
GetPlayerEye(iClient, f_playerViewDestination);

new Float:distance = GetVectorDistance( f_playerViewOrigin, f_playerViewDestination );

new Float:percentage = 0.4 / ( distance / 100 );

new Float:f_newPlayerViewOrigin[3];
f_newPlayerViewOrigin[0] = f_playerViewOrigin[0] + ( ( f_playerViewDestination[0] - f_playerViewOrigin[0] ) * percentage );
f_newPlayerViewOrigin[1] = f_playerViewOrigin[1] + ( ( f_playerViewDestination[1] - f_playerViewOrigin[1] ) * percentage ) - 0.08;
f_newPlayerViewOrigin[2] = f_playerViewOrigin[2] + ( ( f_playerViewDestination[2] - f_playerViewOrigin[2] ) * percentage );

new color[4];
color[0] = GetConVarInt( g_CvarRed );
color[1] = GetConVarInt( g_CvarGreen );
color[2] = GetConVarInt( g_CvarBlue );
color[3] = GetConVarInt( g_CvarTrans );

new Float:life;
life = GetConVarFloat( g_CvarLife );

new Float:width;
width = GetConVarFloat( g_CvarWidth );
new Float:dotWidth;
dotWidth = GetConVarFloat( g_CvarDotWidth );

TE_SetupBeamPoints( f_newPlayerViewOrigin, f_playerViewDestination, g_sprite, 0, 0, 0, life, width, 0.0, 1, 0.0, color, 0 );
TE_SendToAll();

TE_SetupGlowSprite( f_playerViewDestination, g_glow, life, dotWidth, color[3] );
TE_SendToAll();

return Plugin_Continue;
}

bool:GetPlayerEye(iClient, Float:pos[3])
{
new Float:vAngles[3], Float:vOrigin[3];
GetClientEyePosition(iClient,vOrigin);
GetClientEyeAngles(iClient, vAngles);

new Handle:trace = TR_TraceRayFilterEx(vOrigin, vAngles, MASK_SHOT, RayType_Infinite, TraceEntityFilterPlayer);

if(TR_DidHit(trace))
{
TR_GetEndPosition(pos, trace);
CloseHandle(trace);
return true;
}
CloseHandle(trace);
return false;
}

public bool:TraceEntityFilterPlayer(entity, contentsMask)
{
return entity > GetMaxClients();
}
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Если я не ошибаюсь, то перед StrEqual надо поставить отрицание.

!StrEqual(...)
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #3
B1g, собираюсь выпустить этот плагин в паблик на днях.
 
Сверху Снизу