#1 17-02-2011 18:31

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Всех кто знает скриптинг, прошу помочь.

Кто знает, объясните, пожалуйста, где ошибка и почему я вылетаю?Очень прошу помогите. cry
{$CLEO .cs}
0000: NOP
:NONAME_2
wait 0
if
Player.Defined($PLAYER_ACTOR)
Actor.Driving($PLAYER_ACTOR)
jf @NONAME_2
:load
wait 0
03C0: $CAR = actor $PLAYER_ACTOR car
:NONAME_39
wait 0
if
801C: not car $CAR health >= 950 
jf @NONAME_39
:NONAME_75
wait 0
Car.SetImmunities($CAR, 1, 1, 1, 1, 1)
066B: $ATCH = attach_particle "EXPLOSION_LARGE" to_car $CAR with_offset 0.0 0.0 0.0 flag 1
wait 0
064C: make_particle $ATCH visible
wait 20
0650: destroy_particle $ATCH
wait 0
0407: store_coords_to 2@ 3@ 4@ from_car $CAR with_offset 0.0 0.0 0.0
020C: create_explosion_with_radius 10 at 2@ 3@ 4@
0948: create_explosion_at 2@ 3@ 4@ type 10 camera_shake 1
0565: create_soundless_explosion_at 2@ 3@ 4@ type 10
wait 3000
Car.SetImmunities($CAR, 0, 0, 0, 0, 0)
Car.Health($CAR) = 1000
jump @NONAME_2

Offline

#2 17-02-2011 20:12

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Всех кто знает скриптинг, прошу помочь.

1. Чтоб что-то было понятно существует тег [cоde][/codе]
2.

if 
Player.Defined($PLAYER_ACTOR)
Actor.Driving($PLAYER_ACTOR)
jf @NONAME_2

Когда много проверок, ставится if and или if or

if and
  Player.Defined($PLAYER_ACTOR)
  Actor.Driving($PLAYER_ACTOR)
jf @NONAME_2

3. Предыдущий фрагмент в принципе не правильный, т.к. проверка Player.Defined должна отделяться от всего.
4. В КЛЕО НЕЛЬЗЯ использовать глобальные переменные!!!!!!!!!!1111111
Вот поправленный не тестированный код.

{$CLEO .cs}
0000:

:START
wait 10
if 
  Player.Defined($PLAYER_ACTOR)
jf @START
if
  Actor.Driving($PLAYER_ACTOR)
jf @START
03C0: 0@ = actor $PLAYER_ACTOR car 
if 
  801C: not car 0@ health >= 950  
jf @START
Car.SetImmunities(0@, 1, 1, 1, 1, 1)
066B: 1@ = attach_particle "EXPLOSION_LARGE" to_car 0@ with_offset 0.0 0.0 0.0 flag 1 
wait 0
064C: make_particle 1@ visible 
wait 20000
0650: destroy_particle 1@
0407: store_coords_to 2@ 3@ 4@ from_car 0@ with_offset 0 0 0
020C: create_explosion_with_radius 10 at 2@ 3@ 4@
0948: create_explosion_at 2@ 3@ 4@ type 10 camera_shake 1 
0565: create_soundless_explosion_at 2@ 3@ 4@ type 10 
wait 3000 
Car.SetImmunities($CAR, 0, 0, 0, 0, 0)
Car.Health($CAR) = 1000
jump @START

По коду приблизительно закрадывается идея, что скрипт делает взрыв возле тачки если её ушибить...

Offline

#3 17-02-2011 20:50

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

спасибо за то, что исправил указал ошибки, буду знать, но всё равно вылетает cry, я почему то ссылаюсь на данную строчку
801C: not car 0@ health >= 950  можел ли тут, быть какая-то ошибка?

Offline

#4 17-02-2011 22:25

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

Re: Всех кто знает скриптинг, прошу помочь.

Car.SetImmunities($CAR, 0, 0, 0, 0, 0)
Car.Health($CAR) = 1000

Это необходимо заменить на

Car.SetImmunities(0@, 0, 0, 0, 0, 0)
Car.Health(0@) = 1000

Иначе игра вылетит, т.к. будет произведена попытка выполнения действий над несуществующей машиной $CAR.
Ну и если есть желание научиться писать качественные скрипты, то надо привыкать применять проверки на существование - они позволят избежать вылета, если машину (актёра, объект) удалила игра или другой скрипт. Результат проверки действителен с момента её проведения до первой после неё команды wait.

{$CLEO .cs}
0000:

:START
wait 10
if 
  Player.Defined($PLAYER_ACTOR)
jf @START
if
  Actor.Driving($PLAYER_ACTOR)
jf @START
03C0: 0@ = actor $PLAYER_ACTOR car 
if 
  801C: not car 0@ health >= 950  
jf @START
Car.SetImmunities(0@, 1, 1, 1, 1, 1)
066B: 1@ = attach_particle "EXPLOSION_LARGE" to_car 0@ with_offset 0.0 0.0 0.0 flag 1 
064C: make_particle 1@ visible 
wait 20000
0650: destroy_particle 1@
if
  056E:   car 0@ defined 
jf @START
0407: store_coords_to 2@ 3@ 4@ from_car 0@ with_offset 0 0 0
020C: create_explosion_with_radius 10 at 2@ 3@ 4@
0948: create_explosion_at 2@ 3@ 4@ type 10 camera_shake 1 
0565: create_soundless_explosion_at 2@ 3@ 4@ type 10 
wait 3000
if
  056E:   car 0@ defined 
jf @START 
Car.SetImmunities(0@, 0, 0, 0, 0, 0)
Car.Health(0@) = 1000
jump @START

Last edited by Den_spb (17-02-2011 22:26)

Offline

#5 18-02-2011 06:34

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

хм,все равно не работает(
но если поменять это условие:

if
  801C: not car 0@ health >= 950
jf @START
на условие нажатия клавиши,то он работает, можно ли заменить это условие:
801C: not car 0@ health >= 950
на другое, но что бы смысл был тот же?

Last edited by Ty6ePkYJIe3 (18-02-2011 06:35)

Offline

#6 18-02-2011 12:18

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Всех кто знает скриптинг, прошу помочь.

Нет, нельзя.
Используй заместо 03C0: 0@ = actor $PLAYER_ACTOR car
Это:

...
0AB5: $PLAYER_ACTOR 0@ $_UNUSED
if
  actor.incar($PLAYER_ACTOR,0@)
jf @START
...

Мною было замечено, что 03C0 отказывается работать в клео4 вообще ибо всегда возвращает -1. Даже на миссиях.

Offline

#7 18-02-2011 13:04

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Нет, даже так ничего не получается(
Но я 100% знаю, что обрываеться всё на опкоде
801C: not car 0@ health >= 950, а вот как исправить незнаю...

Offline

#8 18-02-2011 15:37

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

Re: Всех кто знает скриптинг, прошу помочь.

Но я 100% знаю, что обрываеться всё на опкоде
801C: not car 0@ health >= 950, а вот как исправить незнаю...

Ты прав, причина вылета в этом опкоде. Дело в том, что назначение у этого опкода абсолютно другое - сравнение значений двух переменных:

801C: not  $CURRENT_MONTH_DAY > $GYM_MONTH_DAY_WHEN_LIMIT_REACHED // (int)

А опкод для сравнения здоровья машины с числом несложно найти через поиск опкодов (Сервис - Инструменты - Поиск опкодов):

8185: not car 73@ health >= 700

Мною было замечено, что 03C0 отказывается работать в клео4 вообще ибо всегда возвращает -1. Даже на миссиях.

Лично у меня данный 03C0 на клео4 работает без проблем.

Offline

#9 18-02-2011 16:17

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Всё работает! Огромное всем спасибо за то, что дали понять, что неправельно и огромное спасибо тебе Den_spb за этот каверзный опкод)):^

Offline

#10 18-02-2011 19:21

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Всех кто знает скриптинг, прошу помочь.

Туберкулёз, в где ты взял опкод в таком виде?

Offline

#11 19-02-2011 07:21

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Из учебника для "чайников" откуда же еще grin

Offline

#12 19-02-2011 11:11

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Всех кто знает скриптинг, прошу помочь.

Покажи, пожалуйста smile

Offline

#13 19-02-2011 13:07

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Вот он в оригенальном виде, а у меня был просто переделанный grin
801C: not $Var_1 >= $Var_1

Last edited by Ty6ePkYJIe3 (19-02-2011 13:10)

Offline

#14 19-02-2011 13:21

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

Re: Всех кто знает скриптинг, прошу помочь.

Так опкоды переделывать нельзя, потому что смысл опкода зависит только от его номера. А описательная часть ни на что не влияет - её можно вообще не писать.

Offline

#15 19-02-2011 17:36

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Хм, ну я в скриптинге особо не разбираюсь, "чайник" же ещё grin

Offline

#16 19-02-2011 17:43

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

И ещё вопрос, кто знает, что это такое? Точнее как это читаеться и работает?
&0(15@,1i) == 16711680

Last edited by Ty6ePkYJIe3 (19-02-2011 17:44)

Offline

#17 19-02-2011 19:25

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Всех кто знает скриптинг, прошу помочь.

Работа с памятью через ячейку массива. RTFM

Offline

#18 19-02-2011 19:53

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Уууу, кароче мне до этого ещё далеко grin

Offline

#19 20-02-2011 11:15

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

И ещё вопрос, как работает команда: gosub, а то сколько я не пробовал понять, немогу sad

Offline

#20 20-02-2011 14:13

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Всех кто знает скриптинг, прошу помочь.

Госуб - безусловный переход...
а вообще, почитай вот это - клик

Offline

#21 20-02-2011 14:44

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Вот теперь понимаю, спасибо тебе smile

Offline

#22 21-02-2011 15:45

Ty6ePkYJIe3
Registered: 17-02-2011
Posts: 24

Re: Всех кто знает скриптинг, прошу помочь.

Люди, как сделать так, чтобы данные о машине удалялись если игрок её невидит,

но скрипт до этого момента продолжал работать с начала?

Offline

Board footer

Powered by FluxBB