#3051 11-03-2011 20:44

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Один вопрос

Адрес вроде таков: 0x4686A0

Это не адрес памяти, а оффсет от начала файла. Если нужно просто посмотреть код exe, не редактируя его, то удобнее всего воспользоваться базой для IDA. Значение оффсета от начала файла и адрес памяти в этом случае отображаются одновременно:
0263a0e57295t.jpg
В 0A8C всегда нужно подставлять адрес памяти, а не оффсет.

Ничего не происходит...если поставить virtual_protect 0, то игра вылетает...

С адресов типов rdata и text при чтении или записи надо снимать защиту (virtual protect 1).

Offline

#3052 11-03-2011 22:14

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

спасибо большое, при помощи IDA определил таки адрес памяти....при чтении всё нормально, читается именно то что мне нужно, однако если записать что-то своё, то в игре ничего не меняется...причём если после записи, считать то что записал, то окажется, что запись прошла успешно....однако, может ли такое быть? ведь в игре ничего не поменялось...а должна была воспроизводиться другая анимация, во время висения...когда редактируешь exe она действительно меняется...как быть?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3053 11-03-2011 22:50

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

Значение оффсета от начала файла и адрес памяти в этом случае отображаются одновременно:

А еще в IDA можно воспользоваться командой Jump -> Jump to file offset...

Offline

#3054 12-03-2011 00:47

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Один вопрос

а должна была воспроизводиться другая анимация

Не факт, ведь неизвестно точное предназначение этих адресов. Странно то, что на данные адреса не ссылается ни одна процедура (может они вообще не используются?).

Last edited by Den_spb (12-03-2011 00:51)

Offline

#3055 12-03-2011 09:30

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Похоже, что они используются лишь 1 раз, при загрузке игры, а может при загрузке ped.ifp в память, но то что 1 раз используются, это точно, ведь, как я уже сказал, если править exe то анимация действительно меняется...


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3056 13-03-2011 12:35

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Кто-нибудь знает какой-нибудь адрес в памяти, изменяющийся во время включения-выключения (F6) чата в SA-MP'е? Перехват клавиш не предлагать.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3057 17-03-2011 11:00

Mr.Nick
Registered: 17-03-2011
Posts: 4

Re: Один вопрос

Скажите пожалуйста,из-за чего вылетает игра с опкодом?

0137:   car 0@ model == #модель

Спасибо.

Offline

#3058 17-03-2011 12:25

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Один вопрос

В 0@ записано число, не являющееся хэндлом существующего в данный момент в игре транспортного средства. Сначала надо убедиться, что транспортное средство существует (проверка 056E)

Offline

#3059 17-03-2011 18:37

Mr.Nick
Registered: 17-03-2011
Posts: 4

Re: Один вопрос

Спасибо за ответ,но я уже сделал по другому)
Теперь меня интересует вопрос,есть ли подходящий опкод для сохранения скорости авто? Ну или что бы предел максимальной можно было ограничить.

00AD: set_car 36@ max_speed_to 10.0

Работает только когда авто на автопилоте,а когда сам рулишь не хочет.

Offline

#3060 17-03-2011 19:08

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Один вопрос

Если кто знает, скажите какой опкод нужен для случая:
if
---> скорость машины 0@, равна или меньше (опеределенного значения) <---
jump @1234

Last edited by Ty6ePkYJIe3 (17-03-2011 19:09)

Offline

#3061 17-03-2011 19:31

Mr.Nick
Registered: 17-03-2011
Posts: 4

Re: Один вопрос

02E3: 1@ <= car 0@ speed
Попробуй этот.

Last edited by Mr.Nick (17-03-2011 19:31)

Offline

#3062 17-03-2011 19:40

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@Ty6ePkYJIe3 -
Opcode search tool открываешь и таких вопросов больше не возникнет:

...
02E3: 1@ = car 0@ speed 
if
002B:   VALUE >= 1@ 
then
//00A6: destroy_car 0@ 
end
...
Mr.Nick wrote:

02E3: 1@ <= car 0@ speed
Попробуй этот.

crazy

Last edited by Sergey81 (17-03-2011 19:52)

Offline

#3063 17-03-2011 19:59

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Один вопрос

Mr.Nick, от того, что ты изменил описательную часть опкода, его функция не изменится. Смысл опкода зависит только от его номера.

Offline

#3064 17-03-2011 20:36

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Один вопрос

Спасибо всем, очень помогли

Offline

#3065 18-03-2011 17:02

Airon
Registered: 05-11-2010
Posts: 42

Re: Один вопрос

Можно ли эмулировать нажатие клавиш? Кажется, где-то подобное видел, но не могу найти

Offline

#3066 18-03-2011 18:21

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

Можно. Записать по адресу клавиши, значение 255 (нажата).
Список клавиш и примеры проверки нажатия есть в хелпе к санни билдеру.

Offline

#3067 18-03-2011 21:11

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Sw[ee wrote:

t]Можно. Записать по адресу клавиши, значение 255 (нажата).
Список клавиш и примеры проверки нажатия есть в хелпе к санни билдеру.

Это действительно сработает?? Не думал что всё так просто...надо проверить)

Last edited by Voron295 (18-03-2011 21:18)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3068 19-03-2011 06:50

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Один вопрос

Кто знает опкод для того,что бы спустить машине колеса,и наоборот.

Offline

#3069 19-03-2011 08:42

Airon
Registered: 05-11-2010
Posts: 42

Re: Один вопрос

Ещё пара вопросов
Мне нужно, чтобы человек бежал в опр точку, за что отвечает mode? И как заставить его следовать в основном по путям? И то же самое с машиной

Offline

#3070 19-03-2011 09:00

Airon
Registered: 05-11-2010
Posts: 42

Re: Один вопрос

вот попробовал сделать нажатие кнопок, не работает

{$CLEO}

0000:

:1
wait 0
if
player.Defined($PLAYER_CHAR)
jf @1
if
0AB0:  key_pressed 106
jf @1
0A8C: write_memory 0x4A572 size 1 value 0x00FF0000 virtual_protect 0
0A8C: write_memory 0x4A599 size 1 value 0x00FF0000 virtual_protect 0
0A8C: write_memory 0x4A59A size 1 value 0xFF virtual_protect 0
0A8C: write_memory 0x4A597 size 1 value 0xFF virtual_protect 0
0A8C: write_memory 0x4A598 size 1 value 0xFF virtual_protect 0
0A8C: write_memory 0x4A5A0 size 1 value 0xFF virtual_protect 0
0A8C: write_memory 0x4A59D size 1 value 0xFF virtual_protect 0
0A8C: write_memory 0x4A56A size 1 value 0x00FF0000 virtual_protect 0
wait 1000
jump @1

Offline

#3071 19-03-2011 09:36

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@Airon - здесь есть скрипт Night_Vision.cs с исходником в папке plugins, но приведу код на всякий случай:

{$cleo}
wait 0
    Model.Load(#NVGOGGLES)
    20@ = 17
    20@ *= 2
    20@ += 0xB73458 
while true
    wait 0                       
    if and
  //  Player.Defined($PLAYER_CHAR)
        80DF:   not actor $PLAYER_ACTOR driving 
        8818:   not actor $PLAYER_ACTOR in_air 
        0AB0:  key_pressed 50      
    then
0470: 0@ = actor $PLAYER_ACTOR current_weapon 
wait 10
if
8611:   not actor $PLAYER_ACTOR performing_animation "WEAPON_crouch" 
then
01B2: give_actor $PLAYER_ACTOR weapon 44 ammo 1    
wait 20    
0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0    
wait 1100
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0@  
end

if
0611:   actor $PLAYER_ACTOR performing_animation "WEAPON_crouch"
then
01B2: give_actor $PLAYER_ACTOR weapon 44 ammo 1    
wait 20    
0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0    
wait 1100
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0@
0A8C: write_memory 0xB7347C size 2 value 0xFF virtual_protect 0
end
end
//
    if and
//Player.Defined($PLAYER_CHAR)
00DF:   actor $PLAYER_ACTOR driving 
0AB0:  key_pressed 50      
    then
    wait 100
0A8D: 1@ = read_memory 0xC402B8 size 4 virtual_protect 0
if
1@ == 0
then
25@ = 5
08B1: enable_night_vision 1
else
25@ = 0
08B1: enable_night_vision 0
end
    end
    
if and
25@ == 5
00DF:   actor $PLAYER_ACTOR driving 
00E1:   player 0 pressed_key 15 
then
08B1: enable_night_vision 0
25@ = 0
end    


    end

Собственно

20@ = 17
20@ *= 2
20@ += 0xB73458 
0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0

Эмулирует нажатие кнопки выстрела. В данном случае игрок надевает очки ночного видения.
Если нужна эмуляция кнопок 0AB0, то у меня так сделать не получилось, так что помочь не могу.

Offline

#3072 19-03-2011 10:22

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Ty6ePkYJIe3 wrote:

Кто знает опкод для того,что бы спустить машине колеса,и наоборот.

04FE: deflate_tire 0 on_car 0@   // прокол колеса
0699: set_car 0@ repair_tire 0    //  восстановление
0496: tire 0 on_car 0@ deflated  // проверка на прокол
053F: set_car 0@ tires_vulnerability 0 // запрещает/разрешает прокол колёс на данном транспорте

Offline

#3073 19-03-2011 15:50

Airon
Registered: 05-11-2010
Posts: 42

Re: Один вопрос

Sergey81 wrote:
20@ = 17
20@ *= 2
20@ += 0xB73458 
0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0

Эмулирует нажатие кнопки выстрела. В данном случае игрок надевает очки ночного видения.
Если нужна эмуляция кнопок 0AB0, то у меня так сделать не получилось, так что помочь не могу.

Я тоже самое пробовал, не получается, по крайней мере в сампе, хотя должно, виртуал протект ставил

Offline

#3074 19-03-2011 16:17

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@Airon -

по крайней мере в сампе

Ну так пример то проверенно рабочий, теперь ты знаешь почему не работает.

Offline

#3075 20-03-2011 13:36

Airon
Registered: 05-11-2010
Posts: 42

Re: Один вопрос

Есть предложение, как сделать чтоб в сампе работал тоже?

Offline

Board footer

Powered by FluxBB