LUA скрипт Peek bot

В Токио растёт сакура, на бирже растёт акция
Эксперт
Статус
Оффлайн
Регистрация
2 Июн 2018
Сообщения
1,106
Реакции[?]
424
Поинты[?]
11K
code_language.lua:
local ffi = require 'ffi'
local bit = require 'bit'
local vector = require 'vector'
local trace = require 'gamesense/trace'

local menu = {
    main_switch =     ui.new_checkbox            ('LUA', 'B', 'Peek bot(beta)'),
    key =             ui.new_hotkey             ('LUA', 'B', 'Peek bot key', true, 0),
    mode =             ui.new_combobox            ('LUA', 'B', 'Detection mode', {'Risky', 'Safest'}),
    target =         ui.new_combobox            ('LUA', 'B', 'Detection target', {'Current', 'All target'}),
    hitbox =         ui.new_multiselect        ('LUA', 'B', 'Detection hitbox', {'Head', 'Neck', 'Chest', 'Stomach', 'Arms', 'Legs', 'Feet'}),
    tick =             ui.new_slider             ('LUA', 'B', 'Reserve extrapolate tick', 0, 5, 0),
    unlock =         ui.new_checkbox            ('LUA', 'B', 'Unlock camera'),
    segament =         ui.new_slider             ('LUA', 'B', 'Segament', 2, 60, 2),
    radius =         ui.new_slider             ('LUA', 'B', 'Radius', 0, 250, 50),
    depart =        ui.new_slider             ('LUA', 'B', 'Department', 1, 12, 2),
    middle =          ui.new_checkbox         ('LUA', 'B', 'Middle point'),
    limit =         ui.new_checkbox            ('LUA', 'B', 'Max prediction point limit'),
    limit_num =        ui.new_slider             ('LUA', 'B', 'Limit num', 0, 20, 5),
    debugger =         ui.new_multiselect         ('LUA', 'B', 'Debugger', {'Line player-predict', 'Line predict-target','Fraction detection', 'Base'}),
    color =          ui.new_color_picker     ('LUA', 'B', 'Debugger color', 255, 255, 255, 255)
}

local function g_menu_handler()
    local main = menu.main_switch
    for i,o in pairs(menu) do
        ui.set_visible(o, ui.get(main))
    end
    ui.set_visible(menu.limit_num, ui.get(main) and ui.get(menu.limit))
    ui.set_visible(main, true)
end

g_menu_handler()
for i,o in pairs(menu) do
    ui.set_callback(o, g_menu_handler)
end

local includes = function (table,key)
    for i=1, #table do
        if table[i] == key then
            return true;
        end;
    end;
    
    return false;
end

local function extrapolate( player , ticks , x, y, z )
    local xv, yv, zv =  entity.get_prop( player, "m_vecVelocity" )
    local new_x = x+globals.tickinterval( )*xv*ticks
    local new_y = y+globals.tickinterval( )*yv*ticks
    local new_z = z+globals.tickinterval( )*zv*ticks
    return new_x, new_y, new_z
end 

local is_in_air = function(player)
    return bit.band( entity.get_prop( player, "m_fFlags" ), 1 ) == 0
end


local r, g, b, a = 255, 255, 255, 255
local my_old_view = vector(0, 0, 0)
local my_old_vec = vector(0, 0, 0)
local minimum_damage = ui.reference('RAGE', 'Aimbot', 'Minimum damage')
local quick_peek_assist = { ui.reference("RAGE", "Other", "Quick peek assist") }
local quick_peek_assist_mode = { ui.reference("RAGE", "Other", "Quick peek assist mode") }

local function init_old()
    local me = entity.get_local_player()
    if me == nil then
        return 
    end
    local pitch, yaw = client.camera_angles()
    my_old_view = vector(pitch, yaw, 0)
    local x, y, z = entity.hitbox_position(me, 3)
    my_old_vec = vector(x, y, z)
end

local IS_WORKING = false
local WORKING_VEC = my_old_vec


