Помогите с ImGui

jeffrY.

Участник
Автор темы
40
9
Версия MoonLoader
.026-beta
Добрый день. Написал скрипт, который должен выводить в ImGui окно название оружия, которое у меня в руке. Всё работает кроме того, что когда меняю оружие, название оружия в ImGui окне не меняется, приходится обновлять скрипт чтобы название сменилось. Помогите сделать так, чтоб название в окне ImGui менялось сразу же. Заранее спасибо!

Lua:
local weapId = getCurrentCharWeapon(PLAYER_PED)
local weapons = {
    [0] = u8'Кулак',
    [1] = 'Brass Knuckles',
    [2] = 'Golf Club',
    [3] = 'Nightstick',
    [4] = 'Knife',
    [5] = 'Baseball Bat    ',
    [6] = 'Shovel',
    [7] = 'Pool Cue',
    [8] = 'Katana',
    [9] = 'Chainsaw',
    [10] = 'Purple Dildo',
    [11] = 'Dildo',
    [12] = 'Vibrator',
    [13] = 'Silver Vibrator',
    [14] = 'Flowers',
    [15] = 'Cane',
    [16] = 'Grenade',
    [17] = 'Tear Gas',
    [18] = 'Molotov Cocktail',
    [19] = '##',
    [20] = '##',
    [21] = '##',
    [22] = 'Pistol',
    [23] = 'Silent Pistol',
    [24] = 'Desert Eagle',
    [25] = 'Shotgun',
    [26] = 'Sawnoff Shotgun',
    [27] = 'Combat Shotgun',
    [28] = 'Micro SMG/Uzi',
    [29] = 'MP5',
    [30] = 'AK-47',
    [31] = 'M4',
    [32] = 'Tec-9',
    [33] = 'Contry Riffle',
    [34] = 'Sniper Riffle',
    [35] = 'RPG',
    [36] = 'HS Rocket',
    [37] = 'Flame Thrower',
    [38] = 'Minigun',
    [39] = 'Satchel charge',
    [40] = 'Detonator',
    [41] = 'Spraycan',
    [42] = 'Fire Extiguisher',
    [43] = 'Camera',
    [44] = 'Nigh Vision Goggles',
    [45] = 'Thermal Goggles',
    [46] = 'Parachute'
}

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2500) end

    while true do
        wait(0)
        imgui.Process = sampIsLocalPlayerSpawned()
    end
end

function imgui.OnDrawFrame()
    imgui.ShowCursor = false
    imgui.SetNextWindowSize(imgui.ImVec2(200,45), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))

    imgui.Begin(u8'Show weapon', main_ws, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
    imgui.Text(u8'В руках: '.. weapons[weapId])
    imgui.End()
end
 
Решение
Добрый день. Написал скрипт, который должен выводить в ImGui окно название оружия, которое у меня в руке. Всё работает кроме того, что когда меняю оружие, название оружия в ImGui окне не меняется, приходится обновлять скрипт чтобы название сменилось. Помогите сделать так, чтоб название в окне ImGui менялось сразу же. Заранее спасибо!

Lua:
local weapId = getCurrentCharWeapon(PLAYER_PED)
local weapons = {
    [0] = u8'Кулак',
    [1] = 'Brass Knuckles',
    [2] = 'Golf Club',
    [3] = 'Nightstick',
    [4] = 'Knife',
    [5] = 'Baseball Bat    ',
    [6] = 'Shovel',
    [7] = 'Pool Cue',
    [8] = 'Katana',
    [9] = 'Chainsaw',
    [10] = 'Purple Dildo',
    [11] = 'Dildo',
    [12] = 'Vibrator',
    [13] = 'Silver Vibrator'...

bottom_text

Известный
673
320
Добрый день. Написал скрипт, который должен выводить в ImGui окно название оружия, которое у меня в руке. Всё работает кроме того, что когда меняю оружие, название оружия в ImGui окне не меняется, приходится обновлять скрипт чтобы название сменилось. Помогите сделать так, чтоб название в окне ImGui менялось сразу же. Заранее спасибо!

Lua:
local weapId = getCurrentCharWeapon(PLAYER_PED)
local weapons = {
    [0] = u8'Кулак',
    [1] = 'Brass Knuckles',
    [2] = 'Golf Club',
    [3] = 'Nightstick',
    [4] = 'Knife',
    [5] = 'Baseball Bat    ',
    [6] = 'Shovel',
    [7] = 'Pool Cue',
    [8] = 'Katana',
    [9] = 'Chainsaw',
    [10] = 'Purple Dildo',
    [11] = 'Dildo',
    [12] = 'Vibrator',
    [13] = 'Silver Vibrator',
    [14] = 'Flowers',
    [15] = 'Cane',
    [16] = 'Grenade',
    [17] = 'Tear Gas',
    [18] = 'Molotov Cocktail',
    [19] = '##',
    [20] = '##',
    [21] = '##',
    [22] = 'Pistol',
    [23] = 'Silent Pistol',
    [24] = 'Desert Eagle',
    [25] = 'Shotgun',
    [26] = 'Sawnoff Shotgun',
    [27] = 'Combat Shotgun',
    [28] = 'Micro SMG/Uzi',
    [29] = 'MP5',
    [30] = 'AK-47',
    [31] = 'M4',
    [32] = 'Tec-9',
    [33] = 'Contry Riffle',
    [34] = 'Sniper Riffle',
    [35] = 'RPG',
    [36] = 'HS Rocket',
    [37] = 'Flame Thrower',
    [38] = 'Minigun',
    [39] = 'Satchel charge',
    [40] = 'Detonator',
    [41] = 'Spraycan',
    [42] = 'Fire Extiguisher',
    [43] = 'Camera',
    [44] = 'Nigh Vision Goggles',
    [45] = 'Thermal Goggles',
    [46] = 'Parachute'
}

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2500) end

    while true do
        wait(0)
        imgui.Process = sampIsLocalPlayerSpawned()
    end
end

function imgui.OnDrawFrame()
    imgui.ShowCursor = false
    imgui.SetNextWindowSize(imgui.ImVec2(200,45), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))

    imgui.Begin(u8'Show weapon', main_ws, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
    imgui.Text(u8'В руках: '.. weapons[weapId])
    imgui.End()
end
Lua:
local weapons = {
    [0] = u8'Кулак',
    [1] = 'Brass Knuckles',
    [2] = 'Golf Club',
    [3] = 'Nightstick',
    [4] = 'Knife',
    [5] = 'Baseball Bat    ',
    [6] = 'Shovel',
    [7] = 'Pool Cue',
    [8] = 'Katana',
    [9] = 'Chainsaw',
    [10] = 'Purple Dildo',
    [11] = 'Dildo',
    [12] = 'Vibrator',
    [13] = 'Silver Vibrator',
    [14] = 'Flowers',
    [15] = 'Cane',
    [16] = 'Grenade',
    [17] = 'Tear Gas',
    [18] = 'Molotov Cocktail',
    [19] = '##',
    [20] = '##',
    [21] = '##',
    [22] = 'Pistol',
    [23] = 'Silent Pistol',
    [24] = 'Desert Eagle',
    [25] = 'Shotgun',
    [26] = 'Sawnoff Shotgun',
    [27] = 'Combat Shotgun',
    [28] = 'Micro SMG/Uzi',
    [29] = 'MP5',
    [30] = 'AK-47',
    [31] = 'M4',
    [32] = 'Tec-9',
    [33] = 'Contry Riffle',
    [34] = 'Sniper Riffle',
    [35] = 'RPG',
    [36] = 'HS Rocket',
    [37] = 'Flame Thrower',
    [38] = 'Minigun',
    [39] = 'Satchel charge',
    [40] = 'Detonator',
    [41] = 'Spraycan',
    [42] = 'Fire Extiguisher',
    [43] = 'Camera',
    [44] = 'Nigh Vision Goggles',
    [45] = 'Thermal Goggles',
    [46] = 'Parachute'
}

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2500) end

    while true do
        wait(0)
        imgui.Process = sampIsLocalPlayerSpawned()
    end
