автообновление (хостинг для файла кодировкой CP51)

w99zzl1

Участник
Автор темы
155
18
Версия MoonLoader
.026-beta
По гайду: https://www.blast.hk/threads/30501/
А есть ли какие то другие рабочие хостинги с прямой ссылкой, которые будут хранить мой файл с кодировкой (CP51 - кириллица)?

У меня в коде очень сложные (для меня) функции с input, ffi + imgui , которые мне сложно перевести в кодировку для GutHub'а, (там (всё что я знаю) с помощью u8, но её нужно как то так расставить, и тут то я не понимаю, где нужно оставить, где забрать, если с sampAddChatMessage и imgui интерфейсом всё просто, то тут я хз)

Поэтому я обращаюсь сюда с целью найти тот самый хостинг, который сможет хранить мой код в CP51, грамотно передавать его, хранить и т.д. И чтобы ссылка вообще работала и принималась автообновлением, а то на тех, что я пробовал - ошибка. Есть ли такие?
 

kyrtion

Известный
1,131
408
купи свой вдс за 75 руб на ферстбайте и заливай на него
чтобы по миру работало вдс и поступило запрос, то придется платить подороже.
Например, не русский вдс, а похоже снг, например я раньше брал fornex и у всех работало (позже перестал оплачивать из-за нет необходимости), а насчет санкций не протестировал
 

Tema05

Известный
1,487
454
По гайду: https://www.blast.hk/threads/30501/
А есть ли какие то другие рабочие хостинги с прямой ссылкой, которые будут хранить мой файл с кодировкой (CP51 - кириллица)?

У меня в коде очень сложные (для меня) функции с input, ffi + imgui , которые мне сложно перевести в кодировку для GutHub'а, (там (всё что я знаю) с помощью u8, но её нужно как то так расставить, и тут то я не понимаю, где нужно оставить, где забрать, если с sampAddChatMessage и imgui интерфейсом всё просто, то тут я хз)

Поэтому я обращаюсь сюда с целью найти тот самый хостинг, который сможет хранить мой код в CP51, грамотно передавать его, хранить и т.д. И чтобы ссылка вообще работала и принималась автообновлением, а то на тех, что я пробовал - ошибка. Есть ли такие?
Трабл с кодировкой мне кажется надуманным и ты неправильно понимаешь что это такое. Файлы не хранятся "С" какой-то кодировкой. Нет такого параметра у файлов. Кодировка это грубо говоря вариант представления твоих текстовых символов в байтах. Если твой код закодирован в какой-то кодировке он где угодно будет такой же. Идеально тот же набор данных. Можешь взять с него хеш и он везде совпадёт. Иначе бы это означало, что хостинг изменяет твой файл, но это бред. Возможно он в редакторе на хостинге открывается в другой кодировке из-за чего некоторый текст имеет некорректное представление. Это ничего не значит. Или может быть при загрузке/скачивании изменяется кодировка, что приводит к проблеме. Или суть вообще не в кодировке, а в том что ты неправильно загружаешь его/скачиваешь и тем самым ломаешь символы. Т.е. ошибка не в хостингах, а в коде или подходе.

Там как я понял автообновление с ручной загрузкой обновлений. Поэтому тебе подойдёт буквально что угодно. Любой открывающийся у тебя и твоих пользователей сервис. Везде можно получить прямую ссылку. Гитхаб и на крайняк пастебин вполне с этим справятся. Если ты в браузере попал на этот сайт значит и скрипт может. Иначе ищи проблему на своём ПК.

Расскажи более подробно как ты конкретно реализовал автообновление. Какие хостинг пробовал и какие конкретно с ними возникли проблемы на примерах. Пока что создаётся впечатление, что проблемы с "хостингами" на самом деле не существуют
 

w99zzl1

Участник
Автор темы
155
18
Трабл с кодировкой мне кажется надуманным и ты неправильно понимаешь что это такое. Файлы не хранятся "С" какой-то кодировкой. Нет такого параметра у файлов. Кодировка это грубо говоря вариант представления твоих текстовых символов в байтах. Если твой код закодирован в какой-то кодировке он где угодно будет такой же. Идеально тот же набор данных. Можешь взять с него хеш и он везде совпадёт. Иначе бы это означало, что хостинг изменяет твой файл, но это бред. Возможно он в редакторе на хостинге открывается в другой кодировке из-за чего некоторый текст имеет некорректное представление. Это ничего не значит. Или может быть при загрузке/скачивании изменяется кодировка, что приводит к проблеме. Или суть вообще не в кодировке, а в том что ты неправильно загружаешь его/скачиваешь и тем самым ломаешь символы. Т.е. ошибка не в хостингах, а в коде или подходе.

Там как я понял автообновление с ручной загрузкой обновлений. Поэтому тебе подойдёт буквально что угодно. Любой открывающийся у тебя и твоих пользователей сервис. Везде можно получить прямую ссылку. Гитхаб и на крайняк пастебин вполне с этим справятся. Если ты в браузере попал на этот сайт значит и скрипт может. Иначе ищи проблему на своём ПК.

Расскажи более подробно как ты конкретно реализовал автообновление. Какие хостинг пробовал и какие конкретно с ними возникли проблемы на примерах. Пока что создаётся впечатление, что проблемы с "хостингами" на самом деле не существуют
Смотри, возьму в пример "самую сложную" для меня часть кода:

Код:
imgui.OnFrame(function() return showGnewsWindow[0] end, function()
    local X, Y = getScreenResolution()
    imgui.SetNextWindowSize(imgui.ImVec2(415, 279), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(X / 2 - 207, Y / 2 - 139), imgui.Cond.FirstUseEver)

    darkStyle()

    imgui.Begin(u8"Добавление новости", showGnewsWindow)
        imgui.InputTextWithHint(u8'##gnewsInput1', u8'Введите первую новость', inputGnewsText1, 256)
        imgui.InputTextWithHint(u8'##gnewsInput2', u8'Введите вторую новость', inputGnewsText2, 256)
        imgui.InputTextWithHint(u8'##gnewsInput3', u8'Введите третью новость', inputGnewsText3, 256)

        imgui.Checkbox(u8"Отправка по времени", sendAtTime)

        if sendAtTime[0] then
            imgui.SliderInt(u8"Время (в минутах)", timeDelay, 1, 59)
        end

        if sendAtTime[0] then
            local currentTime = os.date("*t")
            local targetMinute = (currentTime.min + timeDelay[0]) % 60
            local targetHour = currentTime.hour

            if currentTime.min + timeDelay[0] >= 60 then
                targetMinute = (currentTime.min + timeDelay[0]) % 60
                targetHour = (currentTime.hour + 1) % 24
            end

            confirmationMessage = string.format("Новость будет отправлена в %02d:%02d", targetHour, targetMinute)
            imgui.Text(u8(confirmationMessage))
        end

        if imgui.Button(u8"Отправить", imgui.ImVec2(-1, 0)) then
            local news1 = u8:decode(ffi.string(inputGnewsText1))
            local news2 = u8:decode(ffi.string(inputGnewsText2))
            local news3 = u8:decode(ffi.string(inputGnewsText3))

            showGnewsWindow[0] = false

            -- Проверка на 2 строки (запрещено)
            if (news1 ~= '' and news2 ~= '') and news3 == '' then
                sampAddChatMessage('Вы не можете отправить 2 строки новости. Только 1 или 3', -2)
                return
            end 

            local newsCount = 0
            if news1 ~= '' then newsCount = newsCount + 1 end
            if news2 ~= '' then newsCount = newsCount + 1 end
            if news3 ~= '' then newsCount = newsCount + 1 end

            local sendMessage = ""
            local sendHour, sendMinute = os.date("*t").hour, os.date("*t").min

            if sendAtTime[0] then
                sendMinute = (sendMinute + timeDelay[0]) % 60
                if os.date("*t").min + timeDelay[0] >= 60 then
                    sendHour = (sendHour + 1) % 24
                end
            end

            if newsCount == 1 then
                sendMessage = sendAtTime[0] and string.format("/l (( в %02d:%02d кину одну ))", sendHour, sendMinute) or "/l (( кину одну ))"
            elseif newsCount == 3 then
                sendMessage = sendAtTime[0] and string.format("/l (( в %02d:%02d кину три ))", sendHour, sendMinute) or "/l (( кину три ))"
            end

            lua_thread.create(function()
                if sendMessage ~= "" then
                    sampSendChat(sendMessage, -1)
                    wait(3000)
                end

                if sendAtTime[0] then
                    local currentTime = os.date("*t")
                    local targetMinute = (currentTime.min + timeDelay[0]) % 60
                    local targetHour = currentTime.hour

                    if currentTime.min + timeDelay[0] >= 60 then
                        targetMinute = (currentTime.min + timeDelay[0]) % 60
                        targetHour = (currentTime.hour + 1) % 24
                    end

                    local targetTime = os.time({year=currentTime.year, month=currentTime.month, day=currentTime.day, hour=targetHour, min=targetMinute, sec=0})
                    local currentTimeInSecs = os.time(currentTime)

                    local waitTime = targetTime - currentTimeInSecs
                    wait(waitTime * 1000)
                end

                if news1 and news1 ~= '' then
                    sampAddChatMessage("/gnews MoH | " .. news1)
                    wait(900)
                end
                if news2 and news2 ~= '' then
                    sampAddChatMessage("/gnews MoH | " .. news2)
                    wait(900)
                end
                if news3 and news3 ~= '' then
                    sampAddChatMessage("/gnews MoH | " .. news3)
                    wait(900)
                end             
            end)
        end

        if imgui.CollapsingHeader(u8'Отправка по шаблонам') then
            if imgui.Button(u8'кнопка1', imgui.ImVec2(400, 0)) then
                inputGnewsText1 = ffi.new("char[?]", #(u8'текст) + 1, u8'текст')
                inputGnewsText2 = ffi.new("char[?]", #(u8'текст') + 1, u8'текст')
                inputGnewsText3 = ffi.new("char[?]", #(u8'текст') + 1, u8'текст')
            end
        end

    imgui.End()
end)
Так как я использую VS Code, "там где надо" у меня стоит u8 для корректного отображения кириллицы в imgui, но когда я загружаю его на GitHub с автообновлением, после самого "обновления" всё ломается вспять. Теперь - чтобы корректно отобразились символы, мне нужно наоборот, убрать u8 оттуда, где он стоит, и наоборот добавить туда, где его нет (тот же sampAddChatMessage с кодировкой CP51 (в редакторе) - он не нуждается в u8, но залив на ГитХаб - нужно поставить). По логике - просто сделать всё зеркально, убрать оттуда, где есть, добавить туда, где нет, но то ли это действительно сложно, то ли я просто не шарю - но вот с этим блоком кода у меня постоянно возникают краши или символы не отображаются кириллицей (вот эти "непонятные символы" вместо русских букв)
 

Tema05

Известный
1,487
454
Смотри, возьму в пример "самую сложную" для меня часть кода:

Код:
imgui.OnFrame(function() return showGnewsWindow[0] end, function()
    local X, Y = getScreenResolution()
    imgui.SetNextWindowSize(imgui.ImVec2(415, 279), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2(X / 2 - 207, Y / 2 - 139), imgui.Cond.FirstUseEver)

    darkStyle()

    imgui.Begin(u8"Добавление новости", showGnewsWindow)
        imgui.InputTextWithHint(u8'##gnewsInput1', u8'Введите первую новость', inputGnewsText1, 256)
        imgui.InputTextWithHint(u8'##gnewsInput2', u8'Введите вторую новость', inputGnewsText2, 256)
        imgui.InputTextWithHint(u8'##gnewsInput3', u8'Введите третью новость', inputGnewsText3, 256)

        imgui.Checkbox(u8"Отправка по времени", sendAtTime)

        if sendAtTime[0] then
            imgui.SliderInt(u8"Время (в минутах)", timeDelay, 1, 59)
        end

        if sendAtTime[0] then
            local currentTime = os.date("*t")
            local targetMinute = (currentTime.min + timeDelay[0]) % 60
            local targetHour = currentTime.hour

            if currentTime.min + timeDelay[0] >= 60 then
                targetMinute = (currentTime.min + timeDelay[0]) % 60
                targetHour = (currentTime.hour + 1) % 24
            end

            confirmationMessage = string.format("Новость будет отправлена в %02d:%02d", targetHour, targetMinute)
            imgui.Text(u8(confirmationMessage))
        end

        if imgui.Button(u8"Отправить", imgui.ImVec2(-1, 0)) then
            local news1 = u8:decode(ffi.string(inputGnewsText1))
            local news2 = u8:decode(ffi.string(inputGnewsText2))
            local news3 = u8:decode(ffi.string(inputGnewsText3))

            showGnewsWindow[0] = false

            -- Проверка на 2 строки (запрещено)
            if (news1 ~= '' and news2 ~= '') and news3 == '' then
                sampAddChatMessage('Вы не можете отправить 2 строки новости. Только 1 или 3', -2)
                return
            end

            local newsCount = 0
            if news1 ~= '' then newsCount = newsCount + 1 end
            if news2 ~= '' then newsCount = newsCount + 1 end
            if news3 ~= '' then newsCount = newsCount + 1 end

            local sendMessage = ""
            local sendHour, sendMinute = os.date("*t").hour, os.date("*t").min

            if sendAtTime[0] then
                sendMinute = (sendMinute + timeDelay[0]) % 60
                if os.date("*t").min + timeDelay[0] >= 60 then
                    sendHour = (sendHour + 1) % 24
                end
            end

            if newsCount == 1 then
                sendMessage = sendAtTime[0] and string.format("/l (( в %02d:%02d кину одну ))", sendHour, sendMinute) or "/l (( кину одну ))"
            elseif newsCount == 3 then
                sendMessage = sendAtTime[0] and string.format("/l (( в %02d:%02d кину три ))", sendHour, sendMinute) or "/l (( кину три ))"
            end

            lua_thread.create(function()
                if sendMessage ~= "" then
                    sampSendChat(sendMessage, -1)
                    wait(3000)
                end

                if sendAtTime[0] then
                    local currentTime = os.date("*t")
                    local targetMinute = (currentTime.min + timeDelay[0]) % 60
                    local targetHour = currentTime.hour

                    if currentTime.min + timeDelay[0] >= 60 then
                        targetMinute = (currentTime.min + timeDelay[0]) % 60
                        targetHour = (currentTime.hour + 1) % 24
                    end

                    local targetTime = os.time({year=currentTime.year, month=currentTime.month, day=currentTime.day, hour=targetHour, min=targetMinute, sec=0})
                    local currentTimeInSecs = os.time(currentTime)

                    local waitTime = targetTime - currentTimeInSecs
                    wait(waitTime * 1000)
                end

                if news1 and news1 ~= '' then
                    sampAddChatMessage("/gnews MoH | " .. news1)
                    wait(900)
                end
                if news2 and news2 ~= '' then
                    sampAddChatMessage("/gnews MoH | " .. news2)
                    wait(900)
                end
                if news3 and news3 ~= '' then
                    sampAddChatMessage("/gnews MoH | " .. news3)
                    wait(900)
                end            
            end)
        end

        if imgui.CollapsingHeader(u8'Отправка по шаблонам') then
            if imgui.Button(u8'кнопка1', imgui.ImVec2(400, 0)) then
                inputGnewsText1 = ffi.new("char[?]", #(u8'текст) + 1, u8'текст')
                inputGnewsText2 = ffi.new("char[?]", #(u8'текст') + 1, u8'текст')
                inputGnewsText3 = ffi.new("char[?]", #(u8'текст') + 1, u8'текст')
            end
        end

    imgui.End()
end)
Так как я использую VS Code, "там где надо" у меня стоит u8 для корректного отображения кириллицы в imgui, но когда я загружаю его на GitHub с автообновлением, после самого "обновления" всё ломается вспять. Теперь - чтобы корректно отобразились символы, мне нужно наоборот, убрать u8 оттуда, где он стоит, и наоборот добавить туда, где его нет (тот же sampAddChatMessage с кодировкой CP51 (в редакторе) - он не нуждается в u8, но залив на ГитХаб - нужно поставить). По логике - просто сделать всё зеркально, убрать оттуда, где есть, добавить туда, где нет, но то ли это действительно сложно, то ли я просто не шарю - но вот с этим блоком кода у меня постоянно возникают краши или символы не отображаются кириллицей (вот эти "непонятные символы" вместо русских букв)
ну значит ты его при загрузке перекодируешь в utf8
 

Dmitriy Makarov

25.05.2021
Проверенный
2,513
1,138
но когда я загружаю его на GitHub с автообновлением, после самого "обновления" всё ломается вспять.
Попробуй использовать DropBox вместо GitHub'а. Я в своё время использовал его как раз по этой причине.
Только учти, что в самом скрипте, который будет скачивать новую версию с DropBox'а, нужно в ссылке изменить в конце цифру "0" на цифру "1".
0 - Это режим предпросмотра
1 - Сразу скачивание
Screenshot_1.png
 

Tema05

Известный
1,487
454
Попробуй использовать DropBox вместо GitHub'а. Я в своё время использовал его как раз по этой причине.
Только учти, что в самом скрипте, который будет скачивать новую версию с DropBox'а, нужно в ссылке изменить в конце цифру "0" на цифру "1".
0 - Это режим предпросмотра
1 - Сразу скачивание
Посмотреть вложение 267141
Извините конечно. Но вы серьёзно с кодировкой все не можете разобраться? Это вообще не проблема гитхаба или любого другого сервиса. По такой логике если вы бинарник заливаете туда то в нём тоже представление определённых символов измениться, что означало бы неработоспособность программы. Я ещё 5 лет назад делал автообновление через гитхаб и всё прекрасно работало, сейчас перепроверил и никаких проблем нет. Если что-то не так с кодировкой это ошибка скриптера или реализации автообновления. На худой конец что мешает прогнать код через u8:decode?