local function vector_angles(x1, y1, z1, x2, y2, z2)
    local origin_x, origin_y, origin_z
    local target_x, target_y, target_z
    if x2 == nil then
        target_x, target_y, target_z = x1, y1, z1
        origin_x, origin_y, origin_z = client.eye_position()
        if origin_x == nil then
            return
        end
    else
        origin_x, origin_y, origin_z = x1, y1, z1
        target_x, target_y, target_z = x2, y2, z2
    end

    local delta_x, delta_y, delta_z = target_x-origin_x, target_y-origin_y, target_z-origin_z
    if delta_x == 0 and delta_y == 0 then
        return (delta_z > 0 and 270 or 90), 0
    else
        local yaw = math.deg(math.atan2(delta_y, delta_x))
        local hyp = math.sqrt(delta_x*delta_x + delta_y*delta_y)
        local pitch = math.deg(math.atan2(-delta_z, hyp))
        return pitch, yaw
    end
end

local function get_view_point(radius, v, vec)
    local me = entity.get_local_player()
    local eye_pos = vec
    local viewangle = my_old_view
    local a_vec = eye_pos + vector(0,0,0):init_from_angles(0, (90 + viewangle.y + radius), 0) * v
    return a_vec
end

local function get_predict_point(radius, segament, vec)
    local points = {}
    local me = entity.get_local_player()
    local my_vec = vec
    segament = math.max(2, math.floor(segament))
    local angles_pre_point = 360 / segament
    for i = 0, 360, angles_pre_point do
        local m_p = get_view_point(i, radius, my_vec)
        table.insert(points, m_p)
    end
    return points
end

local function get_depart_point(vec, my_vec, department, limit_vec)
    local vec_1 = vector(vec.x, vec.y, 0)
    local vec_2 = vector(my_vec.x, my_vec.y, 0)
    local vec_3 = vector(limit_vec.x, limit_vec.y, 0)

    local each_plus = (vec_1 - vec_2) / department
    local limit_vec_cal = (vec_3 - vec_2):length()

    local points = {}

    for i = 1, department do
        local add_vec = each_plus * i
        if add_vec:length() < limit_vec_cal then
            table.insert(points, my_vec + add_vec)
        end
    end

    return points
end

local function endpos(origin, dest)
    local local_player = entity.get_local_player()
    local tr = trace.line(origin, dest, { skip = local_player })
    local endpos = tr.end_pos
    return endpos, tr.fraction
end

local function draw_circle_3d(x, y, z, radius, r, g, b, a, accuracy, width, outline, start_degrees, percentage, fill_r, fill_g, fill_b, fill_a)
    local accuracy = accuracy ~= nil and accuracy or 3
    local width = width ~= nil and width or 1
    local outline = outline ~= nil and outline or false
    local start_degrees = start_degrees ~= nil and start_degrees or 0
    local percentage = percentage ~= nil and percentage or 1

    local center_x, center_y
    if fill_a then
        center_x, center_y = renderer.world_to_screen(x, y, z)
    end

    local screen_x_line_old, screen_y_line_old
    for rot=start_degrees, percentage*360, accuracy do
        local rot_temp = math.rad(rot)
        local lineX, lineY, lineZ = radius * math.cos(rot_temp) + x, radius * math.sin(rot_temp) + y, z
        local screen_x_line, screen_y_line = renderer.world_to_screen(lineX, lineY, lineZ)
        if screen_x_line ~=nil and screen_x_line_old ~= nil then
            if fill_a and center_x ~= nil then
                renderer.triangle(screen_x_line, screen_y_line, screen_x_line_old, screen_y_line_old, center_x, center_y, fill_r, fill_g, fill_b, fill_a)
            end
            for i=1, width do
                local i=i-1
                renderer.line(screen_x_line, screen_y_line-i, screen_x_line_old, screen_y_line_old-i, r, g, b, a)
                renderer.line(screen_x_line-1, screen_y_line, screen_x_line_old-i, screen_y_line_old, r, g, b, a)
            end
            if outline then
                local outline_a = a/255*160
                renderer.line(screen_x_line, screen_y_line-width, screen_x_line_old, screen_y_line_old-width, 16, 16, 16, outline_a)
                renderer.line(screen_x_line, screen_y_line+1, screen_x_line_old, screen_y_line_old+1, 16, 16, 16, outline_a)
            end
        end
        screen_x_line_old, screen_y_line_old = screen_x_line, screen_y_line
    end
end

local function calculate_end_pos(draw_line, draw_circle, debug_fraction, vec, my_vec)
    local me = entity.get_local_player()
    local dx, dy, dz = entity.get_origin(me)
    local debug_vec = vector(my_vec.x, my_vec.y, dz + 5)
    local debug_vec_2 = vector(vec.x, vec.y, dz + 5)
    local pos_1, fraction_1 = endpos(my_vec, vec)
    local pos_2, fraction_2 = endpos(debug_vec, debug_vec_2)

    local end_Pos = vector(pos_2.x, pos_2.y, vec.z)

    if draw_line then
        local x1, y1 = renderer.world_to_screen(pos_2.x, pos_2.y, pos_2.z)
        local x2, y2 = renderer.world_to_screen(debug_vec.x, debug_vec.y, debug_vec.z)
        renderer.line(x1, y1, x2, y2 , r, g, b, a)
    end

    if debug_fraction then
        local debug_text = tostring(math.floor(fraction_1) * 100)
        local x3, y3 = renderer.world_to_screen(debug_vec_2.x, debug_vec_2.y, debug_vec_2.z)
        renderer.text(x3, y3, r, g, b, a, 'c', 0, debug_text)
    end

    return end_Pos
end

local function calculate_real_point(draw_line, draw_circle, debug_fraction, vec)
    local points_list = {}
    local me = entity.get_local_player()
    local my_vec = vec
    local points = get_predict_point(ui.get(menu.radius), ui.get(menu.segament), my_vec)

    for i, o in pairs(points) do
        if ui.get(menu.middle) then
            local halfone = points[i+1]
            halfone = halfone == nil and points[1] or halfone
            local halfpoint = vector((halfone.x + o.x)/2 ,(halfone.y + o.y)/2, o.z)
            local end_pos = calculate_end_pos(draw_line,draw_circle ,debug_fraction, halfpoint, my_vec)
            table.insert(points_list, {
                endpos = end_pos,
                ideal = halfpoint
            })
        end
        local end_pos = calculate_end_pos(draw_line,draw_circle ,debug_fraction, o, my_vec)
        table.insert(points_list, {
            endpos = end_pos,
            ideal = o
        })
    end

    return points_list
end

local function run_all_Point(debug_line, debug_cir, debug_fraction, department, vec)
    local me = entity.get_local_player()
    local m_points = calculate_real_point(debug_line ,debug_cir ,debug_fraction, vec)
    local dx, dy, dz = entity.get_origin(me)
    local points = {}
    for i, o in pairs(m_points) do
        local calculate_vec = o.ideal
        local limit_vec = o.endpos
        table.insert(points, limit_vec)
        if debug_cir then
            draw_circle_3d(limit_vec.x, limit_vec.y, dz + 5, 5, r, g, b, a)
        end

        if department ~= 1 then
            for _, depart_vec in pairs(get_depart_point(calculate_vec, vec, department, limit_vec)) do
                table.insert(points, depart_vec)

                if debug_cir then
                    draw_circle_3d(depart_vec.x, depart_vec.y,dz + 5, 5, r, g, b, a)
                end
            end
        end
    end

    return points
end

local function get_peek_hitbox(content)
    local hitbox = {}
    if includes(content, 'Head') then
        table.insert(hitbox, 0)
    end

    if includes(content, 'Neck') then
        table.insert(hitbox, 1)
    end

    if includes(content, 'Chest') then
        table.insert(hitbox, 4)
        table.insert(hitbox, 5)
        table.insert(hitbox, 6)
    end

    if includes(content, 'Stomach') then
        table.insert(hitbox, 2)
        table.insert(hitbox, 3)
    end

    if includes(content, 'Arms') then
        table.insert(hitbox, 13)
        table.insert(hitbox, 14)
        table.insert(hitbox, 15)
        table.insert(hitbox, 16)
        table.insert(hitbox, 17)
        table.insert(hitbox, 18)
    end

    if includes(content, 'Legs') then
        table.insert(hitbox, 7)
        table.insert(hitbox, 8)
        table.insert(hitbox, 9)
        table.insert(hitbox, 10)
    end

    if includes(content, 'Feet') then
        table.insert(hitbox, 11)
        table.insert(hitbox, 12)
    end

    return hitbox
end

local function using_auto_peek()
    return (ui.get(quick_peek_assist[1]) and ui.get(quick_peek_assist[2]))
end

