GTA Builder Форум

GTA Vice City => Программирование => Тема начата: mike43842 от Ноябрь 27, 2013, 08:55:27 pm

Название: нужна помощь, сделать стрельбу из пистолетов в мотоцикле.
Отправлено: mike43842 от Ноябрь 27, 2013, 08:55:27 pm
Всем привет, мне очень нужна помощь, я хотел бы написать плагин которой позволил бы стрелять из пистолетов когда едешь на мотоцикле, кто нибудь знает примерное место где это все прописано (стрельба из UZI-шек)? думаю там не трудно будет переписать.
Название: Re: нужна помощь
Отправлено: Sektor от Ноябрь 27, 2013, 09:01:19 pm
Вот кажись она:

Код: C++
  1. 005D44E0        CWeapon::FireFromCar((CAutomobile *,bool))

Вот тут надо ковыряться, пока подробностей не знаю:

.text:005D44E0                                   sub_5D44E0      proc near               ; CODE XREF: sub_5C91E0+2BCp
.text:005D44E0                                                                           ; sub_5C9540+1F2p
.text:005D44E0                                                                           ; sub_5C97B0+22Ep
.text:005D44E0
.text:005D44E0                                   arg_0           = dword ptr  4
.text:005D44E0                                   arg_4           = dword ptr  8
.text:005D44E0                                   arg_8           = dword ptr  0Ch
.text:005D44E0
.text:005D44E0 000 53                                            push    ebx
.text:005D44E1 004 56                                            push    esi
.text:005D44E2 008 89 CE                                         mov     esi, ecx
.text:005D44E4 008 8B 5C 24 0C                                   mov     ebx, [esp+8+arg_0]
.text:005D44E8 008 8B 46 04                                      mov     eax, [esi+4]
.text:005D44EB 008 85 C0                                         test    eax, eax
.text:005D44ED 008 74 11                                         jz      short loc_5D4500
.text:005D44EF 008 83 F8 01                                      cmp     eax, 1
.text:005D44F2 008 74 0C                                         jz      short loc_5D4500
.text:005D44F4 008 30 C0                                         xor     al, al
.text:005D44F6 008 5E                                            pop     esi
.text:005D44F7 004 5B                                            pop     ebx
.text:005D44F8 000 C2 0C 00                                      retn    0Ch
.text:005D44F8                                   ; ---------------------------------------------------------------------------
.text:005D44FB 000 89 C0 8D 40 00                                align 10h
.text:005D4500
.text:005D4500                                   loc_5D4500:                             ; CODE XREF: sub_5D44E0+Dj
.text:005D4500                                                                           ; sub_5D44E0+12j
.text:005D4500 008 83 7E 08 00                                   cmp     dword ptr [esi+8], 0
.text:005D4504 008 7F 0A                                         jg      short loc_5D4510
.text:005D4506 008 30 C0                                         xor     al, al
.text:005D4508 008 5E                                            pop     esi
.text:005D4509 004 5B                                            pop     ebx
.text:005D450A 000 C2 0C 00                                      retn    0Ch
.text:005D450A                                   ; ---------------------------------------------------------------------------
.text:005D450D 000 8D 40 00                                      align 10h
.text:005D4510
.text:005D4510                                   loc_5D4510:                             ; CODE XREF: sub_5D44E0+24j
.text:005D4510 008 8B 44 24 10                                   mov     eax, [esp+8+arg_4]
.text:005D4514 008 8B 54 24 14                                   mov     edx, [esp+8+arg_8]
.text:005D4518 008 89 F1                                         mov     ecx, esi
.text:005D451A 008 52                                            push    edx
.text:005D451B 00C 50                                            push    eax
.text:005D451C 010 53                                            push    ebx
.text:005D451D 014 E8 7E 6B FF FF                                call    sub_5CB0A0
.text:005D4522 008 84 C0                                         test    al, al
.text:005D4524 008 0F 84 A6 00 00 00                             jz      loc_5D45D0
.text:005D452A 008 8B 43 64                                      mov     eax, [ebx+64h]
.text:005D452D 008 B9 8A 0B A1 00                                mov     ecx, offset _audio
.text:005D4532 008 FF 35 98 D3 69 00                             push    dword_69D398    ; float
.text:005D4538 00C 6A 37                                         push    37h             ; audioEvent
.text:005D453A 010 50                                            push    eax             ; int
.text:005D453B 014 E8 60 58 02 00                                call    CAudio__?PlayAudioEventOnEntity
.text:005D4540 008 83 7E 08 00                                   cmp     dword ptr [esi+8], 0
.text:005D4544 008 7E 03                                         jle     short loc_5D4549
.text:005D4546 008 FF 4E 08                                      dec     dword ptr [esi+8]
.text:005D4549
.text:005D4549                                   loc_5D4549:                             ; CODE XREF: sub_5D44E0+64j
.text:005D4549 008 8B 46 0C                                      mov     eax, [esi+0Ch]
.text:005D454C 008 3D A8 61 00 00                                cmp     eax, 61A8h
.text:005D4551 008 7D 2D                                         jge     short loc_5D4580
.text:005D4553 008 85 C0                                         test    eax, eax
.text:005D4555 008 7E 29                                         jle     short loc_5D4580
.text:005D4557 008 85 DB                                         test    ebx, ebx
.text:005D4559 008 74 22                                         jz      short loc_5D457D
.text:005D455B 008 8A 4B 50                                      mov     cl, [ebx+50h]
.text:005D455E 008 C0 E9 03                                      shr     cl, 3
.text:005D4561 008 0F B6 C1                                      movzx   eax, cl
.text:005D4564 008 85 C0                                         test    eax, eax
.text:005D4566 008 75 15                                         jnz     short loc_5D457D
.text:005D4568 008 E8 9A 93 EF FF                                call    sub_4CD907
.text:005D456D 008 D8 1D 10 D5 69 00                             fcomp   flt_69D510
.text:005D4573 008 DF E0                                         fnstsw  ax
.text:005D4575 008 80 E4 05                                      and     ah, 5
.text:005D4578 008 80 FC 01                                      cmp     ah, 1
.text:005D457B 008 75 03                                         jnz     short loc_5D4580
.text:005D457D
.text:005D457D                                   loc_5D457D:                             ; CODE XREF: sub_5D44E0+79j
.text:005D457D                                                                           ; sub_5D44E0+86j
.text:005D457D 008 FF 4E 0C                                      dec     dword ptr [esi+0Ch]
.text:005D4580
.text:005D4580                                   loc_5D4580:                             ; CODE XREF: sub_5D44E0+71j
.text:005D4580                                                                           ; sub_5D44E0+75j
.text:005D4580                                                                           ; sub_5D44E0+9Bj
.text:005D4580 008 C7 46 04 01 00 00 00                          mov     dword ptr [esi+4], 1
.text:005D4587 008 83 7E 08 00                                   cmp     dword ptr [esi+8], 0
.text:005D458B 008 75 36                                         jnz     short loc_5D45C3
.text:005D458D 008 83 7E 0C 00                                   cmp     dword ptr [esi+0Ch], 0
.text:005D4591 008 75 0D                                         jnz     short loc_5D45A0
.text:005D4593 008 5E                                            pop     esi
.text:005D4594 004 B0 01                                         mov     al, 1
.text:005D4596 004 5B                                            pop     ebx
.text:005D4597 000 C2 0C 00                                      retn    0Ch
.text:005D4597                                   ; ---------------------------------------------------------------------------
.text:005D459A 000 8D 80 00 00 00 00                             align 10h
.text:005D45A0
.text:005D45A0                                   loc_5D45A0:                             ; CODE XREF: sub_5D44E0+B1j
.text:005D45A0 008 C7 46 04 02 00 00 00                          mov     dword ptr [esi+4], 2
.text:005D45A7 008 8B 06                                         mov     eax, [esi]
.text:005D45A9 008 50                                            push    eax             ; weaponIndex
.text:005D45AA 00C E8 61 11 00 00                                call    GetWeaponInfoByIndex
.text:005D45AF 00C 8B 15 2C 4B 97 00                             mov     edx, ds:currentTime
.text:005D45B5 00C 59                                            pop     ecx
.text:005D45B6 008 03 50 0C                                      add     edx, [eax+0Ch]
.text:005D45B9 008 B0 01                                         mov     al, 1
.text:005D45BB 008 89 56 10                                      mov     [esi+10h], edx
.text:005D45BE 008 5E                                            pop     esi
.text:005D45BF 004 5B                                            pop     ebx
.text:005D45C0 000 C2 0C 00                                      retn    0Ch
.text:005D45C3                                   ; ---------------------------------------------------------------------------
.text:005D45C3
.text:005D45C3                                   loc_5D45C3:                             ; CODE XREF: sub_5D44E0+ABj
.text:005D45C3 008 A1 2C 4B 97 00                                mov     eax, ds:currentTime
.text:005D45C8 008 05 E8 03 00 00                                add     eax, 3E8h
.text:005D45CD 008 89 46 10                                      mov     [esi+10h], eax
.text:005D45D0
.text:005D45D0                                   loc_5D45D0:                             ; CODE XREF: sub_5D44E0+44j
.text:005D45D0 008 B0 01                                         mov     al, 1
.text:005D45D2 008 5E                                            pop     esi
.text:005D45D3 004 5B                                            pop     ebx
.text:005D45D4 000 C2 0C 00                                      retn    0Ch
.text:005D45D4                                   sub_5D44E0      endp

