[CS: GO] Надо написать один короткий плагин(Сделано)

  • Автор темы ComfortableZmServ
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
заблочить правую кнопку, чтобы нельзя было включить зум на ауге?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
заблочить правую кнопку
Даже не думай - бесполезная затея! Уже давно было испробовано - проскальзывает прицел на полсекунды. Только:
C-подобный:
SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 9999999.9);
Оффтоп
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
как-то так
PHP:
public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(client)) OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
}

public void OnClientDisconnect(int client)
{
    SDKUnhook(client, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
}

public void OnWeaponSwitch(int client, int weapon)
{
    static char class[32];
    if(GetEdictClassname(weapon, class, sizeof(class)) && StrContains(class, "aug") !=-1) SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 3600.0);
}
Думаю часа хватит: кто будет целый час бегать и не переключать оружие, чтобы только взглянуть в прицел?! =)
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
SDKHook(client, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
Слабенько, очень. После каждого выстрела значение сбросится, как и при перезарядке, так и при поднятии (да-да, "свитча" и тут недосточно - багует разок-другой). Ещё при спавне с оружием - отдельная история.
public void OnClientDisconnect(int client)
{
SDKUnhook(client, SDKHook_WeaponSwitchPost, OnWeaponSwitch);
SDK сам унхукнет свои хуки, когда объект "уничтожается" (игрок выходит, в данном случае).
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
ну тогда придётся юзать OnPlayerRunCmd:
PHP:
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2])
{
    if (IsPlayerAlive(client))
    {
        if (buttons & IN_ATTACK2)
        {
            static char class[32];
            GetClientWeapon(client, class, sizeof(class));
            if(StrContains(class, "aug") != -1)
            {
                SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 3600.0);
                buttons &= ~IN_ATTACK2;
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}
Или так (если передаётся индекс энтити оружия, а не его тип):
PHP:
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2])
{
    if (IsPlayerAlive(client))
    {
        if(buttons & IN_ATTACK2)
        {
            static char class[32];
            if(GetEntityClassname(weapon, class, sizeof(class)) && StrContains(class, "aug") != -1)
            {
                SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 3600.0);
                buttons &= ~IN_ATTACK2;
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
придётся юзать OnPlayerRunCmd
проскальзывает прицел на полсекунды
1) Сначала появится, исчезнет и заблокируется...
2) Выстрел - значение сброшено. См. пункт 1.
Адекватно поможет только от "спама" прицелом.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #9

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
@R1KO, в смысле вот так?
PHP:
public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(client)) OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_PostThink, OnClientPostThink);
}

public void OnClientPostThink(int client)
{
    static char class[32];
    class[0] = '\0';
    GetClientWeapon(client, class, sizeof(class));    // функция всегда определяет тип оружия?
    if(class[0] && StrContains(class, "aug") !=-1) SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 3600.0);
}
 

akvorok.ego

Участник
Сообщения
314
Реакции
186
@R1KO, в смысле вот так?
PHP:
public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(client)) OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_PostThink, OnClientPostThink);
}

public void OnClientPostThink(int client)
{
    static char class[32];
    class[0] = '\0';
    GetClientWeapon(client, class, sizeof(class));    // функция всегда определяет тип оружия?
    if(class[0] && StrContains(class, "aug") !=-1) SetEntPropFloat(weapon, Prop_Send, "m_flNextSecondaryAttack", 3600.0);
}
Зачем чистить массив, а потом ещё и проверять?

PHP:
public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i)) OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_PostThink, OnClientPostThink);
}


public void OnClientPostThink(int client)
{
    static char class[20];
    if(GetClientWeapon(client, class, 20) && StrContains(class, "aug") != -1) SetEntPropFloat(GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon"), Prop_Send, "m_flNextSecondaryAttack", 3600.0);
}
 
C

ComfortableZmServ

Спасибо всем, кто решил помочь, да еще и бесплатно, чуть не забыл про эту тему.

p.s найс вы тут срач развели, правда по делу)))
p.p.s - p.s написал до того как прочитал ваши сообщения, блин вы просто мастера своего дела, всех в авторы впишу, но вам наверное насрать))
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу