Фейковый выстрел

diphenyloxalate

Участник
Автор темы
19
13
Версия MoonLoader
.026-beta
Проблема такая, на монсере никак не получается отправить фейковый выстрел. Сервер как-то детектит это и не засчитывает урон.
Код функции для отправки выстрела:
Lua:
function sendBulletSync(playerID, pedID)
    local x, y, z = getCharCoordinates(pedID)
    local pX, pY, pZ = getActiveCameraCoordinates()

    local data = allocateMemory(40)

    setStructElement(data, 0, 1, 1, false)
    setStructElement(data, 1, 2, playerID, false)

    setStructFloatElement(data, 3, pX, false)
    setStructFloatElement(data, 7, pY, false)
    setStructFloatElement(data, 11, pZ, false)

    setStructFloatElement(data, 15, x + rand(), false)
    setStructFloatElement(data, 19, y + rand(), false)
    setStructFloatElement(data, 23, z + rand(), false)

    setStructFloatElement(data, 27, rand(), false)
    setStructFloatElement(data, 31, rand(), false)
    setStructFloatElement(data, 35, rand(), false)

    setStructElement(data, 39, 1, 24, false)

    sampSendBulletData(data)
    freeMemory(data)

    setCharAmmo(1, 24, getAmmoInCharWeapon(1, 24) - 1)

    lua_thread.create(function ()
        wait(1)
        sampSendGiveDamage(playerID, 46.2, 24, 3)
    end)
end

Также пробовал в onSendPlayerSync заменять animationId, animationFlags, keysData (как при реальной стрельбе) - не помогло.
aimSync как я понял ни на что не влияет - даже если его занопать, при реальной стрельбе все ок.
weaponSync отправляется как обычно, из-за вызова setCharAmmo
Уже не знаю, на чем еще можно спалиться. Подкиньте мысль как еще сервер может детектить фейковый выстрел
 

paulohardy

Известный
Всефорумный модератор
1,996
1,335
какой сервер?
так чтобы дамаг проходил, нужно отправлять еще sampSendGiveDamge
правда?
1590503345243.png
 

paulohardy

Известный
Всефорумный модератор
1,996
1,335
На всех 4 не работает.
Не заметил надпись про монсер, попробуй руками прицелиться в момент отправки выстрела, а так же убедись в том, что игрок не за стеной и не на слишком большом расстоянии. Так же замени третью строку на координаты своего педа, у тебя отправка выстрела от камеры, а выстрел то идет от скина
 

diphenyloxalate

Участник
Автор темы
19
13
Так же замени третью строку на координаты своего педа, у тебя отправка выстрела от камеры, а выстрел то идет от скина
getCharCoordinates указывает на центр персонажа, в районе живота. За такую стрельбу сразу кик.
getActiveCameraCoordinates как раз указывает на оригин пули при обычной стрельбе.

а так же убедись в том, что игрок не за стеной и не на слишком большом расстоянии
Пробовал, это все слишком очевидно.
 
Последнее редактирование:

paulohardy

Известный
Всефорумный модератор
1,996
1,335
getActiveCameraCoordinates как раз указывает на оригин пули при обычной стрельбе.
эта функция указывает на координаты камеры, а не на origin выстрела
два выстрела с разным положением камеры:
1590569033501.png