ищу плагин для замыливания лиц персонажей в самп с помощью мозайки в реальном времени

anorakasi

Новичок
Автор темы
3
2
Версия SA-MP
  1. Любая
суть скрипта проста, а вот реализация не то что сложная, скорее не выполнимая, сделать тот же самый эффект на лицах как в игре "NIGHT-RUNNERS PROLOGUE"
 
  • Нравится
Реакции: kinamaster22

Орк

Известный
399
344
Скинь скриншот как должно выглядеть, ибо посмотрел игру и ничего не понял

Или тебе обычная мозайка нужна?
og_og_1645265153231176212.jpg
 

kinamaster22

Известный
1,344
215
Скинь скриншот как должно выглядеть, ибо посмотрел игру и ничего не понял

Или тебе обычная мозайка нужна?Посмотреть вложение 260337
Ему надо что бы как во втором варианте, только на всё лицо и что бы она была не как текстура на персонаже, а накладывалась в реальном времени

Скинь скриншот как должно выглядеть, ибо посмотрел игру и ничего не понял

Или тебе обычная мозайка нужна?Посмотреть вложение 260337
возможно что-то типо такого ему надо
 

XRLM

Против ветра рождённый
Модератор
1,631
1,281
Ему надо что бы как во втором варианте, только на всё лицо и что бы она была не как текстура на персонаже, а накладывалась в реальном времени


возможно что-то типо такого ему надо
эффект мозаики из игры, которую он упомянул, немного отличается. там скорее не только лицо скрыто, а вся голова полностью. смотрел только скрины этой игры, возможно ошибаюсь. вчера начал делать такое, если хуй не забью, то в ближайшее время сделаю.
 
  • Нравится
Реакции: kinamaster22

anorakasi

Новичок
Автор темы
3
2
апдейт: я плюс минус понял как это можно реализовать, однако мой скрипт не работает, писал сам, иногда прося подсказок у GPT

Код:
script_name("FaceCensor")
script_version_number(1)
script_version("1.0")
script_author("anorakasi")

local ffi = require 'ffi'
local sampfuncs = require 'sampfuncs'
local memory = require 'memory'
local render = require 'render'

local censored_players = {}

local pixel_size = 5
local mosaic_width = 30
local mosaic_height = 40

local function getPlayerPed(playerId)
    local ped = sampfuncs.GetPlayerPed(playerId)
    if ped == 0 then return nil end
    return ped
end

local function getHeadPos(playerPed)
    local ped_ptr = memory.getint(ped)
    if ped_ptr == 0 then return nil end
    local head_offset = 0x230 -- этот оффсет нужно проверить под твою версию
    local x = memory.getfloat(ped_ptr + head_offset)
    local y = memory.getfloat(ped_ptr + head_offset + 4)
    local z = memory.getfloat(ped_ptr + head_offset + 8)
    return x, y, z
end

local function getHeadScreenCoords(playerId)
    local ped = getPlayerPed(playerId)
    if not ped then return nil end
    local x, y, z = getHeadPos(ped)
    if not x then return nil end
    local sx, sy, sz = render.world_to_screen(x, y, z)
    if sx == nil or sy == nil then return nil end
    return sx, sy
end

function main()
    repeat wait(100) until isSampAvailable()

    sampRegisterChatCommand("censor", function(arg)
        local id = tonumber(arg)
        if not id or id < 0 or id > 1000 then
            sampAddChatMessage("[FaceCensor] Некорректный ID игрока", 0xFF0000)
            return
        end
        censored_players[id] = true
        sampAddChatMessage("[FaceCensor] Цензура включена для игрока ID " .. id, 0x00FF00)
    end)

    sampRegisterChatCommand("uncensor", function(arg)
        local id = tonumber(arg)
        if not id or id < 0 or id > 1000 then
            sampAddChatMessage("[FaceCensor] Некорректный ID игрока", 0xFF0000)
            return
        end
        censored_players[id] = nil
        sampAddChatMessage("[FaceCensor] Цензура отключена для игрока ID " .. id, 0xFFFF00)
    end)

    while true do
        wait(0)
    end
end

function onRender()
    for playerId, _ in pairs(censored_players) do
        local sx, sy = getHeadScreenCoords(playerId)
        if sx and sy then
            for x = 0, mosaic_width - 1 do
                for y = 0, mosaic_height - 1 do
                    if (x + y) % 2 == 0 then
                        render.drawRect(sx + x * pixel_size, sy + y * pixel_size, pixel_size, pixel_size, 0xFF888888)
                    else
                        render.drawRect(sx + x * pixel_size, sy + y * pixel_size, pixel_size, pixel_size, 0xFFBBBBBB)
                    end
                end
            end
        end
    end
end

долго парился, изучал в целом язык и возможности либов и луа скриптов, получилось вот это чудо, которое не работает, GPT пишет что у меня проблемы с названием (это не так), проблемы с мунлоадером (это не так)

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

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

как исправлю проблему с переводом и мозайкой отпишу в новый пост и выложу
 
Последнее редактирование: