Софт RakSAMP Lite

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,927
1,297
Всем привет, хочу чуть переписать под себя всем известный скрипт SlapFix. Для того чтобы как либо изменять логику скрипта, нужно постоянно проверять, работает ли он, у меня увы нет знакомых админов, которые могут давать мне slap, поэтому написал скрипт для имитации slap. Скрипт работает, персонаж подлетает в небо на заданное количество метров, но SlapFix на это действие никак не реагирует, подскажите, почему так? Скрипт для имитации slap прикладываю.


Lua RakSamp script:
require("addon")
local sampev = require("samp.events")

function makeSlap(hightIncreaseNum)
    local x, y, z = getBotPosition()
    local newZ = z + hightIncreaseNum
    setBotPosition(x, y, newZ)
    updateBotSync()
end


function onRunCommand(cmd)
    if cmd:find("^!slap %d+$") then
        makeSlap(tonumber(cmd:match("%d+")))
        return false
    end
end
этот слапфикс реагирует на событие смены позиции бота сервером, а setBotPosition такого события не вызывает
самостоятельно дергай логику слапфикса после makeSlap
 

aberdean

Новичок
6
1
этот слапфикс реагирует на событие смены позиции бота сервером, а setBotPosition такого события не вызывает
самостоятельно дергай логику слапфикса после makeSlap
SlapFix завязан на событие sampev.onSetPlayerPos(), которое приходит от сервера, поэтому он не реагирует на мой скрипт, как можно имитировать приход этого события от сервера, с моими же координатами, но Z+5(условно), подскажешь, пожалуйста?
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,927
1,297
SlapFix завязан на событие sampev.onSetPlayerPos(), которое приходит от сервера, поэтому он не реагирует на мой скрипт, как можно имитировать приход этого события от сервера, с моими же координатами, но Z+5(условно), подскажешь, пожалуйста?
ну чето типа такого
Lua:
function sampev.onSetPlayerPos(x, y, z)
   -- обработка слапа
end

function makeSlap(hightIncreaseNum)
    local x, y, z = getBotPosition()
    local newZ = z + hightIncreaseNum
    sampev.onSetPlayerPos(x, y, newZ)
    updateBotSync()
end
 

aberdean

Новичок
6
1
sampev.onSetPlayerPos(x, y, newZ)
Насколько помню, так уже пробовал, там ошибка "attempt to call field 'onSetPlayerPos' (a nil value)".
Как я понимаю, на эту функцию можно только подписаться, чтобы что-то сделать, когда сервер обновляет нашу позицию, а вызывать ее вручную нельзя.

Еще вот так пробовал, в надежде что если имитировать отправку этого пакета от сервера, то событие в SlapFix sampev.onSetPlayerPos(pos) будет вызываться, но у меня это почему-то не работает, может что-то не так делаю?
Lua code:
function simulatePlayerSync(x, y, z)
    local bs = bitStream.new()

    bs:writeFloat(x)
    bs:writeFloat(y)
    bs:writeFloat(z)

    if bs:sendRPC(12) then
        print("PlayerSync packet sent successfully.")
    else
        print("Failed to send PlayerSync packet.")
    end
end


function onRunCommand(cmd)
    if cmd:find("^!simulate") then
        local x, y, z = getBotPosition()
        simulatePlayerSync(x, y, z + 5)
        return false
    end
end
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,927
1,297
а вызывать ее вручную нельзя.
можно, "подписка" должна быть в том же скрипте
Еще вот так пробовал, в надежде что если имитировать отправку этого пакета от сервера, то событие в SlapFix sampev.onSetPlayerPos(pos) будет вызываться, но у меня это почему-то не работает, может что-то не так делаю?
да, ты делаешь не так.
ты пытаешься отправить рпс смены позиции на сервер, а надо чтобы сервер её прислал, функционала для эмуляции входящих рпс в раксампе текущей версии нет
 

aberdean

Новичок
6
1
можно, "подписка" должна быть в том же скрипте

да, ты делаешь не так.
ты пытаешься отправить рпс смены позиции на сервер, а надо чтобы сервер её прислал, функционала для эмуляции входящих рпс в раксампе текущей версии нет
Спасибо большое за объяснение, так работает
 

Bobers

Новичок
26
3
вроде скрипт работает, но когда слапают все равно зависает в воздухе, с транспортом тоже зависает в воздухе. Как исправить?
И работает ли он вообще в интерьерах?

slapfix by dimiano, но тебе нужно будет добавить мин координата x, макс координата x, мин координата y, макс координата y, макс высота крыши в интерьере.
Установил этот сплапфихс, при запуске бота сразу вылетает. Кто знает из за чего это?
 
Последнее редактирование:

aberdean

Новичок
6
1
вроде скрипт работает, но когда слапают все равно зависает в воздухе, с транспортом тоже зависает в воздухе. Как исправить?
И работает ли он вообще в интерьерах?

Там в теме писали, скорее всего из-за этого у тебя не работает, поменяй названия функций, setPosition и getPosition - deprycated
все - setPosition поменяй на setBotPosition
getPosition на getBotPosition

Для интерьеров, как я понимаю, универсального решения нет, только для конкретных интерьеров можно сделать фикс - проверяешь ID интерьера, если interiorId == 10, то устанавливаешь Z падения, равный потолку, на котором должен стоять персонаж.
 

Bobers

Новичок
26
3
Там в теме писали, скорее всего из-за этого у тебя не работает, поменяй названия функций, setPosition и getPosition - deprycated


Для интерьеров, как я понимаю, универсального решения нет, только для конкретных интерьеров можно сделать фикс - проверяешь ID интерьера, если interiorId == 10, то устанавливаешь Z падения, равный потолку, на котором должен стоять персонаж.
А если каждый бот в разных интерьерах(5 интерьеров+-), можно как то сделать чтобы у всех работал слапфикс?

Кто может сделать и настроить мне slapfix для интерьеров? Готов заплатить!
 
Последнее редактирование:
  • Bug
Реакции: swer

aberdean

Новичок
6
1
А если каждый бот в разных интерьерах(5 интерьеров+-), можно как то сделать чтобы у всех работал слапфикс?
Можно, берешь airbreak, поднимаешься на крышу каждого, пишешь команду /save, идешь в папку с документами samp, смотришь координаты Z, и прописываешь несколько проверок, если interiorId == 10, то Z падение = Z координаты потолка конкретного интерьер. Если программировать не умеешь, запиши координаты всех интерьеров, их ID и иди в раздел с написанием скриптов на заказ, насколько я помню, такой есть, сделают
 
  • Нравится
Реакции: Bobers

Bobers

Новичок
26
3
Можно, берешь airbreak, поднимаешься на крышу каждого, пишешь команду /save, идешь в папку с документами samp, смотришь координаты Z, и прописываешь несколько проверок, если interiorId == 10, то Z падение = Z координаты потолка конкретного интерьер. Если программировать не умеешь, запиши координаты всех интерьеров, их ID и иди в раздел с написанием скриптов на заказ, насколько я помню, такой есть, сделают
Я про координаты знаю, но с программированием слабо у меня.
 
  • Ха-ха
Реакции: inct

Dimareewd

Известный
78
8
На аданвас рп дают баны за аафк как фиксануть это ? хотя использую аним фикс слап фикс

1734036116643.png
1734036130993.png
 
  • Ха-ха
Реакции: inct