Перейти к содержимому


Фотография

Ночное зрение у Особых Зараженных


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 11 Апрель 2020 - 20:31

Подскажите, есть ли какая-нибудь возможность сделать в кооперативе для живых игроков команды Зараженных ночное зрение? Дело в том, что оно есть в версусе, когда играешь призраком или уже живой, то в темноте дается дополнительное освещение. Но вот, если человек играет за зараженных в кооперативе, то такой подсветки нет, и каждая комната без окон становится очень темной. Кто-нибудь знает, может есть оффсет какой-то или что-то еще? Спасибо!



#2 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 12 Апрель 2020 - 5:40

public void OnPluginStart()
{
	RegConsoleCmd("sm_da", nv);
}

public Action nv (int client, int args)
{
	static bool awdas;
	
	awdas = !awdas;
	
	SetEntProp (client, Prop_Send, "m_bHasNightVision", view_as<int>(awdas));
	SetEntProp (client, Prop_Send, "m_bNightVisionOn", view_as<int>(awdas));
}

Не проверял, но должно помочь


Сообщение отредактировал BHaType: 12 Апрель 2020 - 8:00

  • 8rutu5 и Goldfish это нравится

#3 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 12 Апрель 2020 - 14:28

public void OnPluginStart()
{
	RegConsoleCmd("sm_da", nv);
}

public Action nv (int client, int args)
{
	static bool awdas;
	
	awdas = !awdas;
	
	SetEntProp (client, Prop_Send, "m_bHasNightVision", view_as<int>(awdas));
	SetEntProp (client, Prop_Send, "m_bNightVisionOn", view_as<int>(awdas));
}

Не проверял, но должно помочь

 

За вариант спасибо, хоть что-то, слегка помогает. Но принцип, к сожалению, другой. Данные оффсеты скорее дают эффект настоящего ночного видения, но для заразы в коопе, например, закрытые комнаты не освещаются. То есть просто, будто светлая пелена на экран накладывается. А в версусе именно, как-будто спрайт какой-то освещающий что ли, накладывается. Он работает как фонарик у сурвов. Ладно, буду думать, что можно сделать. За вариант спасибо. Хотя бы что-то.


Сообщение отредактировал 8rutu5: 12 Апрель 2020 - 14:29


#4 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 12 Апрель 2020 - 15:38

Разобрался как сделать. Нашел из одного старого плагина на работу с фонариком у сурвов и сделал под себя. Может кому пригодится.
 

static  const   String: NETPROP_CTERROR_PLAYER[]                = "CTerrorPlayer";
static  const   String: NETPROP_FLASHLIGHT[]                    = "m_fEffects";
static  const           FLASHLIGHT_STATE_ON                     = 4;
static                  g_iFlashlight_Offset                    = 0;
 
public OnPluginStart()
{
    g_iFlashlight_Offset = FindSendPropInfo(NETPROP_CTERROR_PLAYER, NETPROP_FLASHLIGHT);
    HookEvent("player_spawn"EventHook:Respawning_Event, EventHookMode_Post);
}
 
public Action:Respawning_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
 
    if (IsClientInGame(client))
    if (GetClientTeam(client) == 3)
    if (!IsFakeClient(client))
       CreateTimer(0.1, EnableInfectedFlashLight, client);
}
 
public Action:EnableInfectedFlashLight(Handle:timer, client)
{
    SetEntData(client, g_iFlashlight_Offset, FLASHLIGHT_STATE_OFF);
    SetEntData(client, g_iFlashlight_Offset, FLASHLIGHT_STATE_ON);
}

Сообщение отредактировал 8rutu5: 12 Апрель 2020 - 15:39

  • Slaven555, dragokas и Goldfish это нравится

#5 Goldfish

Goldfish

    Пользователь

  • Пользователь
  • PipPipPip
  • 388 сообщений

Отправлено 12 Апрель 2020 - 16:29

 

Разобрался как сделать. Нашел из одного старого плагина на работу с фонариком у сурвов и сделал под себя. Может кому пригодится.
 

static  const   String: NETPROP_CTERROR_PLAYER[]                = "CTerrorPlayer";
static  const   String: NETPROP_FLASHLIGHT[]                    = "m_fEffects";
static  const           FLASHLIGHT_STATE_ON                     = 4;
static                  g_iFlashlight_Offset                    = 0;
 
public OnPluginStart()
{
    g_iFlashlight_Offset = FindSendPropInfo(NETPROP_CTERROR_PLAYER, NETPROP_FLASHLIGHT);
    HookEvent("player_spawn"EventHook:Respawning_Event, EventHookMode_Post);
}
 
public Action:Respawning_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
 
    if (IsClientInGame(client))
    if (GetClientTeam(client) == 3)
    if (!IsFakeClient(client))
       CreateTimer(0.1, EnableInfectedFlashLight, client);
}
 
public Action:EnableInfectedFlashLight(Handle:timer, client)
{
    SetEntData(client, g_iFlashlight_Offset, FLASHLIGHT_STATE_OFF);
    SetEntData(client, g_iFlashlight_Offset, FLASHLIGHT_STATE_ON);
}

 

 

та ты там что играешь за заразу в коопе чтоли  или я  неправильно понял?   ХД


  • RyanAnderson это нравится

#6 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 12 Апрель 2020 - 17:18

та ты там что играешь за заразу в коопе чтоли  или я  неправильно понял?   ХД

Да, я для своего сервера внутри коопного режима сделал кастомный. Один начинает за зараженных. Каждого кого он убьет - становится Зараженным тоже и играет с ним в команде, помогая добить оставшихся Выживших.


  • RyanAnderson это нравится

#7 Goldfish

Goldfish

    Пользователь

  • Пользователь
  • PipPipPip
  • 388 сообщений

Отправлено 12 Апрель 2020 - 17:38

Да, я для своего сервера внутри коопного режима сделал кастомный. Один начинает за зараженных. Каждого кого он убьет - становится Зараженным тоже и играет с ним в команде, помогая добить оставшихся Выживших.

Я так понял за любого зараженного можно играть? И проблем никаких нету в плане стабильности, вылетов.. ?



#8 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 12 Апрель 2020 - 19:02

Я так понял за любого зараженного можно играть? И проблем никаких нету в плане стабильности, вылетов.. ?

С Танком много костылей там воротить приходится. А так в целом все играбельно, главное реализовать возможность респауна не автоматического, а как в версусе через призрак и все)


  • Goldfish это нравится

#9 adacer

adacer

    Новичок

  • Пользователь
  • Pip
  • 44 сообщений

Отправлено 13 Апрель 2020 - 10:20

Да, я для своего сервера внутри коопного режима сделал кастомный. Один начинает за зараженных. Каждого кого он убьет - становится Зараженным тоже и играет с ним в команде, помогая добить оставшихся Выживших.

интересная идея чтобы не скучать в наблюдении) спасательные туалеты получается к жизни сурвов уже не возвращают?



#10 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 13 Апрель 2020 - 11:10

интересная идея чтобы не скучать в наблюдении) спасательные туалеты получается к жизни сурвов уже не возвращают?


Нет) после смерти игрок до конца игры остаётся в команде заражённых. Там кварами можно, кстати, еще воскресение отключить, ну и death check тоже, чтобы карта не началась сначала после смерти всех выживших. В целом прикольно режим получился, но, к сожалению, мне с балансом трудно работать, так как многие кооперы в этом режиме только учатся играть как за заразу так и против нее, когда там сильные игроки. Но в целом, плюс-минус играбельно.

#11 Goldfish

Goldfish

    Пользователь

  • Пользователь
  • PipPipPip
  • 388 сообщений

Отправлено 13 Апрель 2020 - 14:09

Нет) после смерти игрок до конца игры остаётся в команде заражённых. Там кварами можно, кстати, еще воскресение отключить, ну и death check тоже, чтобы карта не началась сначала после смерти всех выживших. В целом прикольно режим получился, но, к сожалению, мне с балансом трудно работать, так как многие кооперы в этом режиме только учатся играть как за заразу так и против нее, когда там сильные игроки. Но в целом, плюс-минус играбельно.

тоже такая изначальная идея была заняться версусом да и мне само по себе играть за заразу пок айфу, но сравнив кооп и сражение решил все таки заняться коопом,береженого бох бережет))

 

может если можно совместно поучаствуем в разработке твоего проекта? =D

 

Скрытый текст


Сообщение отредактировал Goldfish: 13 Апрель 2020 - 14:12


#12 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 13 Апрель 2020 - 15:29

тоже такая изначальная идея была заняться версусом да и мне само по себе играть за заразу пок айфу, но сравнив кооп и сражение решил все таки заняться коопом,береженого бох бережет))

может если можно совместно поучаствуем в разработке твоего проекта? =D

Скрытый текст


Да без проблем, только рад буду помощи) но вся проблема в том, что этот режим интегрирован в мой основной большой плагин, а он приватный) то есть с ним работаю только я сам) так что даже не знаю, но как вариант, могу попробовать поделиться кодом этого режима убрав оттуда привязку особенностей моего сервера и сделать отдельным плагином для всех ну и может идеи какие-то предложить интересные да и просто поиграешь, потестируешь. Любая помощь приоодится
  • Goldfish это нравится

#13 Slaven555

Slaven555

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 533 сообщений

Отправлено 16 Апрель 2020 - 17:39

Разобрался как сделать. Нашел из одного старого плагина на работу с фонариком у сурвов и сделал под себя. Может кому пригодится.

Спасибо, реально работает.


Сообщение отредактировал Slaven555: 16 Апрель 2020 - 17:39


#14 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 17 Апрель 2020 - 0:27

главное реализовать возможность респауна не автоматического, а как в версусе через призрак и все)

 

Можно вот так

#include <sourcemod>
#include <sdktools>

Handle g_hGhost;

public void OnPluginStart()
{
	RegConsoleCmd("aaaaa", asd);
	
	StartPrepSDKCall(SDKCall_Player);
	PrepSDKCall_SetSignature(SDKLibrary_Server, "@_ZN13CTerrorPlayer17OnEnterGhostStateEv", 0);
	g_hGhost = EndPrepSDKCall();
}

public Action asd (int client, int args)
{
	SDKCall(g_hGhost, client);
}


  • 8rutu5 и Goldfish это нравится

#15 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 17 Апрель 2020 - 1:13

 

Можно вот так

#include <sourcemod>
#include <sdktools>

Handle g_hGhost;

public void OnPluginStart()
{
	RegConsoleCmd("aaaaa", asd);
	
	StartPrepSDKCall(SDKCall_Player);
	PrepSDKCall_SetSignature(SDKLibrary_Server, "@_ZN13CTerrorPlayer17OnEnterGhostStateEv", 0);
	g_hGhost = EndPrepSDKCall();
}

public Action asd (int client, int args)
{
	SDKCall(g_hGhost, client);
}

Спасибо, это все уже у меня реализовано)



#16 Jasf

Jasf

    Новичок

  • Пользователь
  • Pip
  • 38 сообщений

Отправлено 26 Январь 2023 - 9:28

public void OnPluginStart()
{
	RegConsoleCmd("sm_da", nv);
}

public Action nv (int client, int args)
{
	static bool awdas;
	
	awdas = !awdas;
	
	SetEntProp (client, Prop_Send, "m_bHasNightVision", view_as<int>(awdas));
	SetEntProp (client, Prop_Send, "m_bNightVisionOn", view_as<int>(awdas));
}

Не проверял, но должно помочь

 

Спасибо за скрипт, работает, но есть один момент, при старте каждой карты надо вводить !da 2 раза, так как с первого не включает и сам не стартует




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных