Как удалить окно маркета на Mirage?

qennu

Участник
Сообщения
9
Реакции
2
Операционная система
Linux
Список плагинов SM
[CS:GO] Retakes Breaker [V 1.1] by RoyZ
Уже какой месяц не могу найти решение. У окна тип класса "prop_dynamic", можно конечно удалить, но также удалятся другие предметы. Есть и второй способ удалить prop_dynamic:

взято из Retakes Breaker от RoyZ:
int ent = -1;

...

if (StrContains(currentMap, "de_mirage", false) == -1)

        {

while ((ent = FindByClassName(ent, "prop_dynamic")) != -1)

            {

                AcceptEntityInput(ent, "break");

            }

}
Или можно найти объект по имени модельки?
 

Mr_panica

XenForo one 💖
Сообщения
921
Реакции
435
Можно такой код попробовать.

C-подобный:
int ent = -1;

//По имени модели

char ModelName[128];

if (StrContains(currentMap, "de_mirage", false) == -1)
{
    while ((ent = FindByClassName(ent, "prop_dynamic")) != -1)
    {
        GetEntPropString(ent, Prop_Data, "m_ModelName", ModelName, sizeof(ModelName));
        if (StrEqual(modelname, "window_name.mdl"))
            AcceptEntityInput(ent, "break");
    }
}

//По координатам модели

int ent = -1;
float Coords[3];

if (StrContains(currentMap, "de_mirage", false) == -1)
{
    while ((ent = FindByClassName(ent, "prop_dynamic")) != -1)
    {
        GetEntPropVector(ent, Prop_Send, "m_vecOrigin", Coords);
        if(Coords[0] == 256.000000 && Coords[1] == 2660.000000 && Coords[2] == 560.000000)
            AcceptEntityInput(ent, "break");
    }
}
 

DarkerZ

Участник
Сообщения
395
Реакции
175
не совсем правильно удалять энтити по координатам. лучше использовать hammerid. можно стриппером как написано выше только вместо origin использовать hammerid так же можно и плагином
C-подобный:
stock int Entity_GetHammerID(int entity)
{
    return GetEntProp(entity, Prop_Data, "m_iHammerID");
}
если возвращаемое значение больше 0, то это энтитя с карты. точный номер можно посмотреть, например, в entspy или просто в блокноте открыть декомпилянную карту (здесь id=hammerid)
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,867
не совсем правильно удалять энтити по координатам
Ну как в мане стриппера написано, так и фильтруем :-)
entspy или просто в блокноте открыть декомпилянную карту (здесь id=hammerid)
Можно так же стриппером, командой в консоль сервера: stripper_dump, консоль клиента: sm_rcon stripper_dump
Дамп смотреть: в csgo/addons/stripper/dumps/de_mirage.0000.cfg
"hammerid" "661760"
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
C++:
#include <sourcemod>

public void OnPluginStart()
{
    HookEvent("round_start", EventRS);
}

public void EventRS(Event hEvent, const char[] sEvent, bool bdb)
{
    ServerCommand("sv_cheats 1");
    char map[256];
    GetCurrentMap(map, sizeof(map))
    if(StrEqual(map, "de_mirage", false))
    {
        ServerCommand("ent_remove prop.breakable.01");
        ServerCommand("ent_remove prop.breakable.02");
    }
    else if(StrEqual(map, "de_nuke", false)) ServerCommand("ent_remove vent_a");
    ServerCommand("sv_cheats 0");
}
На мираже удаляет окно и проход в джангл. На нюке удаляет решетку в винтах на А
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #7
C++:
#include <sourcemod>

public void OnPluginStart()
{
    HookEvent("round_start", EventRS);
}

public void EventRS(Event hEvent, const char[] sEvent, bool bdb)
{
    ServerCommand("sv_cheats 1");
    char map[256];
    GetCurrentMap(map, sizeof(map))
    if(StrEqual(map, "de_mirage", false))
    {
        ServerCommand("ent_remove prop.breakable.01");
        ServerCommand("ent_remove prop.breakable.02");
    }
    else if(StrEqual(map, "de_nuke", false)) ServerCommand("ent_remove vent_a");
    ServerCommand("sv_cheats 0");
}
На мираже удаляет окно и проход в джангл. На нюке удаляет решетку в винтах на А
Интересно как поведет себя такой кейз если проспамить в начале раунда годмод или ноклип.
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,867
не совсем правильно удалять энтити по координатам
тогда или так:
C-подобный:
filter:
{
       "model" "models/props/de_mirage/shutter_window_l_breakable.mdl"
       "classname" "prop_dynamic"
}
или так:
C-подобный:
filter:
{
        "hammerid" "661760"
}
бонус:
20221123083121_1.jpg20221123083806_1.jpg
C-подобный:
filter:
{
        "hammerid" "661760"
}
filter:
{
        "hammerid" "450638"
}

Во вложении дамп карты, с помощью стриппера
 

Вложения

  • de_mirage.0000.zip
    15.1 КБ · Просмотры: 3
Последнее редактирование:

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Интересно как поведет себя такой кейз если проспамить в начале раунда годмод или ноклип.
C-подобный:
#include <sdktools>

public void OnPluginStart()
{
    HookEvent("round_start", EventRS);
    SetCommandFlags("ent_remove", 1<<28); //ставим флаг FCVAR_SERVER_CAN_EXECUTE // the server is allowed to execute this command on clients via(console.inc)
}

public void EventRS(Event hEvent, const char[] sEvent, bool bdb)
{
    char map[256];
    GetCurrentMap(map, sizeof(map))
    if(StrEqual(map, "de_mirage", false))
    {
        ServerCommand("ent_remove prop.breakable.01"); //проход в джангл с CT
        ServerCommand("ent_remove prop.breakable.01.brush"); //проход в джангл с CT
        int i = -1;
        while((i = FindEntityByClassname (i, "prop_dynamic")) != -1)
        {
            GetEntPropString(i, Prop_Data, "m_ModelName", map, sizeof(map));
            if(StrEqual(map, "shutter_window_l_breakable")) AcceptEntityInput(i, "break");    //разрушение окна в маркете
        }
    }
    else if(StrEqual(map, "de_nuke", false)) ServerCommand("ent_remove vent_a"); //винты на нюке
}
можно и таким вариантом
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
395
Реакции
175
C-подобный:
#include <sourcemod>

public void OnPluginStart()
{
    HookEvent("round_start", EventRS);
    SetCommandFlags("ent_remove", 1<<28); //ставим флаг FCVAR_SERVER_CAN_EXECUTE // the server is allowed to execute this command on clients via(console.inc)
}

public void EventRS(Event hEvent, const char[] sEvent, bool bdb)
{
    char map[256];
    GetCurrentMap(map, sizeof(map))
    if(StrEqual(map, "de_mirage", false))
    {
        ServerCommand("ent_remove prop.breakable.01"); //проход в джангл с CT
        ServerCommand("ent_remove prop.breakable.01.brush"); //проход в джангл с CT
        int i = -1;
        while((i = FindByClassName(ent, "prop_dynamic")) != -1)
        {
            GetEntPropString(i, Prop_Data, "m_ModelName", map, sizeof(map));
            if(StrEqual(map, "shutter_window_l_breakable")) AcceptEntityInput(i, "break");    //разрушение окна в маркете
        }
    }
    else if(StrEqual(map, "de_nuke", false)) ServerCommand("ent_remove vent_a"); //винты на нюке
}
можно и таким вариантом
Лучше стриппером или на последних билдах sm появился entitylump.inc
 

KUBINATOR

Участник
Сообщения
262
Реакции
69
C-подобный:
#include <sourcemod>

public void OnPluginStart()
{
    HookEvent("round_start", EventRS);
    SetCommandFlags("ent_remove", 1<<28); //ставим флаг FCVAR_SERVER_CAN_EXECUTE // the server is allowed to execute this command on clients via(console.inc)
}

public void EventRS(Event hEvent, const char[] sEvent, bool bdb)
{
    char map[256];
    GetCurrentMap(map, sizeof(map))
    if(StrEqual(map, "de_mirage", false))
    {
        ServerCommand("ent_remove prop.breakable.01"); //проход в джангл с CT
        ServerCommand("ent_remove prop.breakable.01.brush"); //проход в джангл с CT
        int i = -1;
        while((i = FindByClassName(ent, "prop_dynamic")) != -1)
        {
            GetEntPropString(i, Prop_Data, "m_ModelName", map, sizeof(map));
            if(StrEqual(map, "shutter_window_l_breakable")) AcceptEntityInput(i, "break");    //разрушение окна в маркете
        }
    }
    else if(StrEqual(map, "de_nuke", false)) ServerCommand("ent_remove vent_a"); //винты на нюке
}
можно и таким вариантом
ошибка при компиляции
error 017: undefined symbol "FindByClassName"
error 017: undefined symbol "AcceptEntityInput"
 
Сверху Снизу