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


Фотография

Квары (переменные) L4D2


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

#281 BloodyBlade

BloodyBlade

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

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

Отправлено 18 Март 2020 - 22:56

Я этот плагин вдоль и поперек разбирал. Работает все на команде z_spawn_old.

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

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

 

Я этот плагин вдоль и поперек разбирал. Работает все на команде z_spawn_old.

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

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

Имеешь ввиду, что спамит ошибку, что не может позицию для спавна найти?)



#282 8rutu5

8rutu5

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

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

Отправлено 18 Март 2020 - 23:16

Имеешь ввиду, что спамит ошибку, что не может позицию для спавна найти?)

Да, там вроде пишет, например, что не удалось найти позицию для плевальщицы за 5 попыток



#283 BloodyBlade

BloodyBlade

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

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

Отправлено 18 Март 2020 - 23:19

Да, там вроде пишет, например, что не удалось найти позицию для плевальщицы за 5 попыток

Видел подобное) Но, странно, что подобное выдает, учитывая, что они просто спавнятся командой)

Если кому нужно, могу скинуть свою версию, переписанную с  monsterbots)
Все оригинальные права идут к Machine, хоть я и переименовал квары и добавил доп. проверки)

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

Сообщение отредактировал BloodyBlade: 18 Март 2020 - 23:29


#284 8rutu5

8rutu5

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

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

Отправлено 18 Март 2020 - 23:39

Видел подобное) Но, странно, что подобное выдает, учитывая, что они просто спавнятся командой)

Если кому нужно, могу скинуть свою версию, переписанную с  monsterbots)
Все оригинальные права идут к Machine, хоть я и переименовал квары и добавил доп. проверки)

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

В этой версии спауны всегда работают?



#285 BloodyBlade

BloodyBlade

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

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

Отправлено 18 Март 2020 - 23:43

В этой версии спауны всегда работают?

Ошибок я в консоли не видел)

Я просто именно под свой проект переписывал. Подобное @adacer писал для своего проекта)

Там можно упростить проверку) Просто, руки пока не дошли это именно в таймере самом сделать)


Сообщение отредактировал BloodyBlade: 18 Март 2020 - 23:48


#286 dragokas

dragokas

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

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

Отправлено 19 Март 2020 - 0:54

Я этот плагин вдоль и поперек разбирал. Работает все на команде z_spawn_old.

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

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

 

Я имел в виду, посмотреть какими игровыми кварами он манипулирует. Их там немало.

 

По поводу неудачных попыток спауна, там скорее всего завязка на плохо собранной навигационной сетке карты,

и игра выбрав одну и ту же навигационную зону для поиска в ней позиции спауна, не находит свободной позиции, и при этом

не пытается перейти к другой зоне, а все время пробует найти место в той же зоне, от чего иногда бывает,

что всю карту переглючивает и бывают ситуации, что вообще ни одной заразы за карту.

 

Тут как по мне по хорошему только ставить хук на функцию поиска зон и принудительно скормить другую ближайшую зону.

Либо самому писать спавнер на основе плагина вывода зон от Внатуре, искать свободню позицию,

и спавнить заразу непосредственно в ней через энтити "commentary_zombie_spawner".

 

P.S. Если кто-то хочет поработать над вариантом с патчем, у меня есть наработки от Сильверса и форк плагина Внатуре для вывода соседних зон.


Сообщение отредактировал dragokas: 19 Март 2020 - 0:58

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

#287 dragokas

dragokas

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

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

Отправлено 19 Март 2020 - 2:52

Goldfish, вот еще случайно наткнулся, если для l4d2, то почитай тему: https://forums.allie...ad.php?t=310183

 

Там предлагается изменить некие переменные директора (по ключевому слову "limit" легко отыскать нужное) и плагин для их изменения, а также в конце упоминается плагин l4d2_dominators.smx из promod-а, якобы решающий проблему с лимитом, можно в нём почекать, как это делают.


Сообщение отредактировал dragokas: 19 Март 2020 - 2:57


#288 Goldfish

Goldfish

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

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

Отправлено 19 Март 2020 - 9:44

Goldfish, вот еще случайно наткнулся, если для l4d2, то почитай тему: https://forums.allie...ad.php?t=310183

 

Там предлагается изменить некие переменные директора (по ключевому слову "limit" легко отыскать нужное) и плагин для их изменения, а также в конце упоминается плагин l4d2_dominators.smx из promod-а, якобы решающий проблему с лимитом, можно в нём почекать, как это делают.

понял, спс



#289 BloodyBlade

BloodyBlade

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

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

Отправлено 19 Март 2020 - 10:39

Я этот плагин вдоль и поперек разбирал. Работает все на команде z_spawn_old.

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

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

C переписанной версией проблем не замечал. Если спавн уже начался, то не прерывался, по-сравнению со спавном стандартными кварами..



#290 Goldfish

Goldfish

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

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

Отправлено 19 Март 2020 - 11:34