local function aiPeekrunner()
    local predict_tick = ui.get(menu.tick)
    local me = entity.get_local_player()
    if me == nil then return end

    if entity.is_alive(me) == false then
        return
    end

    if ui.get(menu.key) == false then
        return
    end

    local m_x, m_y, m_z = entity.hitbox_position(me, 3)
    local my_vec = vector(m_x, m_y, m_z)

    local mpitch, myaw = client.camera_angles()

    if ui.get(menu.main_switch) == false then
        return
    end

    local debugger = ui.get(menu.debugger)
    local m_points = run_all_Point(
        includes(debugger, 'Line player-predict'),
        includes(debugger, 'Base'),
        includes(debugger, 'Fraction detection'),
        ui.get(menu.depart),
        my_old_vec
    )
    local sort_type = ui.get(menu.mode)
    local p_Hitbox = get_peek_hitbox(ui.get(menu.hitbox))
    local p_List = {}
    if not (ui.get(menu.target) == 'Current') then
        local players = entity.get_players(true)
        if #players == 0 then
            WORKING_VEC = nil
            IS_WORKING = false
            return
        end
        for i,o in pairs(m_points) do
            for _,player in pairs(players) do
                local best_target = player
                for _,v in pairs(p_Hitbox) do
                    local ex, ey, ez = entity.hitbox_position(best_target, v)
                    local new_x, new_y, new_z = extrapolate(best_target, predict_tick, ex, ey, ez)
                    local e_vec = vector(new_x, new_y, new_z)
                    local _, dmg = client.trace_bullet(me, o.x, o.y, o.z, e_vec.x, e_vec.y, e_vec.z)
                    if dmg >= math.min(ui.get(minimum_damage), entity.get_prop(best_target, 'm_iHealth')) then
                        table.insert(p_List, {
                            TARGET = best_target,
                            damage = dmg,
                            vec = o,
                            enemy_vec = e_vec
                        })
                    end
                end
            end

            if ui.get(menu.limit) and #p_List >= ui.get(menu.limit_num) then
                break
            end
        end
    else
        local best_target = client.current_threat()
        if best_target == nil then
            WORKING_VEC = nil
            IS_WORKING = false
            return
        end
        for i,o in pairs(m_points) do
            for k,v in pairs(p_Hitbox) do
                local ex, ey, ez = entity.hitbox_position(best_target, v)
                local new_x, new_y, new_z = extrapolate(best_target, predict_tick, ex, ey, ez)
                local e_vec = vector(new_x, new_y, new_z)
                local _, dmg = client.trace_bullet(me, o.x, o.y, o.z, e_vec.x, e_vec.y, e_vec.z)
                if dmg > math.min(ui.get(minimum_damage), entity.get_prop(best_target, 'm_iHealth')) then
                    table.insert(p_List, {
                        TARGET = best_target,
                        damage = dmg,
                        vec = o,
                        enemy_vec = e_vec
                    })
                end
            end

            if ui.get(menu.limit) and #p_List >= ui.get(menu.limit_num) then
                break
            end
        end
    end

    table.sort(p_List, function(a, b)
        if sort_type == 'Risky' then
            return a.damage > b.damage
        else
            return a.damage < b.damage
        end
    end)

    for i,o in pairs(p_List) do
        if entity.is_alive(o.TARGET) == false then
            table.remove(p_List, i)
        end
    end

    local _, _, debug_point = entity.get_origin(me)
    if #p_List >= 1 then
        local lib = p_List[1]
        local vec = lib.vec
        local damage = lib.damage
        local e_vec = lib.enemy_vec
        local new_debug = vector(vec.x, vec.y, debug_point + 5)
        local x1, y1 = renderer.world_to_screen(new_debug.x, new_debug.y, new_debug.z)
        if includes(debugger, 'Line predict-target')  then
            local x2, y2 = renderer.world_to_screen(e_vec.x, e_vec.y, e_vec.z)
            renderer.line(x1, y1, x2, y2, r, g, b, a)
        end

        if y1 ~= nil then
            y1 = y1 - 12
        end

        local render_text = tostring(math.floor(damage))
        renderer.text(x1, y1 , r, g, b, a, 0, render_text)
        IS_WORKING = true
        WORKING_VEC = vec
    else
        WORKING_VEC = nil
        IS_WORKING = false
    end
end

local RUN_MOVEMENT = false
local function aiPeekragebot()
    if ui.get(menu.main_switch) == false then
        return
    end

    RUN_MOVEMENT = false
end

local function set_movement(cmd, desired_pos)
    local local_player = entity.get_local_player()
    local x, y, z = entity.get_prop(local_player, "m_vecAbsOrigin")
    local pitch, yaw = vector_angles(x, y, z, desired_pos.x, desired_pos.y, desired_pos.z)
    cmd.in_forward = 1
    cmd.in_back = 0
    cmd.in_moveleft = 0
    cmd.in_moveright = 0
    cmd.in_speed = 0

    cmd.forwardmove = 800
    cmd.sidemove = 0

    cmd.move_yaw = yaw
end

local indr, indg, indb, inda = 255, 255, 255, 255

local function aiPeekretreat(cmd)
    local me = entity.get_local_player()
    if me == nil then
        return
    end

    if ui.get(menu.main_switch) == false then
        return
    end

    if entity.is_alive(me) == false then
        return
    end

    local is_forward = cmd.in_forward == 1
    local is_backward = cmd.in_back == 1
    local is_left = cmd.in_moveleft == 1
    local is_right = cmd.in_moveright == 1

    if ui.get(menu.key) then

        local my_weapon = entity.get_player_weapon(me)
        if my_weapon == nil then
            return
        end

        local in_air = is_in_air(me)
        local timer = globals.curtime()
        local can_Fire = (entity.get_prop(me, "m_flNextAttack") <= timer and entity.get_prop(my_weapon, "m_flNextPrimaryAttack") <= timer)
        local x, y, z = entity.get_origin(me)

        if math.abs(x - my_old_vec.x) <= 10 then
            RUN_MOVEMENT = true
        end

        if can_Fire == false then
            RUN_MOVEMENT = false
        end
        indr, indg, indb, inda = 255, 255, 0, 255
        if IS_WORKING and RUN_MOVEMENT and in_air == false and WORKING_VEC ~= nil then
            set_movement(cmd, WORKING_VEC)
            indr, indg, indb, inda = 0, 255, 0, 255
        elseif RUN_MOVEMENT == false and in_air == false and is_forward == false and is_backward == false and is_left == false and is_right == false then
            set_movement(cmd, my_old_vec)
        end

    else
        indr, indg, indb, inda = 0, 255, 0, 255
    end
end

init_old()

client.set_event_callback("paint", function()
    if ui.get(menu.main_switch) == false then
        return
    end

    renderer.indicator(indr, indg, indb, inda, 'AI PEEK')
end)

client.set_event_callback("paint", aiPeekrunner)
client.set_event_callback("setup_command", aiPeekretreat)

client.set_event_callback("run_command", function()
    local me = entity.get_local_player()
    if me == nil then return end

    if entity.is_alive(me) == false then
        return
    end

    local m_x, m_y, m_z = entity.hitbox_position(me, 3)
    local my_vec = vector(m_x, m_y, m_z)
    local mpitch, myaw = client.camera_angles()

    if ui.get(menu.key) == false or ui.get(menu.unlock) then
        my_old_view = vector(mpitch, myaw, 0)
    end

    if ui.get(menu.key) == false then
        my_old_vec = my_vec
    end
end)
client.set_event_callback("aim_fire", aiPeekragebot)

жду на нл маркете от пастеров.
-- code by icealeximino -- qq:2152599380
 
Участник
Статус
Оффлайн
Регистрация
18 Апр 2016
Сообщения
433
Реакции[?]
257
Поинты[?]
5K
о эт китайский AI PEEK? по клипу, что я видел, прикольная штучка

upd. да на форуме увидел тред, это оно =D
 
Последнее редактирование:
Олдфаг
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
2,585
Реакции[?]
1,436
Поинты[?]
2K
Можно ревью на данную луа или клип как оно воркает, ибо хуй пойми что это.
 
Участник
Статус
Оффлайн
Регистрация
30 Авг 2020
Сообщения
662
Реакции[?]
396
Поинты[?]
11K
Можно ревью на данную луа или клип как оно воркает, ибо хуй пойми что это.
Из каждой точки кидается трейс в клозест енеми и если трейс валид (нет стен и т.п), то бот пикает .
Количество этих сегментов выставляется в луашке , дальность и так далее.
1652709652094.png
Можно даже такой мемес сделать
1652709725202.png
UPD: Хуйня эта жрет тонну фпс и криво воркает если ты и енеми на разных плоскостях.
 
Начинающий
Статус
Оффлайн
Регистрация
27 Дек 2019
Сообщения
171
Реакции[?]
27
Поинты[?]
1K
Из каждой точки кидается трейс в клозест енеми и если трейс валид (нет стен и т.п), то бот пикает .
Количество этих сегментов выставляется в луашке , дальность и так далее.
Посмотреть вложение 203869
Можно даже такой мемес сделать
Посмотреть вложение 203871
UPD: Хуйня эта жрет тонну фпс и криво воркает если ты и енеми на разных плоскостях.
играть вообще возможно? ну, не тот случай когда 5 фпс из 300 осталось?
 
Участник
Статус
Оффлайн
Регистрация
30 Авг 2020
Сообщения
662
Реакции[?]
396
Поинты[?]
11K
Последнее редактирование:
Олдфаг
Статус
Оффлайн
Регистрация
28 Дек 2018
Сообщения
2,585
Реакции[?]
1,436
Поинты[?]
2K
Из каждой точки кидается трейс в клозест енеми и если трейс валид (нет стен и т.п), то бот пикает .
Количество этих сегментов выставляется в луашке , дальность и так далее.
Посмотреть вложение 203869
Можно даже такой мемес сделать
Посмотреть вложение 203871
UPD: Хуйня эта жрет тонну фпс и криво воркает если ты и енеми на разных плоскостях.
а нахуй оно вообще всралось, в 22 году школьники уже и пикнуть сами не могут? бред.
 
Содер
Участник
Статус
Оффлайн
Регистрация
23 Мар 2021
Сообщения
573
Реакции[?]
228
Поинты[?]
18K
Из каждой точки кидается трейс в клозест енеми и если трейс валид (нет стен и т.п), то бот пикает .
Количество этих сегментов выставляется в луашке , дальность и так далее.
Посмотреть вложение 203869
Можно даже такой мемес сделать
Посмотреть вложение 203871
UPD: Хуйня эта жрет тонну фпс и криво воркает если ты и енеми на разных плоскостях.
Рендер убрать и фпс жрать не будет
 
Начинающий
Статус
Оффлайн
Регистрация
27 Дек 2019
Сообщения
171
Реакции[?]
27
Поинты[?]
1K
я потестил это и могу сказать что такое юзать будет не по рофлу только начинающий хвх школьник рядовой, но идея сама по себе классная, правда реализация говнище ввиду некоторых тонкостей в апи.
 
Canis canem edit
Участник
Статус
Оффлайн
Регистрация
20 Дек 2019
Сообщения
993
Реакции[?]
340
Поинты[?]
142K
я потестил это и могу сказать что такое юзать будет не по рофлу только начинающий хвх школьник рядовой, но идея сама по себе классная, правда реализация говнище ввиду некоторых тонкостей в апи.
попытался пофиксить, в итоге с криками "еб твою нахуй мать, да почему блять эта хуйня не пикает чела с роллом" решил забросить. Идея хорошая тут ты прав, но код черт ногу сломит. Имхо, даже пропустив её через
Пожалуйста, авторизуйтесь для просмотра ссылки.
(спасибо челу с форума с ником Coronavirus) оно отказывалось просто наглухо запускаться, а когда и это удалось починить фпс с 200 падал до 1 при пике. Зато, почувствовал флешбеки с в4 ав, когда пикаешь 3-4 человека в одном видимом радиусе с 2016-17 годов.
Если подводить итог, страшно.
Работает ли оно? -да. Но через такие костыли, что пиздец. У юзеров ot и ав код чище.
Можно ли с этим играть? -если у тебя слишком мощный пк. (да, о работоспособности писал на форуме)
Стоит ли оно того? -каждому своё. Но 1-5 фпс не радуют.
Стоит ли это фиксить? -нет.
 
Последнее редактирование:
Новичок
Статус
Оффлайн
Регистрация
17 Май 2021
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Failed to load lua New Script --ERROR--
[string "local ffi = require 'ffi'..."]:7: attempt to index global 'ui' (a nil value)
stack traceback:
[string "local ffi = require 'ffi'..."]:7: in main chunk--
 
Забаненный
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
442
Реакции[?]
212
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу