Иконка ресурса

SprayTracer (Mod Size, Fix, Modded) 1.0.1

Нет прав для скачивания

akvorok.ego

Участник
Сообщения
314
Реакции
183
  • Автор ресурса
  • #1
Пользователь san911 разместил новый ресурс:

SprayTracer (Mod Size, Fix, Modded) - При наведение на спрей показывает кто его нарисовал.

Облегченная и улучшенная версия Spray Tracer by Nican.

1. Информация о спрее отображается только 2 раунда после нанесения.
2. Информация о нарисованных спреях не отображается вновь подключившемся игрокам.
3. Информация о спреях не отображается после смены карты.
По этому не должно быть "ложных" отображений.

C-подобный:
(Версия: 1.0.0) - Релиз мода.
(Версия: 1.0.1) - Оптимизация, прочие улучшения.

Узнать больше об этом ресурсе...
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
6,877
Реакции
3,992
Немного оптимизировал и перевёл на новый синтаксис (для компиляции необходим SM1.8_stable).
Ну и отрубил скрытие информации от вновь вошедших игроков (не вижу в этом никакого смысла).

P.S. Чуть не забыл: теперь можно выбрать где будет отображаться информация (в хинте или в центре экрана) и сколько раундов она будет храниться. Всё настраивается через #define в начале файла.
 

Вложения

  • spraytraceredux.sp
    2.6 КБ · Просмотры: 25
  • spraytraceredux.smx
    5.9 КБ · Просмотры: 17

akvorok.ego

Участник
Сообщения
314
Реакции
183
  • Автор ресурса
  • #3
Ну и отрубил скрытие информации от вновь вошедших игроков (не вижу в этом никакого смысла).

Ну зря, по тому что спрей после реконнекта не виден пере зашедшему игроку. А ещё ты оффаешь отображение спрея(Если существует) в OnClientPostAdminCheck остальным игрокам.

PS. Оптимизации не увидел. Разве что EventHookMode_PostNoCopy
И тоже самое но сжато:
C-подобный:
    bool hit = TR_DidHit(hTrace);
    if(hit) TR_GetEndPosition(vecPos, hTrace);
    CloseHandle(hTrace);
    return hit;
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,740
тоже самое но сжато
А так не пробовал:
PHP:
stock bool GetPlayerEye(int client, float vecPos[3])
{
	float vecAngles[3], vecOrigin[3];
	GetClientEyePosition(client, vecOrigin);
	GetClientEyeAngles(client, vecAngles);
	TR_TraceRayFilter(vecOrigin, vecAngles, MASK_SHOT, RayType_Infinite, TraceEntityFilterPlayer);

	if(TR_DidHit())
	{
		TR_GetEndPosition(vecPos);
		return true;
	}
	return false;
}
Эти ваши переменные для циклов тоже не хороши. Оффтоп
 

akvorok.ego

Участник
Сообщения
314
Реакции
183
  • Автор ресурса
  • #5
Оффтоп
 

Grey83

не пишу плагины с весны 2022
Сообщения
6,877
Реакции
3,992
Ну зря, по тому что спрей после реконнекта не виден перезашедшему игроку.
Ладно, уболтал.
Только объясни какой смысл обнулять счётчик раундов и координаты X с Y спрею (которые всё равно затираются при создании нового спрея), когда можно просто в 38-й строке в проверке сначала проверить существует ли спрей и может ли видеть его игрок, прежде чем измерять расстояние до спрея?
М/б это несколько уменьшит нагрузку на сервер:
PHP:
if(SprayPlayer[a] && SprayList[i][a] && (GetVectorDistance(vecPos, g_SprayTrace[a]) <= 30.0))
А ещё ты оффаешь отображение спрея(Если существует) в OnClientPostAdminCheck() остальным игрокам.
Но ты же всё равно скрываешь информацию о старом спрее если игрок с тем же индексом создаст спрей через массив SprayPlayer[]. Я могу просто отключить блок OnClientPostAdminCheck как ненужный и у меня будет то же самое с одним одномерным массивом SprayPlayer[], что и у тебя с двумя массивами (одномерным SprayPlayer[] и двухмерным SprayList[][]), разве что у вновь вошедшего будет проверяться наличие спрея, которого он не видит. Фактически у тебя не нужен массив SprayPlayer[] и в OnClientPostAdminCheck() нужно убрать проверку на него, т.к. пользы от неё никакой. Этот массив нужен только в счётчике раундов.

Кстати, в этом случае (когда создаётся новый спрей) игра удаляет спрей вышедшего игрока с этим же индексом или нет? Никогда не обращал внимания, да и у меня обычно был установлен лимит в 20 спреев в клиенте, так что хорошая очередь из автомата и спреи обычно исчезали, емнип, всё равно.
 
Последнее редактирование:

akvorok.ego

Участник
Сообщения
314
Реакции
183
  • Автор ресурса
  • #7
Только объясни какой смысл обнулять счётчик раундов и координаты X с Y спрею (которые всё равно затираются при создании нового спрея)
Смысла нет на самом деле, это было вырезано из оригинала, и уверен что большой роли это не играет в плане нагрузки.
PHP:
if(SprayPlayer[a] && SprayList[i][a] && (GetVectorDistance(vecPos, g_SprayTrace[a]) <= 30.0))
Первым проверять стоит смотрит ли игрок на спрей. Ты же не стоишь и не пялишься в спреи целый раунд, а играешь?
Но ты же всё равно скрываешь информацию о старом спрее если игрок с тем же индексом создаст спрей через массив SprayPlayer[]. Я могу просто отключить блок OnClientPostAdminCheck как ненужный и у меня будет то же самое с одним одномерным массивом SprayPlayer[], что и у тебя с двумя массивами (одномерным SprayPlayer[] и двухмерным SprayList[][]), разве что у вновь вошедшего будет проверяться наличие спрея, которого он не видит. Фактически у тебя не нужен массив SprayPlayer[] и в OnClientPostAdminCheck() нужно убрать проверку на него, т.к. пользы от неё никакой. Этот массив нужен только в счётчике раундов.
C-подобный:
    for(new i = 1; i <= MaxClients; i++)
    {
        if(SprayPlayer[i] && (++LifeSprayScore[i] >= 2)) DeleteSprayInfoPlayer(i);
    }
Не нужно получать игрока в начале раунда.
C-подобный:
public OnClientPostAdminCheck(client)
{
    for(new i = 1; i <= MaxClients; i++)
    {
        if(SprayPlayer[i]) SprayList[client][i] = false;
    }
}
Не записываю людей без спреев, что может быть правильно, так как много людей не рисуют спреи.
А вообще хз :)
Кстати, в этом случае (когда создаётся новый спрей) игра удаляет спрей вышедшего игрока с этим же индексом или нет? Никогда не обращал внимания, да и у меня обычно был установлен лимит в 20 спреев в клиенте, так что хорошая очередь из автомата и спреи обычно исчезали, емнип, всё равно.
Нечего не понял.
 

Grey83

не пишу плагины с весны 2022
Сообщения
6,877
Реакции
3,992
Нечего не понял.
В случае если:
  1. один игрок нарисовал спрей;
  2. затем он вышел;
  3. после этого зашёл игрок;
  4. новому игроку присвоили тот же индекс, что и вышедшему перед ним.
Так вот, что происходит со спреем вышедшего игрока в этом случае?
Он автоматически удаляется при создании вновь вошедшим игроком спрея или остаётся висеть и дальше?
 

akvorok.ego

Участник
Сообщения
314
Реакции
183
  • Автор ресурса
  • #9
Так вот, что происходит со спреем вышедшего игрока в этом случае?
Он автоматически удаляется при создании вновь вошедшим игроком спрея или остаётся висеть и дальше?
Речь об отображение инфы о спрее в плагине или самого рисунка на стене?
На стене будет висеть 2 раунда. В плагине инфа о старом спрее игрока пропадет.
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
6,877
Реакции
3,992
@san911, я про то как ведёт себя игра без плагина
 
Сверху Снизу