[ImGui] Оптимизация кода. Меню телепортации.

A S K I T

Активный
Автор темы
201
69
Версия MoonLoader
.026-beta
Привет. Хотелось бы уменьшить кол-во строк кода в меню телепортации. Есть способ?

Lua:
if imgui.CollapsingHeader(u8'Общественные места') then
    if imgui.Button(u8'Мэрия', imgui.ImVec2(-1, 0), imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1478.1964111328, -1768.5966796875, 18.795742034912) end
    if imgui.Button(u8'Автошкола', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 829.45318603516, -1745.8094482422, 13.522115707397) end
    if imgui.Button(u8'Центральный банк', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1415.5, -1702.8000488281, 13.539485931396) end
    if imgui.Button(u8'Военкомат', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 573.20001220703, -1574.1999511719, 16.1796875) end
    if imgui.Button(u8'Казино', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1022.5225219727, -1127.1722412109, 23.890293121338) end
    if imgui.Button(u8'Центр развлечений', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 369.8337097168, -2044.2868652344, 7.671875) end
    if imgui.Button(u8'Спавн (Город)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 338.46868896484, -1525.4985351563, 33.307426452637) end
    if imgui.Button(u8'Спавн (Вокзал)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1153.1375732422, -1755.5554199219, 13.627891540527) end
    if imgui.Button(u8'Церковь', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 307.96365356445, -220.8189239502, 1.5688990354538) end
end

if imgui.CollapsingHeader(u8'Работы') then
    imgui.PushStyleColor(imgui.Col.Header, imgui.ImVec4(0.26, 0.27, 0.30, 0.80))
        imgui.PushStyleColor(imgui.Col.HeaderHovered, imgui.ImVec4(0.26, 0.27, 0.30, 1.00))
            imgui.PushStyleColor(imgui.Col.HeaderActive, imgui.ImVec4(0.26, 0.27, 0.30, 0.60))
                if imgui.CollapsingHeader(u8'Начальные работы') then
                    if imgui.Button(u8'Лесопилка', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -491.57540893555, -191.12719726563, 78.338790893555) end
                    if imgui.Button(u8'Мясокомбинат', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2355.8754882813, -2296.4499511719, 13.546875) end
                    if imgui.Button(u8'Мебельная фабрика', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -1991.7288818359, -2421.0219726563, 30.625) end
                end
                if imgui.CollapsingHeader(u8'Основные работы') then
                    if imgui.Button(u8'Курьер', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1754.4237060547, -1469.1264648438, 13.545225143433) end
                    if imgui.Button(u8'Таксист', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1791.6746826172, -1724.6560058594, 13.546875) end
                    if imgui.Button(u8'Электрик', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1828.7633056641, -1087.4151611328, 23.90673828125) end
                    if imgui.Button(u8'Дальнобойщик', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2428.853515625, -2099.7880859375, 13.556203842163) end
                    if imgui.Button(u8'Крупье', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1024.7822265625, -1121.9245605469, 23.894706726074) end
                end
            imgui.PopStyleColor()
        imgui.PopStyleColor()
    imgui.PopStyleColor()
end

if imgui.CollapsingHeader(u8'Организации') then
    imgui.PushStyleColor(imgui.Col.Header, imgui.ImVec4(0.26, 0.27, 0.30, 0.80))
        imgui.PushStyleColor(imgui.Col.HeaderHovered, imgui.ImVec4(0.26, 0.27, 0.30, 1.00))
            imgui.PushStyleColor(imgui.Col.HeaderActive, imgui.ImVec4(0.26, 0.27, 0.30, 0.60))
                if imgui.CollapsingHeader(u8'Государственные') then
                    if imgui.Button(u8'Мэрия', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1481, -1767.6999511719, 18.795742034912) end
                    if imgui.Button(u8'ФБР', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1319.6999511719, -1564.5, 13.546875) end
                    if imgui.Button(u8'Департамент Полиции', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1542.5999755859, -1675.5999755859, 13.574748039246) end
                    if imgui.Button(u8'Нац. Гвардия', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2677.1564941406, -2495.6096191406, 13.664021492004) end
                    if imgui.Button(u8'Мед. Центр', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1178.4290771484, -1323.5205078125, 14.138258934021) end
                    if imgui.Button(u8'Новост. Компания', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 290, -1623.5999755859, 33.143615722656) end
                    if imgui.Button(u8'Инструкторы', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 829.37591552734, -1747.6903076172, 13.522115707397) end
                end
                if imgui.CollapsingHeader(u8'Нелегальные') then
                    if imgui.Button(u8'East Side Ballas', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2001.4420166016, -1122.212890625, 26.688289642334) end
                    if imgui.Button(u8'Rifa Gang', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2782.5427246094, -1921.1346435547, 13.546875) end
                    if imgui.Button(u8'Los Santos Vagos', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2744.9140625, -1182.1583251953, 69.401306152344) end
                    if imgui.Button(u8'Varios Los Aztecas', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1882.8065185547, -2015.1630859375, 13.546875) end
                    if imgui.Button(u8'Grove Street', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2490.1000976563, -1665.5, 13.34375) end
                    if imgui.Button(u8'La Cosa Nostra', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 646.49346923828, -1230.0157470703, 18.102949142456) end
                    if imgui.Button(u8'Russian Mafia', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1134.3166503906, -2029.3990478516, 69.000610351563) end
                    if imgui.Button(u8'Yakuza', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1305.3734130859, -798.36083984375, 84.140625) end
                end
            imgui.PopStyleColor()
        imgui.PopStyleColor()
    imgui.PopStyleColor()
end

if imgui.CollapsingHeader(u8'Бизнесы') then
    imgui.PushStyleColor(imgui.Col.Header, imgui.ImVec4(0.26, 0.27, 0.30, 0.80))
        imgui.PushStyleColor(imgui.Col.HeaderHovered, imgui.ImVec4(0.26, 0.27, 0.30, 1.00))
            imgui.PushStyleColor(imgui.Col.HeaderActive, imgui.ImVec4(0.26, 0.27, 0.30, 0.60))
                if imgui.CollapsingHeader(u8'Магазины 24/7') then
                    if imgui.Button(u8'Idlewood (1)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1928.6931152344, -1776.0186767578, 13.546875) end
                    if imgui.Button(u8'Vinewood (12)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1000.5949707031, -919.93731689453, 42.328125) end
                    if imgui.Button(u8'El Corona (15)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1833.6618652344, -1842.6287841797, 13.578125) end
                    if imgui.Button(u8'Verona (16)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1081.3001708984, -1696.9486083984, 13.546875) end
                    if imgui.Button(u8'Flint (26)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -78.371086120605, -1169.8858642578, 2.1355676651001) end
                    if imgui.Button(u8'Dillimore (29)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 691.14813232422, -506.2737121582, 16.3359375) end
                    if imgui.Button(u8'Glen Park (30)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1836.5141601563, -1445.0113525391, 13.596225738525) end
                    if imgui.Button(u8'East Los Santos (31)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2713.5778808594, -1108.9180908203, 69.578239440918) end
                    if imgui.Button(u8'Willowfield (32)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2723.8000488281, -2026.6881103516, 13.547199249268) end
                    if imgui.Button(u8'Ganton (33)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2424.2973632813, -1742.7287597656, 13.546577453613) end
                    if imgui.Button(u8'Whetstone (34)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -1562.6029052734, -2733.0229492188, 48.743457794189) end
                end
                if imgui.CollapsingHeader(u8'Закусочные') then
                    if imgui.Button(u8'Idlewood Pizza (3)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2105.48828125, -1806.4924316406, 13.5546875) end
                    if imgui.Button(u8'Cluckin Bell (5)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2397.8305664063, -1899.1685791016, 13.546875) end
                    if imgui.Button(u8'Cluckin Bell Two (6)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2419.7043457031, -1509.0753173828, 24) end
                    if imgui.Button(u8'Burger Time (8)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1038.2746582031, -1340.7316894531, 13.741436004639) end
                    if imgui.Button(u8'Vinewood Burger (10)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1199.3143310547, -918.13702392578, 43.122867584229) end
                    if imgui.Button(u8'Marina Burger (14)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 810.48480224609, -1616.1948242188, 13.546875) end
                    if imgui.Button(u8'Montgomery Pizza (18)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1367.5319824219, 248.43533325195, 19.566932678223) end
                    if imgui.Button(u8'McDonalds (40)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1726.2082519531, -1451.3031005859, 13.926980018616) end
                    if imgui.Button(u8'Palomino Creek Pizza (48)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2331.8149414063, 75.006401062012, 26.620975494385) end
                end
                if imgui.CollapsingHeader(u8'Заправки') then
                    if imgui.Button(u8'Idlewood Gas (0)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1940.9970703125, -1772.8754882813, 13.640625) end
                    if imgui.Button(u8'Vinewood Gas (11)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1004.0513305664, -937.53216552734, 42.328125) end
                    if imgui.Button(u8'Flint Gas (13)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -94.609550476074, -1167.8970947266, 2.5139181613922) end
                    if imgui.Button(u8'Montgomery Gas (19)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1383.1936035156, 465.18173217773, 20.19614982605) end
                    if imgui.Button(u8'Whetstone Gas (21)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -1608.7600097656, -2715.4501953125, 48.9453125) end
                    if imgui.Button(u8'Dillimore Gas (47)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 655.65386962891, -564.86437988281, 16.3359375) end
                end
                if imgui.CollapsingHeader(u8'Клубы и Бары') then
                    if imgui.Button(u8'Alhambra (2)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1837.0396728516, -1682.3881835938, 13.322811126709) end
                    if imgui.Button(u8'Ten Green Bottles (4)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2310.046875, -1643.4952392578, 14.827047348022) end
                    if imgui.Button(u8'Pig Pen (7)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2421.4692382813, -1219.2479248047, 25.561580657959) end
                    if imgui.Button(u8'Santa-Maria Club (20)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 387.17837524414, -1817.8424072266, 7.84095287323) end
                    if imgui.Button(u8'Dillimore Club (22)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 681.65246582031, -473.34588623047, 16.536296844482) end
                    if imgui.Button(u8'Laverra Bar (27)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 172.2103729248, -152.71015930176, 1.5752477645874) end
                end
                if imgui.CollapsingHeader(u8'Амуниция и Тиры') then
                    if imgui.Button(u8'Ammo Los-Santos', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1368.9831542969, -1279.6940917969, 13.546875) end
                    if imgui.Button(u8'Ammo Willowfield', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2400.5166015625, -1981.9871826172, 13.546875) end
                    if imgui.Button(u8'Palomino Creek Ammo', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2333.0966796875, 61.568500518799, 26.70578956604) end
                end
                if imgui.CollapsingHeader(u8'Магазины одежды') then
                    if imgui.Button(u8'Sub Urban (9)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2112.8325195313, -1211.4580078125, 23.962867736816) end
                    if imgui.Button(u8'Binco (17)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2244.3754882813, -1665.5632324219, 15.4765625) end
                    if imgui.Button(u8'Victim (23)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 461.70254516602, -1500.7846679688, 31.045440673828) end
                end
                if imgui.CollapsingHeader(u8'Автосалоны') then
                    if imgui.Button(u8'Мотосалон (41)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1015.3969116211, -1550.5540771484, 14.859375) end
                    if imgui.Button(u8'Low Cars (42)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2131.6999511719, -1151.3000488281, 24.061372756958) end
                    if imgui.Button(u8'Medium Cars (44)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 542.27917480469, -1293.7728271484, 17.262386322021) end
                    if imgui.Button(u8'Elite Cars (43)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 942.90002441406, -1477.4000244141, 13.546875) end
                end
                if imgui.CollapsingHeader(u8'Отели') then
                    if imgui.Button(u8'Las-Colinas | Economy (49)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2792.8869628906, -1087.5419921875, 30.71875) end
                    if imgui.Button(u8'Downtown | Luxe (35)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1310.1291503906, -1366.796875, 13.506427764893) end
                end
                if imgui.CollapsingHeader(u8'Рестораны') then
                    if imgui.Button(u8'Commerce Restaurant (28)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1498.4421386719, -1580.5283203125, 13.549827575684) end
                end
                if imgui.CollapsingHeader(u8'Прочее') then
                    if imgui.Button(u8'Accessories LS (25)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 949.68835449219, -987.65307617188, 38.7265625) end
                    if imgui.Button(u8'Casino Gold Stars (36)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1022.507019043, -1121.4216308594, 23.892206192017) end
                    if imgui.Button(u8'Real Estate Agensy (37)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1475.8005371094, -1360.7269287109, 11.8828125) end
                    if imgui.Button(u8'Yellow Taxi (38)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1794.9512939453, -1721.1072998047, 13.551357269287) end
                    if imgui.Button(u8'Transport Company (39)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2432.8403320313, -2106.8254394531, 13.556203842163) end
                    if imgui.Button(u8'Tuining Service (50)', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1132.6534423828, -1021.6801757813, 32.348342895508) end
                end
            imgui.PopStyleColor()
        imgui.PopStyleColor()
    imgui.PopStyleColor()
end

if imgui.CollapsingHeader(u8'Развлечения') then
    if imgui.Button(u8'Центр развлечений', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 369.82800292969, -2038.2199707031, 7.671875) end
    if imgui.Button(u8'Тренировочный центр', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2447.8881835938, -1966.9885253906, 13.546875) end
    if imgui.Button(u8'Casino Gold Stars', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1022.1699829102, -1133.9000244141, 23.828125) end
    if imgui.Button(u8'Лотерея POWERBALL', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 1320.9379882813, -1843.9625244141, 13.546875) end
end

if imgui.CollapsingHeader(u8'Другое') then
    if imgui.Button(u8'Полигон', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -1190.2739257813, -1010.2282714844, 129.29550170898) end
    if imgui.Button(u8'Чёрный рынок', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, 2072.2719726563, -1551.2646484375, 13.423308372498) end
end

if imgui.CollapsingHeader(u8'Склады') then
    if imgui.Button(u8'Оптовый склад', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -51.262928009033, -231.53201293945, 6.7646160125732) end
    if imgui.Button(u8'Склад лесопилки', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -531.00122070313, -71.339096069336, 62.767597198486) end
    if imgui.Button(u8'Оружейный завод', imgui.ImVec2(-1, 0)) then setCharCoordinates(1, -583.08642578125, -505.21231079102, 25.56462097168) end
end
 

lorgon

Известный
657
268
Ну тут можно таблицу использовать, но вряд ли это уменьшит кол-во строк(в прямом смысле). По идее так, но с кодировкой мог накосячить.
Lua:
msg = { -- Начало кода
    public = {
        ['Автошкола'] = {829.45318603516, -1745.8094482422, 13.522115707397},
        ['Центральный банк'] = {1415.5, -1702.8000488281, 13.539485931396},
        ['Военкомат'] = {573.20001220703, -1574.1999511719, 16.1796875},
        ['Казино'] = {1022.5225219727, -1127.1722412109, 23.890293121338},
        ['Центр развлечений'] = {369.8337097168, -2044.2868652344, 7.671875},
        ['Спавн (Город)'] = {338.46868896484, -1525.4985351563, 33.307426452637},
        ['Спавн (Вокзал)'] = {1153.1375732422, -1755.5554199219, 13.627891540527},
        ['Церковь'] = {307.96365356445, -220.8189239502, 1.5688990354538},
    },
    work = {
        -- ...
    },
}

-- Общ. места
for name, coord in pairs(msg.public) do
    print(name.." / "..coord)
    --if imgui.Button(u8(name), imgui.ImVec2(-1, 0)) then setCharCoordinates(1, coord[1], coord[2], coord[3]) end
end