func_buyzone создается, но он неактивный

Nebraska

Участник
Сообщения
225
Реакции
293
Всем привет. Пытаюсь расставить точки спавна на карте. Объект func_buyzone создается, но он неактивный. Подскажите, может можно ее как-нибудь активировать? CS:S

func_buyzone:
new zone = CreateEntityByName("func_buyzone");
  
if (zone != -1)
{
    DispatchKeyValueVector(zone, "origin", pos);
    DispatchSpawn(zone);
}
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #2
Всем привет. Пытаюсь расставить точки спавна на карте. Объект func_buyzone создается, но он неактивный. Подскажите, может можно ее как-нибудь активировать? CS:S

func_buyzone:
new zone = CreateEntityByName("func_buyzone");
 
if (zone != -1)
{
    DispatchKeyValueVector(zone, "origin", pos);
    DispatchSpawn(zone);
}
Браши создаются немного иначе через SourceMod. Попробуйте пример из этой статьи.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Или же можно пойти сложным путём, создать `trigger_multiple` и на него поцепить события входа, выхода, если игрок вошёл, то устанавливаем ему mp_buy_anywhere 1, если вышел то 0.
Не уверен что если выставить mp_buy_anywhere игроку (face convar) что ему будет доступна покупка.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
С чего бы зоне работать, если у неё не заданы габариты (т.е. это точка в пространстве, а не зона, по сути)?
Плюс не задано для какой команды предназначена зона (не помню считается ли зона доступной обеим командам, если не задать этот параметр).
Вообще лучше сначала почитай на valvedevelopers про этот класс энтити. Возможно там ещё какие-то флаги нужны при создании или инпуты нужно использовать.
 

DarkerZ

Участник
Сообщения
395
Реакции
175
Или же можно пойти сложным путём, создать `trigger_multiple` и на него поцепить события входа, выхода, если игрок вошёл, то устанавливаем ему mp_buy_anywhere 1, если вышел то 0.
Не уверен что если выставить mp_buy_anywhere игроку (face convar) что ему будет доступна покупка.
Габариты в любом случае задавать придëтся... Попробуй задать габариты через mins -x -y -z и maxs x y z. Эти координаты задаются относительно origin энтити
 

Nebraska

Участник
Сообщения
225
Реакции
293
всем спасибо за замечания, буду пробовать. отпишусь, если что получится)
 

Le1T

Участник
Сообщения
247
Реакции
86
Для энтити func_buyzone нужны еще kv

1675940105795.png


 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@m4ur1ce.original, попробуй вот так:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_functions>

public bool CreateBuyZone(float min[3], float max[3], int team)    // 0 - все, 2 - террористы, 3 - спецы
{
    int zone = CreateEntityByName("func_buyzone");
    if(zone == -1)
        return false;

    DispatchKeyValue(zone, "TeamNum", team < 1 ? "0" : team > 2 ? "3" : "2");
    DispatchKeyValue(zone, "StartDisabled", "0");
    if(!DispatchSpawn(zone))
        return false;

    // у зоны координаты всегда {0.0, 0.0, 0.0}, а расположение задаётся вот этими параметрами:
    SetEntPropVector(zone, Prop_Data, "m_vecMaxs", max);
    SetEntPropVector(zone, Prop_Data, "m_vecMins", min);

    ActivateEntity(zone);

//    AcceptEntityInput(zone, "Enable");    // если StartDisabled не поможет

    return true;
}
 

Nebraska

Участник
Сообщения
225
Реакции
293
@m4ur1ce.original, попробуй вот так:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_functions>

public bool CreateBuyZone(float min[3], float max[3], int team)    // 0 - все, 2 - террористы, 3 - спецы
{
    int zone = CreateEntityByName("func_buyzone");
    if(zone == -1)
        return false;

    DispatchKeyValue(zone, "TeamNum", team < 1 ? "0" : team > 2 ? "3" : "2");
    DispatchKeyValue(zone, "StartDisabled", "0");
    if(!DispatchSpawn(zone))
        return false;

    // у зоны координаты всегда {0.0, 0.0, 0.0}, а расположение задаётся вот этими параметрами:
    SetEntPropVector(zone, Prop_Data, "m_vecMaxs", max);
    SetEntPropVector(zone, Prop_Data, "m_vecMins", min);

    ActivateEntity(zone);

//    AcceptEntityInput(zone, "Enable");    // если StartDisabled не поможет

    return true;
}
неа, не получилось :(
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@m4ur1ce.original, ты же не использовал этот код как полный плагин, а вставил функцию в код другого (и пробовал раскомментировать строку AcceptEntityInput(zone, "Enable");)?
 

Big

Карты головного мозга💆‍♂️
Сообщения
453
Реакции
252
Я конечно может не туда лезу, но почему бы не создать байзоны с помощью стрипера , а так же точки спавна? Явно же легче
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@m4ur1ce.original, ну тогда создавать trigger_multiple с координатами и размером зоны и при попадении игрока в него (хукая аутпут OnTouching) менять игроку параметр m_bInBuyZone:
SetEntProp(client, Prop_Send, "m_bInBuyZone", 1);
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
395
Реакции
175
@m4ur1ce.original, ну тогда создавать trigger_multiple с координатами и размером зоны и при попадении игрока в него (хукая аутпут OnTouching) менять игроку параметр m_bInBombZone:
SetEntProp(client, Prop_Send, "m_bInBombZone", 1);
А разве это не бомбплейс получается?
 
Сверху Снизу