Софт RakSAMP Lite

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Функция позволяет получать исходящие данные синхронизации из любого участка кода.
Принимает в себя ID пакета. При желании можно с легкостью переделать под входящую синхронизацию (если не забуду, то может сделаю) и сделать аналог функциям из муна sampStorePlayerOnfootData, sampStorePlayerIncarData и т.д

Lua:
local ffi = require("ffi")
require 'samp.synchronization'
require 'sampfuncs'

local storePackets = {
    [PACKET_PLAYER_SYNC] = {},
    [PACKET_VEHICLE_SYNC] = {},
    [PACKET_AIM_SYNC] = {}
}

local syncTypes = {
    [PACKET_PLAYER_SYNC] = "PlayerSyncData",
    [PACKET_VEHICLE_SYNC] = "VehicleSyncData",
    [PACKET_AIM_SYNC] = "AimSyncData"
}

registerHandler("onSendPacket", function(id, bs)
    if storePackets[id] ~= nil and syncTypes[id] ~= nil then
        bs:ignoreBits(8) -- skip packetid
        local new_sync_data = ffi.new(syncTypes[id])
        local syncPointer = tonumber(ffi.cast('intptr_t', ffi.cast('void*', new_sync_data)))
        local result = bs:readBuffer(syncPointer, ffi.sizeof(new_sync_data))
        if result then
            storePackets[id] = new_sync_data
        end
    end
end)

function storeSyncData(packet_id)
    return storePackets[packet_id]
end

-- example
function onRunCommand(command)
    if command == "!test" then
        local aim_sync_data = storeSyncData(PACKET_AIM_SYNC)
        print(aim_sync_data.camMode) -- return cam mode

        local player_sync_data = storeSyncData(PACKET_PLAYER_SYNC)
        print(player_sync_data.specialAction) -- return special action
    end
end
 

Rei

Известный
Автор темы
Друг
1,589
1,619
Функция позволяет получать исходящие данные синхронизации из любого участка кода.
Принимает в себя ID пакета. При желании можно с легкостью переделать под входящую синхронизацию (если не забуду, то может сделаю) и сделать аналог функциям из муна sampStorePlayerOnfootData, sampStorePlayerIncarData и т.д

Lua:
local ffi = require("ffi")
require 'samp.synchronization'
require 'sampfuncs'

local storePackets = {
    [PACKET_PLAYER_SYNC] = {},
    [PACKET_VEHICLE_SYNC] = {},
    [PACKET_AIM_SYNC] = {}
}

local syncTypes = {
    [PACKET_PLAYER_SYNC] = "PlayerSyncData",
    [PACKET_VEHICLE_SYNC] = "VehicleSyncData",
    [PACKET_AIM_SYNC] = "AimSyncData"
}

registerHandler("onSendPacket", function(id, bs)
    if storePackets[id] ~= nil and syncTypes[id] ~= nil then
        bs:ignoreBits(8) -- skip packetid
        local new_sync_data = ffi.new(syncTypes[id])
        local syncPointer = tonumber(ffi.cast('intptr_t', ffi.cast('void*', new_sync_data)))
        local result = bs:readBuffer(syncPointer, ffi.sizeof(new_sync_data))
        if result then
            storePackets[id] = new_sync_data
        end
    end
end)

function storeSyncData(packet_id)
    return storePackets[packet_id]
end

-- example
function onRunCommand(command)
    if command == "!test" then
        local aim_sync_data = storeSyncData(PACKET_AIM_SYNC)
        print(aim_sync_data.camMode) -- return cam mode

        local player_sync_data = storeSyncData(PACKET_PLAYER_SYNC)
        print(player_sync_data.specialAction) -- return special action
    end
