Можно попытаться выделить для 29'ой переменной больше памяти с помощью "allocate memory", глянь в поисковике опкодовvar
29@: array 10 of integer
end
29@[0]=534
29@[1]=15147
Если вывести 29@[0], то выведет 534, но если вывести 29@[1], то будет рандомное число при каждом выводе.
Что делать? Моё предположение, что число 15147 большое для данного типа данных
А что если выделить побольше, 512 например?alloc 29@ 64
не меняется)А что если выделить побольше, 512 например?
Сам я в массивы на клео не лазил, но думаю что дело в самом объявлении, т.к не совсем понятно, что компилятор санни билдера понимает под "integer". Или, может быть, проблема в отсутствии буфера 🤔не меняется)
так нельзя делать, используй для массивов следующие опкоды: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
Выделил, не помогло
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@
По дефолту такой проблемы не должно быть, значит у тебя не дефолт. Сделай дефолт. 🙃Здравствуйте, на скриншотах ниже представлена проблема, не прорисовываются объекты за спиной игрока.
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, предназначенные для отрисовки территории в координатах, не приносят желаемого результата. Пожалуйста, если у вас есть какая-либо информация поделитесь ею.
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
Если в самом луа скрипте смещений нет, попробуй полазить по подключённым библиотекам, там наверняка прописаны смещения, или хотя бы список аргументов из которых смещение можно посчитатьЯ решил написать 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
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
{$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}
Попытка номер 2. Кто-нибудь сталкивался с тем, что сб не видит опкоды, когда всё на месте и всё должно работать?
upHi, I'm trying to create requests with the discord API, the main snippet I want to "rewrite" is this (.LUA)
I tried to follow the example of this thread, but it doesn't work, what's wrong?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
http_requests.txtCLEO:{$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}