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

Lobber

Известный
178
57
Подозреваю что придется переводить float в hex руками
Вот сайтик есть: https://gregstoll.dyndns.org/~gregstoll/floattohex/
И потом этот hex перевести в dec, и уже dec подставлять вместо *здесь нужное значение*
Попробуй
Еще забыл уточнить 5828231 менять на адрес элемента худа
Бро, я нашел метод! Спасибо за наводку, как только сделаю, скину сюда сурс

UPD готово
Вот код с комментариями, кому нужно

CLEO:
wait 2000 // нужно для инициализации памяти

:1
0A8D: 0@ = read_memory 0x58DD0F size 4 virtual_protect 0
03F0: enable_text_draw 1         //сделал для мониторинга состояния
045A: draw_text_1number 7.0 344.0 GXT 'NUMBER' number 0@
wait 0
if
0ADC: test_cheat "P"                
else_jump @1

0AF0: 2@ = get_int_from_ini_file "cleo\wanted.pos.ini" section "coords" key "X"
0010: 2@ *= 32768   // Множитель - разница между значениями после перевода float в hex, затем hex в dec, в моем случае между 509 и 510

0006: 3@ = 1124073472 //Значение нулевого Х. Получено путем танцев с бубном

0A8E: 4@ = 3@ + 2@ //Прибавляем помноженное значение на нулевые коорды, получаем результат

0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0   //записываем значение в память твоим методом

0A8C: write_memory 0x58DD0F size 4 value 1@ virtual_protect 0  //получаем результат на экран
0AC9: free_allocated_memory 1@

//..................................................................................//

0AF0: 2@ = get_int_from_ini_file "cleo\wanted.pos.ini" section "coords" key "Y"
0010: 2@ *= 32768   // множитель

0006: 3@ = 1124073472 //Значение нулевого Y. Совпадает с Х. Видимо едино для структуры

0A8E: 4@ = 3@ + 2@ //добавление в память

0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0   // запись в память

0A8C: write_memory 0x58DFB3 size 4 value 1@ virtual_protect 0  //результат на экране
0AC9: free_allocated_memory 1@

jump @1
 
Последнее редактирование:

ARMOR

kjor32 is legend
Модератор
4,846
6,105
Тут у меня настиг вопрос как можно изменить цвет текста? Ну тип чтобы текст в чате был не белого а к примеру синего цвета "Ник(id)говорит:текст"
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,733
4,730
Тут у меня настиг вопрос как можно изменить цвет текста? Ну тип чтобы текст в чате был не белого а к примеру синего цвета "Ник(id)говорит:текст"
Как минимум: {CCAAFF}Привет, как дела? {FFAACC}Нормально
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,733
4,730
Тут может или я не правильно понял или ты, мне нужно именно серверное сообщение изменять по типу "Администратор ( Ник ) забанил игрока"
Брать сообщение, и перед ником ставить в {} нужный тебе цвет, и перед забанил в {} ставить оригинальный цвет сообщения. Как парсить строки в клео не знаю, так что спроси помощи у более знающих
 

MAHEKEH

Известный
1,991
496
Тут сидел короче перебирал какие то скрипты и возник вопрос
насколько важно чистить память после выделения? Ну то есть я понимаю что не стоит оставлять память в коде и желательно её подчищать
но всё чаще замечаю что многие выделяют память в начале скрипта ( один раз ) без очищения её в последствии
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,733
4,730
Тут сидел короче перебирал какие то скрипты и возник вопрос
насколько важно чистить память после выделения? Ну то есть я понимаю что не стоит оставлять память в коде и желательно её подчищать
но всё чаще замечаю что многие выделяют память в начале скрипта ( один раз ) без очищения её в последствии
Это не критично, если ты уверен, что память выделится немного. Т.е. 1кб памяти неочищенный это ничего. Просто если ты будешь выделять ее несколько раз, но не очищать, то ты уже выделишь 4кб. А что если событие при котором выделяется память, будет происходить по 15 раз в секунду? У тебя за 100 секунд выделится 15 мегабайт. И спустя 15-20 минут игры кончится ОЗУ.
 

Lobber

Известный
178
57
Народ, нужна хелпа
Я читаю значение с переменной, оно в int - допустим 400
А нужно сделать 400.0, причем прямо в коде
Подскажите как это можно оформить
 

MAHEKEH

Известный
1,991
496
Это не критично, если ты уверен, что память выделится немного. Т.е. 1кб памяти неочищенный это ничего. Просто если ты будешь выделять ее несколько раз, но не очищать, то ты уже выделишь 4кб. А что если событие при котором выделяется память, будет происходить по 15 раз в секунду? У тебя за 100 секунд выделится 15 мегабайт. И спустя 15-20 минут игры кончится ОЗУ.

Ну с этим понятно да.
Мне просто необходимо понять, те 1кб выделенной памяти расходуются постепенно, или же нет, то есть не вызовет ли это краш или провисания в первом случае.
Так если к примеру я буду выделять 64 кб под какой-нибудь рендер и не очищать его в дальнейшем, не получится ли так что 64кб в конце концов кончатся, или же они просто необходимы для выполнения функций рендера.

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

D3.Pheonix

🎹
Модератор
2,821
1,600
не получится ли так что 64кб в конце концов кончатся, или же они просто необходимы для выполнения функций рендера
Один символ=1 байт.
Как она может закончиться?) Ты изначально выделяешь под примерноеколичество символов, которые будут в рендере
Не там копаешь короче, если в цикле выделяешь и не освобождаешь, то да, фпс стремительно упадёт и игра начнёт лагать. Если такого нет, ищи в другом месте проблему, а разницы между выделением в начале кода или в цикле с освобождением - нет.
 
  • Нравится
Реакции: MAHEKEH

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,733
4,730
Ну с этим понятно да.
Мне просто необходимо понять, те 1кб выделенной памяти расходуются постепенно, или же нет, то есть не вызовет ли это краш или провисания в первом случае.
Так если к примеру я буду выделять 64 кб под какой-нибудь рендер и не очищать его в дальнейшем, не получится ли так что 64кб в конце концов кончатся, или же они просто необходимы для выполнения функций рендера.

Немного странный и возможно туповатый вопрос, прост идет ускоренная утечка фпс при использовании лишних скриптов на моем пиньке, и я пытаюсь понять почему.
Когда ты выделяешь память, она становится твоей, и ОС считает, что она занята твоим процессом(в случае клео, это gta_sa.exe). И получается что ты получаешь полную власть над этой памятью. Сразу.
 
  • Нравится
Реакции: MAHEKEH

Lobber

Известный
178
57
В поиске опкодов напиши int to float
Получается страхоебина с крайне не красивым значением. Тем более что даже не в формате ххх.0
В прочем, если понять, что тут спрятано, попробую решить своими силами

:TIMECYC_BY_0X688_AND_OPCODEXE_257
hex
05 1C 03 1E 00 02 00 01 CC FF FF FF

Я делаю клео, которое адаптирует клео прорисовку с R1 на R3, и это единственный рабочий образец. Я только понял, что входным значением является 30@ в формате ххх.0, которое можно прибавить или отнять через нажатие клавиш. Но, после скана параметров команды мне выдает int значение, в float оно выглядит как то так (1137180672). Если есть какие-нибудь мысли, с радостью опробую
 
Последнее редактирование: