Вопрос [NL] Как определить свое положение?

Начинающий
Статус
Оффлайн
Регистрация
7 Май 2022
Сообщения
68
Реакции[?]
18
Поинты[?]
5K
Всем ку, недавно начал изучать луа-скриптинг и решил написать свой билдер на NL. Но столкнулся с проблемой, т.к не могу понять как нам получить местоположение себя (типо global, standing и т.д). Смотрел в исходниках у других луашек, но они там написаны как-то замудрено и я конечно могу в тупую спастить, но я хочу именно сам понять как это реализовать.
Я не прошу прислать мне исходник, можно просто идею, чтобы я понял как это вообще работает, спасибо.
 
Посрал
Участник
Статус
Оффлайн
Регистрация
28 Ноя 2020
Сообщения
525
Реакции[?]
153
Поинты[?]
1K
не могу понять как нам получить местоположение себя (типо global, standing и т.д).
local flags = entity.get_local_player().m_fFlags

Через флаги можно сделать часть действий.

256 - in air
257 - on ground
262 - in air+crouch
263 - crouch

Тут есть проблема - если ты бхопишь, то на 1 тик касаешься земли => Стейт меняется (аир->граунд) и аа свитчаются. Если сильно волнует это, там можно сделать проверку через количество тиков, которое ты находишься на земле. (Домой приду и скину)

local induck = entity.get_local_player().m_flDuckAmount > 0

Проверка на крауч другим методом.

И про велосити не забудь, просто скорость через нетпроп получи.


Билдер выглядит примерно так:

if state == standing and aaForThisConditionCheckboxStanding then aa(stand) --еслм чек бокс стендингов включен и ты стоишь, то сетаются аа для стендов
elseid state == moving and aaForThisConditionCheckboxMoving then
aa(moving) --для мувов
else
aa(global)
end

И так дальше с другими стейтами
 
Juicy
Участник
Статус
Оффлайн
Регистрация
5 Май 2021
Сообщения
677
Реакции[?]
158
Поинты[?]
17K
Если сильно волнует это, там можно сделать проверку через количество тиков, которое ты находишься на земле. (Домой приду и скину)
get_ground_ticks func:
local gt

local function get_ground_ticks()
    local g = bit.band(entity.get_local_player().m_fFlags, 1) == 1
    gt = g and gt + 1 or 0
    return gt
end

if state == standing and aaForThisConditionCheckboxStanding then aa(stand) --еслм чек бокс стендингов включен и ты стоишь, то сетаются аа для стендов
elseid state == moving and aaForThisConditionCheckboxMoving then
aa(moving) --для мувов
else
aa(global)
end

builder example:
local vars = {
    current_state = nil,
    states = {'писька', 'попка'}
}

local menu = {
    builders = {
        base = { },
        defensive = { }
    }
}

for i, s in ipairs(vars.states) do
    menu.builders.base[s] = { }
    local ctx = menu.builders.base[s]

    ctx.overriden_state = groups.anti_hit.position:switch('Override \v' .. s)

    ctx.yaw_method = groups.anti_hit.yaw:combo('Method\aFFFFFF00' .. s, {'Off', 'Static', 'Jitter'})
    ctx.yaw_offset = groups.anti_hit.yaw:slider('Offset\aFFFFFF00' .. s, -180, 180)
end

events.createmove:set(function(cmd)
    vars.current_state = get_state(cmd)
    local adjusted_state = menu.builders.base[vars.current_state].overriden_state:get() and vars.current_state or 'Shared'
    local ctx = menu.builders.base[adjusted_state]

    if ctx.yaw_method:get() == 'Static' then
        yaw.offset:override(ctx.yaw_offset:get())
    end
end)
надо дописать самому естественно а не "втупую спастить", прям как ты и просил, надеюсь помог ибо я устал все это переименовывать что бы было более понятно... (это тсу)


Так же хотел бы добавить, узнай хотя бы не много с каким евентом ты работаешь.

Например createmove, он обновляется вроде 64 раза в секунду, потому что тирейт сервера == 64 тикам(количество обновлений анимок игрока в секунду следовательно) тоже достаточно важно, ведь был такой индивид который в рендер евенте аашки делал... сумасшедший...)

Также следуя из информации выше 'количество обновлений анимок игрока в секунду следовательно', нам не надо проверять:

сервер шизофрения:
events.createmove:set(function(cmd)
    local m = entity.get_local_player()
    if not m then return end -- нету смысла

    print('сосал? -' .. m)
end)
Надеюсь снова достаточно понятно объяснил, мб где то не прав поправите ес чо.
 
Последнее редактирование:
Сверху Снизу