bullet

четыреста четыре

Известный
Автор темы
120
20
Версия MoonLoader
.026-beta
Lua:
    function bullet(playerid)
local data = samp_create_sync_data('bullet', false)
data.targetType = 1
data.targetId = playerid
data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
data.target.x, data.target.y, data.target.z = target_x, target_y, target_z -- на эту строчку ругается
data.weaponId = getCurrentCharWeapon(PLAYER_PED)
data.send()
sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end



[ML] (error) chlen: H:\GTA San Andreas - Copy\moonloader\chlen.lua:8024: cannot convert 'nil' to 'float'
stack traceback:
H:\GTA San Andreas - Copy\moonloader\chlen.lua: in function 'bullet'
H:\GTA San Andreas - Copy\moonloader\chlen.lua:2531: in function <H:\GTA San Andreas - Copy\moonloader\chlen.lua:2530>
stack traceback:
[C]: in function 'create'
H:\GTA San Andreas - Copy\moonloader\chlen.lua:2530: in function <H:\GTA San Andreas - Copy\moonloader\chlen.lua:2529>
[ML] (error) chlen: Script died due to an error. (136FF394)
 

четыреста четыре

Известный
Автор темы
120
20
Не понял особо, но вроде переменные target_x, target_y, target_z равны nil на скок я понял. Эта функция типо пулю по айдишнику отправляет?
Описание: Универсальная функция для удобной отправки данных синхронизации. Умеет копировать данные локального игрока и игрока по иду. Требует SAMP.Lua.
Lua:
function samp_create_sync_data(sync_type, copy_from_player)
    local ffi = require 'ffi'
    local sampfuncs = require 'sampfuncs'
    -- from SAMP.Lua
    local raknet = require 'samp.raknet'
    require 'samp.synchronization'

    copy_from_player = copy_from_player or true
    local sync_traits = {
        player = {'PlayerSyncData', raknet.PACKET.PLAYER_SYNC, sampStorePlayerOnfootData},
        vehicle = {'VehicleSyncData', raknet.PACKET.VEHICLE_SYNC, sampStorePlayerIncarData},
        passenger = {'PassengerSyncData', raknet.PACKET.PASSENGER_SYNC, sampStorePlayerPassengerData},
        aim = {'AimSyncData', raknet.PACKET.AIM_SYNC, sampStorePlayerAimData},
        trailer = {'TrailerSyncData', raknet.PACKET.TRAILER_SYNC, sampStorePlayerTrailerData},
        unoccupied = {'UnoccupiedSyncData', raknet.PACKET.UNOCCUPIED_SYNC, nil},
        bullet = {'BulletSyncData', raknet.PACKET.BULLET_SYNC, nil},
        spectator = {'SpectatorSyncData', raknet.PACKET.SPECTATOR_SYNC, nil}
    }
    local sync_info = sync_traits[sync_type]
    local data_type = 'struct ' .. sync_info[1]
    local data = ffi.new(data_type, {})
    local raw_data_ptr = tonumber(ffi.cast('uintptr_t', ffi.new(data_type .. '*', data)))
    -- copy player's sync data to the allocated memory
    if copy_from_player then
        local copy_func = sync_info[3]
        if copy_func then
            local _, player_id
            if copy_from_player == true then
                _, player_id = sampGetPlayerIdByCharHandle(PLAYER_PED)
            else
                player_id = tonumber(copy_from_player)
            end
            copy_func(player_id, raw_data_ptr)
        end
    end
    -- function to send packet
    local func_send = function()
        local bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(bs, sync_info[2])
        raknetBitStreamWriteBuffer(bs, raw_data_ptr, ffi.sizeof(data))
        raknetSendBitStreamEx(bs, sampfuncs.HIGH_PRIORITY, sampfuncs.UNRELIABLE_SEQUENCED, 1)
        raknetDeleteBitStream(bs)
    end
    -- metatable to access sync data and 'send' function
    local mt = {
        __index = function(t, index)
            return data[index]
        end,
        __newindex = function(t, index, value)
            data[index] = value
        end
    }
    return setmetatable({send = func_send}, mt)
end
Примеры использования:
Lua:
-- отправка фейковой позиции
local data = samp_create_sync_data('player')
data.position.x = 1337
data.position.y = 1488
data.position.z = 42
data.send()

-- отправка синхронизации транспорта по иду с изменением здоровья
local _, id = sampGetVehicleIdByCarHandle(car)
local data = samp_create_sync_data('vehicle')
data.vehicleId = id
data.position.x, data.position.y, data.position.z = getCarCoordinates(car)
data.vehicleHealth = 0
data.send()

-- фейковый выстрел
local data = samp_create_sync_data('bullet', false)
data.targetType = 1
data.targetId = any_player_id
data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
data.target.x, data.target.y, data.target.z = target_x, target_y, target_z
data.weaponId = getCurrentCharWeapon(PLAYER_PED)
data.send()
сниппет фипа, вроде как должно отправлять по иду
 

MeG@LaDo[N] ^_^

Известный
280
319
Lua:
    function bullet(playerid)
local data = samp_create_sync_data('bullet', false)
data.targetType = 1
data.targetId = playerid
data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
data.target.x, data.target.y, data.target.z = target_x, target_y, target_z -- на эту строчку ругается
data.weaponId = getCurrentCharWeapon(PLAYER_PED)
data.send()
sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end



[ML] (error) chlen: H:\GTA San Andreas - Copy\moonloader\chlen.lua:8024: cannot convert 'nil' to 'float'
stack traceback:
H:\GTA San Andreas - Copy\moonloader\chlen.lua: in function 'bullet'
H:\GTA San Andreas - Copy\moonloader\chlen.lua:2531: in function <H:\GTA San Andreas - Copy\moonloader\chlen.lua:2530>
stack traceback:
[C]: in function 'create'
H:\GTA San Andreas - Copy\moonloader\chlen.lua:2530: in function <H:\GTA San Andreas - Copy\moonloader\chlen.lua:2529>
[ML] (error) chlen: Script died due to an error. (136FF394)
по факту data.target.x, data.target.y, data.target.z это куда пуля долетела,получай координаты playerid и вставляй туда
 

EclipsedFlow

Известный
Проверенный
1,043
474

Musaigen

abobusnik
Проверенный
1,606
1,361
Lua:
    function bullet(playerid)
local data = samp_create_sync_data('bullet', false)
data.targetType = 1
data.targetId = playerid
data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
data.target.x, data.target.y, data.target.z = target_x, target_y, target_z -- на эту строчку ругается
data.weaponId = getCurrentCharWeapon(PLAYER_PED)
data.send()
sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end



[ML] (error) chlen: H:\GTA San Andreas - Copy\moonloader\chlen.lua:8024: cannot convert 'nil' to 'float'
stack traceback:
H:\GTA San Andreas - Copy\moonloader\chlen.lua: in function 'bullet'
H:\GTA San Andreas - Copy\moonloader\chlen.lua:2531: in function <H:\GTA San Andreas - Copy\moonloader\chlen.lua:2530>
stack traceback:
[C]: in function 'create'
H:\GTA San Andreas - Copy\moonloader\chlen.lua:2530: in function <H:\GTA San Andreas - Copy\moonloader\chlen.lua:2529>
[ML] (error) chlen: Script died due to an error. (136FF394)
Переменных target_x/y/z не существует.
 

четыреста четыре

Известный
Автор темы
120
20
чот эта хуйня крашит

Lua:
function bullet(playerid)
local    _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
local target_x, target_y, target_z = getCharCoordinates(id)
local data = samp_create_sync_data('bullet', false)
data.targetType = 1
data.targetId = playerid
data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
data.target.x, data.target.y, data.target.z = target_x, target_y, target_z
data.weaponId = getCurrentCharWeapon(PLAYER_PED)
data.send()
sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end

opcode '00A0' call caused an unhandled exception
in function 'getCharCoordinates'
 

Kolbasa241

Известный
213
57
чот эта хуйня крашит

Lua:
function bullet(playerid)
local    _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
local target_x, target_y, target_z = getCharCoordinates(id)
local data = samp_create_sync_data('bullet', false)
data.targetType = 1
data.targetId = playerid
data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
data.target.x, data.target.y, data.target.z = target_x, target_y, target_z
data.weaponId = getCurrentCharWeapon(PLAYER_PED)
data.send()
sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end

opcode '00A0' call caused an unhandled exception
in function 'getCharCoordinates'
ты отправляешь пули в себя :ROFLMAO: (по твоей задумке). Да и getCharCoordinates должен принимать в себя хэндл перса, а не ID
P.S. PLAYER_PED - хэндл твоего перса
 

Kolbasa241

Известный
213
57
Lua:
function bullet(playerid)
    local result, HandlePlayer = sampGetCharHandleBySampPlayerId(playerid)
    local data = samp_create_sync_data('bullet', false)
    data.targetType = 1
    data.targetId = playerid
    data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
    data.target.x, data.target.y, data.target.z = getCharCoordinates(HandlePlayer)
    data.weaponId = getCurrentCharWeapon(PLAYER_PED)
    data.send()
    sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end
 

четыреста четыре

Известный
Автор темы
120
20
Lua:
function bullet(playerid)
    local result, HandlePlayer = sampGetCharHandleBySampPlayerId(playerid)
    local data = samp_create_sync_data('bullet', false)
    data.targetType = 1
    data.targetId = playerid
    data.origin.x, data.origin.y, data.origin.z = getActiveCameraCoordinates()
    data.target.x, data.target.y, data.target.z = getCharCoordinates(HandlePlayer)
    data.weaponId = getCurrentCharWeapon(PLAYER_PED)
    data.send()
    sampAddChatMessage("Пуля отправлена [" .. playerid .. "] успешна.", 0xFFFF00)
end
приятно, когда на практике хлебушкам вроде меня объясняют, спасибо
 
  • Нравится
Реакции: Kolbasa241