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


Фотография

Единая тема поиска плагинов L4D2

плагин

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

#3221 Goldfish

Goldfish

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

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

Отправлено 08 Апрель 2021 - 20:17

Проверил систему координат в игре и углы, пришел к такой схеме

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

корды и углы получал из GetClientAbsOrigin() и  GetClientAbsAngles(), это нормально для L4D ?
Я просто хочу написать алгоритм для определения любой точки в зоне видимости игрока, и решил разобраться как работают углы в игре.
 
это нормально то что на картинке?
 
при том еще не понял какая система координат у углов
GetClientAbsAngles(client, angles);
при повороте игрока изменялась только ось У (?) angles[1]
остальные были по 0
 
так вот GetClientAbsAngles выводила угол в диапозоне от 0 до 180 градусов где право минус а лево плюс.
 
кстати может есть какие готовые варианты для определения объекта в зоне видимости игрока? Или куски кода? А то вручную решил писать высчитывать углы через синусы и косинусы)


коечто нашел)
dqdqdq.jpg


Сообщение отредактировал Goldfish: 08 Апрель 2021 - 20:01


#3222 dragokas

dragokas

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

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

Отправлено 08 Апрель 2021 - 23:15

это нормально то что на картинке?
 

 

Если перевернуть первую картинку вверх ногами, то может быть будет и нормально :D

 

Координаты передаются как 3 элемента массива типа float - X, Z, Y.

Тоже самое с углами, представляешь как будто твою фигуру проткнули тремя осями и поворачиваешь ее вокруг каждой из осей. Диапазон значений от -180.0 до +180.0 (если я еще ничего не забыл).

 

В SM конечно же есть множество функций для работы с векторами без необходимости вручную считать через формулы.

Достаточно на этой страничке ввести в поиск слово Vector.

 

Для проверки, не мешает ли увидеть одному клиенту другого используют луч с фильтром. В фильтре проверяют и возвращают ответ, каким сущностям разрешено пересекать линию взгляда (например, другим игрокам).

 

Вот пример:

#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <sdktools>

public void OnPluginStart()
{
	RegConsoleCmd("sm_see", CmdSee);
}

public Action CmdSee(int client, int argc)
{
	char s[4];
	GetCmdArg(1, s, sizeof(s));
	int target = StringToInt(s);
	
	if( target &&  IsClientInGame(target) )
	{
		PrintToChat(client, "%N can see %N ? %b", client, target, ClientCanSeeClient(client, target));
	}
	return Plugin_Handled;
}

stock bool ClientCanSeeClient(int client, int target) 
{
	float pos1[3], pos2[3];
	bool bHit;
	GetClientEyePosition(client, pos1);
	GetClientEyePosition(target, pos2);
	// здесь можно задать маску: https://github.com/alliedmodders/sourcemod/blob/2b1cc433558896a88c0461d0123f18c6ad7acf16/plugins/include/sdktools_trace.inc#L85
	// т.е. какие поверхности (и entity) будут рассматриваться фильтром,
	// например, MASK_SOLID_BRUSHONLY - чтобы разрушаемые объекты не считались преградой лучу.
	Handle hTrace = TR_TraceRayFilterEx(pos1, pos2, MASK_ALL, RayType_EndPoint, TraceRay_NoPlayers);
	if( hTrace != INVALID_HANDLE )
	{
		bHit = TR_DidHit(hTrace);
		delete hTrace;
	}
	return !bHit; // если луч прошел сквозь и ни во что не врезался, то считать, что клиент видит другого клиента.
}

public bool TraceRay_NoPlayers(int entity, int mask)
{
	return (entity > MaxClients || entity == 0); // говорим, чтобы луч останаливался, когда соприкосается либо с WORLD, либо с не-клиентами
}


Сообщение отредактировал dragokas: 08 Апрель 2021 - 23:15


#3223 dragokas

dragokas

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

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

Отправлено 09 Апрель 2021 - 15:35

GoldFish, второй рисунок в целом верен, только его через чур повернули вниз крылом по оси X.

На самом деле на нём Yaw - это ось Y. Т.е. игрок выполняет только фигуру рысканья, а по остальным углам никогда не наклоняется.

https://ru.wikipedia...стема_координат



#3224 Goldfish

Goldfish

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

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

Отправлено 09 Апрель 2021 - 15:41

GoldFish, второй рисунок в целом верен, только его через чур повернули вниз крылом по оси X.

На самом деле на нём Yaw - это ось Y. Т.е. игрок выполняет только фигуру рысканья, а по остальным углам никогда не наклоняется.

https://ru.wikipedia...стема_координат

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

 

пытался через углы, но сталкиваюсь с проблемами дальностью, при отдалении (поле видимости какгбе расширяется). + сама ширина поле зрения срабатывала не точно, если поверну камеру в право, и спрячу игрока за полем зрения, то алгоритм всеравно видит игрока, а если влево то наоборот раньше времени перестает видеть, короче обман зрения)


Сообщение отредактировал Goldfish: 09 Апрель 2021 - 15:44


#3225 dragokas

dragokas

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

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

Отправлено 09 Апрель 2021 - 15:49

насчет, трассировки луча думаю вариант не совсем подойдет, 

 

??????????

 

Ты вообще хотя бы пробовал код, который я выложил?


И что ты подразумеваешь под понятием "поле зрения" ?



#3226 Goldfish

Goldfish

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

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

Отправлено 09 Апрель 2021 - 17:50

??????????
 
Ты вообще хотя бы пробовал код, который я выложил?

И что ты подразумеваешь под понятием "поле зрения" ?


image.jpg

синяя точка - в поле зрения камеры игрока или глаз (игрок видит ее у себя на мониторе)

зеленая - не видит

 

мне надо знать видит ли игрок другого клиента (пусть даже на краю монитора в 1 пиксель)

образно

 

 

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


Сообщение отредактировал Goldfish: 09 Апрель 2021 - 17:55


#3227 dragokas

dragokas

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

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

Отправлено 09 Апрель 2021 - 20:16

Ааа, угол обзора.

Можешь посмотреть, я делал в Incapped Pills Pop функцию, которая проверяет разрешено ли игроку поднять таблетки, лежа в инкапе, которые находятся в его поле видимости:

 

Там иногда не идеально работает. Но если у тебя хорошие знания в геометрии, то сумеешь улучшить ее.

bool FindItemOnFloor(int client, char[] sClassname)
{
	const float ITEM_RADIUS = 25.0;
	const float PILLS_MAXDIST = 101.8;
	
	float vecEye[3], vecTarget[3], vecDir1[3], vecDir2[3], ang[3];
	float dist, MAX_ANG_DELTA, ang_delta;
	
	GetClientEyePosition(client, vecEye);
	
	int pills = -1;
	while (-1 != (pills = FindEntityByClassname(pills, sClassname))) {
		GetEntPropVector(pills, Prop_Data, "m_vecOrigin", vecTarget);
		
		dist = GetVectorDistance(vecEye, vecTarget);
		
		if (dist <= PILLS_MAXDIST)
		{
			// get directional angle between eyes and target
			SubtractVectors(vecTarget, vecEye, vecDir1);
			NormalizeVector(vecDir1, vecDir1);
		
			// get directional angle of eyes view
			GetClientEyeAngles(client, ang);
			GetAngleVectors(ang, vecDir2, NULL_VECTOR, NULL_VECTOR);
			
			// get angle delta between two directional angles
			ang_delta = GetAngle(vecDir1, vecDir2); // RadToDeg
			
			MAX_ANG_DELTA = ArcTangent(ITEM_RADIUS / dist); // RadToDeg
			
			if (ang_delta <= MAX_ANG_DELTA)
			{
				AcceptEntityInput(pills, "Kill");
				return true;
			}
		}
	}
	return false;
}

float GetAngle(float x1[3], float x2[3]) // by Pan XiaoHai
{
	return ArcCosine(GetVectorDotProduct(x1, x2)/(GetVectorLength(x1)*GetVectorLength(x2)));
}

Сообщение отредактировал dragokas: 09 Апрель 2021 - 20:16


#3228 Goldfish

Goldfish

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

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

Отправлено 12 Апрель 2021 - 11:59

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

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



#3229 Goldfish

Goldfish

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

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

Отправлено 12 Апрель 2021 - 13:55

пару вопросов)

 

1) можно установить количество здоровья и скорость передвижения для определенной заразы?

 

2) какие вы знаете плагины для контроля антираша по дистанции?



#3230 dragon1263

dragon1263

    Участник

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

Отправлено 13 Апрель 2021 - 16:33

Привет всем подскажите как удалить все аптеки и в коце убеги но при старте что бы они были.Заранее спасибо



#3231 dragokas

dragokas

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

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

Отправлено 13 Апрель 2021 - 16:41

пару вопросов)

 

1) можно установить количество здоровья и скорость передвижения для определенной заразы?

 

2) какие вы знаете плагины для контроля антираша по дистанции?

 

2) Из более менее нормального, плаг Сильверса Anti Rush.

 

Здоровье это проп m_iHealth, скорость - тоже проп, можешь в плагине выше посмотреть, LaggedMovement как-то так называется.


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

#3232 Goldfish

Goldfish

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

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

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

Можно через TR_TraceRayFilterEx отловить кусты и кроны деревьев?



#3233 dragokas

dragokas

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

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

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

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

/**
 * @section Trace masks.
 */
#define MASK_ALL                    (0xFFFFFFFF)
#define MASK_SOLID                  (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE)                      /**< everything that is normally solid */
#define MASK_PLAYERSOLID            (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE)  /**< everything that blocks player movement */
#define MASK_NPCSOLID               (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) /**< blocks npc movement */
#define MASK_WATER                  (CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME)                                                       /**< water physics in these contents */
#define MASK_OPAQUE                 (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE)                                                      /**< everything that blocks line of sight for AI, lighting, etc */
#define MASK_OPAQUE_AND_NPCS        (MASK_OPAQUE|CONTENTS_MONSTER)                                                                          /**< everything that blocks line of sight for AI, lighting, etc, but with monsters added. */
#define MASK_VISIBLE                (MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE)                                                             /**< everything that blocks line of sight for players */
#define MASK_VISIBLE_AND_NPCS       (MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE)                                                    /**< everything that blocks line of sight for players, but with monsters added. */
#define MASK_SHOT                   (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX)     /**< bullets see these as solid */
#define MASK_SHOT_HULL              (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE)      /**< non-raycasted weapons see this as solid (includes grates) */
#define MASK_SHOT_PORTAL            (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW)                                                      /**< hits solids (not grates) and passes through everything else */
#define MASK_SOLID_BRUSHONLY        (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE)                                       /**< everything normally solid, except monsters (world+brush only) */
#define MASK_PLAYERSOLID_BRUSHONLY  (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE)                   /**< everything normally solid for player movement, except monsters (world+brush only) */
#define MASK_NPCSOLID_BRUSHONLY     (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE)                  /**< everything normally solid for npc movement, except monsters (world+brush only) */
#define MASK_NPCWORLDSTATIC         (CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE)                                    /**< just the world, used for route rebuilding */
#define MASK_SPLITAREAPORTAL        (CONTENTS_WATER|CONTENTS_SLIME)                                                                         /**< These are things that can split areaportals */

Например, MASK_VISIBLE.



#3234 dragon1263

dragon1263

    Участник

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

Отправлено 14 Апрель 2021 - 1:24


ш


Сообщение отредактировал dragon1263: 14 Апрель 2021 - 1:25


#3235 simvolist777

simvolist777

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

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

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

Привет всем, особенно разбирающимся в танках-мутантах.

https://forums.allie...d.php?p=2555153

В плагине танков мутантов в крайней версии реально много перемен внесено. Читал инструкцию, теперь она даже на русском есть. Но пару моментов надо прояснить. Что-то не могу понять с базовыми настройками. Ну вот не знаю, верно ли я указал насчёт регулярных волн и числа появляющихся танков. Поставил на 300 секундное появление по одному танку на миссии. Я не в курсе, в дефолте там то цифровые значения указаны по параметрам, то типа Off/On/Max/Min

 Помогите понять, пожалуйста, верно я изменил настройки или нет.

В дефолте

"Waves"
{
"Limit Extras" "On"
"Extras Delay" "Default"
"Regular Amount" "Min"
"Regular Delay" "10.0"
"Regular Interval" "300.0"
"Regular Limit" "999999"
"Regular Type" "1-124"
"Regular Wave" "Off"
"Finale Amount" "Min"
"Finale Types" "1-124,1-124,1-124,1-124,1-124,1-124,1-124,1-124,1-124,1-124"
"Finale Waves" "0,0,0,0,0,0,0,0,0,0"
 
У меня
"Waves"
{
"Limit Extras" "On"
"Extras Delay" "Default"
"Regular Amount" "1"
"Regular Delay" "10.0"
"Regular Interval" "300.0"
"Regular Limit" "999999"
"Regular Type" "1-124"
"Regular Wave" "On"
"Finale Amount" "1"
"Finale Types" "1-124,1-124,1-124,1-124,1-124,1-124,1-124,1-124,1-124,1-124"
"Finale Waves" "1,1,1,1,1,1,1,1,1,1"
 
 Потом ещё с добавкой кастомных танков. Я просто хочу, например,  в конец списка танков добавить 125-го. Понятно, что в строке "Regular Type" "1-124" я ставлю не 124, а 125. А вот далее. Мне в настройках True что-ли надо указать?
"Custom"
{
"Enable Custom Configs" "False"
"Create Config Types" "Min"
"Execute Config Types" "Min"
}
}
 


#3236 Goldfish

Goldfish

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

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

Отправлено 14 Апрель 2021 - 22:53

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



#3237 dragokas

dragokas

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

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

Отправлено 14 Апрель 2021 - 23:25

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



#3238 anarki1980

anarki1980

    Участник

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

Отправлено 30 Апрель 2021 - 18:11

Подскажите пожалуйста плагин чтоб поменять размер магазина у sg552.

Хотелось бы снизить количество с 50 до 30 чтобы понерфить и сделать его альтернативой smg, для Т1 сервера.



#3239 KRUTIK

KRUTIK

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

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

Отправлено 30 Апрель 2021 - 18:25

Подскажите пожалуйста плагин чтоб поменять размер магазина у sg552.

Хотелось бы снизить количество с 50 до 30 чтобы понерфить и сделать его альтернативой smg, для Т1 сервера.

если я не ошибаюсь, тут есть тема с кварами, там посмотри.


Сообщение отредактировал KRUTIK: 30 Апрель 2021 - 18:26


#3240 anarki1980

anarki1980

    Участник

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

Отправлено 30 Апрель 2021 - 18:30

если я не ошибаюсь, тут есть тема с кварами, там посмотри.

 

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





Темы с аналогичным тегами плагин

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

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