проверка на пикап

w99zzl1

Участник
Автор темы
157
18
Версия MoonLoader
.026-beta
Приветствую. Есть ли какой то способ, чтобы проверить, взял ли игрок пикап? Нужно работать с определенным пикапом на сервере. Как сделать проверку на то, что пользователь взял именно этот пикап? К примеру, если вошел в каллигулу (= взял пикап) то скрипт написал что то в чат. Возможно ли такое, и как это воплотить? И кстати, раз уж на то пошло, как получить ид пикапа) никак не могу найти в интернете подобного "хелпера"
 
Решение
Берешь список пикапов в стриме
Дальше чекаешь синхронизация игрока на координаты пикапов. Если он попал в радиусе 2 метра, или сколько там. Нужно скорректировать чтобы правильно работал алгоритм, он и может не попадает если не нажмет Alt (или как-там), а может и без Alt (по моему такого нет проверка чтобы там требовало или без)

kyrtion

Известный
1,142
413
Берешь список пикапов в стриме
Дальше чекаешь синхронизация игрока на координаты пикапов. Если он попал в радиусе 2 метра, или сколько там. Нужно скорректировать чтобы правильно работал алгоритм, он и может не попадает если не нажмет Alt (или как-там), а может и без Alt (по моему такого нет проверка чтобы там требовало или без)
 
  • Влюблен
Реакции: w99zzl1

w99zzl1

Участник
Автор темы
157
18
Lua:
local ffi = require("ffi")
local vector = require("vector3d")

local PICKUP_POOL = 0
local NOTIFY_DISTANCE = 2.0  -- дистанция в метрах

function main()
    while not isSampAvailable() do
        wait(0)
    end
    PICKUP_POOL = sampGetPickupPoolPtr()
    while true do
        checkPlayerPickup()
        wait(100)
    end
end

function checkPlayerPickup()
    local playerPos = vector(getCharCoordinates(PLAYER_PED))
    for id = 0, 4096 do
        local PICKUP_HANDLE = sampGetPickupHandleBySampId(id)
        if PICKUP_HANDLE ~= 0 then
            local pickupPos = vector(getPickupCoordinates(PICKUP_HANDLE))
            local distance = getDistanceBetweenCoords3d(playerPos.x, playerPos.y, playerPos.z, pickupPos.x, pickupPos.y, pickupPos.z)
            if distance <= NOTIFY_DISTANCE then -- тут ещё можно сделать проверку на if id == id пикапа, на который нужно тригерить
                notify(id, distance)
            end
        end
    end
end

function notify(pickupId, distance)
    sampAddChatMessage(string.format("{FF1493}[Pickup Alert]: {FFFFFF} в %.2f м от пикапа ID: %d", distance, pickupId), 0xFF1493)
end
 
  • Нравится
Реакции: kyrtion