Отключение анимации

boy next door

Участник
Автор темы
254
23
Версия MoonLoader
.026-beta
На сервере где я играю присутствует анимация блокировки ударов в ЗЗ.
Как её отключить? Номер анимации 1168.

Lua:
require('lib.moonloader')
local event = require('lib.samp.events')
local imgui = require 'mimgui'
local encoding = require 'encoding'
local ad = require 'ADDONS'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local new = imgui.new

local renderWindow = new.bool(false)

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)

local dialog = 1277
local animation = 1166

local animzz = new.bool(false)
local dialogzz = new.bool(false)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('Main Window', renderWindow)
        if ad.ToggleButton(u8'Анимация в ЗЗ', animzz) then

        end
        if ad.ToggleButton(u8'Диалог в ЗЗ', dialogzz) then

        end
        imgui.End()
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('azz', function() renderWindow[0] = not renderWindow[0] end)
    while true do wait(0) end
end

На сервере где я играю присутствует анимация блокировки ударов в ЗЗ.
Как её отключить? Номер анимации 1168.

Lua:
require('lib.moonloader')
local event = require('lib.samp.events')
local imgui = require 'mimgui'
local encoding = require 'encoding'
local ad = require 'ADDONS'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local new = imgui.new

local renderWindow = new.bool(false)

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)

local dialog = 1277
local animation = 1166

local animzz = new.bool(false)
local dialogzz = new.bool(false)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('Main Window', renderWindow)
        if ad.ToggleButton(u8'Анимация в ЗЗ', animzz) then

        end
        if ad.ToggleButton(u8'Диалог в ЗЗ', dialogzz) then

        end
        imgui.End()
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('azz', function() renderWindow[0] = not renderWindow[0] end)
    while true do wait(0) end
end
сделал вот так, но перса фризит
Lua:
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('azz', function() renderWindow[0] = not renderWindow[0] end)
    while true do wait(0)
        if animzz[0] then
            taskPlayAnim(PLAYER_PED, "PED", "HANDSCOWER", 0, false, false, false, false, -1)
        end
    end
end
 
Последнее редактирование:

meowprd

Тот самый Котовский
Проверенный
1,302
731
Работать с RPC ApplyPlayerAnimation (ID: 86)
Parameters: UINT16 wPlayerID, UINT8 AnimLibLength, char[] AnimLib, UINT8 AnimNameLength, char[] AnimName, float fDelta, bool loop, bool lockx, bool locky, bool freeze, UINT32 dTime

или

Lua:
local events = require('samp.events')

function events.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    -- code  
end
 

boy next door

Участник
Автор темы
254
23
Работать с RPC ApplyPlayerAnimation (ID: 86)
Parameters: UINT16 wPlayerID, UINT8 AnimLibLength, char[] AnimLib, UINT8 AnimNameLength, char[] AnimName, float fDelta, bool loop, bool lockx, bool locky, bool freeze, UINT32 dTime

или

Lua:
local events = require('samp.events')

function events.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    -- code 
end
я дурной. типо так?

Lua:
function event.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    if animzz[0] then
        taskPlayAnim(PLAYER_PED, "PED", "HANDSCOWER", 0, false, false, false, false, -1)
    end
end
 

meowprd

Тот самый Котовский
Проверенный
1,302
731
я дурной. типо так?

Lua:
function event.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    if animzz[0] then
        taskPlayAnim(PLAYER_PED, "PED", "HANDSCOWER", 0, false, false, false, false, -1)
    end
end
не совсем
Lua:
function sampev.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    local file, name = sampGetAnimationNameAndFile(1168) -- 1168 = animation id
    if id == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and name == string.upper(animName) then return false end
end
 

boy next door

Участник
Автор темы
254
23
не совсем
Lua:
function sampev.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    local file, name = sampGetAnimationNameAndFile(1168) -- 1168 = animation id
    if id == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and name == string.upper(animName) then return false end
end
и опять же проблема.
я уже просто вывел эту функцию без чекбокса, но оно всё равно воспроизводит анимацию, а этого не должно быть.
Lua:
function event.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    -- if animzz[0] then
        local file, name = sampGetAnimationNameAndFile(1168) -- 1168 = animation id
        if id == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and name == string.upper(animName) then return false end
    -- end
end
 

meowprd

Тот самый Котовский
Проверенный
1,302
731
и опять же проблема.
я уже просто вывел эту функцию без чекбокса, но оно всё равно воспроизводит анимацию, а этого не должно быть.
Lua:
function event.onApplyPlayerAnimation(playerId, animLib, animName, frameDelta, loop, lockX, lockY, freeze, time)
    -- if animzz[0] then
        local file, name = sampGetAnimationNameAndFile(1168) -- 1168 = animation id
        if id == select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) and name == string.upper(animName) then return false end
    -- end
end
перепроверяй айдишники анимаций, делай отладку
проверяй соответствие animname и получаемого name из sampGetAnimationNameAndFile