[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 12 из 17«1210111213141617»
Форум » Другое » Болталка » Флудильня (Разрешено практически всё!)
Флудильня
wmysterio
Администраторы
Скриптер
17.08.13 16:27
Online
DK22Pac, тогда как-же игра понимает
Код
0AB1: @BR 1 aActors [ 29 ] : 0@
что это 29-й актёр? Неужели 50 актёров могут поместится в
Код
hex
00000000 00000000 00000000/// .....
end
или они помещаются не в hex?

Сам принцип этого hex не могу понять wacko Хотя-бы пробую схемку покажи где находятся актёры?

DK22Pac
Друзья
TOP Скриптер
17.08.13 16:39
Offline
wmysterio
Код
hex
     00000000 // 1
     00000000 // 2
     00000000 // 3
     // .....
     00000000 // 50
end

Создаём буфер в (50*4) байт.

wmysterio
Администраторы
Скриптер
17.08.13 16:51
Online
DK22Pac, Я понял. Спасибо большое за объяснение. Я чёт думал, что 00000000 - это 8 бит, следовательно 1 байт

DK22Pac
Друзья
TOP Скриптер
17.08.13 16:56
Offline
16-ричная система счисления же. Не двоичная.
Блоке hex-end можно использовать не только для создания буфера. Этот блок позволяет интегрировать ассемблерный код в скрипт, который можно выполнить с помощью опкодов 0AA5 - 0AA8.
Код
{$CLEO}

0AC6: 0@ = label @Sqr offset
while true
     wait 0
     0AA8: call_function_method 0@ struct 12 num_params 0 pop 0 _ret_to 1@
     0AD1: show_formatted_text_highpriority "12 x 12 = %d" time 100 1@
end

:Sqr
hex
     8B C1    // mov eax, ecx      // _EAX = _ECX; _EAX *= _EAX
     0F AF C0 // imul eax, eax
     C3       // retn
end

wmysterio
Администраторы
Скриптер
17.08.13 17:04
Online
DK22Pac, о вставках ассемблера я слышал, но никогда не приходилось пользоваться им с скриптинге. А инфа о буфере для меня это новинка.

Vital
Друзья
Скриптер
17.08.13 19:27
Offline
DK22Pac, а выделяется по 4 байта потому, что Integer = 4 байта? И актёры также занимают Int, насколько я знаю, по крайней мере в создании массивов всегда указывают тип Integer. И правильно ли я понимаю следующее: 0АС6 берёт начало метки (её адрес), а с помощью умножения на индекс вычисляем позицию (в 4 байта), куда будет записан хендл актёра (который потом можно прочесть).
Если всё так понял, то здорово  smile Всегда считал это какой-то китайской азбукой до твоего сообщения, только не очень понимаю, почему 8 нулей... Вроде 0 в любой системе и есть 0.
Наверное, таким же образом и массивы создаются в игре, раз буфер тоже задаётся конкретным размером и обращение к каждому элементу похожее.
А в игре нету динамических массивов? Я только слышал про такие, мол, они могут менять размер при необходимости, что было бы неплохо для любого GTA, чтобы не загружать память.
2109: create_special_actor $VITAL in_front_of_computer

wmysterio
Администраторы
Скриптер
17.08.13 19:45
Online
Цитата (Vital)
И правильно ли я понимаю следующее: 0АС6 берёт начало метки (её адрес), а с помощью умножения на индекс вычисляем позицию (в 4 байта), куда будет записан хендл актёра (который потом можно прочесть).
Да, правильно. Отвечаю я, так как тоже это уже понял :)
Цитата (Vital)
только не очень понимаю, почему 8 нулей...
ими заменяют место в буфере, это тоже самое, что в C++:
Код
int A[5];
Мы выделяем только место, не может ведь размер быть неизвестным.

Vital
Друзья
Скриптер
17.08.13 19:51
Offline
wmysterio, я имел в виду, почему именно 8 нулей, а не один, к примеру.
2109: create_special_actor $VITAL in_front_of_computer

