[CS:GO] GivePlayerItem и количество игроков больше 30

RSG

Участник
Сообщения
319
Реакции
26
И так я выдаю оружие через GivePlayerItem и если на сервере больше 30 игроков то
оружие удаляется и зависает последнее оружие что было при этом я не могу стрелять с него.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #2
На TF2 используется костыль с удалением оружия из нужного слота, спавном нового и SetEntPropEnt() у клиента для m_hActiveWeapon. Попробуйте тоже самое в CS:GO провернуть.
Вот мой кусок кода, где это используется в виде функции.
PHP:
void EquipSaxton(int client)
{
    if (!IsValidClient(client))
        return;
    bEnableSuperDuperJump = false;
    int SaxtonWeapon;
    TF2_RemoveAllWeapons(client);
    HaleCharge = 0;
    switch (Special)
    {
        case ASHSpecial_Bunny:
        {
            SaxtonWeapon = SpawnWeapon(client, "tf_weapon_bottle", 1, 100, TFQual_Unusual, "68 ; 2.0 ; 2 ; 3.0 ; 259 ; 1.0 ; 326 ; 1.3");
        }
        case ASHSpecial_Vagineer:
        {
            SaxtonWeapon = SpawnWeapon(client, "tf_weapon_wrench", 7, 100, TFQual_Unusual, "68 ; 2.0 ; 2 ; 3.1 ; 259 ; 1.0 ; 436 ; 1.0");
        }
        case ASHSpecial_HHH:
        {
            SaxtonWeapon = SpawnWeapon(client, "tf_weapon_sword", 266, 100, TFQual_Unusual, "68 ; 2.0 ; 2 ; 3.1 ; 259 ; 1.0 ; 252 ; 0.6 ; 551 ; 1");
            SetEntPropFloat(SaxtonWeapon, Prop_Send, "m_flModelScale", 0.0001);
            HaleCharge = -1000;
        }
        case ASHSpecial_CBS:
        {
            SaxtonWeapon = SpawnWeapon(client, "tf_weapon_club", 171, 100, TFQual_Unusual, "68 ; 2.0 ; 2 ; 3.1 ; 259 ; 1.0");
            //SetEntProp(client, Prop_Send, "m_nBody", 0);
        }
        case ASHSpecial_Agent:
        {
            // Invis watch
            TF2_RemoveWeaponSlot(client, 4);
            AgentHelper_ChangeTimeBeforeInvis(0.5, Hale);
        
            // Knife
            char attribs[64];
            FormatEx(attribs, sizeof(attribs), "252 ; 0.75 ; 68 ; 1.0 ; 1 ; 0.5 ; 214 ; %d ; 137 ; 10.0 ; 275 ; 1.0", GetRandomInt(1000000000, 2147483640));
            SaxtonWeapon = SpawnWeapon(client, "tf_weapon_knife", 727, 100, TFQual_Unusual, attribs);
            TF2Attrib_SetByDefIndex(SaxtonWeapon, 26, 375.0);
            
            // Sapper
            CreateTimer(0.1, SpawnAgentSapper, client);
            
            // "Обоссадор" - (c)
            // Только голограмам.
            if (IsHologram(client))
                CreateTimer(0.3, SpawnObossador, client);
        }
        default:
        {
            char attribs[64];
            Format(attribs, sizeof(attribs), "68 ; 2.0 ; 2 ; 3.1 ; 259 ; 1.0 ; %s551 ; %i ; 214 ; %d", ((Special != ASHSpecial_MiniHale)?"252 ; 0.6 ; ":""), !IsDate(Month_Oct, 15), GetRandomInt(9999, 99999));
            SaxtonWeapon = SpawnWeapon(client, "tf_weapon_shovel", 5, 100, TFQual_Strange, attribs);
        }
    }

    SetEntPropEnt(client, Prop_Send, "m_hActiveWeapon", SaxtonWeapon);
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@Kr1kuzya, просто посылать id энтити в m_hActiveWeapon после GivePlayerItem()?

Самое смешное, что при меньшем количестве игроков глюк не наблюдается, а при большем оружие даётся и как будто сразу отбирается (в руках отображается оружие, но ни переключиться, ни стрелять, ни выбросить нельзя, т.к. оружия у игрока вообще никакого нет)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #4
@Grey83, да.
Если в некст тике попытаться, то конкретно в TF2 клиенты повылетают, ибо движок удалит энтити.
 
Сверху Снизу