Goldfish, вот еще случайно наткнулся, если для l4d2, то почитай тему: https://forums.allie...ad.php?t=310183

 

Там предлагается изменить некие переменные директора (по ключевому слову "limit" легко отыскать нужное) и плагин для их изменения, а также в конце упоминается плагин l4d2_dominators.smx из promod-а, якобы решающий проблему с лимитом, можно в нём почекать, как это делают.

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

 

 


а также в конце упоминается плагин l4d2_dominators.smx из promod-а, якобы решающий проблему с лимитом, можно в нём почекать, как это делают.

https://github.com/S...atorscontrol.sp

не похоже на увеличение лимита, скорее всего изменение доминирующего класса СЗ


Сообщение отредактировал Goldfish: 19 Март 2020 - 11:35


#291 dragokas

dragokas

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

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

Отправлено 19 Март 2020 - 18:51

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

 

 


https://github.com/S...atorscontrol.sp

не похоже на увеличение лимита, скорее всего изменение доминирующего класса СЗ

 

Понятия не имею. Я в dvar-ах и V-скриптах нуб. Как я понял, нужно пробовать через тот плагин нужным d-варам указать значение по выше, точно так же как ты делаешь через sm_cvar.


Сообщение отредактировал dragokas: 19 Март 2020 - 18:51


#292 Goldfish

Goldfish

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

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

Отправлено 19 Март 2020 - 20:24

И так разобрался я с этим спавном, спасибо dragokas'у за подсказку

про квары, контролирующие спавн босов, можно вообще забыть, на сервере приоритет для VScript скриптов и его "director cvar" переменных, поэтому если они изменены на MaxSpecials=2 , то хоть убейся спавн будет не больше 2ух специальных зараженных за интервал, поэтому если есть желание использовать спавнер director'а , то необходимо использовать специальный плагин, через который можно изменять эти dcvar'ы, отвечающие за весь скриптовой процесс кампании.

 

после установки плагина появяться 2 квара:

"l4d2_directoroptions_overwrite" - квар через которой можно перезаписать dcvar'ы

"l4d2_directoroptions_use_check_delay" - квар для установки частоты перезаписи dcvar'ов вашими значениями (т.к в процессе игры они постоянно изменяются, например после активирования тригеров)

 

пример из abm

 char vsLimit[256] = "\
        DominatorLimit=6;\
        MaxSpecials=2;\
        BoomerLimit=6;\
        SmokerLimit=6;\
        HunterLimit=6;\
        ChargerLimit=6;\
        SpitterLimit=6;\
        JockeyLimit=6;\
        SpecialRespawnInterval=30;";
        
    ConVar g_cvVDOUHandle = FindConVar("l4d2_directoroptions_overwrite");
    SetConVarString(g_cvVDOUHandle, vsLimit);
    
    ConVar g_cvVDOUHandle2 = FindConVar("l4d2_directoroptions_use_check_delay");
    SetConVarInt(g_cvVDOUHandle2, 0);

в данном примере лимит спавна будет ограничен 2 босами за один интервал времени

интервал спавна - 30 сек

 

частота перезаписи переменной = 0,5 сек (0 по умолчаню ранвяется 0,5)

 

на этом достаточно, чтобы создать в любой момент времени слабый спавн или мощный поток специальных зараженных, которые будут появляться на карте недалеко от игроков за один раз ровно таким количеством каким вы укажите для переменной "MaxSpecials"
 

как-то так

 

сами dCvar'ы

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

 

больше dcvar'ов https://developer.va...irector_Scripts


Сообщение отредактировал Goldfish: 19 Март 2020 - 21:18

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

#293 Pringles

Pringles

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

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

Отправлено 19 Март 2020 - 20:44

Добрый вечер.

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



#294 Goldfish

Goldfish

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

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

Отправлено 19 Март 2020 - 21:14

Добрый вечер.

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

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


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


И кстати как лекс писал, босы занимают слоты, включая танки, поэтому чтобы увидеть босов в то время пока на карте танк, необходимо изменить dcvar ShouldAllowSpecialsWithTank=true при этом стоит заранее увеличить макс количество спец зараженных (MaxSpecials) чтобы им хватало места на спавн


Сообщение отредактировал Goldfish: 19 Март 2020 - 21:16


#295 Pringles

Pringles

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

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

Отправлено 19 Март 2020 - 22:20

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


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


И кстати как лекс писал, босы занимают слоты, включая танки, поэтому чтобы увидеть босов в то время пока на карте танк, необходимо изменить dcvar ShouldAllowSpecialsWithTank=true при этом стоит заранее увеличить макс количество спец зараженных (MaxSpecials) чтобы им хватало места на спавн

У меня все попытки спавна кварами заканчивались плачевно...

В 1й части пробовал

Был такой баг постоянно - в кооп на 4х игроков - появлялся 5 слот и там быстро чередовались курильщик, хант и бумер.

В финале карты "Смерть в воздухе" - танк вообще не выходил. После 1й волны шла музыка танка, но его не было... Видимо места не хватало.- ИМХО.


Сообщение отредактировал Pringles: 19 Март 2020 - 22:21


#296 dragokas

dragokas

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

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

Отправлено 19 Март 2020 - 23:14

Добрый вечер.

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

 

Меньше плагинов меньше тормозов.

 

 

У меня все попытки спавна кварами заканчивались плачевно...

В 1й части пробовал

Был такой баг постоянно - в кооп на 4х игроков - появлялся 5 слот и там быстро чередовались курильщик, хант и бумер.

В финале карты "Смерть в воздухе" - танк вообще не выходил. После 1й волны шла музыка танка, но его не было... Видимо места не хватало.- ИМХО.

 

Та же самая проблема с глючной логикой движка "Can't find spawn position in 5 tries" и пока что нет ни одного плагина, который бы обходил это.



#297 BHaType

BHaType

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

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

Отправлено 20 Март 2020 - 3:47

Та же самая проблема с глючной логикой движка "Can't find spawn position in 5 tries" и пока что нет ни одного плагина, который бы обходил это.

 

"Не удалось найти спавн позицию за 5 попыток"

!(unsigned __int8)ZombieManager::GetRandomPZSpawnPosition(TheZombieManager, v49, 5, 0, (int)&v91) )

по умолчанию в игре стоит число 5, но его можно пропатчить до 50 или 100.

 

Я фактически уже сделал свою систему спавна через flow, которую невероятно легко настроить и там также используется "GetRandomPZSpawnPosition", где можно выставлять своё кол-во попыток получить origin для спавна, естественно, можно переписать всю систему под себя и сделать очень жёсткий или более "крутой" спавн, потому-что можно склеить flow с системой спавна через навигацию, если это правильно всё настроить и сложить, то можно сделать отличную систему спавна заразы. 

 

P.S Я выложил плагин который спавнит через flow на AM, но плагин только для L4D2 и только для линукса (для L4D1 я сделал, но там есть очень сильная проблема с получением правильного Max Flow, поэтому и выложить не могу)

 

Патч для изменения кол-во попыток получения позиции спавна (это только для CDirector::UpdateSpecialSpawns, я также не проверял патч, но работать должен)

 

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

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

#298 dragokas

dragokas

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

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

Отправлено 20 Март 2020 - 3:52

Такая идея была, только лично для меня она очень сомнительна.

Есть вероятность, что все это доп. попытки оно будет проверять одни и те же позиции и в результате только кушать процессорное время.


Сообщение отредактировал dragokas: 20 Март 2020 - 4:03

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

#299 Goldfish

Goldfish

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

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

Отправлено 20 Март 2020 - 5:15

Как узнать что сервер вышел из гибернации? Хотелось бы перезапускать карту а то такое впечатление, что server.cfg не выполняется в это время


Такая идея была, только лично для меня она очень сомнительна.

Есть вероятность, что все это доп. попытки оно будет проверять одни и те же позиции и в результате только кушать процессорное время.

сейчас тестировал, сделал спавн (используя director'а) одновременно 15 босов  каждые 5 секунд, не одной ошибки и проблемы нахождения точки спавна, если только конечно это не специфичный баг некоторых карт...


Не подскажите еще как правильно через плагин поднимать и хилить игрока чтобы не оставался после этого баг  типо игрок просит его поднять с инкапа/спасти или бьющегося сердцебиения после чб ?

Почему-то редко но бывает остается такой эффект


Сообщение отредактировал Goldfish: 20 Март 2020 - 10:05


#300 dragokas

dragokas

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

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

Отправлено 20 Март 2020 - 6:29

Я делаю так, вроде надёжно:

	int iflags=GetCommandFlags("give");
	SetCommandFlags("give", iflags & ~FCVAR_CHEAT);
	FakeClientCommand(client,"give health");
	SetCommandFlags("give", iflags);

PS. Тема с кварами превратилась в тему обо-всём :D

 

 

Как узнать что сервер вышел из гибернации? Хотелось бы перезапускать карту а то такое впечатление, что server.cfg не выполняется в это время

 

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

В [ANY] ConVars Anomaly Fixer есть для этого таблетка.

Но если тебе хочется по-проще, то думаю выполнения server.cfg при старте раунда будет достаточно:

#include <sourcemod>

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

public void Event_RoundStart(Event event, char[] name, bool dontBroadcast)
{
	ServerCommand("exec server.cfg");
	ServerExecute();
}

Но если хочешь привязать именно к гибернации, то я бы проверял через IsServerProcessing() в OnGameFrame. Заводишь два счетчика. Если между двумя засечками прошло больше 1 сек., значит сервер только что начал тикать, и время можно записать во второй счетчик, который юзаешь в round_start. Вообще, за это вроде должно отвечать событие server_spawn, но у меня оно не вызывается.


Сообщение отредактировал dragokas: 20 Март 2020 - 6:36

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


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

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