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

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

Смотря какой таймер. Я всегда брал - 2 байта для минут (если искать минуты), или 4 байта для секунд (1.5 минуты равны 90 сек). Оба варианта с точкой (для Артмани), или просто с точкой и диапазон для СЕ

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

Есть скрипт. Надо тупо тормознуть таймер (db 90 90 90) где его записать в скрипте?

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov [esi+79],#ХХ
originalcode:
mov al,[esi+79]
test al,al
exit:
jmp returnhere

005A5A04:
jmp newmem
returnhere:

[DISABLE]
dealloc(newmem)
005A5A04:
mov al,[esi+79]
test al,al
//Alt: db 8A 46 79 84 C0

И ещё вопрос. Как сделать так, чтобы по нажатии хоткея добавить иное число при этом его не морозить. Например дал себе 100 патронов и при выстреле 99 далее 98 итд. Если можно, то на этом же скрипте.

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

Есть скрипт. Надо тупо тормознуть таймер (db 90 90 90) где его записать в скрипте?

Нопить надо что-то другое, а не что-то в скрипте.

Самый простой способ тормознуть таймер это писать постоянно значение в адрес секунд.

И ещё вопрос. Как сделать так, чтобы по нажатии хоткея добавить иное число при этом его не морозить. Например дал себе 100 патронов и при выстреле 99 далее 98 итд. Если можно, то на этом же скрипте.

Вижу множество способов. Один из них следующий.

1) В коде игры найти инструкцию которая работает со всеми патронами для всего оружия.

2) Создаёшь первый АА скрипт (активирующий). Сделать инъекцию в инструкцию на сохранение текущего адреса патронов. А также дописываешь код записи по этому адресу для потока.

3) Создаёшь второй АА скрипт после активации первого (иначе будет ошибка) в котором под [ENABLE] записывается выполнение потока.

4) Потом устанавливаешь хоткеии.

Один хот-кей на активирующий скрипт. Его нужно активировать один раз в начале игры.

Другой хот-кей на второй АА скрипт.

Активирующий:

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

label(pAmmo)

label(threadmem)
registersymbol(threadmem)


newmem:
push eax
lea eax,[esi+79]
mov [pAmmo],eax
pop eax
originalcode:
mov al,[esi+79]
test al,al
exit:
jmp returnhere

threadmem:
mov eax, [pAmmo]
mov [eax],#99
ret

pAmmo:
dd 0

005A5A04:
jmp newmem
returnhere:

[DISABLE]
005A5A04:
mov al,[esi+79]
test al,al
//Alt: db 8A 46 79 84 C0

dealloc(newmem)

Второй скрипт:

[ENABLE]
createthread(threadmem)
[DIASBLE]

Может быть я где-то ошибся, так что надо проверять.

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

Мастер подскажи пожалуйста функции которые работают с таймером в играх (часто встречающиеся)

Я имею ввиду функции например как для работы с диалогами MessageBox

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

SetTimer - установить таймер. Находится в User32.dll

KillTimer - уничтожить таймер. Находится в User32.dll

TimerProc - объявление вызываемой функции в таймере

Подробнее:

Timer Functions

http://msdn.microsof...3(v=VS.85).aspx

About Timers

http://msdn.microsof...0(v=VS.85).aspx

Using Timers

http://msdn.microsof...1(v=VS.85).aspx

--------------

Что-то на русском:

SetTimer http://rusapi.narod.ru/SetTimer.htm

WM_TIMER http://rusapi.narod.ru/WM_TIMER.htm

TimerProc http://rusapi.narod.ru/TimerProc.htm

KillTimer http://rusapi.narod.ru/KillTimer.htm

http://www.firststep.../help/r.php?249

http://www.cyberguru...e-tajmerov.html

В основном надо знать, что таймер создаётся через SetTimer импортируемую из User32.dll. Тамер срабатывает через определённый интервал времени. Количество срабатываний можно идентифицировать увеличивающимся счётчиком и в игре отображать этот счётчик как секунды, минуты или часы. Функцию извлечения системного времени и даты я не рассматриваю.

Если таймер создан, то ему присваивается целочисленный идентификатор, который возвращается функцией SetTimer. Снимая показания именно этого таймера нужно обращаться именно к этому идентификатору в структуре сообщения WM_TIMER или снимать показания внутри функции сигнатуры TimerProc, которая была специально привязана к созданному таймеру. WM_TIMER обрабатывается в оконной процедуре, где снимаются сообщения системы посланные hwnd окна игры... Если создана "специальная функция" для таймера, то она минует функцию оконной процедуры обрабатывающей системные сообщения.

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

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

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

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