Создание объекта

constersuonsis

Известный
Автор темы
211
126
Версия MoonLoader
.027.0-preview
Доброго времени суток, участники форума.
Эмулирую рпс с созданием объектов(44).
Создание объектов через эмуляцию:
local bs_create = raknetNewBitStream()
raknetBitStreamWriteInt16(bs_create, obj.id)
raknetBitStreamWriteInt32(bs_create, obj.model)

raknetBitStreamWriteFloat(bs_create, obj.x)
raknetBitStreamWriteFloat(bs_create, obj.y)
raknetBitStreamWriteFloat(bs_create, obj.z)

raknetBitStreamWriteFloat(bs_create, obj.rx)
raknetBitStreamWriteFloat(bs_create, obj.ry)
raknetBitStreamWriteFloat(bs_create, obj.rz)

raknetBitStreamWriteFloat(bs_create, 300.0)
raknetBitStreamWriteInt8(bs_create, 0)
raknetBitStreamWriteInt16(bs_create, -1)
raknetBitStreamWriteInt16(bs_create, -1)

for _ = 1, 6 do
    raknetBitStreamWriteFloat(bs_create, 0) -- AttachOffset[X-Z] | AttachRot[X-Z]
end

raknetBitStreamWriteInt8(bs_create, 0)

raknetEmulRpcReceiveBitStream(44, bs_create)
raknetDeleteBitStream(bs_create)
При создании использую obj.id(логично что объект ид), после эмуляции появляются объекты визуально, но при этом при проверке
Lua:
doesObjectExist(sampGetObjectHandleBySampId(objectId))
выдаёт false. Какие есть еще варианты как адекватно получить хендлер?

createObject не рассматриваю
 

qdIbp

Автор темы
Проверенный
1,450
1,190
Доброго времени суток, участники форума.
Эмулирую рпс с созданием объектов(44).
Создание объектов через эмуляцию:
local bs_create = raknetNewBitStream()
raknetBitStreamWriteInt16(bs_create, obj.id)
raknetBitStreamWriteInt32(bs_create, obj.model)

raknetBitStreamWriteFloat(bs_create, obj.x)
raknetBitStreamWriteFloat(bs_create, obj.y)
raknetBitStreamWriteFloat(bs_create, obj.z)

raknetBitStreamWriteFloat(bs_create, obj.rx)
raknetBitStreamWriteFloat(bs_create, obj.ry)
raknetBitStreamWriteFloat(bs_create, obj.rz)

raknetBitStreamWriteFloat(bs_create, 300.0)
raknetBitStreamWriteInt8(bs_create, 0)
raknetBitStreamWriteInt16(bs_create, -1)
raknetBitStreamWriteInt16(bs_create, -1)

for _ = 1, 6 do
    raknetBitStreamWriteFloat(bs_create, 0) -- AttachOffset[X-Z] | AttachRot[X-Z]
end

raknetBitStreamWriteInt8(bs_create, 0)

raknetEmulRpcReceiveBitStream(44, bs_create)
raknetDeleteBitStream(bs_create)
При создании использую obj.id(логично что объект ид), после эмуляции появляются объекты визуально, но при этом при проверке
Lua:
doesObjectExist(sampGetObjectHandleBySampId(objectId))
выдаёт false. Какие есть еще варианты как адекватно получить хендлер?

createObject не рассматриваю
Lua:
for i, k in ipairs(getAllObjects()) do
    print(i,k)
end

У меня obj.id = 2000, итог такой:
1743303063214.png


Вероятней всего id не тот, за кого он себя выдаёт 🥸
 

constersuonsis

Известный
Автор темы
211
126
Lua:
for i, k in ipairs(getAllObjects()) do
    print(i,k)
end

У меня obj.id = 2000, итог такой:
Посмотреть вложение 266659

Вероятней всего id не тот, за кого он себя выдаёт 🥸
Это я тоже вчера понял, но проблема в том, что у сеня несколько одинаковых моделей...
я уже думал заколхозиьь и сделать проверку на координаты
 
  • Грустно
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,450
1,190
Это я тоже вчера понял, но проблема в том, что у сеня несколько одинаковых моделей...
я уже думал заколхозиьь и сделать проверку на координаты
Можешь попробовать отслеживать добавление объектов через getAllObjects, после проверять id модели объекта. Но беда в том что если серв создаст такой же объект, то как бы не затригирить твой скрипт. Вообще какова цель твоего скрипта?
 

constersuonsis

Известный
Автор темы
211
126
Можешь попробовать отслеживать добавление объектов через getAllObjects, после проверять id модели объекта. Но беда в том что если серв создаст такой же объект, то как бы не затригирить твой скрипт. Вообще какова цель твоего скрипта?
Я решил вот так сделать, ибо не вижу других вариантов

Lua:
function findObjectIdByCoords(x, y, z, model)
    local t = 0.1
   
    for _, obj in ipairs(loadedObjects) do
        if math.abs(obj.x - x) <= t and
           math.abs(obj.y - y) <= t and
           math.abs(obj.z - z) <= t and
           obj.model == model then
            return obj.id, obj.textureData.txd, obj.textureData.texture, obj.textureData.color
        end
    end
   
    return nil
end
 
  • Нравится
Реакции: qdIbp