Вопросы по CLEO-скриптингу

New_J3rs3y1337

Известный
148
101
Мне свою всю папку удалять перед распаковкой твоей или что-то оставить?
Попробуй для начала заменить только папку "...\Sanny Builder 3.6.2\data\sa", потом всю data, если работать не будет. Кстати, ты точно вот эту шляпу настроил после переустановки? Чисто на всякий случай переспросить решил
1668287369432.png
 

loossklxm

Известный
52
2
var
29@: array 10 of integer
end

29@[0]=534
29@[1]=15147

Если вывести 29@[0], то выведет 534, но если вывести 29@[1], то будет рандомное число при каждом выводе.
Что делать? Моё предположение, что число 15147 большое для данного типа данных
 

New_J3rs3y1337

Известный
148
101
var
29@: array 10 of integer
end

29@[0]=534
29@[1]=15147

Если вывести 29@[0], то выведет 534, но если вывести 29@[1], то будет рандомное число при каждом выводе.
Что делать? Моё предположение, что число 15147 большое для данного типа данных
Можно попытаться выделить для 29'ой переменной больше памяти с помощью "allocate memory", глянь в поисковике опкодов
 

loossklxm

Известный
52
2
alloc 29@ 64
var
29@: array 10 of integer
end

29@[0]=234
29@[1]=575
29@[2]=23432
29@[3]=15147
29@[4]=644
FOR 21@ = 0 TO 5 [step=1]
wait 0
0AF8: samp add_message_to_chat "primer1 - %d" color 0xFFFFFF 29@[21@]
end

FOR 21@ = 0 TO 5 [step=1]
wait 0
0AF8: samp add_message_to_chat "primer1 - %d" color 0xFFFFFF 29@[21@]
end

Выделил, не помогло
 

New_J3rs3y1337

Известный
148
101
Сам я в массивы на клео не лазил, но думаю что дело в самом объявлении, т.к не совсем понятно, что компилятор санни билдера понимает под "integer". Или, может быть, проблема в отсутствии буфера 🤔
Вот на этом туториале в описании есть ссылка на исходный код, возможно, поможет лучше разобраться
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,752
alloc 29@ 64
var
29@: array 10 of integer
end

29@[0]=234
29@[1]=575
29@[2]=23432
29@[3]=15147
29@[4]=644
FOR 21@ = 0 TO 5 [step=1]
wait 0
0AF8: samp add_message_to_chat "primer1 - %d" color 0xFFFFFF 29@[21@]
end

FOR 21@ = 0 TO 5 [step=1]
wait 0
0AF8: samp add_message_to_chat "primer1 - %d" color 0xFFFFFF 29@[21@]
end

Выделил, не помогло
так нельзя делать, используй для массивов следующие опкоды:

CLEO:
0C0E: 0@ = array 1@ element 2@
0C0F: array 1@ element 2@ = 0@

0C1D: 4@ = array 1@ element 2@ el_size 3@
0C1E: array 1@ element 2@ el_size 3@ = 4@
 

Gayan

Новичок
1
0
Здравствуйте, на скриншотах ниже представлена проблема, не прорисовываются объекты за спиной игрока.

https://ibb.co/ydBCfRh
https://ibb.co/MfFnhj4
https://ibb.co/Cbmp2Py
https://ibb.co/PWqp3Hg

На данный момент на gta Sa установлены III.VC.SA.LimitAdjuster, SALodLights, эти модификации немного увеличили дальность прорисовки за игроком. Пробовал менять параметры в INI этих модификаций, но по моим наблюдениям положительного результата не получил. Потом установил GTA:SA WBL (World Beyond the limit) Фонарные столбы и мелкие предметы стали видны за спиной игрока, но ландшафт (здания, дороги) отсутствуют. Стандартные cleo опкоды 04E4, 03CB, 0A0B, предназначенные для отрисовки территории в координатах, не приносят желаемого результата. Пожалуйста, если у вас есть какая-либо информация поделитесь ею.
 

D3.Pheonix

🎹
Модератор
2,867
1,640
Здравствуйте, на скриншотах ниже представлена проблема, не прорисовываются объекты за спиной игрока.

https://ibb.co/ydBCfRh
https://ibb.co/MfFnhj4
https://ibb.co/Cbmp2Py
https://ibb.co/PWqp3Hg

На данный момент на gta Sa установлены III.VC.SA.LimitAdjuster, SALodLights, эти модификации немного увеличили дальность прорисовки за игроком. Пробовал менять параметры в INI этих модификаций, но по моим наблюдениям положительного результата не получил. Потом установил GTA:SA WBL (World Beyond the limit) Фонарные столбы и мелкие предметы стали видны за спиной игрока, но ландшафт (здания, дороги) отсутствуют. Стандартные cleo опкоды 04E4, 03CB, 0A0B, предназначенные для отрисовки территории в координатах, не приносят желаемого результата. Пожалуйста, если у вас есть какая-либо информация поделитесь ею.
По дефолту такой проблемы не должно быть, значит у тебя не дефолт. Сделай дефолт. 🙃
 

Bili Djin

Активный
137
67
Я решил написать CLEO для radmir'a и мне нужна инфа из 215 пакета. Это кастом.пакет и как найти смещение я хз.
В общем нужно инфа из пакета 'FoodSorting'.

На LUA это делает вот так:

LUA:
function onReceivePacket(id, bs)
    if id == 215 then
        local _style = raknetBitStreamReadInt16(bs)
        local _type = raknetBitStreamReadInt32(bs)
        local l = raknetBitStreamReadInt8(bs)
        local style3 = raknetBitStreamReadInt8(bs)
        local length = raknetBitStreamReadInt32(bs)
        if length > 0 and length < 10000 then
            bitstreamtext = raknetBitStreamReadString(bs, length)
        else
            bitstreamtext = nil
        end
        if bitstreamtext then
        print(bitstreamtext)
            if bitstreamtext:match('FoodSorting') then
                local codelen = raknetBitStreamReadInt32(bs)
                local code = raknetBitStreamReadString(bs, codelen)
                if code then
                    print(#code, code)
                end
            end
        end
 

New_J3rs3y1337

Известный
148
101
Я решил написать CLEO для radmir'a и мне нужна инфа из 215 пакета. Это кастом.пакет и как найти смещение я хз.
В общем нужно инфа из пакета 'FoodSorting'.

На LUA это делает вот так:

LUA:
function onReceivePacket(id, bs)
    if id == 215 then
        local _style = raknetBitStreamReadInt16(bs)
        local _type = raknetBitStreamReadInt32(bs)
        local l = raknetBitStreamReadInt8(bs)
        local style3 = raknetBitStreamReadInt8(bs)
        local length = raknetBitStreamReadInt32(bs)
        if length > 0 and length < 10000 then
            bitstreamtext = raknetBitStreamReadString(bs, length)
        else
            bitstreamtext = nil
        end
        if bitstreamtext then
        print(bitstreamtext)
            if bitstreamtext:match('FoodSorting') then
                local codelen = raknetBitStreamReadInt32(bs)
                local code = raknetBitStreamReadString(bs, codelen)
                if code then
                    print(#code, code)
                end
            end
        end
Если в самом луа скрипте смещений нет, попробуй полазить по подключённым библиотекам, там наверняка прописаны смещения, или хотя бы список аргументов из которых смещение можно посчитать
 

0x73616D

Активный
140
42
Hi, I'm trying to create requests with the discord API, the main snippet I want to "rewrite" is this (.LUA)
Lua:
local encoding = require 'encoding' -- подключаем для корректной отправки русских букв
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events' -- подключаем для хука отправки ответа на диалог
local effil = require 'effil' -- для ассинхронных запросов

local url = 'URL'
local data = {
   ['content'] = '', -- текст (меняется через команду, так что можно оставить пустым)
   ['username'] = 'Sended from .lua script!', -- ник отправителя
   ['avatar_url'] = 'https://c.tenor.com/Z9mXH7-MlcsAAAAS/sexy-black-man-thirst-trap.gif', -- ссылка на аватарку (можно убрать, будет дефолтная)
   ['tts'] = false, -- tts - text to speech - читалка сообщений (true/false)
   -- так же можно сделать еще много чего, подробнее тут: https://discord.com/developers/docs/resources/webhook
}

function main()
   while not isSampAvailable() do wait(0) end
   sampRegisterChatCommand('ds.msg', function(arg)
      data['username'] = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- ник отправителя = ник в игре
      data['content'] = arg -- делаем что бы текст сообщения был равен тексту который мы ввели после команды
      -- отправляем запрос
      asyncHttpRequest('POST', url, {headers = {['content-type'] = 'application/json'}, data = u8(encodeJson(data))},
      function(response)
         print('[WebHook] [OK] отправлено!')
      end,
      function(err)
         print('[WebHook] [ERROR] error: '..err)
      end)
   end)
   wait(-1)
end

-- функция для отправки ассинхронных сообщений
function asyncHttpRequest(method, url, args, resolve, reject)
   local request_thread = effil.thread(function (method, url, args)
      local requests = require 'requests'
      local result, response = pcall(requests.request, method, url, args)
      if result then
         response.json, response.xml = nil, nil
         return true, response
      else
         return false, response
      end
   end)(method, url, args)
   -- Если запрос без функций обработки ответа и ошибок.
   if not resolve then resolve = function() end end
   if not reject then reject = function() end end
   -- Проверка выполнения потока
   lua_thread.create(function()
      local runner = request_thread
      while true do
         local status, err = runner:status()
         if not err then
            if status == 'completed' then
               local result, response = runner:get()
               if result then
                  resolve(response)
               else
                  reject(response)
               end
               return
            elseif status == 'canceled' then
               return reject(status)
            end
         else
            return reject(err)
         end
         wait(0)
      end
   end)
end
I tried to follow the example of this thread, but it doesn't work, what's wrong?
CLEO:
{$CLEO}
0000: NOP

repeat
    wait 0
until 0AFA:

// host
alloc 0@ 30
0AD3: 0@ = format "discord.com"

// path
alloc 1@ 200
0AD3: 1@ = format "api/webhooks/1015806219421757530/a21OfargEvfX7D2B5irPX0Bf_sAqqQGBV8lrpbciUUB6TFE16_TSwLq0pVA3M-COfF_"

// data
alloc 2@ 1000
//0AD3: 2@ = format "content=testing message"
0AD3: 2@ = format "content=testing message&username=custom_username"

// response buffer
alloc 3@ 1500

while true
    wait 0
    if
    0ADC: "X"
    then
        0AB1: call_scm_func @HTTP_POST 5 host 0@ file_path 1@ response_buffer 3@ data 2@ is_https true _ret_is_success 31@
        if
        31@ == true
        then
            chatmsg "Respuesta = %s" 0xFFFFFF 3@
        else
            chatmsg "Fail" -1
        end
    end
end


{$INCLUDE includes/http_requests.txt}
http_requests.txt
 

sampik1

Новичок
2
0
какой handle у исходящего rpc Spawn? нужно для нопа

0B2D: write_samp_memory offset 0x15C50 value 50064 size 2 (здесь нопается другой rpc)