Перейти к содержанию

Как использовать потоки в скриптах CE


MasterGH

Рекомендуемые сообщения

Для кому интересно как использовать поток в скриптах CE

alloc(mycode,4096) 
CREATETHREAD(mycode);

mycode:
mov eax,[gamex.dll+123456]
mov ebx,[eax+4c]
mov [eax+48],ebx

push #1000
call sleep
jmp mycode

В данном случае здесь заморозка с частотой в 1-ну секунду.

А вот мой пример скрипта для GTA SAN Andreas. Скрипт заполняет данные структуры игрока один раз

//mov [[00B6F3B8]+n*1c+5a8]],1
//mov [[00B6F3B8]+n*1c+5ac]],1
//где n =[1..12]

[ENABLE]
alloc(tred,200)
registersymbol(tred)
label(x1)

tred:
push eax
push ecx
push ebx
xor ecx,ecx
mov eax,[00B6F3B8]
add eax,5a8
x1:
inc ecx
imul ebx,ecx,1c
mov [eax+ebx],1// mov [[00B6F3B8]+n*1c+5a8]],1 - в обойме
mov [eax+ebx+4],1// mov [[00B6F3B8]+n*1c+5ac]],1 - общие патроны
cmp ecx,c
jne x1
pop ebx
pop ecx
pop eax
call GetCurrentThread
ret

createthread(tred)
[DISABLE]
dealloc(tred)

Инструкцию call GetCurrentThread я ипользовал для корректного получения указателя на поток (хотя думаю можно было бы сделать иначе, но пока я не исследовал это дело). GetCurrentThread кладёт в eax указатель на данный поток и ret поток закрывает.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.