Софт RakSAMP Lite

DarkVenom

Новичок
11
0
slapfix by dimiano, но тебе нужно будет добавить мин координата x, макс координата x, мин координата y, макс координата y, макс высота крыши в интерьере.
А как понять эти координаты? Через какой то скрипт отдельный?
 

Bobers

Новичок
12
2
С помощью данного скрипта можно узнать в организации бот или нет.


Lua:
function sampev.onDisplayGameText(style, time, text)
    if text:find("hungry") then
        newTask(function()
            wait(math.random(2000, 3500))
            sendInput("/cheeps")
        end)
    end
end
Будет есть, когда высветится надпись "hungry".

В начало кода если нету, то добавить
Lua:
math.randomseed(os.time()*os.clock()*math.random())
math.random(); math.random(); math.random()


!coord x y z - если вручную
или если кодом, то coordStart(x, y, z, time, step, true/false)
Почему то не роботает у меня автоеда, кто знает почему?
 

Caskey

Новичок
18
2
Дайте пж настраиваемый рекконект на него, чтобы можно было делай после РР настроить
 

Ejik_Letchik

Новичок
11
23
В sampev в событиях onPlayerSync(playerId, data) и onVehicleSync(playerId, vehicleId, data) неверно считывается вектор скорости. Возможно проблема в этой части кода:

Код из bitstream_io для RakSAMP Lite:
mod.compressedVector = {
    read = function(bs)
        local magnitude = bs:readFloat()
        if magnitude ~= 0 then
            local readCf = mod.compressedFloat.read
            return vector3d(readCf(bs) * magnitude, readCf(bs) * magnitude, readCf(bs) * magnitude)
        else
            return vector3d(0, 0, 0)
        end
    end,
    write = function(bs, data)
        local x, y, z = data.x, data.y, data.z
        local magnitude = math.sqrt(x * x + y * y + z * z)
        bs:writeFloat(magnitude)
        if magnitude > 0 then
            local writeCf = mod.compressedFloat.write
            writeCf(bs, x / magnitude)
            writeCf(bs, y / magnitude)
            writeCf(bs, z / magnitude)
        end
    end
}
mod.compressedFloat = {
    read = function(bs)
        return bs:readInt16() / 32767.5 - 1
    end,
    write = function(bs, value)
        if value < -1 then
            value = -1
        elseif value > 1 then
            value = 1
        end
        bs:writeInt16((value + 1) * 32767.5)
    end
}


Код из bitstream_io, используемой в игре:
mod.compressedVector = {
    read = function(bs)
        local magnitude = raknetBitStreamReadFloat(bs)
        if magnitude ~= 0 then
            local readCf = mod.compressedFloat.read
            return vector3d(readCf(bs) * magnitude, readCf(bs) * magnitude, readCf(bs) * magnitude)
        else
            return vector3d(0, 0, 0)
        end
    end,
    write = function(bs, data)
        local x, y, z = data.x, data.y, data.z
        local magnitude = math.sqrt(x * x + y * y + z * z)
        raknetBitStreamWriteFloat(bs, magnitude)
        if magnitude > 0 then
            local writeCf = mod.compressedFloat.write
            writeCf(bs, x / magnitude)
            writeCf(bs, y / magnitude)
            writeCf(bs, z / magnitude)
        end
    end
}

mod.compressedFloat = {
    read = function(bs)
        return raknetBitStreamReadInt16(bs) / 32767.5 - 1
    end,
    write = function(bs, value)
        if value < -1 then
            value = -1
        elseif value > 1 then
            value = 1
        end
        raknetBitStreamWriteInt16(bs, (value + 1) * 32767.5)
    end
}

Например, такой код даёт разный результат в игре и в RakSAMP:

Пример кода:
--Вариант в игре
function sampev.onPlayerSync(playerId, data)
    lua_thread.create(function()
        if settings.maincfg.sendTargets then
            
            local vecX = data.position.x + (data.moveSpeed.x * 100) -- Увеличенный вектор, для наглядности
            local vecY = data.position.y + (data.moveSpeed.y * 100)    -- Увеличенный вектор, для наглядности
            local vecZ = data.position.z + (data.moveSpeed.z * 100)    -- Увеличенный вектор, для наглядности
            
            local wX1, wY1 = convert3DCoordsToScreen(data.position.x, data.position.y, data.position.z)
            local wX2, wY2 = convert3DCoordsToScreen(vecX, vecY, vecZ)
            renderDrawLine(wX1, wY1, wX2, wY2, 1, 0xFFFFFFFF)--Для игры. Вектор скорости отрисуется корректно.
            print("PlayerSyncData:", data.position.x, data.position.y, data.position.z, data.moveSpeed.x * 100, data.moveSpeed.y * 100, data.moveSpeed.z * 100)
            --printf здесь выдаст разный по направлению результат вектора скорости
        end   
    end)
end

--Вариант для бота
function sampev.onPlayerSync(playerId, data)
    newTask(function()
        if settings.maincfg.sendTargets then
             local sendData = {
                data.position.x,
                data.position.y,
                data.position.z,
                data.position.x + (data.moveSpeed.x * 100),
                data.position.y + (data.moveSpeed.y * 100),
                data.position.z + (data.moveSpeed.z * 100)
            }
            renderOnClient(data)--Функция отрабатывает корректно, искажений при передаче нет. Вектор скорости отрисуется некорректно, из-за неверных данных от бота
            print("PlayerSyncData:", data.position.x, data.position.y, data.position.z, data.moveSpeed.x * 100, data.moveSpeed.y * 100, data.moveSpeed.z * 100)
            --printf здесь выдаст разный по направлению результат вектора скорости
        end   
    end)
end
 

Rei

Известный
Автор темы
Друг
1,611
1,668
В sampev в событиях onPlayerSync(playerId, data) и onVehicleSync(playerId, vehicleId, data) неверно считывается вектор скорости. Возможно проблема в этой части кода:

Код из bitstream_io для RakSAMP Lite:
mod.compressedVector = {
    read = function(bs)
        local magnitude = bs:readFloat()
        if magnitude ~= 0 then
            local readCf = mod.compressedFloat.read
            return vector3d(readCf(bs) * magnitude, readCf(bs) * magnitude, readCf(bs) * magnitude)
        else
            return vector3d(0, 0, 0)
        end
    end,
    write = function(bs, data)
        local x, y, z = data.x, data.y, data.z
        local magnitude = math.sqrt(x * x + y * y + z * z)
        bs:writeFloat(magnitude)
        if magnitude > 0 then
            local writeCf = mod.compressedFloat.write
            writeCf(bs, x / magnitude)
            writeCf(bs, y / magnitude)
            writeCf(bs, z / magnitude)
        end
    end
}
mod.compressedFloat = {
    read = function(bs)
        return bs:readInt16() / 32767.5 - 1
    end,
    write = function(bs, value)
        if value < -1 then
            value = -1
        elseif value > 1 then
            value = 1
        end
        bs:writeInt16((value + 1) * 32767.5)
    end
}


Код из bitstream_io, используемой в игре:
mod.compressedVector = {
    read = function(bs)
        local magnitude = raknetBitStreamReadFloat(bs)
        if magnitude ~= 0 then
            local readCf = mod.compressedFloat.read
            return vector3d(readCf(bs) * magnitude, readCf(bs) * magnitude, readCf(bs) * magnitude)
        else
            return vector3d(0, 0, 0)
        end
    end,
    write = function(bs, data)
        local x, y, z = data.x, data.y, data.z
        local magnitude = math.sqrt(x * x + y * y + z * z)
        raknetBitStreamWriteFloat(bs, magnitude)
        if magnitude > 0 then
            local writeCf = mod.compressedFloat.write
            writeCf(bs, x / magnitude)
            writeCf(bs, y / magnitude)
            writeCf(bs, z / magnitude)
        end
    end
}

mod.compressedFloat = {
    read = function(bs)
        return raknetBitStreamReadInt16(bs) / 32767.5 - 1
    end,
    write = function(bs, value)
        if value < -1 then
            value = -1
        elseif value > 1 then
            value = 1
        end
        raknetBitStreamWriteInt16(bs, (value + 1) * 32767.5)
    end
}

Например, такой код даёт разный результат в игре и в RakSAMP:

Пример кода:
--Вариант в игре
function sampev.onPlayerSync(playerId, data)
    lua_thread.create(function()
        if settings.maincfg.sendTargets then
           
            local vecX = data.position.x + (data.moveSpeed.x * 100) -- Увеличенный вектор, для наглядности
            local vecY = data.position.y + (data.moveSpeed.y * 100)    -- Увеличенный вектор, для наглядности
            local vecZ = data.position.z + (data.moveSpeed.z * 100)    -- Увеличенный вектор, для наглядности
           
            local wX1, wY1 = convert3DCoordsToScreen(data.position.x, data.position.y, data.position.z)
            local wX2, wY2 = convert3DCoordsToScreen(vecX, vecY, vecZ)
            renderDrawLine(wX1, wY1, wX2, wY2, 1, 0xFFFFFFFF)--Для игры. Вектор скорости отрисуется корректно.
            print("PlayerSyncData:", data.position.x, data.position.y, data.position.z, data.moveSpeed.x * 100, data.moveSpeed.y * 100, data.moveSpeed.z * 100)
            --printf здесь выдаст разный по направлению результат вектора скорости
        end  
    end)
end

--Вариант для бота
function sampev.onPlayerSync(playerId, data)
    newTask(function()
        if settings.maincfg.sendTargets then
             local sendData = {
                data.position.x,
                data.position.y,
                data.position.z,
                data.position.x + (data.moveSpeed.x * 100),
                data.position.y + (data.moveSpeed.y * 100),
                data.position.z + (data.moveSpeed.z * 100)
            }
            renderOnClient(data)--Функция отрабатывает корректно, искажений при передаче нет. Вектор скорости отрисуется некорректно, из-за неверных данных от бота
            print("PlayerSyncData:", data.position.x, data.position.y, data.position.z, data.moveSpeed.x * 100, data.moveSpeed.y * 100, data.moveSpeed.z * 100)
            --printf здесь выдаст разный по направлению результат вектора скорости
        end  
    end)
end
попробуй с этим
 
  • Нравится
Реакции: Ejik_Letchik

Cocolemunto.

Потрачен
124
34
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Дайте пж настраиваемый рекконект на него, чтобы можно было делай после РР настроить
Lua:
function sampev.onServerMessage(color, text)
    if text:find("произойдет технический рестарт сервера") then
        reconnect(720000) -- либо свое время в мс
    end
end

Это только на аризону

А где вообще эти координаты вбивать? Я скачал slapfix by dimiano и SAmin.hmap, где то видел что нужен txt файл, но где его взять?
создать папку slapfix, закинуть туда SAmin.hmap и создать файлик interiors.txt, а после вносить корды через ;
 

Cocolemunto.

Потрачен
124
34
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Последнее редактирование:

DarkVenom

Новичок
11
0
Скачал раксамп на дедик ( windows ), все работает, но почему то все буквы в иероглифах, как можно починить?
 

Bobers

Новичок
12
2
У кого есть обход лаунчера, чтобы всем показывало что боты играют с лаунчера?