Но по пробуй по лазить.
Название: Re: нужна помощь, сделать стрельбу из пистолетов в мотоцикле.
Отправлено: mike43842 от Ноябрь 27, 2013, 09:04:49 pm
большое спасибо!)
Название: Re: нужна помощь, сделать стрельбу из пистолетов в мотоцикле.
Отправлено: xanser от Ноябрь 29, 2013, 12:15:49 pm
Как вариант:

(http://s6.postimg.org/59nuk0b9d/scr000.jpg) (http://s6.postimg.org/97b49ey2p/scr001.jpg) (http://s6.postimg.org/cfk7079q9/scr003.jpg) (http://s6.postimg.org/dj4bc5udd/scr006.jpg)

Во время управления транспортным средством статус игрока равен 0x32, если его сбросить в 0, то игрок отвязывается от управления и может менять оружие как на земле, но продолжает находиться в транcпорте. Несколько глючновато выглядит, иногда оружие не видно, но прикольно, если довести до ума.

0x94AD28 - [pointer] - Player pointer
  +0x244 - [byte] - player current status
    0x32 - sitting in vehicle

Вот asi-шка и исходник этой глюкоты, можете потестировать: http://www.mediafire.com/download/51don588qa3q76l/FireOnBikeTest.rar (http://www.mediafire.com/download/51don588qa3q76l/FireOnBikeTest.rar)
Название: Re: нужна помощь, сделать стрельбу из пистолетов в мотоцикле.
Отправлено: xanser от Май 17, 2014, 03:46:14 pm
Оказывается на мотоцикле можно возить любое оружие в качестве текущего, например опкодом 01B9: set_actor_armed_weapon_to. Дальше, чтобы им стрелять нужно переключить группу доступного при езде оружия с 5 (uzi, mp5, tec9) на свою, эта группа тут 0x5C9234. Правильно переносятся координаты выстрела и огневая мощь, но остается еще поменять звук uzi, скорость и анимацию выстрела, все это возможно даже не от самого uzi, а специально написано под мотоцикл. Надо рыть дальше в районе функции 0x5C91E0.

(http://s6.postimg.org/kzjzirqf5/scr000.jpg) (http://s6.postimg.org/yuia18ku9/scr001.jpg)
Название: Re: нужна помощь, сделать стрельбу из пистолетов в мотоцикле.
Отправлено: mike43842 от Май 18, 2014, 05:05:18 pm
Xanser, подскажи, где посмотреть, в какой группе какое оружие находится?
Название: Re: нужна помощь, сделать стрельбу из пистолетов в мотоцикле.
Отправлено: xanser от Май 19, 2014, 05:04:35 am
Смотри последний столбик в weapon.dat или тут http://gtamodding.ru/wiki/%D0%9D%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F (http://gtamodding.ru/wiki/%D0%9D%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F)