- RafaQNMensagens Nível 2
- Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 27
Localização : São Paulo - SP
Olá galera da BMS,
alguns sabem que estou trabalhando no mod Real Área 69 (ver: https://brmodstudio.forumeiros.com/t5037-realarea69-v0-6). No momento, estou trabalhando com a inserção de soldados na área 69, de um jeito que haja sistema Stealth no jogo.
O jeito que fiz até agora foi esse:
Poderia utilizar esse:
É semelhante ao opcode 09ED, só que a esse cabe quando o actor ver o outro (no caso o player) só de frente (acredito que quando demonstrar muita indiscrição quando se está por perto). Além do que o 0364 não é usado nas missões Stealth do GTA, mas o 09ED foi usada ao menos na missão 'Vertical Bird'.
Em outras missões Stealth, não verifiquei nenhum desses opcodes sendo usados (acho que nenhum fora a missão 'Vertical Bird'). Vi que usaram esses em algumas missões:
Sabem pra que que serve esses ai?
Outras perguntas:
- Sabem como verificar se um ator quer matar o outro ou o player?
- Como mudar a reação de um ator para uma espécie estado de alerta?
Acho que só. Agradeço quem contribuir...
alguns sabem que estou trabalhando no mod Real Área 69 (ver: https://brmodstudio.forumeiros.com/t5037-realarea69-v0-6). No momento, estou trabalhando com a inserção de soldados na área 69, de um jeito que haja sistema Stealth no jogo.
O jeito que fiz até agora foi esse:
- Código:
00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@
0855: get_actor $PLAYER_ACTOR noise_level_at 1@ 2@ 3@ store_to 4@
0017: 4@ /= 4.5
if or
09ED: actor 31@ is_within_field_of_view_actor $PLAYER_ACTOR
8104: not actor $PLAYER_ACTOR near_actor 31@ radius 4@ 4@ 4@ sphere 0
then
Poderia utilizar esse:
- Código:
0364: actor 0@ spotted_actor $PLAYER_ACTOR
É semelhante ao opcode 09ED, só que a esse cabe quando o actor ver o outro (no caso o player) só de frente (acredito que quando demonstrar muita indiscrição quando se está por perto). Além do que o 0364 não é usado nas missões Stealth do GTA, mas o 09ED foi usada ao menos na missão 'Vertical Bird'.
Em outras missões Stealth, não verifiquei nenhum desses opcodes sendo usados (acho que nenhum fora a missão 'Vertical Bird'). Vi que usaram esses em algumas missões:
- Código:
0648: unknown_actor 37@ task_set 2.0
- Código:
074E: unknown_set_actor_threat_scanner_flags 40@ radius 10.0 peds_to_scan 1
Sabem pra que que serve esses ai?
Outras perguntas:
- Sabem como verificar se um ator quer matar o outro ou o player?
- Como mudar a reação de um ator para uma espécie estado de alerta?
Acho que só. Agradeço quem contribuir...
- RafaQNMensagens Nível 2
- Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 27
Localização : São Paulo - SP
Esse é o sistema Stealth usado no RealArea69 v0.6, ainda vai ser melhorias e correções, mas só para verem:
- Código:
For 31@ = 0 to 33
0012: 31@ *= 12
0AC6: 29@ = label @SOLDIERS69 offset
005A: 29@ += 31@ // (int)
0016: 31@ /= 12
0A8D: 1@ = read_memory 29@ size 4 virtual_protect 0 //Lendo o handle do ator do soldado
000A: 29@ += 8
0A8D: 3@ = read_memory 29@ size 4 virtual_protect 0 //Lendo o se ele está atacando o player (é usado para evitar que o ator sempre receba o opcode 05E2: , que pode gerar bugs como baixo dano e imortalidade)
0AC6: 30@ = label @VALUES69 offset
0A8D: 0@ = read_memory 30@ size 4 virtual_protect 0 //Pegando código da área 69 (nulo (0), azul (1) ou vermelho (2), originais da missão 'Black Project')
if 056D: actor 1@ defined
then
if and
8118: not actor 1@ dead
0039: 3@ == 0
then
//Colocando inteligência de invasão de acordo com a código do player na área 69
if 0039: 0@ == 2
then //código vermelho
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
0855: get_actor $PLAYER_ACTOR noise_level_at 5@ 6@ 7@ store_to 8@
000F: 8@ -= 20.0
0017: 8@ /= 2.5
if or
09ED: actor 1@ is_within_field_of_view_actor $PLAYER_ACTOR
0104: actor $PLAYER_ACTOR near_actor 1@ radius 8@ 8@ 8@ sphere 0
then
077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
0A8C: write_memory 29@ size 4 value 1 virtual_protect 0 //Colocando que está atacando o player
break
end
else
if 0039: 0@ == 0
then //código neutra
0AC6: 28@ = label @VALUES69 offset
000A: 28@ += 4
0A8D: 2@ = read_memory 28@ size 4 virtual_protect 0 //Pegando o valor de onde player pode estar, original do meu mod
//Infrações que o player pode cometer na área 69 que podem ser percebíveis por soldados
if or //Verificar se algum soldado não está sendo ameaçado ou atingido, nesse não haverá código vermelho pois isso dificultaria o Stealth (acho)
051A: actor 1@ damaged_by_actor $PLAYER_ACTOR
0457: player $PLAYER_CHAR aiming_at_actor 1@
then
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
0855: get_actor $PLAYER_ACTOR noise_level_at 5@ 6@ 7@ store_to 8@
000F: 8@ -= 20.0
0017: 8@ /= 3.5
if or
09ED: actor 1@ is_within_field_of_view_actor $PLAYER_ACTOR
0104: actor $PLAYER_ACTOR near_actor 1@ radius 8@ 8@ 8@ sphere 0
then
077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
0A8C: write_memory 29@ size 4 value 1 virtual_protect 0
break
end
end
//Verificar se o player está atirando na área 69 indevidamente
if or
02D6: actor $PLAYER_ACTOR fires_weapon 0 in_rectangle_cornerA 96.0869 1942.2247 cornerB 361.2887 1778.5763
02D6: actor $PLAYER_ACTOR fires_weapon 0 in_rectangle_cornerA 165.7858 2106.521 cornerB 393.01 1868.0754
then
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
0855: get_actor $PLAYER_ACTOR noise_level_at 5@ 6@ 7@ store_to 8@
000F: 8@ -= 20.0
0017: 8@ /= 3.5
if or
09ED: actor 1@ is_within_field_of_view_actor $PLAYER_ACTOR
0104: actor $PLAYER_ACTOR near_actor 1@ radius 8@ 8@ 8@ sphere 0
then
077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
0A8C: write_memory 29@ size 4 value 1 virtual_protect 0
0A8C: write_memory 30@ size 4 value 2 virtual_protect 0
break
end
end
//Verificando se o player é pego
if and
0019: 2@ > 0 //Está dentro da área 69
8500: not player $PLAYER_CHAR skin == "POLICETR" on_bodypart 17
856C: not actor $PLAYER_ACTOR driving_police_car
80DD: not actor $PLAYER_ACTOR driving_car_with_model #PATRIOT
then
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
0855: get_actor $PLAYER_ACTOR noise_level_at 5@ 6@ 7@ store_to 8@
000F: 8@ -= 20.0
0017: 8@ /= 3.5
if or
09ED: actor 1@ is_within_field_of_view_actor $PLAYER_ACTOR
0104: actor $PLAYER_ACTOR near_actor 1@ radius 8@ 8@ 8@ sphere 0
then
077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
0A8C: write_memory 29@ size 4 value 1 virtual_protect 0
0A8C: write_memory 30@ size 4 value 2 virtual_protect 0
break
end
end
else //código azul
00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
0855: get_actor $PLAYER_ACTOR noise_level_at 5@ 6@ 7@ store_to 8@
000F: 8@ -= 20.0
0017: 8@ /= 3.0
if or
0364: actor 1@ spotted_actor $PLAYER_ACTOR
0104: actor $PLAYER_ACTOR near_actor 1@ radius 8@ 8@ 8@ sphere 0
then
077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
0A8C: write_memory 29@ size 4 value 1 virtual_protect 0 //Colocando que está atacando o player
0A8C: write_memory 30@ size 4 value 2 virtual_protect 0
break
end
end
end
end
end
end
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
|
|