Перейти к содержанию

Обсуждение и публикация Cleo-скриптов


Рекомендуемые сообщения

Опубликовано

Подскажите, пожалуйста, как мне получить координаты места где CJ погиб, или его забрали в тюрьму (последний раз)?

IMHO, можно попробовать через события актера (см. help к Sanny Builder).
Опубликовано

Как сделать так, чтобы команда действовала только на игроков в оперд. радиусе(Вопрос по КЛЕО из САМП)

P.s. Напишите, пожалуйста, код

Опубликовано

Мне нужна помощь в создании cleo скрипта, так как изучать скриптинг ради одного небольшого скрипта нет желания.

Кто хочет помочь пишите, возможно денежное вознаграждение)

Опубликовано (изменено)

Решил модернизировать скрипт Undercover Patrol с целью превратить его в Highway Patrol, но...

 

Данный скрипт должен активироваться, если у игрока больше одной звезды. Проблема с проверкой уровня розыска игрока. Игра грузится и зависает на экране загрузки. Без этой проверки работает. В чём причина?

 

Раскрывающийся текст

// This file was decompiled using SASCM.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
{$CLEO .cs}

//-------------MAIN---------------
thread 'SAUC' 
4@ = 490 
5@ = 346 
7@ = 250 
8@ = 183 

:SAUC_00
if and
   Player.Defined($PLAYER_CHAR)
   Player.WantedLevel($PLAYER_CHAR) > 1
jf @SAUC_00 
if 
   8154:   not actor $PLAYER_ACTOR in_zone 'LS'
jf @SAUC_00 
if
   8154:   not actor $PLAYER_ACTOR in_zone 'SF'
jf @SAUC_00 
if 
   8154:   not actor $PLAYER_ACTOR in_zone 'VE'
jf @SAUC_00

:SAUC_43
wait 500 
if and
  9@ == 0 
  $ONMISSION == 0
jf @SAUC_00 

:SAUC_89
wait 0 
0@ = -1 
if 
   Player.Defined($PLAYER_CHAR)
jf @SAUC_89 
04C4: store_coords_to 11@ 12@ 13@ from_actor $PLAYER_ACTOR with_offset -200.0 200.0 0.0 
04C4: store_coords_to 14@ 15@ 16@ from_actor $PLAYER_ACTOR with_offset 200.0 400.0 0.0 
053E: 0@ = get_random_car_with_model -1 in_rectangle_cornerA 11@ 12@ cornerB 14@ 15@ 
if 
   not 0@ == -1 
jf @SAUC_218 
jump @SAUC_320 

:SAUC_218
04C4: store_coords_to 11@ 12@ 13@ from_actor $PLAYER_ACTOR with_offset -200.0 -200.0 0.0 
04C4: store_coords_to 14@ 15@ 16@ from_actor $PLAYER_ACTOR with_offset 200.0 -400.0 0.0 
053E: 0@ = get_random_car_with_model -1 in_rectangle_cornerA 11@ 12@ cornerB 14@ 15@ 
if 
   not 0@ == -1 
jf @SAUC_89 
jump @SAUC_320 

