чтение RPC пакетов о получении/отправке урона другим игрокам

roodaka

Новичок
Автор темы
8
0
Версия MoonLoader
Другое
задумал сделать "варнинги", если игрок в зоне твоего стрима попадает в определенный bodypart другого игрока больше 5 раз, например.
соответственно, функции из SAMP.Lua OnSendTakeDamage, OnSendGiveDamage в виде, в котором они предоставлены - отпадают (т.к работают только для своего персонажа).
пример следующий:
в зоне моего стрима игрок А попадает по игроку Б в такую-то кость. как это считывать? понимаю, что через чтение входящих пакетов. но не понимаю, как это реализовать на практике.
повторюсь, что стандартная реализация ловит только урон от/по себе. мне нужно узнать урон от других игроков.
как это можно сделать?
 

roodaka

Новичок
Автор темы
8
0
Буллет синхру хукать.
Просчитывать из target и center точку попадания и сравнивать с костями педов
Но скорее всего работать будет ебано
мне кажется это совсем пиздец, ибо у костей координаты точные, насколько мне известно, а выстрел попасть может в любую точку кости
 

Rei

Известный
Друг
1,616
1,674
мне кажется это совсем пиздец, ибо у костей координаты точные, насколько мне известно, а выстрел попасть может в любую точку кости
Ну так надо ближайшую искать в любом случае
Зы во всех луа сайлентах, что я видел, идет рандомизация пиздюлины по скину через center вне зависимости от кости, так что идея гиблая изначально
 

Ice

Известный
33
3
Lua:
local sampev = require 'lib.samp.events'
function sampev.onBulletSync(id, data)
    -- Ex: data.targetId   gets darget ID (can be player, actor, vehicle, object...etc...)
end


Lua:
struct BulletSyncData
{
    uint8_t               targetType;
    uint16_t           targetId;
    struct VectorXYZ origin;
    struct VectorXYZ target;
    struct VectorXYZ center;
    uint8_t               weaponId;
} __attribute__ ((packed));