end

function imgui.OnDrawFrame()
    imgui.ShowCursor = false
    imgui.SetNextWindowSize(imgui.ImVec2(200,45), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))

    imgui.Begin(u8'Show weapon', main_ws, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
    imgui.Text(u8'В руках: '.. weapons[getCurrentCharWeapon(PLAYER_PED)])
    imgui.End()
end
У тебя получение id оружия не в цикле было, оно получалось лишь единожды при загрузке скрипта
 

jeffrY.

Участник
Автор темы
40
9
Lua:
local weapons = {
    [0] = u8'Кулак',
    [1] = 'Brass Knuckles',
    [2] = 'Golf Club',
    [3] = 'Nightstick',
    [4] = 'Knife',
    [5] = 'Baseball Bat    ',
    [6] = 'Shovel',
    [7] = 'Pool Cue',
    [8] = 'Katana',
    [9] = 'Chainsaw',
    [10] = 'Purple Dildo',
    [11] = 'Dildo',
    [12] = 'Vibrator',
    [13] = 'Silver Vibrator',
    [14] = 'Flowers',
    [15] = 'Cane',
    [16] = 'Grenade',
    [17] = 'Tear Gas',
    [18] = 'Molotov Cocktail',
    [19] = '##',
    [20] = '##',
    [21] = '##',
    [22] = 'Pistol',
    [23] = 'Silent Pistol',
    [24] = 'Desert Eagle',
    [25] = 'Shotgun',
    [26] = 'Sawnoff Shotgun',
    [27] = 'Combat Shotgun',
    [28] = 'Micro SMG/Uzi',
    [29] = 'MP5',
    [30] = 'AK-47',
    [31] = 'M4',
    [32] = 'Tec-9',
    [33] = 'Contry Riffle',
    [34] = 'Sniper Riffle',
    [35] = 'RPG',
    [36] = 'HS Rocket',
    [37] = 'Flame Thrower',
    [38] = 'Minigun',
    [39] = 'Satchel charge',
    [40] = 'Detonator',
    [41] = 'Spraycan',
    [42] = 'Fire Extiguisher',
    [43] = 'Camera',
    [44] = 'Nigh Vision Goggles',
    [45] = 'Thermal Goggles',
    [46] = 'Parachute'
}

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(2500) end

    while true do
        wait(0)
        imgui.Process = sampIsLocalPlayerSpawned()
    end
end

function imgui.OnDrawFrame()
    imgui.ShowCursor = false
    imgui.SetNextWindowSize(imgui.ImVec2(200,45), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))

    imgui.Begin(u8'Show weapon', main_ws, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoTitleBar)
    imgui.Text(u8'В руках: '.. weapons[getCurrentCharWeapon(PLAYER_PED)])
    imgui.End()
end
У тебя получение id оружия не в цикле было, оно получалось лишь единожды при загрузке скрипта
Поставил в цикл, перестало отображаться окно ImGui