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

Тема в разделе "Программирование / Скриптинг", создана пользователем B1g, 15 июл 2015.

  1. B1g

    B1g

    Сообщения:
    728
    Симпатии:
    26
    Вообщем такое дело , сделал плагин который должен добавлять лазерный прицел к снайперкам , компилется без ошибок в логах сервера тоже нет ошибок от плагина , но он не работает не знаю почему , просто не появляется лазер и всё ( уже голова кругом , подскажите , что мне исправить? Исход под спойлером (куска кода для реги в шопе нет , а то школота слила половину плагинов которые я писал с Алмазом, Рико и т.д)
    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();
    }
     
  2. Саша Шеин

    Саша Шеин

    Сообщения:
    1.258
    Симпатии:
    191
    Если я не ошибаюсь, то перед StrEqual надо поставить отрицание.

    !StrEqual(...)
     
  3. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.193
    Симпатии:
    424
    B1g, собираюсь выпустить этот плагин в паблик на днях.