#1 05-08-2008 12:50

аХыЕгоЗы
Registered: 01-08-2008
Posts: 3

Левитация

Управление очень простое:
F4 - вкл/выкл;
W, стрелка вверх, или что там заставляет у вас CJ-я двигаться вперед - лететь.

{$CLEO}

04ed: load_animation "PARACHUTE"
:anim
wait 0
04EE: animation "PARACHUTE" loaded
jf @anim

:check
wait 0
if and
0AB0:  key_pressed 0x73
not actor.Driving($PLAYER_ACTOR)
jf @check

:check_2                     
wait 0                                       
8AB0: not key_pressed 0x73   
jf @check_2                  

actor.LockInCurrentPosition($PLAYER_ACTOR,true) 
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
3@ += 0.5
actor.PutAt($PLAYER_ACTOR,1@,2@,3@)

:levi
wait 0
068D: get_camera_position_to 4@ 5@ 6@
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
000f: 1@ -= 4@
000f: 2@ -= 5@
000f: 3@ -= 6@
1@ *= 15.0
2@ *= 15.0
3@ *= 15.0
3@ += 4.5
0604: get_Z_angle_for_point 1@ 2@ store_to 7@
actor.Angle($PLAYER_ACTOR) = 7@
0812: AS_actor $PLAYER_ACTOR perform_animation "FALL_SKYDIVE" IFP_file "PARACHUTE" 1.0 loopA 0 lockX 0 lockY 0 lockF 1 time 15
0494: get_joystick 0 data 28@ 29@ 30@ 31@
0 > 29@
jf @checkquit

02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 1 MP 0 
actor.LockInCurrentPosition($PLAYER_ACTOR,false)
083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 1@ 2@ 3@ 
066A: 8@ = attach_particle "gunflash" to_actor $PLAYER_ACTOR with_offset 0.0 -0.3 -0.05 rotation 0.0 -1.0 0.0 flag 1 
064C: make_particle 8@ visible 
jump @levi

:checkquit
wait 0
0650: destroy_particle 9@ 
actor.LockInCurrentPosition($PLAYER_ACTOR,true)
02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0 
0AB0:  key_pressed 0x73
jf @levi

:quit
wait 0
8AB0: not key_pressed 0x73
jf @quit

actor.LockInCurrentPosition($PLAYER_ACTOR, false)
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
3@ += 0.01
actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
jump @check

Спать надо больше 4 часов в день!

Offline

#2 05-08-2008 17:37

PriMan
From: Moscow - city of happy
Registered: 02-05-2008
Posts: 32

Re: Левитация

Отличный скрипт! Летал прямтаки как Hancock, осталось только добавить возможность разносить столбы и машины при соприкосновении и клубы пыли при посадке на асфальт...

Offline

#3 06-08-2008 10:23

Noob
Registered: 28-06-2008
Posts: 44

Re: Левитация

Вот это да!!! ПРикольнуло нитро из задницы XD. Подскажите как его убрать.

Хочу чуть изменить видок, чтоб летал он как Нео из матрицы, но я уже сам попробую, вот только не нашел я в помощи SB других анимаций парашюта, напишите или скажите, где я их могу найти.

Блин еще вопрос: Как сделать, чтобы когда нажмем левую кнопку мыши - он ускоряется, а когда правую - замедляется? Я пытался, но не вышло.

СПАСИБО!

Last edited by Noob (06-08-2008 13:37)

Offline

#4 06-08-2008 14:49

PriMan
From: Moscow - city of happy
Registered: 02-05-2008
Posts: 32

Re: Левитация

Чтобы убрать огонь удали строку:

066A: 8@ = attach_particle "gunflash" to_actor $PLAYER_ACTOR with_offset 0.0 -0.3 -0.05 rotation 0.0 -1.0 0.0 flag 1

Offline

#5 07-08-2008 03:58

Agenzvell
From: Windows/system32
Registered: 28-08-2007
Posts: 109
Website

Re: Левитация

PriMan wrote:

Чтобы убрать огонь удали строку:

066A: 8@ = attach_particle "gunflash" to_actor $PLAYER_ACTOR with_offset 0.0 -0.3 -0.05 rotation 0.0 -1.0 0.0 flag 1

Лучше стереть это:

066A: 8@ = attach_particle "gunflash" to_actor $PLAYER_ACTOR with_offset 0.0 -0.3 -0.05 rotation 0.0 -1.0 0.0 flag 1 
064C: make_particle 8@ visible

Offline

#6 07-08-2008 06:17

Noob
Registered: 28-06-2008
Posts: 44

Re: Левитация

Спасибо, а что насчет этого?

Хочу чуть изменить видок, чтоб летал он как Нео из матрицы, но я уже сам попробую, вот только не нашел я в помощи SB других анимаций парашюта, напишите или скажите, где я их могу найти.

Блин еще вопрос: Как сделать, чтобы когда нажмем левую кнопку мыши - он ускоряется, а когда правую - замедляется? Я пытался, но не вышло.

И еще: вот когда он до земли дотрагивается - он не хочет лететь. Как это исправить?

Offline

#7 07-08-2008 06:56

Agenzvell
From: Windows/system32
Registered: 28-08-2007
Posts: 109
Website

Re: Левитация

{$CLEO}

:load
wait 0
04ED: load_animation "PARACHUTE"
038B: load_requested_models 

:anim
wait 0
if
04EE: animation "PARACHUTE" loaded
jf @anim

:check
wait 0
if and
0AB0:  key_pressed 0x74
not actor.Driving($PLAYER_ACTOR)
jf @check

:check_2                     
wait 0             
 if                         
8AB0: not key_pressed 0x73   
jf @check_2                  
actor.LockInCurrentPosition($PLAYER_ACTOR,true) 
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
3@ += 10.5
actor.PutAt($PLAYER_ACTOR,1@,2@,3@)

:levi
wait 0
068D: get_camera_position_to 4@ 5@ 6@
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
000f: 1@ -= 4@
000f: 2@ -= 5@
000f: 3@ -= 6@
1@ *= 15.0
2@ *= 15.0
3@ *= 15.0
3@ += 4.5
0604: get_Z_angle_for_point 1@ 2@ store_to 7@
actor.Angle($PLAYER_ACTOR) = 7@
0812: AS_actor $PLAYER_ACTOR perform_animation "FALL_SKYDIVE_ACCEL" IFP_file "PARACHUTE" 1.0 loopA 0 lockX 0 lockY 0 lockF 1 time 15
0494: get_joystick 0 data 28@ 29@ 30@ 31@
if
0 > 29@
jf @checkquit
02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 1 MP 0 
actor.LockInCurrentPosition($PLAYER_ACTOR,false)
083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 1@ 2@ 3@ 
jump @levi

:checkquit
wait 0
actor.LockInCurrentPosition($PLAYER_ACTOR,true)
02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0 
if
0AB0:  key_pressed 0x74
jf @levi

:quit
wait 0
if
8AB0: not key_pressed 0x74
jf @quit
actor.LockInCurrentPosition($PLAYER_ACTOR, false)
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
3@ += 0.01
actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
jump @check

Исправил ошибки. Убрал огонь из одного места, добавил нужные проверки, загрузил как надо анимацию итп.

Last edited by Agenzvell (07-08-2008 06:59)

Offline

#8 08-08-2008 18:27

аХыЕгоЗы
Registered: 01-08-2008
Posts: 3

Re: Левитация

Agenzvell wrote:

Исправил ошибки. ... добавил нужные проверки, загрузил как надо анимацию итп.

Очень пафосно звучит.
Кстати, зачем ты добавил после загрузки файла анимации

038B: load_requested_model

? Анимация - это же не модель. Или я не прав?

И разве отсутствие if перед одиночными проверками - это ошибка? Они же необязательны? Или я опять неправ?

Потом у тебя конструкция

:check
wait 0
if and
0AB0:  key_pressed 0x74
not actor.Driving($PLAYER_ACTOR)
jf @check

:check_2                     
wait 0             
 if                         
8AB0: not key_pressed 0x73   
jf @check_2

Т.е. ты проверяешь, нажата ли клавиша F5, а потом - отпущена ли F4?
Это само есть ошибка, так как пока F5 нажата, скрипт может успеть выполниться и начнется вот эта проверка

:checkquit
wait 0
actor.LockInCurrentPosition($PLAYER_ACTOR,true)
02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0 
if
0AB0:  key_pressed 0x74
jf @levi

:quit
wait 0
if
8AB0: not key_pressed 0x74
jf @quit

Т.е проверка на выход.


Спать надо больше 4 часов в день!

Offline

#9 10-08-2008 04:20

Agenzvell
From: Windows/system32
Registered: 28-08-2007
Posts: 109
Website

Re: Левитация

Гы, про F4 и вправду не заметил smile Просто на F4 забинден скрипт сохранения. If надо ставить перед каждой проверкой. Про анимацию - загружаю её всегда так, вылетов не замечал при такой загрузке, поэтому и использую.

Offline

#10 10-08-2008 05:38

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: Левитация

@Agenzvell
IF НЕ надо ставить перед одиночными проверками(кроме опкодов "if and set")
А 038B и в правду лишний smile

Offline

#11 11-08-2008 20:56

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

Re: Левитация

@Agenzvell -
Ошибки. Отсутствуют проверки -

1. нигде нет проверок "жив ли игрок".
2 если игрок уже выполняет другую анимацию (например падает, или плывёт), а мод по нажатию клавиши прицепит на него анимацию парашута, как думаешь что может быть с игрой?
3. если у актёра будет 1-10% жизни и в момент прицепки анимации его подстрелят, что будет?
4. если в момент полёта игрок попадёт зону действия маркера миссии, что будет?
5. если миссия уже идёт а игрок решит полетать?
6. если игрок в интерьере полетает? Он вылетит за его педелы ...
7. а под водой ...
8. ...

Мод будет работать стабильно только в идеальных для него условиях.


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

Offline

#12 12-08-2008 04:40

Agenzvell
From: Windows/system32
Registered: 28-08-2007
Posts: 109
Website

Re: Левитация

@Capushon
Нет, полностью переписывать скрипт я не собираюсь smile

@flashTrash
3амечания учел, спасибо за поправки.

Offline

#13 16-08-2008 17:04

R3B007
Registered: 21-05-2008
Posts: 14

Re: Левитация

Кнопку где там изменить? F4 не потходить какбэ

Offline

#14 21-08-2008 17:05

-Dimon-
Registered: 03-07-2007
Posts: 15
Website

Re: Левитация

Вот отредактировал.
Добавил проверки и изменил в место F4 теперь Shift + Space + LKM (Спринт + Прыжок + Стрелять)

{$CLEO .cs}

0000: NOP

:load
wait 100
if
  Player.Defined($PLAYER_CHAR)
jf @load
if
  not Actor.Driving($PLAYER_ACTOR)
jf @load
077E: get_active_interior_to $ACTIVE_INTERIOR 
if and
  $ONMISSION == 0
  0038:   $ACTIVE_INTERIOR == 0 
jf @load
if and
   0AB0:  key_pressed 16
   0AB0:  key_pressed 32
   00E1:  key_pressed 0 17
jf @load
04ED: load_animation "PARACHUTE"

:anim
wait 100
if
  04EE: animation "PARACHUTE" loaded
jf @anim

:check_2                     
wait 0                               
actor.LockInCurrentPosition($PLAYER_ACTOR,true) 
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
3@ += 10.5
actor.PutAt($PLAYER_ACTOR,1@,2@,3@)

:levi
wait 0
068D: get_camera_position_to 4@ 5@ 6@
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
000f: 1@ -= 4@
000f: 2@ -= 5@
000f: 3@ -= 6@
1@ *= 15.0
2@ *= 15.0
3@ *= 15.0
3@ += 4.5
0604: get_Z_angle_for_point 1@ 2@ store_to 7@
actor.Angle($PLAYER_ACTOR) = 7@
0812: AS_actor $PLAYER_ACTOR perform_animation "FALL_SKYDIVE_ACCEL" IFP_file "PARACHUTE" 1.0 loopA 0 lockX 0 lockY 0 lockF 1 time 15
0494: get_joystick 0 data 28@ 29@ 30@ 31@
if
0 > 29@
jf @checkquit
02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1 
actor.LockInCurrentPosition($PLAYER_ACTOR,false)
083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 1@ 2@ 3@ 
jump @levi

:checkquit
wait 0
actor.LockInCurrentPosition($PLAYER_ACTOR,true)
02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0 
if and
   0AB0:  key_pressed 16
   0AB0:  key_pressed 32
   00E1:  key_pressed 0 17
jf @levi

:quit
wait 0
if and
   8AB0: not key_pressed 16
   8AB0: not key_pressed 32
   80E1: not key_pressed 0 17
jf @quit
actor.LockInCurrentPosition($PLAYER_ACTOR, false)
actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)        
3@ += 0.01
actor.PutAt($PLAYER_ACTOR,1@,2@,3@)
04EF: release_animation "PARACHUTE" 
jump @load

Offline

#15 23-08-2008 07:35

Noob
Registered: 28-06-2008
Posts: 44

Re: Левитация

-Dimon-, сделай чтобы когда жмем левую кнопку мыши, скорость полета постепенно увеличивалась, а когда жмем правую - уменьшалась. Резкий тормоз на правый Ctrl.

Last edited by Noob (23-08-2008 07:35)

Offline

#16 23-08-2008 11:58

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

Re: Левитация

@-Dimon- -
Если в цикле levi игрока подстрелят - скрипт зависнет, т.к. считывание координат и установка будет отноститься уже не к нему, а к мёртвому телу...


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

Offline

#17 26-08-2008 05:41

-Dimon-
Registered: 03-07-2007
Posts: 15
Website

Re: Левитация

@Capushon - Не зависнет, игрок появится около больницы в активированной левитации... И также если налетит на маркер... И ещё, смотри, у игрока стоят иммунитеты  на всё)

Offline

#18 04-09-2008 20:32

SerJo
Registered: 12-04-2008
Posts: 2

Re: Левитация

пара вопросов:
1. какой параметр отвечает за скорость полета?
2. можно ли сделать такой скрипт, который будет перемещать игрока во время левитации вверх/вниз при нажатии соответствующих клавиш?

Offline

#19 21-09-2008 20:00

Serega373
Registered: 21-09-2008
Posts: 2

Re: Левитация

Скорость полёта регулируется !  Чем дальше камера тем быстрей летит А если надеть парашут и отдалить камеру как можно дальше то летит быстрей многих самолётов:cool:

Offline

#20 28-11-2008 22:31

Вовчик_гадкий
From: Малые Подмышки
Registered: 27-11-2008
Posts: 6

Re: Левитация

А можно вопрос Это как так?

066A: 8@ = attach_particle "gunflash" to_actor $PLAYER_ACTOR with_offset 0.0 -0.3 -0.05 rotation 0.0 -1.0 0.0 flag 1
064C: make_particle 8@ visible //Загвоздка он будет дублироваться. а значит эффект будет засирать усё подряд. Перед проверкой нажатия нужно "ставить Уборку аффекта".
jump @levi

:checkquit
wait 0
0650: destroy_particle 9@ ???? И хде его, ипать что ли?


читаю форум. Ещё очень много читать.

Offline

#21 26-11-2011 11:17

SambukaYoup
From: Moscow
Registered: 26-11-2011
Posts: 8
Website

Re: Левитация

Господа,а зачем этот скрипт есть же в собейте как раз такой на ю жмешь и летаешь ).:wow:

Offline

#22 26-11-2011 23:03

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

Re: Левитация

Не все используют собейт.

Offline

Board footer

Powered by FluxBB