Вопросы по созданию КЛЕО-скриптов
|
|
Den_spb | Дата: Понедельник, 24.01.2011, 01:37 | Сообщение # 511 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Есть стандартные опкоды, которыми можно воспроизводить стандартные звуки (см. СБ справку, раздел Статьи - Видео и аудио). А собственные звуки можно воспроизводить опкодами КЛЕО4 (см. справку по КЛЕО4)
|
|
| |
CrAzY | Дата: Понедельник, 24.01.2011, 15:45 | Сообщение # 512 |
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Den_spb, совсем забыл про справку по Клео4 (я на нём скрипты пишу), спасибо! +1
|
|
| |
MumiyTroll | Дата: Понедельник, 24.01.2011, 20:43 | Сообщение # 513 |
Группа: Проверенные
Сообщений: 92
Статус: Offline
| Денис,у меня вопрос по поводу декомпиляции/компиляции скриптов:если вносишь изменения в скрипт, в форматах-cs,cm,s и т.д,при компиляции,содержимое скрипта нарушится,будет ли он все так же функционировать,без вылетов и зависаний??Или для этих целей нужно использовать только исходник?
|
|
| |
Den_spb | Дата: Понедельник, 24.01.2011, 21:01 | Сообщение # 514 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Исходник - это просто текстовый файл, в котором код сохраняется в том виде, каким он был написан скриптером. Он нужен только для удобства работы скриптера в случае последующего редактирования скрипта и т.п. Игра txt-файл не использует. Поэтому чтобы внести изменения в скрипт, нужно изменить именно cs-файл. Если есть исходник, то он открывается с помощью Sanny Builder (команда Файл-Открыть), затем в код вносятся изменения, и скрипт компилируется (создаётся новый или перезаписывается старый cs-файл) с помощью команды Запуск-Компилировать. Если исходника в наличии нет, то надо сначала декомпилировать cs-файл (при этом будет создан txt-файл с кодом). Quote (MumiyTroll) будет ли он все так же функционировать,без вылетов и зависаний Вылеты и зависания могут появиться - в зависимости от того, какие изменения внесены в код (например, игра вылетит если в скрипт добавлена команда, производящая действие над несуществующей машиной или актёром).
|
|
| |
MumiyTroll | Дата: Среда, 26.01.2011, 01:20 | Сообщение # 515 |
Группа: Проверенные
Сообщений: 92
Статус: Offline
| Я так и думал...А если сделать так, при декомпиляции, выйти из Sanny Builder,не внося никаких изменений в cs-файл;открыть txt-файл,который будет создан в клео-папке после выхода;затем удалить этот скрипт,и отредактировать txt-файл->компилировать, результат будет таким же??
|
|
| |
Den_spb | Дата: Среда, 26.01.2011, 12:19 | Сообщение # 516 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (MumiyTroll) А если сделать так, при декомпиляции, выйти из Sanny Builder,не внося никаких изменений в cs-файл;открыть txt-файл,который будет создан в клео-папке после выхода;затем удалить этот скрипт,и отредактировать txt-файл->компилировать, результат будет таким же?? Зачем так сложно? Декомпилируешь cs-файл (если нет txt-файла, а если есть, то открываешь его командой Файл-Открыть) - создаётся txt-файл, содержимое которого появляется в окне SB. Вносишь нужные изменения, жмёшь Запуск - Компилировать. При этом будут перезаписаны txt-файл и cs-файл, в соответствии с произведёнными изменениями.
|
|
| |
DK22Pac | Дата: Суббота, 29.01.2011, 00:10 | Сообщение # 517 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Den_spb, опять насчёт думмсиов... Нужно узнать позиции задних фар. Ты, кажется, делал такое в "унив. поворотниках"?
|
|
| |
Den_spb | Дата: Суббота, 29.01.2011, 00:27 | Сообщение # 518 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Да, делал - вот кусок исходника:Code 0A8E: 30@ = CAR_STRUCT + 0x22 // int 0A8D: 30@ = read_memory 30@ size 2 virtual_protect 0 //model index 30@ *= 4 30@ += 0xA9B0C8 0A8D: 30@ = read_memory 30@ size 4 virtual_protect 0 //CModel 30@ += 0x5C 0A8D: 30@ = read_memory 30@ size 4 virtual_protect 0 //vehicle struct //30@ += 0 0A8D: CAR_FRONT_LIGHT_X = read_memory 30@ size 4 virtual_protect 0 //x offset 30@ += 4 0A8D: CAR_FRONT_LIGHT_Y = read_memory 30@ size 4 virtual_protect 0 //y offset 30@ += 4 0A8D: CAR_FRONT_LIGHT_Z = read_memory 30@ size 4 virtual_protect 0 //z offset 30@ += 4 0A8D: CAR_BACK_LIGHT_X = read_memory 30@ size 4 virtual_protect 0 //x offset 30@ += 4 0A8D: CAR_BACK_LIGHT_Y = read_memory 30@ size 4 virtual_protect 0 //y offset 30@ += 4 0A8D: CAR_BACK_LIGHT_Z = read_memory 30@ size 4 virtual_protect 0 //z offset В переменные записаны оффсеты правой передней и правой задней фары. Чтобы получить координаты левых фар, надо умножить полученные X-оффсеты на -1.0
|
|
| |
MumiyTroll | Дата: Четверг, 03.02.2011, 00:45 | Сообщение # 519 |
Группа: Проверенные
Сообщений: 92
Статус: Offline
| Денис,а какие нужно внести изменения в скрипт,чтоб он не выключался во время миссий?Или это сложный процесс?
|
|
| |
Den_spb | Дата: Четверг, 03.02.2011, 00:59 | Сообщение # 520 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Если в коде есть команда $ONMISSION == 0 то замени её на $ONMISSION <> 123 А если в коде есть команда $ONMISSION <> 0 то замени её на $ONMISSION == 123
|
|
| |
MumiyTroll | Дата: Четверг, 03.02.2011, 01:27 | Сообщение # 521 |
Группа: Проверенные
Сообщений: 92
Статус: Offline
| Ага,понял
|
|
| |
dyom | Дата: Пятница, 04.02.2011, 15:02 | Сообщение # 522 |
Группа: Пользователи
Сообщений: 19
Статус: Offline
| Здравствуйте!Вот у меня есть вопрос: Я сделал чтоб по нажатию кнопки перелетал вертолёт и скрипт чтоб типа от туда но верёвке спускаются актёры! Но как мне их совместить?Мне надо чтоб именно из вертолёта спускались актёры! Вертолёт: Code :NONAME_2 wait 0 gosub @NONAME_20 jump @NONAME_2
:NONAME_20 if Player.Defined($PLAYER_CHAR) jf @NONAME_903 if 0@ == 0 jf @NONAME_910 077E: get_active_interior_to $ACTIVE_INTERIOR if $ACTIVE_INTERIOR == 0 jf @NONAME_910 if 0AB0: key_pressed 9 jf @NONAME_910 Model.Load(#MAVERICK)
:NONAME_114 if or not Model.Available(#MAVERICK) jf @NONAME_158 wait 0 jump @NONAME_114
:NONAME_158 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 100.0 100.0 100.0 04C4: store_coords_to 6@ 7@ 8@ from_actor $PLAYER_ACTOR with_offset -100.0 -100.0 0.0 0208: 9@ = random_float_in_ranges 1@ 6@ 0208: 10@ = random_float_in_ranges 2@ 7@ 0087: 11@ = 3@ // (float) if 00C2: sphere_onscreen 9@ 10@ 11@ radius 5.0 jf @NONAME_284 wait 0 jump @NONAME_158
:NONAME_284 5@ = Car.Create(#MAVERICK, 9@, 10@, 11@) Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@) 039F: set_car 5@ race_to 1@ 2@ 0129: 4@ = create_actor_pedtype 8 model #FAM1 in_car 5@ driverseat Actor.RemoveFromMissionCleanupList(4@) Actor.Health(4@) = 1000 08AF: set_actor 4@ max_health_to 1000 0446: set_actor 4@ immune_to_headshots 0 054A: set_actor 4@ immune_to_car_headshots 0 04D8: set_actor 4@ drowns_in_water 0 05BC: AS_actor 4@ jump 1 12@ = Marker.CreateAboveActor(4@) Marker.SetIconSize(12@, 3) Marker.SetColor(12@, 1) 07E0: set_marker 12@ type_to 1 0825: set_helicopter 5@ instant_rotor_start 0726: heli 5@ follow_actor $PLAYER_ACTOR follow_car -1 radius 10.0 07BB: set_heli 5@ horizontal_thrust_power 6 Model.Destroy(#MAVERICK) 0@ = 1 jump @NONAME_910
:NONAME_903 gosub @NONAME_1071
:NONAME_910 if 0@ == 1 jf @NONAME_1069 gosub @NONAME_1133 if and not Actor.Dead(4@) not Car.Wrecked(5@)
jump @NONAME_1069
:NONAME_1062 gosub @NONAME_1071
:NONAME_1069 return
:NONAME_1071 if not 0@ == 0 jf @NONAME_1131 Actor.RemoveReferences(4@) Car.RemoveReferences(5@) Marker.Disable(12@) 0@ = 0
:NONAME_1131 return
:NONAME_1133 if 0AB0: key_pressed 9 jf @NONAME_1282 33@ = 0
:NONAME_1155 wait 0 if not Actor.Dead(4@) not Car.Wrecked(5@) jf @NONAME_1282 if 0AB0: key_pressed 8 jf @NONAME_1282 if 33@ > 1200 jf @NONAME_1155 Marker.Disable(12@) Actor.RemoveReferences(4@) Car.RemoveReferences(5@) 0@ = 0
:NONAME_1256 if 0AB0: key_pressed 9 jf @NONAME_1282 wait 0 jump @NONAME_1256
:NONAME_1282 return Добавлено (04.02.2011, 15:02) --------------------------------------------- Актёры: Code :NONAME_2 wait 0 Player.Defined($PLAYER_CHAR) jf @NONAME_2 jump @NONAME_3
:NONAME_3 wait 10 Model.Load(#BALLAS1) Model.Load(#BALLAS2) Model.Load(#MICRO_UZI) 038B: load_requested_models
:NONAME_4 wait 0 if and Model.Available(#BALLAS1) Model.Available(#BALLAS2) Model.Available(#MICRO_UZI) jf @NONAME_4 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 20.0 04C4: store_coords_to 4@ 5@ 6@ from_actor $PLAYER_ACTOR with_offset 9.0 0.0 20.0 04C4: store_coords_to 10@ 11@ 12@ from_actor $PLAYER_ACTOR with_offset 0.0 9.0 20.0 0503: create_actor_on_rope_with_pedtype 27 model #BALLAS1 at 1@ 2@ 3@ handle_as 28@ 0503: create_actor_on_rope_with_pedtype 27 model #BALLAS2 at 4@ 5@ 6@ handle_as 29@ 0503: create_actor_on_rope_with_pedtype 27 model #BALLAS2 at 10@ 11@ 12@ handle_as 30@ 01B2: give_actor 28@ weapon 28 ammo 999999 // Load the weapon model before using this 01B2: give_actor 29@ weapon 28 ammo 999999 // Load the weapon model before using this 01B2: give_actor 30@ weapon 28 ammo 999999 // Load the weapon model before using this 081A: set_actor 28@ weapon_skill_to 2 081A: set_actor 29@ weapon_skill_to 2 081A: set_actor 30@ weapon_skill_to 2 Actor.WeaponAccuracy(28@) = 100 Actor.WeaponAccuracy(29@) = 100 Actor.WeaponAccuracy(30@) = 100 wait 5000 jump @NONAME_5
:NONAME_5 wait 1000 Actor.StorePos(28@, 7@, 8@, 9@) if or Actor.Dead($PLAYER_ACTOR) Player.Wasted($PLAYER_CHAR) 80FE: not actor $PLAYER_ACTOR sphere 0 in_sphere 7@ 8@ 9@ radius 300.0 300.0 300.0 jf @NONAME_6 Actor.DestroyInstantly(28@) Actor.DestroyInstantly(29@) Actor.DestroyInstantly(30@) Actor.RemoveReferences(28@) Actor.RemoveR eferences(29@) Actor.RemoveReferences(30@) Model.Destroy(#BALLAS1) Model.Destroy(#BALLAS2) Model.Destroy(#MICRO_UZI) wait 8000 jump @NONAME_2
:NONAME_6 wait 1000 if and Actor.Dead(28@) Actor.Dead(29@) Actor.Dead(30@) jf @NONAME_5 Actor.DestroyInstantly(28@) Actor.DestroyInstantly(29@) Actor.DestroyInstantly(30@) Actor.RemoveReferences(28@) Actor.RemoveReferences (29@) Actor.RemoveReferences(30@) Model.Destroy(#BALLAS1) Model.Destroy(#BALLAS2) Model.Destroy(#MICRO_UZI) wait 8000 jump @NONAME_2
|
|
| |
Den_spb | Дата: Пятница, 04.02.2011, 19:38 | Сообщение # 523 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Добрый день. Создавай верёвку в месте расположения вертолёта. 00AA: store_car 0@ position_to 3@ 4@ 5@ // определяет координаты транспортного средства (в том числе и вертолёта) 0407: store_coords_to 120@ 130@ 140@ from_car 543@ with_offset -0.337 1.566 0.657 // определяет координаты транспортного средства со смещениями
|
|
| |
dyom | Дата: Пятница, 04.02.2011, 20:14 | Сообщение # 524 |
Группа: Пользователи
Сообщений: 19
Статус: Offline
| Den_spb, большое спасибо! Добавлено (04.02.2011, 20:12) --------------------------------------------- Den_spb, вроде сделал, но при нажатии кнопки вылет Весь текст скрипта не вошёл по этому кидаю сам скрипт http://ifolder.ru/21714636
Сообщение отредактировал dyom - Пятница, 04.02.2011, 20:16 |
|
| |
Den_spb | Дата: Пятница, 04.02.2011, 20:57 | Сообщение # 525 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Нельзя производить действия над несуществующими актёрами, машинами или объектами - будет вылет. В твоём коде вычисляются координаты несуществующего транспорта.
|
|
| |