Скажем один скрипт ведет поиск и создание ячейки, а другой удалениеКак это сделать, я не понял?
{$CLEO}
thread 'GACTOR'
05F7: 0@ = label @buferofactors offset // тут резервируем 0@ переменную под указатель на буфер
while true // создаем постоянный цикл
wait 0
if
05EF: 15@ = random_actor_near_point 0.0 0.0 0.0 in_radius 100000.0 find_next 0 pass_deads 1 //IF and SET // начинаем поиск педов
then
repeat
0085: 14@ = 0@ // (int) //используем временную переменную
12@ = -1
11@ = 0
10@ = 0
while true // создаем цикл для поиска хендла данного актера
if
11@ == 200 // если достигнуто 200 ячеек то выход (в буфере как раз 200 строк)
then
break
end
05E0: 13@ = read_memory 14@ size 4 virtual_protect 0 // читаем текущую ячейку, где хранится хендл
if
003B: 13@ == 15@ // (int) // если хендл найден то не записываем по второму разу данный хендл
then
12@ = -1 // для этого ставим доп переменной = -1
break // и сразу выход из поиска данного хендла
else
if and
13@ == -1 //если мы находим попутно что строка содержит = -1 то запоминаем
10@ == 0 // через доп переменную 10@ которую используем как флаг
then
0085: 12@ = 11@ // (int) // сохраняем первую попавшуюся строку содерж = -1 хендл в доп переменной 12@
10@ = 1
end
end
14@ += 8 // так в одной ячейке два поля хендл и еще одна по 4 байта каждая получает как раз = 8, скачем через 8 байт
11@ += 1 //счетчик строчек увеличиваем
end
if
12@ <> -1 // по результату пред поиска смотрим нашли мы строчку или нет
then
0085: 14@ = 0@ // (int)
12@ *= 8
005A: 14@ += 12@ // (int)
05DF: write_memory 14@ size 4 value 15@ virtual_protect 0 // если да то заносим данный хендл
end
until 85EF: 15@ = random_actor_near_point 0.0 0.0 0.0 in_radius 100000.0 find_next 1 pass_deads 1 //IF and SET //продолжаем поиск
end
end
:buferofactors //буфер актеров
hex
FF FF FF FF 00 00 00 00 // первые 4 байта идут под хендл по умолчанию это = -1
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
FF FF FF FF 00 00 00 00
end
{$CLEO}
thread 'RACTOR'
while true
wait 0
05ED: 0@ = thread 'GACTOR' pointer // получаем указатель первого скрипта
if
0@ <> 0 // проверяем что он существует
then
0@ += 48 // переходим к смещению 0@ локальной переменной первого скрипта
05E0: 0@ = read_memory 0@ size 4 virtual_protect 0 // считываем данное значение
break // выходим из цикла
end
end
while true // определяем вечный цикл
wait 0
while 13@ < 200 // определяем второй цикл поиска
05E0: 1@ = read_memory 0@ size 4 virtual_protect 0 // читаем данную строчку
if
1@ == -1 // если хендл = -1 пропускаем
then
13@ += 1
0@ += 8
continue
end
05E6: 15@ = actor 1@ struct // иначе находим указатель структуры актера
if
15@ == 0 // если актер не существует
then
0085: 14@ = 0@ // (int) //используем времен пер 14@
05DF: write_memory 14@ size 1 value -1 virtual_protect 0 // здесь и далее пишем -1 почему так? это глюк Клео нельзя сразу записать -1 в 4 байта (недоделка Клео)
14@ += 1
05DF: write_memory 14@ size 1 value -1 virtual_protect 0
14@ += 1
05DF: write_memory 14@ size 1 value -1 virtual_protect 0
14@ += 1
05DF: write_memory 14@ size 1 value -1 virtual_protect 0
14@ += 1
05DF: write_memory 14@ size 4 value 0 virtual_protect 0 // во вторые 4 байта пишем 0
13@ += 1
0@ += 8
else
13@ += 1
0@ += 8
end
end
05ED: 0@ = thread 'GACTOR' pointer // так как переменных не хватает заново находим 0@ локальную переменную первого скрипта
0@ += 48
05E0: 0@ = read_memory 0@ size 4 virtual_protect 0
13@ = 0
end //и начинаем поиск погибших актеров еще раз
0AB1: call_scm_func @COMPLETELY_RANDOM_NATURAL_NUMBER 1 5 $WAVBARMUSIC // 5 - means "random number 1 to 5"
...
:COMPLETELY_RANDOM_NATURAL_NUMBER
0AA7: call_function 0x4D0DF0 num_params 0 pop 0 1@
0093: 0@ = integer 0@ to_float
0085: 2@ = 1@
0016: 2@ /= 10
0012: 2@ *= 10
0093: 1@ = integer 1@ to_float
0093: 2@ = integer 2@ to_float
0063: 1@ -= 2@
0007: 2@ = 10.0
0073: 2@ /= 0@
0073: 1@ /= 2@
0092: 1@ = float 1@ to_integer
000A: 1@ += 1
05F6: ret 1 1@
На этом сайте есть уроки по программированию ([url]http://gtabuilder.ru/gta_vc/modding/lessons_on_programming/page/2/[/url]), среди которых есть материалы по памяти ([url]http://gtabuilder.ru/gta_vc/modding/lessons_on_programming/44-chtenie-i-zapis-adresov-gta-vice-city.html[/url]).
Для слишком сложных или наоборот быстрых простых вопросов есть группы в Discord(в русскоязычной есть раздел Вайса):
RU: [url]https://discord.gg/QEesDGb[/url] ([url]https://discord.gg/QEesDGb[/url])
ENG: [url]https://discord.gg/zaVqFQv[/url] ([url]https://discord.gg/zaVqFQv[/url])