Надо увеличить урон в скрипте

sokolo

Новичок
Автор темы
5
1
Версия MoonLoader
Другое
Привет, хочу увеличить урон где он тут прописан? и как его увеличить?

function onSendPacket(id, bs)
if id == 221 then
raknetBitStreamSetReadOffset(bs, 8)
if raknetBitStreamReadInt16(bs) == 73 then
local data = {}
for i = 1, (raknetBitStreamGetNumberOfUnreadBits(bs)/8) do table.insert(data, raknetBitStreamReadInt8(bs)) end
local damage_bs = raknetNewBitStream()
raknetBitStreamWriteInt8(damage_bs, 221)
raknetBitStreamWriteInt16(damage_bs, 73)
for i = 1, 2 do raknetBitStreamWriteInt8(damage_bs, data) end
raknetBitStreamWriteInt8(damage_bs, 0)
raknetBitStreamWriteInt8(damage_bs, 6)
raknetBitStreamWriteInt8(damage_bs, 62)
raknetBitStreamWriteInt8(damage_bs, 62)
for i = 7, #data do raknetBitStreamWriteInt8(damage_bs, data) end
raknetSendBitStreamEx(damage_bs, 1, 7, 1)
raknetDeleteBitStream(damage_bs)
return false
end
end
end


local states_data = { [0] = "off", "on", "on with current gun" }
local state = 0

function main()
sampRegisterChatCommand("bdb", function(arg)
state = (arg ~= nil and tonumber(arg) or (state > 0 and 0 or 1))
sampAddChatMessage(string.format("damager: %s", states_data[tonumber(state > 2 and 2 or state)]), 0xCCCCCC)
end)
wait(-1)
end