end
Lua:
function samp_create_sync_data(sync_type)
	-- from SAMP.Lua
	local raknet = require 'samp.raknet'
	require 'samp.synchronization'

	local sync_traits = {
		player = {'PlayerSyncData', raknet.PACKET.PLAYER_SYNC },
		vehicle = {'VehicleSyncData', raknet.PACKET.VEHICLE_SYNC },
		passenger = {'PassengerSyncData', raknet.PACKET.PASSENGER_SYNC },
		aim = {'AimSyncData', raknet.PACKET.AIM_SYNC },
		trailer = {'TrailerSyncData', raknet.PACKET.TRAILER_SYNC },
		unoccupied = {'UnoccupiedSyncData', raknet.PACKET.UNOCCUPIED_SYNC },
		bullet = {'BulletSyncData', raknet.PACKET.BULLET_SYNC },
		spectator = {'SpectatorSyncData', raknet.PACKET.SPECTATOR_SYNC }
	}
	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)))

	-- function to send packet
	local func_send = function()
		local bs = bitStream.new()
		bs:writeUInt8(sync_info[2])
		bs:writeBuffer(raw_data_ptr, ffi.sizeof(data))
		bs:sendPacketEx(HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 1)
		bs:reset()
	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, data.position.y, data.position.z = getBotPosition()
data.quaternion[0], data.quaternion[1], data.quaternion[2], data.quaternion[3] = getBotQuaternion()
data.health = getBotHealth()
data.armor = getBotArmor()
-- анимку и флаги бы еще
data.send()
 
  • Нравится
Реакции: fantomas69 и Rafinad

tgk26

Новичок
8
1
Кто может подсказать,как настроить по уму,чтобы на игроков ставить его и было сложно с него слезть,мб какие то луа есть или настройки чтобы айпи не банило и тд
 

sаnеk

Всефорумный sanek
Друг
2,107
2,059
Кто может подсказать,как настроить по уму,чтобы на игроков ставить его и было сложно с него слезть,мб какие то луа есть или настройки чтобы айпи не банило и тд
что там с реконнектом? завезешь возможность его откоючения и фикс задержки 9999999999?
 

Azller Lollison

я узбек
Друг
1,342
2,266
Кто может подсказать,как настроить по уму,чтобы на игроков ставить его и было сложно с него слезть,мб какие то луа есть или настройки чтобы айпи не банило и тд
sampban.com

без мозгоебли с сервером, проксями и так далее, за тебя с этим поебались мы

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

vlaDICK2288

Активный
144
42
1676009234692.png

и как что
 

CaJlaT

Овощ
Модератор
2,805
2,606
В рандомное время проигрывается 8-битный писк, что это значит?
@Rei заебал этот писк, пищит даже когда никаких процессов на пк нет, кроме раксампа.
Писк очень громкий, даже когда я в другйо части комнаты, из наушников его слышно
 

Kenshi.

Известный
274
121
Крашит при вызове функции с командой !reloadlua - runCommand("!reloadlua"), при чем только при вызове в событии onRunCommand или в потоке. До обновы не крашило, делал сокращение команды - !rl, такой кстати эффект у RakBot имеется. С другими командами зависания/краша клиента не наблюдается.
согласен, на версии 18.09.22 не крашит, хоть и в этой части ничего не менялось)
да и в этой части ничего не менялось
 

хомяк553

Известный
231
144
@Rei заебал этот писк, пищит даже когда никаких процессов на пк нет, кроме раксампа.
Писк очень громкий, даже когда я в другйо части комнаты, из наушников его слышно
Это не из-за раксампа, у тебя с пк проблемы

У меня такой писк на пк был когда процессор на 100% загружен был
 

Rei

Известный
Автор темы
Друг
1,589
1,619
да не знаю я что за писк, скорее всего он у тебя в голове

upd: кто хочет так же
Lua:
local ffi = require("ffi")

ffi.cdef[[
	typedef unsigned long DWORD;
	int Beep(DWORD dwFreq, DWORD dwDuration);
]]

ffi.C.Beep(2000, 500)
 
Последнее редактирование:

_raz0r

t.me/sssecretway | ТГК: t.me/razor_code
Модератор
1,889
3,050
Когда просто проц нагружен без раксампа, то писка нет 🤨
как раз есть, он обычно появляется когда компу уже вообще хуево становится
я тебе уже говорил, что там нигде Beep внутри раксампа не вызывается