:SAUC_320
0407: store_coords_to 17@ 18@ 19@ from_car 0@ with_offset 0.0 0.0 0.0 
10@ = Car.Angle(0@)
gosub @SAUC_1758 
Model.Load(4@)
Model.Load(7@)
Model.Load(8@)
Model.Load(5@)
Model.Load(#COLT45)

:SAUC_389
wait 0 
if and
   Model.Available(4@)
   Model.Available(7@)
   Model.Available(8@)
   Model.Available(5@)
   Model.Available(#COLT45)
jf @SAUC_389 
Car.Destroy(0@)
1@ = Car.Create(4@, 17@, 18@, 19@)
0129: 2@ = create_actor_pedtype 6 model 7@ in_car 1@ driverseat 
01C8: 3@ = create_actor_pedtype 6 model 8@ in_car 1@ passenger_seat 0 
01B2: give_actor 2@ weapon 22 ammo 99999 // Load the weapon model before using this 
Actor.WeaponAccuracy(2@) = 100
01B2: give_actor 3@ weapon 22 ammo 99999 // Load the weapon model before using this 
Actor.WeaponAccuracy(3@) = 100
Actor.Health(2@) = 100
Actor.Health(3@) = 100
Car.Angle(1@) = 10@
Model.Destroy(4@)
Model.Destroy(7@)
Model.Destroy(8@)
Model.Destroy(5@)
Model.Destroy(#COLT45)
0407: store_coords_to 21@ 22@ 23@ from_car 1@ with_offset 0.0 1000.0 0.0 
Car.SetImmunities(1@, 0, 0, 0, 0, 0)
Car.DriveTo(1@, 21@, 22@, 23@)
Car.SetMaxSpeed(1@, 30.0)
Car.SetToNormalDriver(1@)
Car.SetDriverBehaviour(1@, FollowRoad)
00AE: set_car 1@ traffic_behaviour_to 4 
0397: enable_car 1@ siren 0 
33@ = 5000 
32@ = 0 
25@ = 0 
Car.DoorStatus(1@) = 4

:SAUC_687
wait 0 
if 
   Player.Defined($PLAYER_CHAR)
jf @SAUC_1736 
if and
   not Car.Wrecked(1@)
82BF:   not car 1@ sunk 
81F4:   not car 1@ flipped 
jf @SAUC_1736 
if and
   not Actor.Dead(2@)
   not Actor.Dead(3@)
   Actor.InCar(2@, 1@)
   Actor.InCar(3@, 1@)
jf @SAUC_1512 
if and
  9@ == 0 
  $ONMISSION == 0 
jf @SAUC_1736 
if or
   Actor.InCar($PLAYER_ACTOR, 1@)
8202:   not actor $PLAYER_ACTOR near_car 1@ radius 450.0 450.0 flag 0 
   Player.WantedLevel($PLAYER_CHAR) > 5
jf @SAUC_848 
jump @SAUC_1736 

:SAUC_848
if and
   not Player.WantedLevel($PLAYER_CHAR) > 0
051C:   car 1@ damaged_by_actor $PLAYER_ACTOR 
jf @SAUC_881 
Player.SetMinWantedLevel($PLAYER_CHAR, 1)

:SAUC_881
if 
   Player.WantedLevel($PLAYER_CHAR) > 0
jf @SAUC_968 
if 
  33@ > 5000 
jf @SAUC_1030 
33@ = 0 
Car.SetToPsychoDriver(1@)
Car.SetMaxSpeed(1@, 100.0)
Car.SetDriverBehaviour(1@, 6)
00AE: set_car 1@ traffic_behaviour_to 6 
0397: enable_car 1@ siren 1 
jump @SAUC_1030 

:SAUC_968
if 
051C:   car 1@ damaged_by_actor $PLAYER_ACTOR 
jf @SAUC_994 
jump @SAUC_687 

:SAUC_994
Car.SetMaxSpeed(1@, 30.0)
Car.SetToNormalDriver(1@)
Car.SetDriverBehaviour(1@, FollowRoad)
00AE: set_car 1@ traffic_behaviour_to 4 
jump @SAUC_1030 

:SAUC_1030
if 
  25@ == 0 
jf @SAUC_1100 
if and
0202:   actor $PLAYER_ACTOR near_car 1@ radius 10.0 10.0 flag 0 
   Player.WantedLevel($PLAYER_CHAR) > 0
jf @SAUC_687 
32@ = 0 
25@ = 1 

:SAUC_1100
if and
  25@ == 1 
  32@ > 5000 
jf @SAUC_1232 
if 
0202:   actor $PLAYER_ACTOR near_car 1@ radius 10.0 10.0 flag 0 
jf @SAUC_1331 
32@ = 0 
25@ = 0 
Car.DoorStatus(1@) = 0
0633: AS_actor 2@ exit_car 
0633: AS_actor 3@ exit_car 
0961: unknown_actor 2@ flag 1 
0961: unknown_actor 3@ flag 1 
06E4: AS_actor 2@ attempt_to_bust_actor $PLAYER_ACTOR 
06E4: AS_actor 3@ attempt_to_bust_actor $PLAYER_ACTOR 
Car.DoorStatus(1@) = 0
jump @SAUC_1345 

:SAUC_1232
if or
051A:   actor 2@ damaged_by_actor $PLAYER_ACTOR 
051A:   actor 3@ damaged_by_actor $PLAYER_ACTOR 
   Actor.Animation($PLAYER_ACTOR) == "CAR_DOORLOCKED_LHS"
   Actor.Animation($PLAYER_ACTOR) == "CAR_DOORLOCKED_RHS"
jf @SAUC_687 
32@ = 0 
25@ = 6000 
jump @SAUC_687 

:SAUC_1331
25@ = 0 
jump @SAUC_687 

:SAUC_1345
wait 0 
if 
   Player.Defined($PLAYER_CHAR)
jf @SAUC_1736 
if 
   Player.WantedLevel($PLAYER_CHAR) > 0
jf @SAUC_1736 
if or
   not Actor.Dead(2@)
   not Actor.Dead(3@)
jf @SAUC_1736 
if or
0104:   actor $PLAYER_ACTOR near_actor 2@ radius 70.0 70.0 70.0 sphere 0 
0104:   actor $PLAYER_ACTOR near_actor 3@ radius 70.0 70.0 70.0 sphere 0 
jf @SAUC_1736 
if and
   not Actor.Dead(2@)
   not Actor.Dead(3@)
jf @SAUC_1486 

:SAUC_1486
if 
  33@ > 5000 
jf @SAUC_1345 
33@ = 0 

:SAUC_1512
if 
   Player.WantedLevel($PLAYER_CHAR) > -1
jf @SAUC_1736 
if and
   not Actor.Dead(2@)
0104:   actor $PLAYER_ACTOR near_actor 2@ radius 70.0 70.0 70.0 sphere 0 
jf @SAUC_1642 
if and
   Actor.InCar(2@, 1@)
0104:   actor $PLAYER_ACTOR near_actor 2@ radius 30.0 30.0 70.0 sphere 0 
jf @SAUC_1627 
Car.DoorStatus(1@) = 0
0633: AS_actor 2@ exit_car 

:SAUC_1627
0961: unknown_actor 2@ flag 1 
06E4: AS_actor 2@ attempt_to_bust_actor $PLAYER_ACTOR 

:SAUC_1642
if and
   not Actor.Dead(3@)
0104:   actor $PLAYER_ACTOR near_actor 3@ radius 70.0 70.0 70.0 sphere 0 
jf @SAUC_1736 
if 
   Actor.InCar(3@, 1@)
jf @SAUC_1714 
Car.DoorStatus(1@) = 0
0633: AS_actor 3@ exit_car 

:SAUC_1714
0961: unknown_actor 3@ flag 1 
06E4: AS_actor 3@ attempt_to_bust_actor $PLAYER_ACTOR 
jump @SAUC_1345 

:SAUC_1736
Actor.RemoveReferences(3@)
Actor.RemoveReferences(2@)
Car.RemoveReferences(1@)
jump @SAUC_43 

:SAUC_1758
0209: 6@ = random_int_in_ranges 0 6 
0871: init_jump_table 6@ total_jumps 7 default_jump 0 @SAUC_1830 jumps 0 @SAUC_1830 1 @SAUC_1845 2 @SAUC_1860 3 @SAUC_1875 4 @SAUC_1890 5 @SAUC_1905 6 @SAUC_1920 

:SAUC_1830
4@ = 596 
jump @SAUC_1935 

:SAUC_1845
4@ = 596 
jump @SAUC_1935 

:SAUC_1860
4@ = 596 
jump @SAUC_1935 

:SAUC_1875
4@ = 596 
jump @SAUC_1935 

:SAUC_1890
4@ = 596 
jump @SAUC_1935 

:SAUC_1905
4@ = 596 
jump @SAUC_1935 

:SAUC_1920
4@ = 596 
jump @SAUC_1935 

:SAUC_1935
0209: 6@ = random_int_in_ranges 0 15 
0871: init_jump_table 6@ total_jumps 16 default_jump 0 @SAUC_2072 jumps 0 @SAUC_2072 1 @SAUC_2087 2 @SAUC_2102 3 @SAUC_2116 4 @SAUC_2131 5 @SAUC_2146 6 @SAUC_2161 
0872: jump_table_jumps 7 @SAUC_2175 8 @SAUC_2189 9 @SAUC_2203 10 @SAUC_2218 11 @SAUC_2232 12 @SAUC_2246 13 @SAUC_2260 14 @SAUC_2275 15 @SAUC_2289 

:SAUC_2072
7@ = 184 
jump @SAUC_2303 

:SAUC_2087
7@ = 183 
jump @SAUC_2303 

:SAUC_2102
7@ = 122 
jump @SAUC_2303 

:SAUC_2116
7@ = 128 
jump @SAUC_2303 

:SAUC_2131
7@ = 206 
jump @SAUC_2303 

:SAUC_2146
7@ = 250 
jump @SAUC_2303 

:SAUC_2161
7@ = 59 
jump @SAUC_2303 

:SAUC_2175
7@ = 121 
jump @SAUC_2303 

:SAUC_2189
7@ = 73 
jump @SAUC_2303 

:SAUC_2203
7@ = 182 
jump @SAUC_2303 

:SAUC_2218
7@ = 55 
jump @SAUC_2303 

:SAUC_2232
7@ = 60 
jump @SAUC_2303 

:SAUC_2246
7@ = 100 
jump @SAUC_2303 

:SAUC_2260
7@ = 250 
jump @SAUC_2303 

:SAUC_2275
7@ = 28 
jump @SAUC_2303 

:SAUC_2289
7@ = 29 
jump @SAUC_2303 

:SAUC_2303
0209: 6@ = random_int_in_ranges 0 15 
0871: init_jump_table 6@ total_jumps 16 default_jump 0 @SAUC_2440 jumps 0 @SAUC_2440 1 @SAUC_2455 2 @SAUC_2469 3 @SAUC_2483 4 @SAUC_2498 5 @SAUC_2513 6 @SAUC_2528 
0872: jump_table_jumps 7 @SAUC_2542 8 @SAUC_2556 9 @SAUC_2570 10 @SAUC_2585 11 @SAUC_2599 12 @SAUC_2614 13 @SAUC_2629 14 @SAUC_2644 15 @SAUC_2658 

:SAUC_2440
8@ = 242 
jump @SAUC_2673 

:SAUC_2455
8@ = 64 
jump @SAUC_2673 

:SAUC_2469
8@ = 47 
jump @SAUC_2673 

:SAUC_2483
8@ = 151 
jump @SAUC_2673 

:SAUC_2498
8@ = 219 
jump @SAUC_2673 

:SAUC_2513
8@ = 186 
jump @SAUC_2673 

:SAUC_2528
8@ = 40 
jump @SAUC_2673 

:SAUC_2542
8@ = 90 
jump @SAUC_2673 

:SAUC_2556
8@ = 101 
jump @SAUC_2673 

:SAUC_2570
8@ = 238 
jump @SAUC_2673 

:SAUC_2585
8@ = 91 
jump @SAUC_2673 

:SAUC_2599
8@ = 131 
jump @SAUC_2673 

:SAUC_2614
8@ = 181 
jump @SAUC_2673 

:SAUC_2629
8@ = 233 
jump @SAUC_2673 

:SAUC_2644
8@ = 30 
jump @SAUC_2673 

:SAUC_2658
8@ = 150 
jump @SAUC_2673 

:SAUC_2673
return
Изменено пользователем Officer John
Опубликовано (изменено)

Данный скрипт должен активироваться, если у игрока больше одной звезды. Проблема с проверкой уровня розыска игрока. Игра грузится и зависает на экране загрузки. Без этой проверки работает. В чём причина?

Player.WantedLevel($PLAYER_CHAR) > 1

Попробуй так:

....
01C0: 0@ = player $PLAYER_CHAR wanted_level // записываем в переменную уровень розыска
if
  0@ > 1 // проверяем, если розыск больше одной звезды 
then
	  // здесь действия, если уровень бельше одной звезды
end
...

или этим опкодом 010F: player $PLAYER_CHAR wanted_level > 1

 

 

Проверка Player.Defined($PLAYER_CHAR) делается один раз в начале кода, не надо её делать по нескольку раз в ходе выполнения кода.

 

Раскрывающийся текст

P.S. код в своём сообщении в спойлер помести
Изменено пользователем kenking
Опубликовано (изменено)

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

Открываешь скрипт, а он не декомпилируется и открывается чистое окно SB.

 

Подскажите плиз, что в этой строчке значат последние 3 цифры, какие они могут принимать значения и за что эти значения отвечают?

0AA6: call_method 7086336 struct 1@ num_params 2 pop 0 0 0

Изменено пользователем Dimoman_93
Опубликовано

Открываешь скрипт, а он не декомпилируется и открывается чистое окно SB.

Попробуй поставить галочку IGNORE_UNKNOWN в Отладочных опциях программы. Срипт может после этого декомпилируется (не всегда), но врядли ты полностью сможешь прочитать код.

 

Подскажите плиз, что в этой строчке значат последние 3 цифры, какие они могут принимать значения и за что эти значения отвечают?

0AA6: call_method 7086336 struct 1@ num_params 2 pop 0 0 0

Цифра после pop - в данном случае тебе не нужна, здесь она всегда будет 0

Последние 2 цифры - параметры. Предпоследняя цифра означает состояние фары (1 - разбита, 0 - не разбита). Последняя цифра - номер фары (0 - передняя левая, 1 - передняя правая, 2, 3 - соответственно задние фары, без мода IVF для задних фар работает только значение 3).

Опубликовано
Попросил меня один из наших пользователей, а именно Roma-K, написать один скрипт, а именно скрипт, дающий возможность устанавливать на любое авто любые тюнинг-колёса в любом месте карты игры. Количество стандартных видов колёс равно 17 единицам. Ну понятно, что всегда всем всего мало (уже проверено временем) и пытаются игроманы всевозможные ограничения обойти, добавив новые дополнительные варианты колёс для тюнинга. Вот в связи с этим вопрос к тем, кто устанавливал эти дополнительные колёса в игру: сколько можно добавить вариантов? Практически, кому сколько удалось добавить? Там же вроде есть какие-то ограничения по-любому. Ну мне надо знать, чтобы в скрипте сделать возможность устанавливать и эти добавленные колёса. Или сделать проще - вариантов 50 прописать в скрипт, хватит, надеюсь?
Опубликовано

Попросил меня один из наших пользователей, а именно Roma-K, написать один скрипт, а именно скрипт, дающий возможность устанавливать на любое авто любые тюнинг-колёса в любом месте карты игры. Количество стандартных видов колёс равно 17 единицам. Ну понятно, что всегда всем всего мало (уже проверено временем) и пытаются игроманы всевозможные ограничения обойти, добавив новые дополнительные варианты колёс для тюнинга. Вот в связи с этим вопрос к тем, кто устанавливал эти дополнительные колёса в игру: сколько можно добавить вариантов? Практически, кому сколько удалось добавить? Там же вроде есть какие-то ограничения по-любому. Ну мне надо знать, чтобы в скрипте сделать возможность устанавливать и эти добавленные колёса. Или сделать проще - вариантов 50 прописать в скрипт, хватит, надеюсь?

Без скриптов, я добавлял до 12 штук, в одну строчку (там строчки начинаются 0, 1, 2) и одну новую строчку. Только я новую строчку не заполнял до конца, так, что лимит мне не известен.

Опубликовано (изменено)

Вообще мне кажется, что лимит количества колёс это не лимит колес, а лимит TEXTBOX. В ней только 12 строчек может быть. Когда меняешь колёса в тюнинге, то вылазит TEXTBOX с названиями колёc...

Я как-то редактировал скрипт драг рейсинг на заброшенном аэродроме, там из-за TEXTBOX, удалось поставить на выбор только 12 тачек соперника(

Изменено пользователем Dimoman_93
Опубликовано

Я добавил пока 15 новых колес на свободные ID, но какой лимит я не знаю. Могу попробовать еще добавить, но в магазине выбрать можно только 12 колес, так что после 17 добавленного колеса проверить их не удастся. Думаю, проще сделать, как ты и говорил 50 колес, не думаю что этого будет мало :crazy:

P.S. Спасибо, что занялся скриптом :friends:

Опубликовано

Вообще мне кажется, что лимит количества колёс это не лимит колес, а лимит TEXTBOX. В ней только 12 строчек может быть. Когда меняешь колёса в тюнинге, то вылазит TEXTBOX с названиями колёc...

Ну для этого скрипта TEXTBOX не нужен, так что тот лимит в 12 строчек здесь не помеха. :biggrin:

 

Я добавил пока 15 новых колес на свободные ID, но какой лимит я не знаю. Могу попробовать еще добавить, но в магазине выбрать можно только 12 колес, так что после 17 добавленного колеса проверить их не удастся. Думаю, проще сделать, как ты и говорил 50 колес, не думаю что этого будет мало :crazy:

Ну тогда так и сделаю - вариантов 50 пропишу.
Опубликовано (изменено)

Ну для этого скрипта TEXTBOX не нужен, так что тот лимит в 12 строчек здесь не помеха. :biggrin:

А прокрутку TEXTBOX можно сделать?

Изменено пользователем Dimoman_93
Опубликовано

Можно, но не совсем прокрутку, что-то типо прокрутки в общем можно сделать, как в моём скрипте "Прогноз погоды"

 

---------------------------------

Тем временем разобрался с добавлением дополнительных дисков в игру и с отображением их названий в игре. Вот:

 

http://savepic.net/5734246m.jpg

у меня все колёса в игре заменены и я воткнул на место дополнительного модель старого колёса, ну и название ему написал соответствующее :troll:

Опубликовано (изменено)

Раз уж на то пошло..

 

kenking 2 вопроса к тебе. Первый, возможно ли сделать CLEO-скриптом чтобы при нажатии определенной кнопки внизу экрана выскакивал текст. Пример: Вышел заяц на крыльцо почесать свое яйцо! Второй вопрос, тоже самое но при этом, чтобы срабатывал аудио (.wav/.mp3) файл. Пример: *нажал кнопку* Возле дома твоего!

 

Если такое возможно то, у меня есть к тебе предложение от которого ты не сможешь отказаться :troll: Естественно не за "спасибо, респект" бла-бла :spiteful:

Изменено пользователем Пёс-Призрак
Опубликовано

Так сколько в итоге ДОБАВИТЬ колёс получится?

Ну я сделал скрипт на 52 варианта колёс, где 17 стандартных, а остальные можно добавлять. В принципе, можно ещё увеличить количество вариантов в скрипте (до 75), но вопрос - будет ли, кто столько добавлять колёс в игру. Вроде, как ранее обсуждалось, что общее количество тюнинг-деталей можно добавить в игру триста с чем-то (точно не помню). Дальше вылет игры при загрузке. Хотя может уже и нашли способ обойти это ограничение. Я сам много не добавлял. Так только на пробу, для тестов скриптов.

 

kenking 2 вопроса к тебе. Первый, возможно ли сделать CLEO-скриптом чтобы при нажатии определенной кнопки внизу экрана выскакивал текст. Пример: Вышел заяц на крыльцо почесать свое яйцо! Второй вопрос, тоже самое но при этом, чтобы срабатывал аудио (.wav/.mp3) файл. Пример: *нажал кнопку* Возле дома твоего!

 

Если такое возможно то, у меня есть к тебе предложение от которого ты не сможешь отказаться :troll: Естественно не за "спасибо, респект" бла-бла :spiteful:

Легко, оба варианта можно сделать без проблем.

Весь в ожидании чудо-предложения. :biggrin:

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...