wmysterio
Администраторы
Скриптер
17.08.13 19:57
Online
Vital, потому, что
Код
00 00 00 00
это 4 байта (на важно какими числами 16-ричной системы числения они заполнены)

Код
00 00
это 2 байта (на важно какими числами 16-ричной системы числения они заполнены)

Код
00
это 1 байт (на важно какими числами 16-ричной системы числения они заполнены)

место просто заполняют нулями. что бы знать размер буффера. Я бы назвал этот процесс "зануление".

Vital
Друзья
Скриптер
17.08.13 20:01
Offline
wmysterio, понятно, спасибо. А на калькуляторе Windows это как-нибудь можно проверить, а то не нахожу (я переключил его на режим "Программист", поставил Hex и 4 байта, но там всё иначе) толком?
2109: create_special_actor $VITAL in_front_of_computer

wmysterio
Администраторы
Скриптер
17.08.13 20:09
Online
Vital, представь, что актёр это набор целых чисел. Например: 984210581. Получаем Hex-код:
В Hex..End запишется эта комбинация:
Код
hex
3A A9 DC 95 // Актёр 1 занял место, нули пропадают
00 00 00 00 // Свободное место для актёра 2
00 00 00 00 // Свободное место для актёра 3
end
Я только не в курсе - записывается туда ссылка(хэндл) на него и он целиком.
Прикрепления: 7589244.png(24Kb)

Vital
Друзья
Скриптер
17.08.13 20:16
Offline
wmysterio, ага, теперь яснее smile значит, диапазон целого числа в 4 байта - от 00 00 00 00 до FF FF FF FF?
2109: create_special_actor $VITAL in_front_of_computer

wmysterio
Администраторы
Скриптер
17.08.13 20:25
Online
Vital, да-да. Только не "целого числа" а целых чисел

Похоже ты, как и я, спутал биты с шестнадцатеричным числом smile

Можно сделать тест:
Код
{$CLEO}
0AC6: 0@ = label @BUFFER offset
15@ = file.Open("text.txt", "wt")

0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
0AD9: write_formatted_text "Init value: %d%c%c" in_file 15@ 1@ 0xD 0xA

0376: 2@ = create_random_actor_at -1576.88 55.26 8.57
0AD9: write_formatted_text "Actor: %d%c%c" in_file 15@ 2@ 0xD 0xA
0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0

0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
0AD9: write_formatted_text "Actor in Buffer: %d%c%c" in_file 15@ 1@ 0xD 0xA

file.Close(15@)
0A93: end_custom_thread

:BUFFER
hex
00 00 00 00
end
Который выводит в файл состояние буфера и записать хендл актёра. Я получил примерно такое:
Код
Init value: 0
Actor: 257
Actor in Buffer: 257
Выходит в hex записался такой код:
Код
hex
00 00 01 01      
end

SHooZ
Друзья
18.08.13 14:04
Offline
Причем тут GTA IV?

wmysterio
Администраторы
Скриптер
18.08.13 14:24
Online
SHooZ, хз )  как-то зацепили тему Sanny Builder и понеслось )) Перенес сообщения во флуд.

SHooZ
Друзья
18.08.13 14:31
Offline
wmysterio, понятно.

SanKing
Друзья
21.01.14 13:33
Offline
О великий админ, ты ли это? biggrin

Отредактировал SanKing - Вторник, 21.01.14, 13:37
Прикрепления: 1965234.jpg(253Kb)

wmysterio
Администраторы
Скриптер
21.01.14 16:14
Online
SanKing, ха-ха )) это был я smile

Slivkin-Sergey
Модераторы
22.01.14 17:43
Offline
Блин, ребят, кто-нибудь может протестить один небольшой майн на предмет вылетает/не вылетает? А то у меня всё работает, а у другого чела...

Только под условием неразглашения, т.к. делаем новый глобальный мод.

wmysterio
Администраторы
Скриптер
22.01.14 18:09
Online
Slivkin-Sergey, кидай мне в ЛС, потестирую.

Форум » Другое » Болталка » Флудильня (Разрешено практически всё!)
Страница 12 из 17«1210111213141617»
Поиск: