Вопрос Вырежьте из луашки трейсеры [nixware]

Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Из этой луашки нужно вырезать трейсеры.
Я не нашел, как правильно это сделать чтобы воркало.
У меня рисуется 3 трейсера == потом краш чита.
Чё я не так сделал?

Сама луа -
Пожалуйста, авторизуйтесь для просмотра ссылки.

В архиве лежит библиотека для работы луа.
Закинуть её нужно по пути
Counter-Strike Global Offensive\lua
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C-like:
local debugOverlay = ffi.cast("void***", se.create_interface("engine.dll", "VDebugOverlay004"))
local addLineOverlay = ffi.cast("void(__thiscall*)(void*, const struct vec3_t&, const struct vec3_t&, int, int, int, bool, float)", debugOverlay[0][5]);

local function drawLineOverlay( startPosition, endPosition, color )
  shotStartPosition = ffi.new('struct vec3_t')
  shotStartPosition.x = startPosition.x; shotStartPosition.y = startPosition.y; shotStartPosition.z = startPosition.z

  shotEndPosition = ffi.new('struct vec3_t')
  shotEndPosition.x = endPosition.x; shotEndPosition.y = endPosition.y; shotEndPosition.z = endPosition.z

  addLineOverlay(debugOverlay, shotStartPosition, shotEndPosition, color.r, color.g, color.b, true, 2)
end

client.register_callback('fire_game_event', function(event)
  if event:get_name() == 'round_start' then
    oldtag = ''
    freezeTimeBuy = true
  end

  if event:get_name() == 'bullet_impact' then
    local localPlayerIndex = engine.get_local_player()

    if shotTracer:get_value(0) then
      local playerIndex = engine.get_player_for_user_id(event:get_int('userid', -1))
      local bulletEndPosition = vec3_t.new(event:get_float('x', 0), event:get_float('y', 0), event:get_float('z', 0))

      if (localPlayerIndex == playerIndex) then
        drawLineOverlay( API.getEyePosition(), bulletEndPosition, shotTracerColor:get_value() )
      end
    end

    if shotEffect:get_value() then
      if shotEffectTime:get_value() > 1.75 then
        shotEffectTime:set_value(1.75)
      end

      if shotEffectTime:get_value() < 0.1 then
        shotEffectTime:set_value(0.1)
      end

      local beamInfo = ffi.new('struct TeslaBeamInfo_t')

      beamInfo.position = { event:get_float('x', -1), event:get_float('y', -1), event:get_float('z', -1) }
      beamInfo.angle = { 0, 0, 0 }
      beamInfo.entityIndex = localPlayerIndex
      beamInfo.spriteName = 'sprites/physbeam.vmt'
      beamInfo.beamWidth = 2
      beamInfo.beams = 2
      beamInfo.color = { shotEffectColor:get_value().r / 255.0, shotEffectColor:get_value().g / 255.0, shotEffectColor:get_value().b / 255.0 }
      beamInfo.visibleTime = shotEffectTime:get_value()
      beamInfo.radius = 20

      API.drawTeslaBeam(beamInfo)
    end
  end
end)
Тебе по идеи надо только это, само дополнение для апи и в меню сделать настройку.
 
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C-like:
local debugOverlay = ffi.cast("void***", se.create_interface("engine.dll", "VDebugOverlay004"))
local addLineOverlay = ffi.cast("void(__thiscall*)(void*, const struct vec3_t&, const struct vec3_t&, int, int, int, bool, float)", debugOverlay[0][5]);

local function drawLineOverlay( startPosition, endPosition, color )
  shotStartPosition = ffi.new('struct vec3_t')
  shotStartPosition.x = startPosition.x; shotStartPosition.y = startPosition.y; shotStartPosition.z = startPosition.z

  shotEndPosition = ffi.new('struct vec3_t')
  shotEndPosition.x = endPosition.x; shotEndPosition.y = endPosition.y; shotEndPosition.z = endPosition.z

  addLineOverlay(debugOverlay, shotStartPosition, shotEndPosition, color.r, color.g, color.b, true, 2)
end

client.register_callback('fire_game_event', function(event)
  if event:get_name() == 'round_start' then
    oldtag = ''
    freezeTimeBuy = true
  end

  if event:get_name() == 'bullet_impact' then
    local localPlayerIndex = engine.get_local_player()

    if shotTracer:get_value(0) then
      local playerIndex = engine.get_player_for_user_id(event:get_int('userid', -1))
      local bulletEndPosition = vec3_t.new(event:get_float('x', 0), event:get_float('y', 0), event:get_float('z', 0))

      if (localPlayerIndex == playerIndex) then
        drawLineOverlay( API.getEyePosition(), bulletEndPosition, shotTracerColor:get_value() )
      end
    end

    if shotEffect:get_value() then
      if shotEffectTime:get_value() > 1.75 then
        shotEffectTime:set_value(1.75)
      end

      if shotEffectTime:get_value() < 0.1 then
        shotEffectTime:set_value(0.1)
      end

      local beamInfo = ffi.new('struct TeslaBeamInfo_t')

      beamInfo.position = { event:get_float('x', -1), event:get_float('y', -1), event:get_float('z', -1) }
      beamInfo.angle = { 0, 0, 0 }
      beamInfo.entityIndex = localPlayerIndex
      beamInfo.spriteName = 'sprites/physbeam.vmt'
      beamInfo.beamWidth = 2
      beamInfo.beams = 2
      beamInfo.color = { shotEffectColor:get_value().r / 255.0, shotEffectColor:get_value().g / 255.0, shotEffectColor:get_value().b / 255.0 }
      beamInfo.visibleTime = shotEffectTime:get_value()
      beamInfo.radius = 20

      API.drawTeslaBeam(beamInfo)
    end
  end
end)
Тебе по идеи надо только это, само дополнение для апи и в меню сделать настройку.
Не лоадит.
p.s я забыл, я тебе скинул не фикс версию, эта луашка аудетейд для никсвара, сам починю, спасибо!
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не лоадит.
p.s я забыл, я тебе скинул не фикс версию, эта луашка аудетейд для никсвара, сам починю, спасибо!
из новой версии возьми только эти строчки, калбек и функцию. И еще нужно будет в меню вывести настройку цветов,длительности эффекта и т.д. Думаю разберешься
 
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
из новой версии возьми только эти строчки, калбек и функцию. И еще нужно будет в меню вывести настройку цветов,длительности эффекта и т.д. Думаю разберешься
Разберусь, и да, ты там еще вырезал киллэфект.
Это не шот трейсер, а как в тесла, ну, типо молнии.
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Разберусь, и да, ты там еще вырезал киллэфект.
Это не шот трейсер, а как в тесла, ну, типо молнии.
не понял что тебе надо было. Если трейсеры после выстрела,то вероятно этот калбек( ибо у меня никсвара миллион лет не было и нет возможности проверить)
C++:
client.register_callback('shot_fired', function(info)
  if shotTracer:get_value(1) then
    drawLineOverlay( API.getEyePosition(), info.aim_point, shotTracerColor:get_value() )
  end
end)
 
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не понял что тебе надо было. Если трейсеры,то вероятно этот калбек( ибо у меня никсвара миллион лет не было и нет возможности проверить)
C++:
client.register_callback('shot_fired', function(info)
  if shotTracer:get_value(1) then
    drawLineOverlay( API.getEyePosition(), info.aim_point, shotTracerColor:get_value() )
  end
end)
1628343149004.png
Это другая функа, а не трейсеры уже.
Я отпишу, если чё-то не заработает, мб и сам пофикшу.
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
23 Авг 2020
Сообщения
2,110
Реакции[?]
597
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу