Плагин для очистки инвентаря в конце раунда [РЕШЕНО]

EXPLOS1VE

Участник
Сообщения
26
Реакции
2
Операционная система
Linux
Ищу плагин который выбрасывает всë из инвентаря в конце раунда
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@EXPLOS1VE, можно попробовать принудительно сменить оружие командой slot3: добавить строку FakeClientCommand(i, "slot3");

Примерно вот так:
C-подобный:
#include <cstrike>
#include <sdktools_entinput>
#include <sdktools_functions>

enum
{
    Slot_Primary = 0,
    Slot_Secondary,
    Slot_Knife,
    Slot_Grenade,
    Slot_C4,
    Slot_None
};

public void OnPluginStart()
{
    HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
}

public void Event_RoundEnd(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    for(int i = 1, j, wpn; i <= MaxClients; ++i) if(IsClientInGame(i) && IsPlayerAlive(i))
    {
        for(j = Slot_Primary; j < Slot_None; j++)
        {
            while((wpn = GetPlayerWeaponSlot(i, j)) != -1)
            {
                if(RemovePlayerItem(i, wpn))
                {
#if SOURCEMOD_V_MAJOR < 2 && SOURCEMOD_V_MINOR < 10
                    AcceptEntityInput(wpn, "Kill");
#else
                    RemoveEntity(wpn);
#endif
                }
            }
        }
        GivePlayerItem(i, "weapon_knife");
        FakeClientCommand(i, "slot3");
    }
}
Хотя хз поможет ли.
 

EXPLOS1VE

Участник
Сообщения
26
Реакции
2
к сожалению нет(
он просто не переключается на 3 слот
Сообщения автоматически склеены:

@Grey83, А можно как то сделать переключение на третий слот в конце раунда чререз консоль или отдельным плагином?
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
отдельным плагином?
C-подобный:
public void OnPluginStart()
{
    HookEvent("round_end", Event_End, EventHookMode_PostNoCopy);
}

public void Event_End(Event event, const char[] name, bool dontBroadcast)
{
    for(int i = 1; i <= MaxClients; ++i) if(IsClientInGame(i) && IsPlayerAlive(i)) FakeClientCommand(i, "slot3");
}
Сообщения автоматически склеены:

Вообще слот можно любой прописать: достаточно циферку сменить в команде (10-й слот - slot0).
 

EXPLOS1VE

Участник
Сообщения
26
Реакции
2
Слоты очищаются, но 2 плагин не переключает на третий слот
 

Вложения

  • cleanwpn.sp
    933 байт · Просмотры: 0
  • fix_roundend(knife).sp
    297 байт · Просмотры: 2

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
но 2 плагин не переключает на третий слот
переключает
но это возможно происходит до удаления оружия
Можно попробовать переключать на другое оружие в следующем тике:
C-подобный:
public void OnPluginStart()
{
    HookEvent("round_end", Event_End, EventHookMode_PostNoCopy);
}

public void Event_End(Event event, const char[] name, bool dontBroadcast)
{
    RequestFrame(RequestFrame_Callback);
}

public void RequestFrame_Callback(any data)
{
    for(int i = 1; i <= MaxClients; ++i) if(IsClientInGame(i) && IsPlayerAlive(i)) FakeClientCommand(i, "slot3");
}
 

EXPLOS1VE

Участник
Сообщения
26
Реакции
2
@Grey83, видать у консоли свои приколы с этим
Unknown command: slot3
Сообщения автоматически склеены:

Плагин выполняется без вопросов, но консоль игрока даёт такую ошибку
Прикол в том если писать в игровой консоле самому игроку, то slot3 выполняется без вопросов
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@EXPLOS1VE, значит заблочено выполнение этой команды в CS:GO не игроком.

Можно попробовать вот так:
C-подобный:
#include <sdktools_functions>

public void OnPluginStart()
{
    HookEvent("round_end", Event_End, EventHookMode_PostNoCopy);
}

public void Event_End(Event event, const char[] name, bool dontBroadcast)
{
    RequestFrame(RequestFrame_Callback);
}

public void RequestFrame_Callback(any data)
{
    for(int i = 1, wpn; i <= MaxClients; ++i)
        if(IsClientInGame(i) && IsPlayerAlive(i) && (wpn = GetPlayerWeaponSlot(i, 3)) !=-1)
            EquipPlayerWeapon(i, wpn);
}
 

Max Rhine

Участник
Сообщения
172
Реакции
29
значит заблочено выполнение этой команды в CS:GO не игроком.
Grey83, я бы сделал так: SetEntPropEnt(i, Prop_Send, "m_hActiveWeapon", GetPlayerWeaponSlot(i, 2));
Разумеется, вместо FakeClientCommand(i, "slot3");
Сообщения автоматически склеены:

Palonez такой умный, покажи мастер класс)
 
Последнее редактирование:

EXPLOS1VE

Участник
Сообщения
26
Реакции
2
Решил проблему с ножом, спасибо всем кто участвовал!
@Grey83, как всегда на высоте
 

Вложения

  • cleanwpn.smx
    3 КБ · Просмотры: 0
  • cleanwpn.sp
    989 байт · Просмотры: 5
Сверху Снизу