Página 1 de 1

Modos de câmera (+ checar se está mirando)

Enviado: 01 Out 2018, 03:33
por Junior_Djjr
Descrição

O jogo trabalha com diferentes modos de câmera. É o que difere por exemplo uma câmera que segue um char, ou um carro, ou uma câmera mirando, ou attachada etc.

Isto pode ajudar à identificar o que está acontecendo com a câmera no momento, é a melhor maneira de checar se você está mirando.


Enumeration / Const

gta3script:

Código: Selecionar tudo

    CONST_INT MODE_NONE                              0
    CONST_INT MODE_TOPDOWN                           1
    CONST_INT MODE_GTACLASSIC                        2
    CONST_INT MODE_BEHINDCAR                         3
    CONST_INT MODE_FOLLOWPED                         4
    CONST_INT MODE_AIMING                            5
    CONST_INT MODE_DEBUG                             6
    CONST_INT MODE_SNIPER                            7
    CONST_INT MODE_ROCKETLAUNCHER                    8
    CONST_INT MODE_MODELVIEW                         9
    CONST_INT MODE_BILL                              10
    CONST_INT MODE_SYPHON                            11
    CONST_INT MODE_CIRCLE                            12
    CONST_INT MODE_CHEESYZOOM                        13
    CONST_INT MODE_WHEELCAM                          14
    CONST_INT MODE_FIXED                             15
    CONST_INT MODE_1STPERSON                         16
    CONST_INT MODE_FLYBY                             17
    CONST_INT MODE_CAM_ON_A_STRING                   18
    CONST_INT MODE_REACTION                          19
    CONST_INT MODE_FOLLOW_PED_WITH_BIND              20
    CONST_INT MODE_CHRIS                             21
    CONST_INT MODE_BEHINDBOAT                        22
    CONST_INT MODE_PLAYER_FALLEN_WATER               23
    CONST_INT MODE_CAM_ON_TRAIN_ROOF                 24
    CONST_INT MODE_CAM_RUNNING_SIDE_TRAIN            25
    CONST_INT MODE_BLOOD_ON_THE_TRACKS               26
    CONST_INT MODE_IM_THE_PASSENGER_WOOWOO           27
    CONST_INT MODE_SYPHON_CRIM_IN_FRONT              28
    CONST_INT MODE_PED_DEAD_BABY                     29
    CONST_INT MODE_PILLOWS_PAPS                      30
    CONST_INT MODE_LOOK_AT_CARS                      31
    CONST_INT MODE_ARRESTCAM_ONE                     32
    CONST_INT MODE_ARRESTCAM_TWO                     33
    CONST_INT MODE_M16_1STPERSON                     34
    CONST_INT MODE_SPECIAL_FIXED_FOR_SYPHON          35
    CONST_INT MODE_FIGHT_CAM                         36
    CONST_INT MODE_TOP_DOWN_PED                      37
    CONST_INT MODE_LIGHTHOUSE                        38
    CONST_INT MODE_SNIPER_RUNABOUT                   39
    CONST_INT MODE_ROCKETLAUNCHER_RUNABOUT           40
    CONST_INT MODE_1STPERSON_RUNABOUT                41
    CONST_INT MODE_M16_1STPERSON_RUNABOUT            42
    CONST_INT MODE_FIGHT_CAM_RUNABOUT                43
    CONST_INT MODE_EDITOR                            44
    CONST_INT MODE_HELICANNON_1STPERSON              45
    CONST_INT MODE_CAMERA                            46
    CONST_INT MODE_ATTACHCAM                         47
    CONST_INT MODE_TWOPLAYER                         48
    CONST_INT MODE_TWOPLAYER_IN_CAR_AND_SHOOTING     49
    CONST_INT MODE_TWOPLAYER_SEPARATE_CARS           50
    CONST_INT MODE_ROCKETLAUNCHER_HS                 51
    CONST_INT MODE_ROCKETLAUNCHER_RUNABOUT_HS        52
    CONST_INT MODE_AIMWEAPON                         53
    CONST_INT MODE_TWOPLAYER_SEPARATE_CARS_TOPDOWN   54
    CONST_INT MODE_AIMWEAPON_FROMCAR                 55
    CONST_INT MODE_DW_HELI_CHASE                     56
    CONST_INT MODE_DW_CAM_MAN                        57
    CONST_INT MODE_DW_BIRDY                          58
    CONST_INT MODE_DW_PLANE_SPOTTER                  59
    CONST_INT MODE_DW_DOG_FIGHT                      60
    CONST_INT MODE_DW_FISH                           61
    CONST_INT MODE_DW_PLANECAM1                      62
    CONST_INT MODE_DW_PLANECAM2                      63
    CONST_INT MODE_DW_PLANECAM3                      64
    CONST_INT MODE_AIMWEAPON_ATTACHED                65
Sanny Builder:

Código: Selecionar tudo

const
    MODE_NONE                             = 0
    MODE_TOPDOWN                          = 1
    MODE_GTACLASSIC                       = 2
    MODE_BEHINDCAR                        = 3
    MODE_FOLLOWPED                        = 4
    MODE_AIMING                           = 5
    MODE_DEBUG                            = 6
    MODE_SNIPER                           = 7
    MODE_ROCKETLAUNCHER                   = 8
    MODE_MODELVIEW                        = 9
    MODE_BILL                             = 10
    MODE_SYPHON                           = 11
    MODE_CIRCLE                           = 12
    MODE_CHEESYZOOM                       = 13
    MODE_WHEELCAM                         = 14
    MODE_FIXED                            = 15
    MODE_1STPERSON                        = 16
    MODE_FLYBY                            = 17
    MODE_CAM_ON_A_STRING                  = 18
    MODE_REACTION                         = 19
    MODE_FOLLOW_PED_WITH_BIND             = 20
    MODE_CHRIS                            = 21
    MODE_BEHINDBOAT                       = 22
    MODE_PLAYER_FALLEN_WATER              = 23
    MODE_CAM_ON_TRAIN_ROOF                = 24
    MODE_CAM_RUNNING_SIDE_TRAIN           = 25
    MODE_BLOOD_ON_THE_TRACKS              = 26
    MODE_IM_THE_PASSENGER_WOOWOO          = 27
    MODE_SYPHON_CRIM_IN_FRONT             = 28
    MODE_PED_DEAD_BABY                    = 29
    MODE_PILLOWS_PAPS                     = 30
    MODE_LOOK_AT_CARS                     = 31
    MODE_ARRESTCAM_ONE                    = 32
    MODE_ARRESTCAM_TWO                    = 33
    MODE_M16_1STPERSON                    = 34
    MODE_SPECIAL_FIXED_FOR_SYPHON         = 35
    MODE_FIGHT_CAM                        = 36
    MODE_TOP_DOWN_PED                     = 37
    MODE_LIGHTHOUSE                       = 38
    MODE_SNIPER_RUNABOUT                  = 39
    MODE_ROCKETLAUNCHER_RUNABOUT          = 40
    MODE_1STPERSON_RUNABOUT               = 41
    MODE_M16_1STPERSON_RUNABOUT           = 42
    MODE_FIGHT_CAM_RUNABOUT               = 43
    MODE_EDITOR                           = 44
    MODE_HELICANNON_1STPERSON             = 45
    MODE_CAMERA                           = 46
    MODE_ATTACHCAM                        = 47
    MODE_TWOPLAYER                        = 48
    MODE_TWOPLAYER_IN_CAR_AND_SHOOTING    = 49
    MODE_TWOPLAYER_SEPARATE_CARS          = 50
    MODE_ROCKETLAUNCHER_HS                = 51
    MODE_ROCKETLAUNCHER_RUNABOUT_HS       = 52
    MODE_AIMWEAPON                        = 53
    MODE_TWOPLAYER_SEPARATE_CARS_TOPDOWN  = 54
    MODE_AIMWEAPON_FROMCAR                = 55
    MODE_DW_HELI_CHASE                    = 56
    MODE_DW_CAM_MAN                       = 57
    MODE_DW_BIRDY                         = 58
    MODE_DW_PLANE_SPOTTER                 = 59
    MODE_DW_DOG_FIGHT                     = 60
    MODE_DW_FISH                          = 61
    MODE_DW_PLANECAM1                     = 62
    MODE_DW_PLANECAM2                     = 63
    MODE_DW_PLANECAM3                     = 64
    MODE_AIMWEAPON_ATTACHED               = 65