function onSendPacket(id, bs)
if id == 221 and state ~= 0 then
raknetBitStreamIgnoreBits(bs, 8)
local type_id = raknetBitStreamReadInt16(bs)
if type_id ~= 53 then return true end
local damage_bs = raknetNewBitStream()
raknetBitStreamWriteInt8(damage_bs, 221)
raknetBitStreamWriteInt16(damage_bs, 73)
raknetBitStreamWriteBool(damage_bs, true)
raknetBitStreamWriteInt16(damage_bs, raknetBitStreamReadInt16(bs))
raknetBitStreamWriteFloat(damage_bs, 300000)
raknetBitStreamWriteInt32(damage_bs, state > 1 and getCurrentCharWeapon(PLAYER_PED) or 40)
raknetBitStreamWriteInt32(damage_bs, 6)
raknetBitStreamWriteInt16(damage_bs, 0)
raknetBitStreamWriteInt16(damage_bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
raknetSendBitStreamEx(damage_bs, 1, 8, 1)
raknetDeleteBitStream(damage_bs)
end
if id == 207 and state == 1 then
raknetBitStreamSetWriteOffset(bs, raknetBitStreamGetNumberOfUnreadBits(bs) - 8)
raknetBitStreamWriteInt8(bs, 40)
end
end

Moonloader v.026.5-beta
 
  • Злость
Реакции: qdIbp

SNAPE

Участник
88
3
Короче, забей на первый код, бери Код 2 и меняй в нём строчку raknetBitStreamWriteFloat(damage_bs, 300000) на raknetBitStreamWriteFloat(damage_bs, 46.0) — цифра 300000 это твой урон, из-за которого тебя сразу кикакет античит, а 46.0 это нормальный урон как с Дигла, который будет шить без палева. Сразу после этого найди чуть ниже число 40 в конце строки с оружием и замени его на 24, чтобы админам в варнинги не летела дичь, будто ты убиваешь людей взрывчаткой, а шёл нормальный урон от обычного пистолета. Если античит всё равно будет кикать из-за быстрой отправки пакетов, докинь в этот же код задержку в миллисекундах, чтобы сервер думал, что ты стреляешь сам
 
  • Bug
Реакции: opcode

opcode

Новичок
11
19
Короче, забей на первый код, бери Код 2 и меняй в нём строчку raknetBitStreamWriteFloat(damage_bs, 300000) на raknetBitStreamWriteFloat(damage_bs, 46.0) — цифра 300000 это твой урон, из-за которого тебя сразу кикакет античит, а 46.0 это нормальный урон как с Дигла, который будет шить без палева. Сразу после этого найди чуть ниже число 40 в конце строки с оружием и замени его на 24, чтобы админам в варнинги не летела дичь, будто ты убиваешь людей взрывчаткой, а шёл нормальный урон от обычного пистолета. Если античит всё равно будет кикать из-за быстрой отправки пакетов, докинь в этот же код задержку в миллисекундах, чтобы сервер думал, что ты стреляешь сам
Так он менял, не помогло
 

SNAPE

Участник
88
3
аа, в коде была зашита дичь, скрипт ловил тип 53 (это урон от наезда тачкой) и переделывал его в тип 73 (это урон от кулаков), а в САМПЕ урон от кулаков и машин считает сам сервер, и ему глубоко плевать, какую цифру ты там шлёшь в битстриме, он всё равно выдаст стандартный дефолт из мода.
Чтобы цифра реально заработала, нужно слать нормальный BulletSync (тип 1 урон от пуль)
На готовый

Lua:
function onSendPacket(id, bs)
    if id == 221 and state ~= 0 then
        raknetBitStreamIgnoreBits(bs, 8)
        local damage_bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(damage_bs, 221)
        raknetBitStreamWriteInt16(damage_bs, 1) -- Врубаем урон от пуль вместо кулаков
        raknetBitStreamWriteBool(damage_bs, true)
        raknetBitStreamWriteInt16(damage_bs, raknetBitStreamReadInt16(bs))
        raknetBitStreamWriteFloat(damage_bs, 46.0) -- Вот теперь эта цифра будет сносить хп
        raknetBitStreamWriteInt32(damage_bs, state > 1 and getCurrentCharWeapon(PLAYER_PED) or 24) -- Ставим Дигл вместо взрывчатки
        raknetBitStreamWriteInt32(damage_bs, 3)
        raknetBitStreamWriteInt16(damage_bs, 0)
        raknetBitStreamWriteInt16(damage_bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
        raknetSendBitStreamEx(damage_bs, 1, 8, 1)
        raknetDeleteBitStream(damage_bs)
        return false
    end
end

попробуй так
 
  • Bug
Реакции: opcode

sokolo

Новичок
Автор темы
5
1
аа, в коде была зашита дичь, скрипт ловил тип 53 (это урон от наезда тачкой) и переделывал его в тип 73 (это урон от кулаков), а в САМПЕ урон от кулаков и машин считает сам сервер, и ему глубоко плевать, какую цифру ты там шлёшь в битстриме, он всё равно выдаст стандартный дефолт из мода.
Чтобы цифра реально заработала, нужно слать нормальный BulletSync (тип 1 урон от пуль)
На готовый

Lua:
function onSendPacket(id, bs)
    if id == 221 and state ~= 0 then
        raknetBitStreamIgnoreBits(bs, 8)
        local damage_bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(damage_bs, 221)
        raknetBitStreamWriteInt16(damage_bs, 1) -- Врубаем урон от пуль вместо кулаков
        raknetBitStreamWriteBool(damage_bs, true)
        raknetBitStreamWriteInt16(damage_bs, raknetBitStreamReadInt16(bs))
        raknetBitStreamWriteFloat(damage_bs, 46.0) -- Вот теперь эта цифра будет сносить хп
        raknetBitStreamWriteInt32(damage_bs, state > 1 and getCurrentCharWeapon(PLAYER_PED) or 24) -- Ставим Дигл вместо взрывчатки
        raknetBitStreamWriteInt32(damage_bs, 3)
        raknetBitStreamWriteInt16(damage_bs, 0)
        raknetBitStreamWriteInt16(damage_bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
        raknetSendBitStreamEx(damage_bs, 1, 8, 1)
        raknetDeleteBitStream(damage_bs)
        return false
    end
end

попробуй так
Все равно то что и было
 
  • Нравится
Реакции: SNAPE

SNAPE

Участник
88
3
Короче, брат, я ещё раз пересмотрел твои оба кода и понял, что мы немного не туда копали.
Тут проблема походу не в цифре 300000. Ты её хоть на 46, хоть на 100 поменяй если сервак сам считает урон или режет его, толку не будет.(сорри)
Я тебе накидал отдельный скрипт для диагностики. Это не новый дамагер, он пока ничего не меняет, а просто смотрит, какие пакеты отправляются. Надо сначала понять, что у тебя вообще происходит, а потом уже исправлять.
Делай так
  1. Закидываешь скрипт в папку moonloader, сохраняешь как snape_packet_diagnostics.lua.
  2. Свой старый дамагер пока выключаешь, чтобы он не мешал проверке.
  3. Заходишь на сервер и пишешь /pkt221 on.
  4. Пробуешь то действие, при котором у тебя снимался 1 HP.
  5. После этого пишешь /pkt221 stats.
  6. Скидываешь сюда, что выдало в чате, и лог из moonloader.log.
Командой /pkt221 off можешь остановить проверку.
Скрипт будет считать пакеты 221, их подтипы 53 и 73, а также обычный BulletSync 206.
Зачем всё это? Чтобы понять, через какую механику у тебя вообще проходит действие. А то мы сейчас меняем значения вслепую, а сервер может их вообще не использовать при расчёте урона.
По результатам хотя бы станет понятно, куда дальше копать. Если окажется, что урон полностью считается на стороне сервера, то одной заменой Float его не исправишь.
Короче, проверь и закинь результаты. А то уже третий вариант наугад давать смысла нет

Lua:
script_name('SNAPE Packet Diagnostics')
script_author('SNAPE')
script_version('1.0')

local enabled = false
local lastLog = 0

local stats = {
    packet221 = 0,
    subtype53 = 0,
    subtype73 = 0,
    other221 = 0,
    malformed221 = 0,
    bullet206 = 0
}

local function resetStats()
    for key in pairs(stats) do
        stats[key] = 0
    end
    lastLog = 0
end

local function showStats()
    local msg = string.format(
        '[PKT] 221: %d | Type 53: %d | Type 73: %d | Other: %d | Invalid: %d | BulletSync 206: %d',
        stats.packet221,
        stats.subtype53,
        stats.subtype73,
        stats.other221,
        stats.malformed221,
        stats.bullet206
    )

    sampAddChatMessage(msg, 0xCCCCCC)
    print(msg)
end

function main()
    while not isSampAvailable() do
        wait(200)
    end

    sampRegisterChatCommand('pkt221', function(arg)
        local action = tostring(arg or '')
            :lower()
            :match('^%s*(.-)%s*$')

        if action == 'on' then
            resetStats()
            enabled = true

            sampAddChatMessage(
                '[PKT] Diagnostics enabled.',
                0x88FF88
            )

        elseif action == 'off' then
            enabled = false

            sampAddChatMessage(
                '[PKT] Diagnostics disabled.',
                0xFFAA88
            )

            showStats()

        elseif action == 'stats' then
            showStats()

        elseif action == 'reset' then
            resetStats()

            sampAddChatMessage(
                '[PKT] Statistics reset.',
                0xCCCCCC
            )

        else
            sampAddChatMessage(
                '[PKT] Commands: /pkt221 on | off | stats | reset',
                0xCCCCCC
            )
        end
    end)

    sampAddChatMessage(
        '[PKT] SNAPE Packet Diagnostics loaded. Use /pkt221 on',
        0x88FF88
    )

    while true do
        wait(0)
    end
end

function onSendPacket(id, bs)
    if not enabled then
        return true
    end

    if id == 206 then
        stats.bullet206 = stats.bullet206 + 1
        return true
    end

    if id ~= 221 then
        return true
    end

    stats.packet221 = stats.packet221 + 1

    local totalBits = raknetBitStreamGetNumberOfBitsUsed(bs)

    if totalBits < 24 then
        stats.malformed221 = stats.malformed221 + 1
        return true
    end

    local originalOffset = raknetBitStreamGetReadOffset(bs)

    raknetBitStreamSetReadOffset(bs, 8)

    local subtype = raknetBitStreamReadInt16(bs)

    raknetBitStreamSetReadOffset(bs, originalOffset)

    if subtype == 53 then
        stats.subtype53 = stats.subtype53 + 1

    elseif subtype == 73 then
        stats.subtype73 = stats.subtype73 + 1

    else
        stats.other221 = stats.other221 + 1
    end

    local now = getGameTimer()

    if subtype == 53 or subtype == 73 then
        if now - lastLog >= 350 then
            print(string.format(
                '[PKT] ID=221 | subtype=%d | size=%d bits | originalOffset=%d',
                subtype,
                totalBits,
                originalOffset
            ))

            lastLog = now
        end
    end

    return true
end
 

sokolo

Новичок
Автор темы
5
1
Короче, брат, я ещё раз пересмотрел твои оба кода и понял, что мы немного не туда копали.
Тут проблема походу не в цифре 300000. Ты её хоть на 46, хоть на 100 поменяй если сервак сам считает урон или режет его, толку не будет.(сорри)
Я тебе накидал отдельный скрипт для диагностики. Это не новый дамагер, он пока ничего не меняет, а просто смотрит, какие пакеты отправляются. Надо сначала понять, что у тебя вообще происходит, а потом уже исправлять.
Делай так
  1. Закидываешь скрипт в папку moonloader, сохраняешь как snape_packet_diagnostics.lua.
  2. Свой старый дамагер пока выключаешь, чтобы он не мешал проверке.
  3. Заходишь на сервер и пишешь /pkt221 on.
  4. Пробуешь то действие, при котором у тебя снимался 1 HP.
  5. После этого пишешь /pkt221 stats.
  6. Скидываешь сюда, что выдало в чате, и лог из moonloader.log.
Командой /pkt221 off можешь остановить проверку.
Скрипт будет считать пакеты 221, их подтипы 53 и 73, а также обычный BulletSync 206.
Зачем всё это? Чтобы понять, через какую механику у тебя вообще проходит действие. А то мы сейчас меняем значения вслепую, а сервер может их вообще не использовать при расчёте урона.
По результатам хотя бы станет понятно, куда дальше копать. Если окажется, что урон полностью считается на стороне сервера, то одной заменой Float его не исправишь.
Короче, проверь и закинь результаты. А то уже третий вариант наугад давать смысла нет

Lua:
script_name('SNAPE Packet Diagnostics')
script_author('SNAPE')
script_version('1.0')

local enabled = false
local lastLog = 0

local stats = {
    packet221 = 0,
    subtype53 = 0,
    subtype73 = 0,
    other221 = 0,
    malformed221 = 0,
    bullet206 = 0
}

local function resetStats()
    for key in pairs(stats) do
        stats[key] = 0
    end
    lastLog = 0
end

local function showStats()
    local msg = string.format(
        '[PKT] 221: %d | Type 53: %d | Type 73: %d | Other: %d | Invalid: %d | BulletSync 206: %d',
        stats.packet221,
        stats.subtype53,
        stats.subtype73,
        stats.other221,
        stats.malformed221,
        stats.bullet206
    )

    sampAddChatMessage(msg, 0xCCCCCC)
    print(msg)
end

function main()
    while not isSampAvailable() do
        wait(200)
    end

    sampRegisterChatCommand('pkt221', function(arg)
        local action = tostring(arg or '')
            :lower()
            :match('^%s*(.-)%s*$')

        if action == 'on' then
            resetStats()
            enabled = true

            sampAddChatMessage(
                '[PKT] Diagnostics enabled.',
                0x88FF88
            )

        elseif action == 'off' then
            enabled = false

            sampAddChatMessage(
                '[PKT] Diagnostics disabled.',
                0xFFAA88
            )

            showStats()

        elseif action == 'stats' then
            showStats()

        elseif action == 'reset' then
            resetStats()

            sampAddChatMessage(
                '[PKT] Statistics reset.',
                0xCCCCCC
            )

        else
            sampAddChatMessage(
                '[PKT] Commands: /pkt221 on | off | stats | reset',
                0xCCCCCC
            )
        end
    end)

    sampAddChatMessage(
        '[PKT] SNAPE Packet Diagnostics loaded. Use /pkt221 on',
        0x88FF88
    )

    while true do
        wait(0)
    end
end

function onSendPacket(id, bs)
    if not enabled then
        return true
    end

    if id == 206 then
        stats.bullet206 = stats.bullet206 + 1
        return true
    end

    if id ~= 221 then
        return true
    end

    stats.packet221 = stats.packet221 + 1

    local totalBits = raknetBitStreamGetNumberOfBitsUsed(bs)

    if totalBits < 24 then
        stats.malformed221 = stats.malformed221 + 1
        return true
    end

    local originalOffset = raknetBitStreamGetReadOffset(bs)

    raknetBitStreamSetReadOffset(bs, 8)

    local subtype = raknetBitStreamReadInt16(bs)

    raknetBitStreamSetReadOffset(bs, originalOffset)

    if subtype == 53 then
        stats.subtype53 = stats.subtype53 + 1

    elseif subtype == 73 then
        stats.subtype73 = stats.subtype73 + 1

    else
        stats.other221 = stats.other221 + 1
    end

    local now = getGameTimer()

    if subtype == 53 or subtype == 73 then
        if now - lastLog >= 350 then
            print(string.format(
                '[PKT] ID=221 | subtype=%d | size=%d bits | originalOffset=%d',
                subtype,
                totalBits,
                originalOffset
            ))

            lastLog = now
        end
    end

    return true
end
я когда включал дамагер то никаких действий не было просто стоял на месте я хз че делать надо