Исправление кода

White_Eye

Новичок
Автор темы
14
1
Версия MoonLoader
Другое
Приветствую, я бы хотел попросить, посмотреть код и что бы помогли его исправить, этот код на автоловлю страховок в страховой компании, в чат пишет, что автоловли включена, но ничего не ловит
local sampfuncs = require 'sampfuncs'
local sampev = require('lib.samp.events')
local name, number = 'cord', 0
local activate = false

function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand("stk", function()
activate = not activate
sampAddChatMessage(activate and "[InsuranceAuto]: {FFFFFF}Автоловля включена!" or "[InsuranceAuto]: {FFFFFF}Автоловля выключена!", 0x2568BE)
end)
repeat wait(0) until sampIsLocalPlayerSpawned()
sampAddChatMessage('[InsuranceAuto]: {FFFFFF}Скрипт загружен!', 0x2568BE)
sampAddChatMessage('[InsuranceAuto]: {FFFFFF}Активация /stk', 0x2568BE)
sampAddChatMessage('[InsuranceAuto]: {FFFFFF}Автор Theopka | ТГ канал @TheopkaStudio', 0x2568BE)
wait(-1)
end
function sampev.onServerMessage(color, text)
if activate then
if text:match('(.-) подал заявление на страхование имущества, номер заявления: №(%d+)') then
lua_thread.create(function()
ALT()
sampSendDialogResponse(15095, 1, number, "")
wait(100)
sampSendDialogResponse(15096, 1, 0, "")
end)
end
end
end
function press(sync_type, keysData)
local dataa = samp_create_sync_data(sync_type)
local x, y, z = getCharCoordinates(PLAYER_PED)
dataa.keysData = keysData
dataa.position = { x, y, z }
dataa.send()
end
function ALT()
press('player', 1024)
end


function samp_create_sync_data(sync_type, copy_from_player) -- by https://www.blast.hk/threads/13380/post-153001
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
 

Tectrex

Известный
135
164
Ты просто в match не сохранил номер заявления, вот скрипт и тупит - смотри, надо num = text:match(...), а потом его юзать. Без этого ты как будто в пустоту отвечаешь, автоловля работает, но ловит пустоту. Подкинь переменную, и будет тебе счастье
 
  • Нравится
Реакции: romanespit

romanespit

Участник
21
7
Плюс если сервер умирает и ответит диалогом 15096 дольше, чем за 100мс (обычно в х4 такое встречается), то вот такая реализация
Код:
sampSendDialogResponse(15095, 1, number, "")
wait(100)
sampSendDialogResponse(15096, 1, 0, "")
может попросту не сработать. Лучше на евенты перевести.