end
Fonte: https://www.gtagmodding.com/sanandreas/camera-modes/

Nem todos os modos funcional, muitos são leftovers das versões antigas ou usadas em debug.


Exemplo de uso

Você pode ter o valor do modo de câmera atual lendo o endereço 0x00B6F1A8 (2 bytes).
No Plugin-sdk é TheCamera.m_aCams[TheCamera.m_nActiveCam].m_nMode.

Como checar se está mirando:

Esta é sem dúvidas a melhor maneira de saber se o jogador está mirando com uma arma. Você pode inclusive saber o tipo de mira está acontecendo.
É compatível com tudo, joypad, modos de controle, armas adicionadas sem substituir etc. Portanto recomendo que se for fazer algo assim, não cheque o botão de mira, mas sim o modo de câmera.

gta3script:

Código: Selecionar tudo

// IF GOSUB IsAiming

    LVAR_INT camMode
    IsAiming:
    READ_MEMORY 0x00B6F1A8 2 FALSE (camMode)
    IF camMode = MODE_AIMING
    OR camMode = MODE_SNIPER
    OR camMode = MODE_ROCKETLAUNCHER
    OR camMode = MODE_CAMERA
    OR camMode = MODE_ROCKETLAUNCHER_HS
    OR camMode = MODE_AIMWEAPON
    OR camMode = MODE_AIMWEAPON_ATTACHED
        RETURN_TRUE
        RETURN
    ENDIF
    RETURN_FALSE
    RETURN
Sanny Builder:

Código: Selecionar tudo

// IF gosub @IsAiming

:IsAiming
0A8D: 0@ = read_memory 0x00B6F1A8 size 2 vp 0
if or
0@ == MODE_AIMING
0@ == MODE_SNIPER
0@ == MODE_ROCKETLAUNCHER
0@ == MODE_CAMERA
0@ == MODE_ROCKETLAUNCHER_HS
0@ == MODE_AIMWEAPON
0@ == MODE_AIMWEAPON_ATTACHED
then
    0485:  return_true
    return
end
059A:  return_false
return
Nota: Usei gosub pois é mais leve e só usa 1 variável, mas pode facilmente ser feito com CLEO_CALL/scm_func também.
 

Re: Modos de câmera (+ checar se está mirando)

Enviado: 01 Out 2018, 11:32
por Um_Geek
nice! :peepo6:

fiz uma lib para usar em lua

cam-mode.rar
(1020 Bytes) Baixado 260 vezes

SpoilerAbrir

Código: Selecionar tudo

local memory = require "memory"
local cam = {  }

cam.mode = {
    MODE_NONE                             = 0,
    MODE_TOPDOWN                          = 1,
    MODE_GTACLASSIC                       = 2,
    MODE_BEHINDCAR                        = 3,
    MODE_FOLLOWPED                        = 4,
    MODE_AIMING                           = 5,
    MODE_DEBUG                            = 6,
    MODE_SNIPER                           = 7,
    MODE_ROCKETLAUNCHER                   = 8,
    MODE_MODELVIEW                        = 9,
    MODE_BILL                             = 10,
    MODE_SYPHON                           = 11,
    MODE_CIRCLE                           = 12,
    MODE_CHEESYZOOM                       = 13,
    MODE_WHEELCAM                         = 14,
    MODE_FIXED                            = 15,
    MODE_1STPERSON                        = 16,
    MODE_FLYBY                            = 17,
    MODE_CAM_ON_A_STRING                  = 18,
    MODE_REACTION                         = 19,
    MODE_FOLLOW_PED_WITH_BIND             = 20,
    MODE_CHRIS                            = 21,
    MODE_BEHINDBOAT                       = 22,
    MODE_PLAYER_FALLEN_WATER              = 23,
    MODE_CAM_ON_TRAIN_ROOF                = 24,
    MODE_CAM_RUNNING_SIDE_TRAIN           = 25,
    MODE_BLOOD_ON_THE_TRACKS              = 26,
    MODE_IM_THE_PASSENGER_WOOWOO          = 27,
    MODE_SYPHON_CRIM_IN_FRONT             = 28,
    MODE_PED_DEAD_BABY                    = 29,
    MODE_PILLOWS_PAPS                     = 30,
    MODE_LOOK_AT_CARS                     = 31,
    MODE_ARRESTCAM_ONE                    = 32,
    MODE_ARRESTCAM_TWO                    = 33,
    MODE_M16_1STPERSON                    = 34,
    MODE_SPECIAL_FIXED_FOR_SYPHON         = 35,
    MODE_FIGHT_CAM                        = 36,
    MODE_TOP_DOWN_PED                     = 37,
    MODE_LIGHTHOUSE                       = 38,
    MODE_SNIPER_RUNABOUT                  = 39,
    MODE_ROCKETLAUNCHER_RUNABOUT          = 40,
    MODE_1STPERSON_RUNABOUT               = 41,
    MODE_M16_1STPERSON_RUNABOUT           = 42,
    MODE_FIGHT_CAM_RUNABOUT               = 43,
    MODE_EDITOR                           = 44,
    MODE_HELICANNON_1STPERSON             = 45,
    MODE_CAMERA                           = 46,
    MODE_ATTACHCAM                        = 47,
    MODE_TWOPLAYER                        = 48,
    MODE_TWOPLAYER_IN_CAR_AND_SHOOTING    = 49,
    MODE_TWOPLAYER_SEPARATE_CARS          = 50,
    MODE_ROCKETLAUNCHER_HS                = 51,
    MODE_ROCKETLAUNCHER_RUNABOUT_HS       = 52,
    MODE_AIMWEAPON                        = 53,
    MODE_TWOPLAYER_SEPARATE_CARS_TOPDOWN  = 54,
    MODE_AIMWEAPON_FROMCAR                = 55,
    MODE_DW_HELI_CHASE                    = 56,
    MODE_DW_CAM_MAN                       = 57,
    MODE_DW_BIRDY                         = 58,
    MODE_DW_PLANE_SPOTTER                 = 59,
    MODE_DW_DOG_FIGHT                     = 60,
    MODE_DW_FISH                          = 61,
}

cam.get_mode = function()
    return memory.read(0x00B6F1A8,2,false)
end

cam.is_aiming = function()
    local camMode = cam.get_mode()
    return (camMode == cam.mode.MODE_AIMING
    or camMode == cam.mode.MODE_SNIPER
    or camMode == cam.mode.MODE_ROCKETLAUNCHER
    or camMode == cam.mode.MODE_CAMERA
    or camMode == cam.mode.MODE_ROCKETLAUNCHER_HS
    or camMode == cam.mode.MODE_AIMWEAPON
    or camMode == cam.mode.MODE_AIMWEAPON_ATTACHED)
end

return cam

Código: Selecionar tudo

local cam = require("cam-mode")

function main()
    while true do 
        wait(4)
        if cam.is_aiming() then 
            printStringNow("esta mirando!",1000)
        end
    end
end

Re: Modos de câmera (+ checar se está mirando)

Enviado: 05 Out 2018, 08:10
por The Gamercrafter
Como funcionará este cam mod?

Re: Modos de câmera (+ checar se está mirando)

Enviado: 05 Out 2018, 20:38
por Junior_Djjr
The Gamercrafter escreveu:
05 Out 2018, 08:10
Como funcionará este cam mod?
Se você não entende de programação ignore esses tópicos.