Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Крашит сервер, после маскировки игрока в бочку cs go.
Крашит сервер, после маскировки игрока в бочку cs go.
polo79655 Дата: Понедельник, 09.05.2016, 09:10:19 | Сообщение # 1
Сообщений: 72
Репутация: -2 [ +/- ]
Видел уже тему, но не нашёл её. Все говорят, что почему-то в кс го, нельзя маскировать игрока в многие стандартные модели, например в бочку, вылетает. Слышал, что нужно сделать человека невидимым и привязать за ним модель. Не подскажите код? Заранее спасибо.
 
BarD Дата: Понедельник, 09.05.2016, 09:34:24 | Сообщение # 2
Сообщений: 944
Репутация: 132 [ +/- ]
Только не забывай про прекэш моделей.
client - индекс игрока, которого маскируем.
path - путь до модели пропа.
Код

stock MaskClient(client, const String:path[])
{
        new entity = CreateEntityByName("prop_physics_override");
    if (entity > 0)
    {
  decl Float:poss[3];
  GetClientAbsOrigin(client, poss);
  DispatchKeyValue(entity, "targetname", "prop");
  DispatchKeyValue(entity, "model", path);
  DispatchSpawn(entity);
  SetEntProp(entity, Prop_Send, "m_usSolidFlags", 12);
  SetEntProp(entity, Prop_Send, "m_nSolidType", 6);
  SetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity", client);
  SetEntProp(entity, Prop_Data, "m_CollisionGroup", 17);
  SetEntityRenderMode(client, RENDER_NONE); // скрываем игрока
  TeleportEntity(entity, poss, NULL_VECTOR, NULL_VECTOR);
  SetVariantString("!activator");
  AcceptEntityInput(entity, "SetParent", client, entity, 0);
                return entity;
    }
   return -1;
}


Сообщение отредактировал BarD - Понедельник, 09.05.2016, 09:34:52
 
polo79655 Дата: Понедельник, 09.05.2016, 10:17:36 | Сообщение # 3
Сообщений: 72
Репутация: -2 [ +/- ]
Цитата BarD ()
Только не забывай про прекэш моделей.
client - индекс игрока, которого маскируем.
path - путь до модели пропа.
Код

stock MaskClient(client, const String:path[])
{
        new entity = CreateEntityByName("prop_physics_override");
    if (entity > 0)
    {
  decl Float:poss[3];
  GetClientAbsOrigin(client, poss);
  DispatchKeyValue(entity, "targetname", "prop");
  DispatchKeyValue(entity, "model", path);
  DispatchSpawn(entity);
  SetEntProp(entity, Prop_Send, "m_usSolidFlags", 12);
  SetEntProp(entity, Prop_Send, "m_nSolidType", 6);
  SetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity", client);
  SetEntProp(entity, Prop_Data, "m_CollisionGroup", 17);
  SetEntityRenderMode(client, RENDER_NONE); // скрываем игрока
  TeleportEntity(entity, poss, NULL_VECTOR, NULL_VECTOR);
  SetVariantString("!activator");
  AcceptEntityInput(entity, "SetParent", client, entity, 0);
                return entity;
    }
   retu

Огромное спасибо. Но порой бывает, что человек виден, а потом через раунд становится невидимым, как это пофиксить?

Добавлено (09.05.2016, 10:17:36)
---------------------------------------------
И еще, как уничтожить бочку? Просто после смерти остается бочка)

 
BarD Дата: Понедельник, 09.05.2016, 10:42:36 | Сообщение # 4
Сообщений: 944
Репутация: 132 [ +/- ]
Эта функция возвращает индекс созданного объекта. Запоминай его куда-нибудь в массив, а потом убивай.

Добавлено (09.05.2016, 10:42:36)
---------------------------------------------

Цитата polo79655 ()
что человек виден, а потом через раунд становится невидимым,

Никогда такого не было. Может, другой плагин какой-то видимость делает?
 
polo79655 Дата: Понедельник, 09.05.2016, 11:09:23 | Сообщение # 5
Сообщений: 72
Репутация: -2 [ +/- ]
Цитата BarD ()
Эта функция возвращает индекс созданного объекта. Запоминай его куда-нибудь в массив, а потом убивай.

Я только начинаю скриптить, можно пример пожалуйста?


Сообщение отредактировал polo79655 - Понедельник, 09.05.2016, 11:16:50
 
BarD Дата: Понедельник, 09.05.2016, 11:15:15 | Сообщение # 6
Сообщений: 944
Репутация: 132 [ +/- ]
//В самом начале
Код
new g_iProp[MAXPLAYERS+1];

//когда скрываешь игрока:

Код
g_iProp[client] = MaskClient(client, "Путь до модели");

//когда умер:
Код
public Action:Death(Handle:event, const String:name[], bool:db)
{
    new client = GetClientOfuserId(GetEventInt(event, "userid"));
    if (client && g_iProp[client] && IsValidEntity(g_iProp[client]))
   {
       AcceptEntityInput(g_iProp[client], "Kill");
       g_iProp[client] = -1;
   }
}
 
polo79655 Дата: Понедельник, 09.05.2016, 11:17:40 | Сообщение # 7
Сообщений: 72
Репутация: -2 [ +/- ]
Цитата BarD ()
//В самом начале
Код
new g_iProp[MAXPLAYERS+1];

//когда скрываешь игрока:

Код
g_iProp[client] = MaskClient(client, "Путь до модели");

//когда умер:
Код
public Action:Death(Handle:event, const String:name[], bool:db)
{
    new client = GetClientOfuserId(GetEventInt(event, "userid"));
    if (client && g_iProp[client] && IsValidEntity(g_iProp[client]))
   {
       AcceptEntityInput(g_iProp[client], "Kill");
       g_iProp[client] = -1;
   }

Спасибо, +rep xD
 
BarD Дата: Понедельник, 09.05.2016, 11:22:30 | Сообщение # 8
Сообщений: 944
Репутация: 132 [ +/- ]
А по поводу видимости, можешь через SetTransmit сделать невидимость.
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Крашит сервер, после маскировки игрока в бочку cs go.
Страница 1 из 11
Поиск: