Программирование (ASM, C++, и другое) - Страница 2 - Форум
Суббота, 10.12.2016, 13:46
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 2«12
Форум » Игры серии ГТА » Работа с памятью, exe » Программирование (ASM, C++, и другое) (Тема по программированию)
Программирование (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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Quote (Den-x)
Можно по подробней про это

Что конкретно интересует?
 
Den-xДата: Вторник, 17.04.2012, 14:31 | Сообщение # 26
Группа: Пользователи
Сообщений: 13
Статус: Offline
Как её использовать

Добавлено (17.04.2012, 14:31)
---------------------------------------------
Если не ошибаюсь то функцию вызывать так, я прав? Я с asm не знаком, видел пару примеров от s0beit'a .

Code
__asm call 00464DC0

Но я не знаю как указать параметры, те куда делать ТП.
 
Den_spbДата: Вторник, 17.04.2012, 15:41 | Сообщение # 27
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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

Ничего не понял smile


Сообщение отредактировал Den-x - Вторник, 17.04.2012, 16:35
 
Den_spbДата: Среда, 18.04.2012, 11:55 | Сообщение # 29
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: 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, Спасибо вам, что вы помогли мне!
 
Форум » Игры серии ГТА » Работа с памятью, exe » Программирование (ASM, C++, и другое) (Тема по программированию)
Страница 2 из 2«12
Поиск: