Имитация полёта пути

Тема в разделе "Программирование / Скриптинг", создана пользователем iamdss, 11 авг 2015.

  1. iamdss

    iamdss

    Сообщения:
    117
    Симпатии:
    0
    Нужны идеи, как реализовать. Собственно, задача. Необходимо в HL2DM реализовать скорость пули, и, соответственно, время её полёта. Для чего это нужно? В HL2DM пули не имеют скорости полёта, то есть, при выстреле в цель она моментально получает урон (ну, кроме оружий вроде арбалета, рпг и каких-нибудь альтернативных режимов огня, это понятно). Так вот, если два игрока, находясь на приличном расстоянии, выстрелят друг в друга, например, с магнумов, то умрёт только один, а второй останется жив. Я хочу сделать так, чтобы у игроков был шанс убить друг друга.

    Мне нужны идеи по реализации. Пока обдумывал только вариант с учётом времени атаки у всех клиентов, а в момент смерти одного из них просчитывать, кто недавно в него целился и стрелял, а потом давать килл вручную первому из них. Но, возможно, вы предложите что-то лучшее. Спасибо.
     
  2. gibs

    gibs Фитиль народного волненья

    Сообщения:
    538
    Симпатии:
    137
    Нуу, во-первых - на сорс сервере ничего никогда не происходит одновременно.
    И не стоит сравнивать оружие с патронами с оружием, которое выпускает прожектил.
    Но вообще лучше обратиться к сдк, как мне кажется. И у вольво вики не плохо описана в плане программирования оружия.
    Алгоритм примерно следующий. Берём оффсет или сигнатуру метода FireBullets(), хукаем через SourceHook, вытаскиваем FireBulletsInfo_t, проводим свой хитскан, смотрим куда поля попадает, считаем примерное время полёта, пушим в мапу время, овнера и FireBulletsInfo_t. В OnGameFrame, например, прогоняем итератором мапу, если engine time меньше или равно текущего, то имитируем трейс атаки с нашим FireBulletsInfo_t. Что-то вроде этого. Не забываем очищать мапу.
    Через сорспавн как-то сомнительно получится.
    Вечно у тебя идеи какие-то стрёмные)
     
  3. iamdss

    iamdss

    Сообщения:
    117
    Симпатии:
    0
    Вот. Правда, тут я хочу несколько облегчить алгоритм, так как мне нужна лишь имитация, аптечная точность - лишнее. Поковыряю в исходниках, конечно, но компилить из сурсов как-то нет желания, ведь мне под линукс требуется. Быть может, кто-то ещё созреет и предложит свой вариант, я не знаю.

    Не стрёмнее, чем http://hlmod.ru/forum/programmirovanie-skripting/30840-teleport-na-tochku.html и иже с нею, хоть ничего не имею против.