Автор Тема: Пишем новые функции в КЛЕО  (Прочитано 2776 раз)

Оффлайн mfisto

  • Скриптер
  • Главный Модератор
  • Новичок
  • *****
  • Сообщений: 176
  • Репутация: +19/-0
  • Не пью, не курю, за компьютером сижу...
    • mfistof
    • Просмотр профиля
    • Empire of CJ
Пишем новые функции в КЛЕО
« : Март 24, 2015, 07:55:47 am »
Хочу написать здесь интересную инфу, про написание некоторых полезных функции, прибегая в асм вставкам.

Это вполне касается GTA 3, так как там не хватает нек-рых опкодов.

Вот эти функции:

AND
NOT
OR

Что мы делаем, а вот что пишем следующее:

:_func_and_
hex
    8B 44 24 04 8B 4C 24 08 21 C8 C3 90
end

:_func_or_
hex
    8B 44 24 04 8B 4C 24 08 09 C8 C3 90
end

:_func_not_
hex
    8B 44 24 04 F7 D0 C3 90
end

Это и будут наши функции (асм вставки).
Далее

05F5: call_scm_func @getLabelOffset 1 label @_func_and_ store_to 13@
05E2: call_function 13@ num_params 2 pop 2 14@ 4 15@

05F5: call_scm_func @getLabelOffset 1 label @_func_or_ store_to 13@
05E2: call_function 13@ num_params 2 pop 2 14@ 4 15@

05F5: call_scm_func @getLabelOffset 1 label @_func_not_ store_to 13@
05E2: call_function 13@ num_params 1 pop 1 14@ 15@

Вот выше - это будет их вызов.
Где в вызове функции and и or я беру два параметра 14@ и 4, а получаю в 15@
А сама цсм функция getlabelOffset выглядит так:

:getLabelOffset
{  Example:
    05F5: call_scm_func @getLabelOffset 1 label @lbl store_to 0@
}
if
    0@ <> 0
then
    05EC: 1@ = current_thread_pointer
    1@ += 0x98
    05E0: 1@ = read_memory 1@ size 4 virtual_protect 0
    0062: 1@ -= 0@
else
    1@ = 0
end
05F6: ret 1 1@

I know everything and nothing...

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Пишем новые функции в КЛЕО
« Ответ #1 : Март 24, 2015, 12:33:51 pm »
Хм, полезный мануал, молодец mfisto

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Пишем новые функции в КЛЕО
« Ответ #2 : Март 24, 2015, 03:02:45 pm »
Кто бы еще написал туториал про использование AND, OR, XOR, NOT в скриптинге GTA...