Не работают кнопки

Tema05

Известный
Автор темы
1,441
401
Версия MoonLoader
.026-beta
Иногда в скрипте происходит баг при котором в imgui поля нельзя вводить русский текст но при этом можно вставить.
Так-же isKeyJustPressed тоже тупо не видит кнопки. Хз как с таким быть.
 

|DEVIL|

Известный
359
273
Как я помню если вместо русских символов пустота это значит ты в кодировку UTF-8 это не преобразил, насчёт кнопок если ты юзаешь VK_KEYS То советую от этого дела отказаться и юзать айди кнопок циферные, инфа о них по этой ссылке https://www.blast.hk/threads/8760/ , так же скинь код, ото как говорил челик выше мы не телепаты)
 

Tema05

Известный
Автор темы
1,441
401
Скрипт нормально работает всё как надо но в какой-то момент при русской раскладке тупо игнорит все кнопки включая imgui. Но при этом скопировать и вставить в поле для текста можно, блочится именно с клавы. Как только включаешь английскую раскладку сразу всё начинает работать.
Скрипт 11к+ строк.
Lua:
function imgui.CheckButton(arg1, arg2)
if button_name == ""
  then
   if tostring(mainIni[arg1][arg2]):find("&")
    then
     if isKeyDown(tonumber(mainIni[arg1][arg2]:match("(%d+)&"))) and isKeyJustPressed(tonumber(mainIni[arg1][arg2]:match("&(%d+)"))) and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
    else
     local keys = ""
     for k, v in pairs(key) do
      if isKeyDown(v) and v ~= VK_RBUTTON and v ~= VK_LBUTTON and v ~= VK_MENU and v ~= VK_ESCAPE and v ~= VK_CONTROL and v ~= VK_SHIFT and v ~= VK_ALT and v ~= VK_RETURN and v ~= VK_BACK
       then
        if keys == ""
         then
          keys = v
         elseif tostring(keys):find("&") == nil
          then
           keys = keys .. "&" .. v
        end
      end
     end
     if isKeyJustPressed(tonumber(mainIni[arg1][arg2])) and keys == mainIni[arg1][arg2] and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
   end
end
return false
end
Как я помню если вместо русских символов пустота это значит ты в кодировку UTF-8 это не преобразил, насчёт кнопок если ты юзаешь VK_KEYS То советую от этого дела отказаться и юзать айди кнопок циферные, инфа о них по этой ссылке https://www.blast.hk/threads/8760/ , так же скинь код, ото как говорил челик выше мы не телепаты)
Я использую id'шники кнопок. Пример: 164&34
 

|DEVIL|

Известный
359
273
Скрипт нормально работает всё как надо но в какой-то момент при русской раскладке тупо игнорит все кнопки включая imgui. Но при этом скопировать и вставить в поле для текста можно, блочится именно с клавы. Как только включаешь английскую раскладку сразу всё начинает работать.
Скрипт 11к+ строк.
Lua:
function imgui.CheckButton(arg1, arg2)
if button_name == ""
  then
   if tostring(mainIni[arg1][arg2]):find("&")
    then
     if isKeyDown(tonumber(mainIni[arg1][arg2]:match("(%d+)&"))) and isKeyJustPressed(tonumber(mainIni[arg1][arg2]:match("&(%d+)"))) and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
    else
     local keys = ""
     for k, v in pairs(key) do
      if isKeyDown(v) and v ~= VK_RBUTTON and v ~= VK_LBUTTON and v ~= VK_MENU and v ~= VK_ESCAPE and v ~= VK_CONTROL and v ~= VK_SHIFT and v ~= VK_ALT and v ~= VK_RETURN and v ~= VK_BACK
       then
        if keys == ""
         then
          keys = v
         elseif tostring(keys):find("&") == nil
          then
           keys = keys .. "&" .. v
        end
      end
     end
     if isKeyJustPressed(tonumber(mainIni[arg1][arg2])) and keys == mainIni[arg1][arg2] and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
   end
end
return false
end

Я использую id'шники кнопок. Пример: 164&34
Ну, тут мои полномочия всё :D
 

Warflex

Участник
158
17
Скрипт нормально работает всё как надо но в какой-то момент при русской раскладке тупо игнорит все кнопки включая imgui. Но при этом скопировать и вставить в поле для текста можно, блочится именно с клавы. Как только включаешь английскую раскладку сразу всё начинает работать.
Скрипт 11к+ строк.
Lua:
function imgui.CheckButton(arg1, arg2)
if button_name == ""
  then
   if tostring(mainIni[arg1][arg2]):find("&")
    then
     if isKeyDown(tonumber(mainIni[arg1][arg2]:match("(%d+)&"))) and isKeyJustPressed(tonumber(mainIni[arg1][arg2]:match("&(%d+)"))) and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
    else
     local keys = ""
     for k, v in pairs(key) do
      if isKeyDown(v) and v ~= VK_RBUTTON and v ~= VK_LBUTTON and v ~= VK_MENU and v ~= VK_ESCAPE and v ~= VK_CONTROL and v ~= VK_SHIFT and v ~= VK_ALT and v ~= VK_RETURN and v ~= VK_BACK
       then
        if keys == ""
         then
          keys = v
         elseif tostring(keys):find("&") == nil
          then
           keys = keys .. "&" .. v
        end
      end
     end
     if isKeyJustPressed(tonumber(mainIni[arg1][arg2])) and keys == mainIni[arg1][arg2] and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
   end
end
return false
end

Я использую id'шники кнопок. Пример: 164&34
Если там и в правду 11к+ строк то.... так и будет, скорее всего, просто процессор не вывозит с потоками он просто что то не обрабатывает
 

Jesus McWood

Участник
76
33
Скрипт нормально работает всё как надо но в какой-то момент при русской раскладке тупо игнорит все кнопки включая imgui. Но при этом скопировать и вставить в поле для текста можно, блочится именно с клавы. Как только включаешь английскую раскладку сразу всё начинает работать.
Скрипт 11к+ строк.
Lua:
function imgui.CheckButton(arg1, arg2)
if button_name == ""
  then
   if tostring(mainIni[arg1][arg2]):find("&")
    then
     if isKeyDown(tonumber(mainIni[arg1][arg2]:match("(%d+)&"))) and isKeyJustPressed(tonumber(mainIni[arg1][arg2]:match("&(%d+)"))) and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
    else
     local keys = ""
     for k, v in pairs(key) do
      if isKeyDown(v) and v ~= VK_RBUTTON and v ~= VK_LBUTTON and v ~= VK_MENU and v ~= VK_ESCAPE and v ~= VK_CONTROL and v ~= VK_SHIFT and v ~= VK_ALT and v ~= VK_RETURN and v ~= VK_BACK
       then
        if keys == ""
         then
          keys = v
         elseif tostring(keys):find("&") == nil
          then
           keys = keys .. "&" .. v
        end
      end
     end
     if isKeyJustPressed(tonumber(mainIni[arg1][arg2])) and keys == mainIni[arg1][arg2] and not sampIsChatInputActive()
      then
       if sampIsDialogActive() and sampGetCurrentDialogType() == 1 or sampIsDialogActive() and sampGetCurrentDialogType() == 3
        then
         return false
        else
         return true
       end
     end
   end
end
return false
end

Я использую id'шники кнопок. Пример: 164&34
Брат. Тут уже всё. Но дам совет. Есть вот люди, делают код на 1к строк, не тестили ни разу. Потом в игру заходят. Тут ошибка. И всё. Пол кода переписывай. По этому чаще тести. Ну а тут уже всё. Никак. =(
 

Tema05

Известный
Автор темы
1,441
401
Брат. Тут уже всё. Но дам совет. Есть вот люди, делают код на 1к строк, не тестили ни разу. Потом в игру заходят. Тут ошибка. И всё. Пол кода переписывай. По этому чаще тести. Ну а тут уже всё. Никак. =(
Это далеко мой не 1 скрипт тем более такой большой. И не делать тесты это глупо. Я как только добавляю что-то я тупо сижу и думаю как можно это сломать.
Например: /callid (позвонить по id) Делаю проверку на правильно введённый айди, на нахождение игрока с этим id на сервере, на нахождение юзера на нужном сервере, наличие телефона, наличие денег на телефоне, открыт ли телефон, введён ли какой либо номер, доступен ли абонент, если ли у него сим карта, не разговаривает ли он с кем-то и т.п. На тесты и продумывание всех нюансов тратится в 2 раза больше времени чем на написание кода. Я на аризоне тратил огромные количество виртов что-бы всё тестить прорывался в госки по блату и т.д. У скрипта вышло уже 76 обновлений.

Тут факт что ты это сказал наводит на мысль что таким не занимаются. Ведь у некоторых скриптов новичков сразу можно понять как их можно сломать и что они не предусмотрели.
Если там и в правду 11к+ строк то.... так и будет, скорее всего, просто процессор не вывозит с потоками он просто что то не обрабатывает
Но именно английскую раскладку он обрабатывает нормально. Даже цифра '1' не печатается на русской но при этом отлично на английской. (есть вариант что это только на ДРП, я функция не менял очень долго но на аризоне всё норм. Вот как легко было новичком, всегда есть ответ на вопрос. Сейчас уже пошло что-то сложное и мало где можно найти инфу.
 
  • Нравится
Реакции: Quit

Jesus McWood

Участник
76
33
Это далеко мой не 1 скрипт тем более такой большой. И не делать тесты это глупо. Я как только добавляю что-то я тупо сижу и думаю как можно это сломать.
Например: /callid (позвонить по id) Делаю проверку на правильно введённый айди, на нахождение игрока с этим id на сервере, на нахождение юзера на нужном сервере, наличие телефона, наличие денег на телефоне, открыт ли телефон, введён ли какой либо номер, доступен ли абонент, если ли у него сим карта, не разговаривает ли он с кем-то и т.п. На тесты и продумывание всех нюансов тратится в 2 раза больше времени чем на написание кода. Я на аризоне тратил огромные количество виртов что-бы всё тестить прорывался в госки по блату и т.д. У скрипта вышло уже 76 обновлений.

Тут факт что ты это сказал наводит на мысль что таким не занимаются. Ведь у некоторых скриптов новичков сразу можно понять как их можно сломать и что они не предусмотрели.

Но именно английскую раскладку он обрабатывает нормально. Даже цифра '1' не печатается на русской но при этом отлично на английской. (есть вариант что это только на ДРП, я функция не менял очень долго но на аризоне всё норм. Вот как легко было новичком, всегда есть ответ на вопрос. Сейчас уже пошло что-то сложное и мало где можно найти инфу.
Тут я без силен. Брат, Пиши скриптерам, пусть ищут проблему