#1 07-06-2008 07:23

AlphaOmega
Registered: 02-06-2008
Posts: 98

[SA] First Person Camera

Получилось!

Вообщем после долгих мучений вот что вышло:

// first person camera advanced by AlphaOmega

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
:start

thread 'CAM'

1@ = 0
2@ = 0

0000: NOP

0005: 3@ =  0.0
0005: 4@ =  0.0
0005: 5@ =  0.0

:begin
wait 0

0005: 6@ =  0.0
0005: 7@ = -.1
0005: 8@ =  .69
 
if
   Actor.Driving($PLAYER_ACTOR)
jf @check

:mode1check
if
0039:   1@ == 1
jf @mode1key
jump @mode1view

:mode1key
if and 
00E1: key_pressed 0 13
0AB0: key_pressed 0x11
Actor.Driving($PLAYER_ACTOR)
jf @begin
jump @mode1on

:mode1on
1@ = 1

0059: 6@ += 3@
0059: 7@ += 4@
0059: 8@ += 5@

067C: put_camera_on_actor $PLAYER_ACTOR with_offset 6@ 7@ 8@ rotation 0.0 90.0 0.0 0.0 2

//0494: get_joystick 0 data_to 10@ 11@ 12@ 13@ 
//0093: 11@ = integer 11@ to_float 
//0093: 12@ = integer 12@ to_float 
//0093: 13@ = integer 13@ to_float 
//0017: 11@ /= 2000.0 
//0017: 12@ /= 2000.0 
//0017: 13@ /= 2000.0 
//005B: 16@ += 12@ // @ += @ (float) 
//0063: 17@ -= 11@ // @ -= @ (float) 
//005B: 18@ += 13@ // @ += @ (float)

2@ = 0

if 
00E1: key_pressed 0 13
jf @begin
wait 500
jump @begin

:mode1view
if and
80E1:  not player 0 pressed_key 5
80E1:  not player 0 pressed_key 7
jf @mode1side


if
0039:   2@ == 1
jf @mode1correction
2@ = 0
jump @mode1on


:mode1side
if
84C8:   not actor $PLAYER_ACTOR driving_flying_vehicle 
jf @begin
015A: restore_camera 
09AD: vehicle_camera_mode 0
2@ = 1 
jump @begin

:mode1off
if and 
00E1: key_pressed 0 13 // change camera button
jf @begin
02EB: restore_camera_with_jumpcut 
09AD: vehicle_camera_mode 2
1@ = 0 
jump @begin

:check
if
0039:   1@ == 1
jf @begin
015A: restore_camera
09AD: vehicle_camera_mode 2
0373: set_camera_directly_behind_player
1@ = 0
jump @begin

:mode1correction
wait 0
jump @mode1corrXup

:mode1corrXup
if and 
0AB0:   key_pressed 0x12
0AB0:   key_pressed 0x26
Actor.Driving($PLAYER_ACTOR)
jf @mode1corrXdn
5@ += 0.1
jump @mode1on

:mode1corrXdn
if and 
0AB0:   key_pressed 0x12
0AB0:   key_pressed 0x28
Actor.Driving($PLAYER_ACTOR)
jf @mode1corrYup
5@ -= 0.1
jump @mode1on

:mode1corrYup
if and 
0AB0:   key_pressed 0x11
0AB0:   key_pressed 0x26
Actor.Driving($PLAYER_ACTOR)
jf @mode1corrYdn
4@ += 0.1
jump @mode1on

:mode1corrYdn
if and 
0AB0:   key_pressed 0x11
0AB0:   key_pressed 0x28
Actor.Driving($PLAYER_ACTOR)
jf @mode1corrZup
4@ -= 0.1
jump @mode1on

:mode1corrZup
if and 
0AB0:   key_pressed 0x11
0AB0:   key_pressed 0x25
Actor.Driving($PLAYER_ACTOR)
jf @mode1corrZdn
3@ -= 0.1
jump @mode1on

:mode1corrZdn
if and 
0AB0:   key_pressed 0x11
0AB0:   key_pressed 0x27
Actor.Driving($PLAYER_ACTOR)
jf @nowindow
3@ += 0.1
jump @mode1on

:nowindow
if and
0AB0:   key_pressed 0x11
0AB0:   key_pressed 0x65
Actor.Driving($PLAYER_ACTOR)
jf @mode1off
03C0: 9@ = actor $PLAYER_ACTOR car 
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
0730: car 9@ damage_component 4
jump @mode1on

end_thread

Включается и в машине, и в самолёте и во всех средствах передвижения.
Кнопка CTRL+КАМЕРА (контрль и кнопка, назначенная на смену вида камеры).
Отключается просто кнопкой КАМЕРА
Можно двигать точку просмотра:
CTRL+ВПРАВО - правее
CTRL+ВЛЕВО - левее
CTRL+ВВЕРХ - ближе
CTRL+ВНИЗ - дальше
ALT+ВВЕРХ - выше
ALT+ВНИЗ - ниже
При выходе из авто - режим отключается.

