Не выводит кол-во патрон оружия, которое можно держать в двух руках

Fasmin

Участник
Автор темы
175
6
Версия MoonLoader
.026-beta
код:
require("lib.moonloader")
local memory = require("memory")

local font = renderCreateFont('TimesNewRoman', 13, 5)

function main()
    repeat wait(1000) until isSampAvailable()
    while true do wait(0)
        local WeaponID = getCurrentCharWeapon(PLAYER_PED)
        if WeaponID ~= 0 then
            local ammo = getAmmoInClip()
            if memory.getint8(getCharPointer(PLAYER_PED) + 0x528, false) == 19 then
                renderFontDrawText(font, ammo, 1066, 426, 0xff8400AA)
            end
        end
    end
end

function getAmmoInClip()
    local pointer = getCharPointer(playerPed)
    local weapon = getCurrentCharWeapon(playerPed)
    local slot = getWeapontypeSlot(weapon)
    local cweapon = pointer + 0x5A0
    local current_cweapon = cweapon + slot * 0x1C
    return memory.getuint32(current_cweapon + 0x8)
end

Почему то на всех оружиях где в 2 руки не рендерится текст, но с другими в одну руку пушками все норм

up
 
Последнее редактирование:
Решение
Если у тебя 0.3.7 R1, а сверху скинули как 0.3.7 R3-1
Лучше спросить его в каком версии нашел адрес памяти
а причем тут это, если тут используются адреса из гташки в целом?
в данном случае это берется из структуры CPed вроде,если не CWeapon (проверка на прицел, скорее всего):
1732866092105.png

да и сама проблема в некорректной проверке на прицел, можно сделать так (нагло спизжено отсюда: https://www.blast.hk/threads/221121/ ):
Lua:
require("lib.moonloader")
local memory = require("memory")
local ffi = require 'ffi'

local font = renderCreateFont('TimesNewRoman', 13, 5)

function main()
    repeat wait(1000) until isSampAvailable()
    while true do wait(0)
        local WeaponID = getCurrentCharWeapon(PLAYER_PED)
        local...

Vintik

Через тернии к звёздам
Проверенный
1,562
1,032
Lua:
require("lib.moonloader")
local memory = require("memory")

local font = renderCreateFont('TimesNewRoman', 13, 5)

function main()
    repeat wait(1000) until isSampAvailable()
    while true do wait(0)
        local WeaponID = getCurrentCharWeapon(PLAYER_PED)
        if WeaponID ~= 0 then
            local ammo = getAmmoInClip()
            if memory.getint8(getCharPointer(PLAYER_PED) + 0x528, false) == 19 then
                renderFontDrawText(font, ammo, 1066, 426, 0xff8400AA)
            end
        end
    end
end

function getAmmoInClip()
    local pointer = getCharPointer(playerPed)
    local weapon = getCurrentCharWeapon(playerPed)
    local slot = getWeapontypeSlot(weapon)
    local cweapon = pointer + 0x5A0
    local current_cweapon = cweapon + slot * 0x1C
    return memory.getuint32(current_cweapon + 0x8)
end
В выделенной строке, скорее всего, не проходит проверка.
Сделай вывод (в чат/консоль) значения memory.getint8(getCharPointer(PLAYER_PED) + 0x528, false) до 12 строки кода. Возьми оружие, с которым не работает, и посмотри какое значение выводится.
 

Fasmin

Участник
Автор темы
175
6
Lua:
require("lib.moonloader")
local memory = require("memory")

local font = renderCreateFont('TimesNewRoman', 13, 5)

function main()
    repeat wait(1000) until isSampAvailable()
    while true do wait(0)
        local WeaponID = getCurrentCharWeapon(PLAYER_PED)
        if WeaponID ~= 0 then
            local ammo = getAmmoInClip()
            if memory.getint8(getCharPointer(PLAYER_PED) + 0x528, false) == 19 then
                renderFontDrawText(font, ammo, 1066, 426, 0xff8400AA)
            end
        end
    end
end

function getAmmoInClip()
    local pointer = getCharPointer(playerPed)
    local weapon = getCurrentCharWeapon(playerPed)
    local slot = getWeapontypeSlot(weapon)
    local cweapon = pointer + 0x5A0
    local current_cweapon = cweapon + slot * 0x1C
    return memory.getuint32(current_cweapon + 0x8)
end
В выделенной строке, скорее всего, не проходит проверка.
Сделай вывод (в чат/консоль) значения memory.getint8(getCharPointer(PLAYER_PED) + 0x528, false) до 12 строки кода. Возьми оружие, с которым не работает, и посмотри какое значение выводится.
выводит значение 7
через некоторое время стало выдавать разные, 6, 19, 3
я даже не знаю что это значит
меняются числа когда целюсь и не целюсь
 
Последнее редактирование:

kyrtion

Известный
1,049
377
выводит значение 7
через некоторое время стало выдавать разные, 6, 19, 3
я даже не знаю что это значит
меняются числа когда целюсь и не целюсь
скорее всего у вас отличается версия сампа
 

chromiusj

$TheWorldIsFvcked
Модератор
5,697
4,013
Если у тебя 0.3.7 R1, а сверху скинули как 0.3.7 R3-1
Лучше спросить его в каком версии нашел адрес памяти
а причем тут это, если тут используются адреса из гташки в целом?
в данном случае это берется из структуры CPed вроде,если не CWeapon (проверка на прицел, скорее всего):
1732866092105.png

да и сама проблема в некорректной проверке на прицел, можно сделать так (нагло спизжено отсюда: https://www.blast.hk/threads/221121/ ):
Lua:
require("lib.moonloader")
local memory = require("memory")
local ffi = require 'ffi'

local font = renderCreateFont('TimesNewRoman', 13, 5)

function main()
    repeat wait(1000) until isSampAvailable()
    while true do wait(0)
        local WeaponID = getCurrentCharWeapon(PLAYER_PED)
        local camMode = ffi.cast("uint8_t*", 0x8CC388)[0]
        local CCurVer = ffi.cast("int32_t*", 0xBA18FC)[0]
        if WeaponID ~= 0 then
            local ammo = getAmmoInClip()
            local CrosshairActive = ((((camMode ~= 4) and CCurVer == 0) or (camMode == 55 and CCurVer ~= 0)) and (camMode ~= 15) and (camMode ~= 17) and (camMode ~= 29)) and ffi.cast('int8_t*', 0xB6F080)[0] == 0 and ffi.cast('int8_t*', 0x8CC384)[0] == 3
            if CrosshairActive then
                renderFontDrawText(font, tostring(ammo), 1066, 426, 0xff8400AA)
            end
        end
    end
end

function getAmmoInClip()
    local pointer = getCharPointer(playerPed)
    local weapon = getCurrentCharWeapon(playerPed)
    local slot = getWeapontypeSlot(weapon)
    local cweapon = pointer + 0x5A0
    local current_cweapon = cweapon + slot * 0x1C
    return memory.getuint32(current_cweapon + 0x8)
end
 
Последнее редактирование:
  • Нравится
  • Вау
Реакции: Vintik и Corenale

Похожие темы

  1. Ответы
    22
    Просмотры
    26K
  2. Ответы
    39
    Просмотры
    23K