Программирование (ASM, C++, и другое)
|
|
Den-x | Дата: Суббота, 14.04.2012, 17:47 | Сообщение # 16 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Как мне сделать телепорт по Z(Высота) координатам. Вот так только чтение, а мне нужна запись. Code DWORD(CPed+0x14) +0x38 Помогите мне сделать ТП, лучше код на C++
Сообщение отредактировал Den-x - Суббота, 14.04.2012, 18:03 |
|
| |
Den_spb | Дата: Воскресенье, 15.04.2012, 03:54 | Сообщение # 17 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Запись тоже должна работать. Код скрипта выглядит так: Code 0@ = 0xB6F5F0 // Указатель игрока (CPed) 0@ += 0x14 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x38 0A8C: write_memory 0@ size 4 value 100.0 virtual_protect 0 Код на С++ лично я дать не могу, т.к. никогда не писал программы, встраивающиеся в игру.
|
|
| |
Den-x | Дата: Воскресенье, 15.04.2012, 04:30 | Сообщение # 18 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Да, я так и делаю аналогично, но ничего не выходит. Попробуйте свой код в КЛЕО может он не работает. Можете дать код на асме вы вроде писали ответы.
|
|
| |
Den_spb | Дата: Воскресенье, 15.04.2012, 04:46 | Сообщение # 19 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Прошу прощения, указатель - не 0xB6F5F0, а записан по адресу 0xB6F5F0. Вот так работает: Code 0@ = 0xB6F5F0 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x14 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x38 0A8C: write_memory 0@ size 4 value 1000.0 virtual_protect 0 Т.е. на asm будет так:Code mov eax, 0B6F5F0h mov eax, [eax] add eax, 14h mov eax, [eax] add eax, 38h mov [eax] , 0447A0000h ; 1000.0
|
|
| |
Den-x | Дата: Воскресенье, 15.04.2012, 14:33 | Сообщение # 20 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Всё равно не делает ТП ;D, спс вам за ответ! Вроде на EN форуме писали что это адреса ток для чтения, те изменения не влияет на работу. Возможно у меня плохо настроен инструмент "Прямые руки" ^_^. Вы пробовали в SA:MP или в одиночке, я пробовал в SA:MP - у мя не работает одиночка
Сообщение отредактировал Den-x - Воскресенье, 15.04.2012, 14:37 |
|
| |
Den_spb | Дата: Воскресенье, 15.04.2012, 14:38 | Сообщение # 21 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Последний вариант скрипта работает, я проверял. Вероятно дело в том, что тестирование производится на САМПе. Работоспособность КЛЕО-скриптов в нём не гарантируется, с программами типа телепорта ситуация аналогичная. Я работаю только с одиночной игрой.
Сообщение отредактировал Den_spb - Воскресенье, 15.04.2012, 14:42 |
|
| |
Den-x | Дата: Понедельник, 16.04.2012, 14:19 | Сообщение # 22 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| С одиночной попробовал, но без результатов. Адресов памяти с реальными координатами всего 9, а эффект только от одного
|
|
| |
Den_spb | Дата: Понедельник, 16.04.2012, 16:30 | Сообщение # 23 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (Den-x) Адресов памяти с реальными координатами всего 9 Откуда взялось 9? Адресов всего 3, по количеству координат: Code DWORD(CPed+0x14) +0x30 ; X DWORD(CPed+0x14) +0x34 ; Y DWORD(CPed+0x14) +0x38 ; Z
Quote (Den-x) С одиночной попробовал, но без результатов. Странно, скрипт ведь работает. Можно попробовать осуществить телепорт и другим способом - вызвав функцию: Code .text:00464DC0 CPed__putAtCoords proc near
|
|
| |
Den-x | Дата: Вторник, 17.04.2012, 13:19 | Сообщение # 24 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Quote (Den_spb) Откуда взялось 9? Адресов всего 3, по количеству координат: Я имел в виду адресов с координатами Z(искал в ручную).
Quote (Den_spb) Можно попробовать осуществить телепорт и другим способом - вызвав функцию Можно по подробней про это
|
|
| |
Den_spb | Дата: Вторник, 17.04.2012, 13:42 | Сообщение # 25 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (Den-x) Можно по подробней про это Что конкретно интересует?
|
|
| |
Den-x | Дата: Вторник, 17.04.2012, 14:31 | Сообщение # 26 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Как её использовать Добавлено (17.04.2012, 14:31) --------------------------------------------- Если не ошибаюсь то функцию вызывать так, я прав? Я с asm не знаком, видел пару примеров от s0beit'a . Но я не знаю как указать параметры, те куда делать ТП.
|
|
| |
Den_spb | Дата: Вторник, 17.04.2012, 15:41 | Сообщение # 27 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| В scm выглядит так: Code 0@ = 0xB6F5F0 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0AA6: call_method 0x464DC0 struct 0@ num_params 6 pop 0 0 0 z 1000.0 y 0.0 x 0.0 0@ В asm перед вызовом функции надо передать параметры с помощью команды push, а параметр struct (если функция является методом) записать в регистр ecx. Выглядеть будет примерно так:Code push 0 push 0 push 0447A0000h ; 1000.0 push 0 push 0 mov eax, 0B6F5F0h mov eax, [eax] push eax mov ecx, eax mov eax, 0464DC0h call eax
Добавлено:
Нашёл на SB-форуме несколько постов по теме интеграции своего приложения в игру: http://sannybuilder.com/forums/viewtopic.php?pid=2712#p2712 http://sannybuilder.com/forums/viewtopic.php?pid=2819#p2819 http://sannybuilder.com/forums/viewtopic.php?pid=6723#p6723
Сообщение отредактировал Den_spb - Вторник, 17.04.2012, 16:14 |
|
| |
Den-x | Дата: Вторник, 17.04.2012, 16:23 | Сообщение # 28 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Quote (Den_spb) push 0 push 0 push 0447A0000h ; 1000.0 ;это Z push 0 push 0 mov eax, 0B6F5F0h mov eax, [eax] push eax mov ecx, eax mov eax, 0464DC0h call eax оооУ да! То что нужно. Можно пример с изменением XYZ,угол поворота -------------------------- Quote (Den_spb) http://sannybuilder.com/forums/viewtopic.php?pid=2712#p2712 Я делаю правельно через dll. Quote (Den_spb) http://sannybuilder.com/forums/viewtopic.php?pid=2819#p2819 Я работаю с указателями это не надо Quote (Den_spb) http://sannybuilder.com/forums/viewtopic.php?pid=6723#p6723 Ничего не понял
Сообщение отредактировал Den-x - Вторник, 17.04.2012, 16:35 |
|
| |
Den_spb | Дата: Среда, 18.04.2012, 11:55 | Сообщение # 29 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| В опкоде 0AA6 параметры указываются в том же порядке, в каком они передаются в asm:Code push 0 push 0 push 0447A0000h ; 1000.0 ; Z push 0 ; Y push 0 ; X mov eax, 0B6F5F0h mov eax, [eax] push eax mov ecx, eax mov eax, 0464DC0h call eax Угол поворота эта функция не устанавливает.
|
|
| |
Den-x | Дата: Среда, 18.04.2012, 14:19 | Сообщение # 30 |
Группа: Пользователи
Сообщений: 13
Статус: Offline
| Den_spb, Спасибо вам, что вы помогли мне!
|
|
| |