p.s.: ещё сделал скрипт включения/выключения камеры как в гта один (http://sannybuilder.com/forums/viewtopi … 3812#p3812)

p.p.s. (админам): в принципе, можно спокойно переносить тему в раздел с модификациями

p.p.p.s.: скрипт обновлён - произведено избавление от глобальных переменных в пользу локальных

Last edited by AlphaOmega (15-06-2008 10:21)

Offline

#2 28-06-2008 21:29

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: [SA] First Person Camera

Спасибо,супер скрипт..

Offline

#3 28-06-2008 23:23

Yarik
Registered: 22-02-2008
Posts: 173
Website

Re: [SA] First Person Camera

ИМХО так бы:
CTRL+ВВЕРХ - выше
CTRL+ВНИЗ - ниже
ALT+ВВЕРХ - ближе
ALT+ВНИЗ - дальше
smileclapа так кул

Offline

#4 29-06-2008 18:01

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: [SA] First Person Camera

Yarik wrote:

ИМХО так бы:
CTRL+ВВЕРХ - выше
CTRL+ВНИЗ - ниже
ALT+ВВЕРХ - ближе
ALT+ВНИЗ - дальше
smileclapа так кул

Всё в твоих руках - меняй 11 на 12 и компиль. Всё же в опенсурсе дано.....

Offline

#5 30-06-2008 02:38

Worm
Registered: 10-06-2008
Posts: 25

Re: [SA] First Person Camera

Спасибо!!! отлично получилось! скажите где мне найти список клавиш, только не этих, а вот таких видов:
00E1: key_pressed 0 13
0AB0: key_pressed 0x11

Offline

#6 30-06-2008 08:19

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: [SA] First Person Camera

Worm wrote:

скажите где мне найти список клавиш
00E1: key_pressed 0 13
0AB0: key_pressed 0x11

для опкода 00E1 - в справке по санни
для опкода 0AB0 - в любом справочнике программиста - это virtual key codes системные (везде на винде одинаковы)

Offline

#7 01-07-2008 01:02

Noob
Registered: 28-06-2008
Posts: 44

Re: [SA] First Person Camera

А можешь сделать чтоб когда едешь на мотоцикле или на самолете летишь, наклоняешь, а голова не наклоняется. Сделайте плиз чтоб например когда трюкач перевернули кверх ногами, и голова тоже оставалась с самолетом и нормально наклонялась. Сделайте на этом скрипте, либо просто скажите что добавить:

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
thread 'CAM' 
1@ = 0 
2@ = 0 
0000: NOP 
3@ = 0.0 
4@ = 0.0 
5@ = 0.0 

:CAM_57
wait 0 
6@ = 0.0 
7@ = -0.1 
8@ = 0.69 
if 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_398 
if 
  1@ == 1 
else_jump @CAM_132 
jump @CAM_268 

:CAM_132
if and
0AB0:   key_pressed 67 
0AB0:   key_pressed 17 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_57 
jump @CAM_163 

:CAM_163
1@ = 1 
0059: 6@ += 3@ // (float) 
0059: 7@ += 4@ // (float) 
0059: 8@ += 5@ // (float) 
067C: put_camera_on_actor $PLAYER_ACTOR with_offset 6@ 7@ 8@ rotation 0.0 90.0 0.0 0.0 2 
2@ = 0 
if 
0AB0:   key_pressed 17 
0AB0:   key_pressed 88 
else_jump @CAM_57 
wait 500 
jump @CAM_57 

:CAM_268
if and
80E1:   not player 0 pressed_key 5 
80E1:   not player 0 pressed_key 7 
else_jump @CAM_323 
if 
  2@ == 1 
else_jump @CAM_438 
2@ = 0 
jump @CAM_163 

:CAM_323
if 
84C8:   not actor $PLAYER_ACTOR driving_flying_vehicle 
else_jump @CAM_57 
Camera.Restore
09AD: set_vehicle_camera_mode 0 
2@ = 1 
jump @CAM_57 

:CAM_359
if 
0AB0:   key_pressed 17 
0AB0:   key_pressed 88 
else_jump @CAM_57 
Camera.Restore_WithJumpCut
09AD: set_vehicle_camera_mode 2 
1@ = 0 
jump @CAM_57 

:CAM_398
if 
  1@ == 1 
else_jump @CAM_57 
Camera.Restore
09AD: set_vehicle_camera_mode 2 
Camera.SetBehindPlayer
1@ = 0 
jump @CAM_57 

:CAM_438
wait 0 
jump @CAM_449 

:CAM_449
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 103 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_490 
5@ += 0.1 
jump @CAM_163 

:CAM_490
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 105 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_531 
5@ -= 0.1 
jump @CAM_163 

:CAM_531
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 104 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_572 
4@ += 0.1 
jump @CAM_163 

:CAM_572
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 98 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_613 
4@ -= 0.1 
jump @CAM_163 

:CAM_613
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 100 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_654 
3@ -= 0.1 
jump @CAM_163 

:CAM_654
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 102 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_695 
3@ += 0.1 
jump @CAM_163 

:CAM_695
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 101 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_359 
03C0: 9@ = actor $PLAYER_ACTOR car 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
jump @CAM_163 
end_thread

И скажите почему в моей версии отключается на Х, если я там поставил Ctrl + X?

Last edited by Noob (01-07-2008 01:04)

Offline

#8 01-07-2008 10:38

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: [SA] First Person Camera

@Noob -

А можешь сделать ...

Сделайте плиз ...

Сделайте на этом скрипте ...

Это не стол заказов - учи сам коды операций и делай ...


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#9 02-07-2008 07:13

Noob
Registered: 28-06-2008
Posts: 44

Re: [SA] First Person Camera

Дак я же спрашиваю "как сделать", представил готовый код для исправления ошибок, но не прошу же я многого, а малость, просто я если не знаю как делать.

Offline

#10 23-07-2008 21:27

Noob
Registered: 28-06-2008
Posts: 44

Re: [SA] First Person Camera

Кто-нить помогите плиз!

Offline

#11 24-07-2008 02:00

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: [SA] First Person Camera

if
0AB0:   key_pressed 17
0AB0:   key_pressed 88

почитай в справочниках как оформляются условия. если их больше одного надо ставить and или or.

Offline

#12 02-08-2008 02:24

Noob
Registered: 28-06-2008
Posts: 44

Re: [SA] First Person Camera

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

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
thread 'CAM' 
1@ = 0 
2@ = 0 
0000: NOP 
3@ = 0.0 
4@ = 0.0 
5@ = 0.0 

:CAM_57
wait 0 
6@ = 0.0 
7@ = -0.1 
8@ = 0.69 
if 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_398 
if 
  1@ == 1 
else_jump @CAM_132 
jump @CAM_268 

:CAM_132
if and
0AB0:   key_pressed 67 
0AB0:   key_pressed 17 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_57 
jump @CAM_163 

:CAM_163
1@ = 1 
0059: 6@ += 3@ // (float) 
0059: 7@ += 4@ // (float) 
0059: 8@ += 5@ // (float) 
067C: put_camera_on_actor $PLAYER_ACTOR with_offset 6@ 7@ 8@ rotation 0.0 90.0 0.0 0.0 2 
2@ = 0 
if 
0AB0:   key_pressed 17 
0AB0:   key_pressed 88 
else_jump @CAM_57 
wait 500 
jump @CAM_57 

:CAM_268
if and
80E1:   not player 0 pressed_key 5 
80E1:   not player 0 pressed_key 7 
else_jump @CAM_323 
if 
  2@ == 1 
else_jump @CAM_438 
2@ = 0 
jump @CAM_163 

:CAM_323
if 
84C8:   not actor $PLAYER_ACTOR driving_flying_vehicle 
else_jump @CAM_57 
Camera.Restore
09AD: set_vehicle_camera_mode 0 
2@ = 1 
jump @CAM_57 

:CAM_359
if 
0AB0:   key_pressed 17 
0AB0:   key_pressed 88 
else_jump @CAM_57 
Camera.Restore_WithJumpCut
09AD: set_vehicle_camera_mode 2 
1@ = 0 
jump @CAM_57 

:CAM_398
if 
  1@ == 1 
else_jump @CAM_57 
Camera.Restore
09AD: set_vehicle_camera_mode 2 
Camera.SetBehindPlayer
1@ = 0 
jump @CAM_57 

:CAM_438
wait 0 
jump @CAM_449 

:CAM_449
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 103 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_490 
5@ += 0.1 
jump @CAM_163 

:CAM_490
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 105 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_531 
5@ -= 0.1 
jump @CAM_163 

:CAM_531
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 104 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_572 
4@ += 0.1 
jump @CAM_163 

:CAM_572
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 98 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_613 
4@ -= 0.1 
jump @CAM_163 

:CAM_613
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 100 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_654 
3@ -= 0.1 
jump @CAM_163 

:CAM_654
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 102 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_695 
3@ += 0.1 
jump @CAM_163 

:CAM_695
if and
0AB0:   key_pressed 17 
0AB0:   key_pressed 101 
   Actor.Driving($PLAYER_ACTOR)
else_jump @CAM_359 
03C0: 9@ = actor $PLAYER_ACTOR car 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
0730: car 9@ damage_component 4 // versionA 
jump @CAM_163 
end_thread

Offline

Board footer

Powered by FluxBB