вопросы к шарящим в lua

  • Гость, поучаствуй в создании лаунчера! Напиши те скрипты, которые считаешь базой для удобной игры. Принять участие!
  • Привет! Если твой основной форумник заблокирован - ты можешь оставить заявку в этом разделе: Нажми на меня!, НЕ создавая новый форумный аккаунт.
Статус
В этой теме нельзя размещать новые ответы.

.хлестаков

андерграунд против чепухи
Автор темы
1,567
20,561
решил я значится давеча решить проблему, которой не было -- написать фаст сс на луа. суть проста донельзя, правда вдовесок нужен скриншот.аси -- но не думаю что это проблема. так вот -- суть заключается в том, что при нажатии на кнопку убирается худ, делается скрин /стандартным методом/ (через ф8) и худ возвращается обратно.

для решения проблемы я нашел скрипты которые убирают худ, опытным путем вычислил что за что отвечает, написал простенький код и... потерпел факап.

на данный момент код выглядит вот так (поясняю комментами че к чему)

Код:
script_author('xxx')
script_version_number(1.0)

local vkeys = require 'vkeys'
local displayState = true
local radarState = 0
local render = false
local memory = require 'memory'

function main()
    while not isSampAvailable() do wait(10000) end
    sampAddChatMessage('{0000CD}[Screen Maker]: {FFFFFF}Anal "//cc".',-1)
    sampRegisterChatCommand('/cc', screen_cmd) --отладочный код на активацию по команде, спизжен с еще одного скрипта
    while true do
        wait(0)
    end
end

function Hud()
    while true do
    wait (0)
        if hud then
            displayState = not displayState
            if displayState then radarState = 0 else radarState = 2 end
            displayHud(displayState)
            writeMemory(12216172, 1, radarState, true)
        end
    end
end
lua_thread.create(Hud)

--это кусок отвечающий за уборку худа, также невозбранно выдернутый. есть такой же скрипт от никишинова, но он реализован кривее, и вообще я его еле нашел

function screen_cmd()
    lua_thread.create(function()
        wait(0)
        hud = true
        wait(1)
        setVirtualKeyDown(119, true)
        wait(1)
        setVirtualKeyDown(119, false)
        wait(101)
        hud = false
        wait(1)
        sampAddChatMessage('{0000CD}[Screen Maker]: {FFFFFF}Penis.')
    end)
end

-- собсна, это набор команд, чтобы сделать скрин -- убрать худ, сделать скрин, вернуть худ.

проблемы с которыми я столкнулся:
1) скрипт не работает на кнопку. даже если screen_cmd() полностью перенести в main(). по команде заводится, по кнопке нет. хоть isKeyDown, хоть wasKeyPressed
2) худ нормально не убирается. ну то есть, он убирается, но моментально ставится назад и так по кругу. получается он как бы /мигает/, включается и выключается.
3) вытекает из второй -- к концу исполнения скрипта худ не всегда возвращается на место. приходится исполнять еще раз.

также мне не нравится говнокодерская реализация через wait(x), хотелось бы данное вот это вот делать максимально быстро.
прошу помощи, ибо я стопроцентно делаю что-то не так.
 
  • Вау
Реакции: endencias homicidal
Решение
ну если ты ждал такой результат как на гифке, решение в том что ты ретерн функции не въебал.






исправленный
Код:
function Hud()
    while true do
    wait (0)
        if hud then
            displayState = not displayState
            if displayState then radarState = 0 else radarState = 2 end
            displayHud(displayState)
            writeMemory(12216172, 1, radarState, true)
       return false end
       end
    end

.хлестаков

андерграунд против чепухи
Автор темы
1,567
20,561
лучше лей вопрос на - BLASTHACK - Explosive Gamehacking -, там люди шарят во всех дырах луа и дадут ответ.
в целом, тз-то не бог весть какое сложное, я думаю, тут найдутся люди шарящие. да и на бластхаке я не сижу.

но если ответа не будет, попрошу помощи там, конечно.
 

testoffaith

Постоянный
263
2,641
ну если ты ждал такой результат как на гифке, решение в том что ты ретерн функции не въебал.






исправленный
Код:
function Hud()
    while true do
    wait (0)
        if hud then
            displayState = not displayState
            if displayState then radarState = 0 else radarState = 2 end
            displayHud(displayState)
            writeMemory(12216172, 1, radarState, true)
       return false end
       end
    end
 
  • Нравится
Реакции: .хлестаков
Статус
В этой теме нельзя размещать новые ответы.