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


Фотография

sceneprocessor

sceneprocessor

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

#1 Game Over - L4D2 - CS:GO

Game Over - L4D2 - CS:GO

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

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

Отправлено 19 Февраль 2019 - 13:58

Кто-нибудь использовал sceneprocessor? У меня с ним проблема, например при убийстве заражённых прописал, чтобы выживший говорил определённую реплику, реплики слышно, но которые говорят остальные при убийстве заражённых, а игрок которым играешь молчит. 

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

Сообщение отредактировал Game Over - L4D2 - CS:GO: 19 Февраль 2019 - 14:00


#2 AlexMy

AlexMy

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

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

Отправлено 19 Февраль 2019 - 18:32

Зачем делаешь проверку GetClientTeam(client) != на зрителя? Или бот должен говорить когда ты прервался? 


  • Game Over - L4D2 - CS:GO это нравится

#3 Game Over - L4D2 - CS:GO

Game Over - L4D2 - CS:GO

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

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

Отправлено 19 Февраль 2019 - 21:58

Я даже не заметил) Триста раз всё переписал) Спасибо. 


Сообщение отредактировал Game Over - L4D2 - CS:GO: 19 Февраль 2019 - 21:58


#4 AlexMy

AlexMy

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

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

Отправлено 19 Февраль 2019 - 22:33

Всё бы нечего, ты уверен что это часть нужна? мне кажется это бессмысленно:

if(attacker > 0 && attacker <= MaxClients && IsClientInGame(attacker) && GetClientTeam(attacker) == 2 && victim > 0 && victim <= MaxClients && IsClientInGame(victim) && GetClientTeam(victim) == 3) 

Мне кажется там нужна простая проверка на энтите:

int victim = GetClientOfUserId(hEvent.GetInt("userid"));
int attacker = GetClientOfUserId(hEvent.GetInt("attacker"));	
if(victim && IsValidEntity(victim) && IsValidEdict(victim))
{
	char classname[32];
	GetEntityNetClass(victim, classname, sizeof(classname));
	if (StrEqual(classname, "Smoker", false) || StrEqual(classname, "Boomer", false) || StrEqual(classname, "Hunter", false) || StrEqual(classname, "Charger", false) || StrEqual(classname, "Spitter", false) || StrEqual(classname, "Jockey", false))		
	{	
		CreateEffects(attacker, true);							
	}							
}

Для атакующего нет смысла делать опять же проверки, если ты все валидности и тд. проверяешь в 

void CreateEffects

Индекс атакующего передал и всё.


  • Game Over - L4D2 - CS:GO это нравится

#5 dragokas

dragokas

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

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

Отправлено 03 Март 2019 - 1:36

Где-то что-то лишнее проверяешь, кейсы не для всех моделей прописал и т.п.

Я бы убрал полностью все проверки и все кейсы, вставил PrintToChat перед PerformSceneEx и посмотрел исполняется ли он.

 

Потом бы для Event_Player_Death попробовал режим Pre.

 

Ну и заменил бы PerformSceneEx на вариант который точно работает: см. ЛС.


  • Game Over - L4D2 - CS:GO это нравится

#6 BHaType

BHaType

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

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

Отправлено 03 Март 2019 - 4:24

Кто-нибудь использовал sceneprocessor? У меня с ним проблема, например при убийстве заражённых прописал, чтобы выживший говорил определённую реплику, реплики слышно, но которые говорят остальные при убийстве заражённых, а игрок которым играешь молчит. 

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

 

Можно ещё 1 вариант сделать.

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

 

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

 

И ещё Valve, где у себя на сайте разместили тутор по созданию таких сцен.

 

P.S Код не мой, взял с плагина https://forums.allie...d.php?p=1729016.


Сообщение отредактировал BHaType: 03 Март 2019 - 4:26

  • Game Over - L4D2 - CS:GO это нравится


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

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