Вопросы по созданию КЛЕО-скриптов
|
|
ILYALION | Дата: Вторник, 02.08.2011, 16:03 | Сообщение # 796 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| В опкоде 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 6.5 6.5 in_car второй радиус это радиус в высоту?
Добавлено (02.08.2011, 16:03) --------------------------------------------- А какие бывают номера костей? Мне нужна именно правая ладонь. А нельзя приделать оружие, а не объект?
Сообщение отредактировал ILYALION - Вторник, 02.08.2011, 16:53 |
|
| |
DK22Pac | Дата: Вторник, 02.08.2011, 16:59 | Сообщение # 797 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote (ILYALION) В опкоде 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 6.5 6.5 in_car второй радиус это радиус в высоту? 1ый - по оси X, второй - по оси Y. Quote (ILYALION) Мне нужна именно правая ладонь. Пробуй 5 или 6. Quote (ILYALION) А нельзя приделать оружие, а не объект? Прикрепи обект с моделью оружия.
|
|
| |
ILYALION | Дата: Вторник, 02.08.2011, 18:21 | Сообщение # 798 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| А тогда в опкоде 00EE высота берётся любая? Если я использую опкод 00BC: text_highpriority 'MTIME3' 5000 ms 1, то как Sanny Builder поймёт, откуда брать текст-из american.gxt или из fxt файла, и как указать игре выбрать нужный fxt файл из всех тех, которые у меня находятся в CLEO/CLEO_TEXT?
|
|
| |
Vital | Дата: Вторник, 02.08.2011, 18:47 | Сообщение # 799 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| ILYALION, если ты создаешь текст в .fxt, то по автомату игра выберет его. Я так делал перевод DYOM'а (версии 4.1) с помощью .fxt файла. Выбирать ничего не нужно, игра автоматически находит, какая запись в каком файле. В опокде 00ЕЕ раз нету третьей координаты (Z - высота), значит ты можешь находиться на любой высоте, хоть миллион, хоть минус миллион. Если нужна конкретная высота, то используй другой опкод, например 0100
SCRIPTER
|
|
| |
ILYALION | Дата: Вторник, 02.08.2011, 21:55 | Сообщение # 800 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| Vital, спасибо. Как можно объединить следующие условия: 4@ > 25 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 30.9 30.9 in_car 6@ == 2, Чтобы выполнялось сдедующее: или 4@ > 25 и одновременно игрок находится в точке 37.231 -1558.5866 радиусом 30.9 30.9 в авто, или 6@=2. Т.е:Code if or 4@ > 25 //эти 2 условия 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 30.9 30.9 in_car//надо объединить 6@ == 2 //а вот это отдельно then ... Добавлено (02.08.2011, 21:44) --------------------------------------------- У меня не работает скрипт Зависает, как только подъезжаю к тому месту, где должны создаваться актёры. Если удалить всё, после метки :1SPEED, то всё работает хорошо. В чём проблема?Добавлено (02.08.2011, 21:55) --------------------------------------------- DK22Pac, у меня объект не прицепляется к руке игрока. Я делал так: Code {$CLEO} model.Load(#LAPD1) model.Load(334) 04ED: load_animation "NULL" 038B: load requested models :NONAME_22 wait 0 if and Model.Available(#LAPD1) Model.Available(334) jf @NONAME_22 :NET wait 0 if 00EC: actor $PLAYER_ACTOR 0 near_point 2491.6575 -1663.4751 radius 30.0 30.0 jf @NET 009A: 2@ = create_actor 6 #LAPD1 at 2491.5132 -1667.3541 13.3437 Actor.Angle(2@) = 358.4333 Model.Destroy(#LAPD1) Object.Create(3@,334,2491.5132, -1667.3541,-32.0) 09A0: actor 2@ attach_object 3@ with_offset 1.0 0.0 0.0 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1 Model.Destroy(334) 0A93: В чём проблема?
|
|
| |
DK22Pac | Дата: Среда, 03.08.2011, 01:47 | Сообщение # 801 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote (ILYALION) DK22Pac, у меня объект не прицепляется к руке игрока. Я делал так: Code {$CLEO} #LAPD1.Load model.Load(334) 038B: load requested models :NET wait 0 if player.Defined(0) jf @NET if 00EC: actor $PLAYER_ACTOR 0 near_point 2491.6575 -1663.4751 radius 30.0 30.0 jf @NET 009A: 2@ = create_actor 6 #LAPD1 at 2491.5132 -1667.3541 13.3437 Actor.Angle(2@) = 358.4333 #LAPD1.Destroy Object.Create(3@, 334,2491.5132, -1667.3541,-32.0) 070A: AS_actor 2@ attach_to_object 3@ offset 0.0 0.0 0.0 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1 actor.RemoveReferences(2@) object.RemoveReferences(3@) Model.Destroy(334) 0A93: Добавлено (03.08.2011, 01:47) ---------------------------------------------
Quote (ILYALION) Зависает, как только подъезжаю к тому месту, где должны создаваться актёры. Если удалить всё, после метки :1SPEED, то всё работает хорошо. В чём проблема? Тут у тебя несколько ошибок: 1) Ты забыл команду задержки (wait или 003D:); 2) В таком цикле надо обязательно проверять, сушествует ли игрок; 3) Перед тем, как записывать в переменную хендл авто игрока, надо проверить, находится ои он за рулём автомобиля; 4) Чтобы не удалять референс, хендл авто лучше записывать опкодом 0811; 5) Скорость в переменную записывается как float. Code {$CLEO .cs} wait 0 :START wait 0 if Player.Defined($PLAYER_CHAR) else_jump @START if 00EC: actor $PLAYER_ACTOR 0 near_point -59.7656 -1593.14 radius 150.0 150.0 else_jump @START model.Load(#LAPD1) model.Load(596) 038B: load requested models 009A: 0@ = create_actor 6 #LAPD1 at -56.0847 -1590.3318 2.8584 Actor.Angle(0@) = 322.6035 0638: AS_actor 0@ stay_put 1 car.Create(1@,596,-60.1223, -1591.3063, 2.6107) Car.Angle(1@) = 232.5829 car.DoorStatus(1@) = 0 009A: 2@ = create_actor 6 #LAPD1 at -61.4467 -1592.4645 2.6107 036A: put_actor 2@ in_car 1@ 0638: AS_actor 2@ stay_put 1 model.Destroy(#LAPD1) model.Destroy(596)
:1SPEED 003D: if player.Defined(0) jf @1SPEED if actor.Driving($PLAYER_ACTOR) jf @1SPEED 0811: 3@ = actor $PLAYER_ACTOR car_nosave 02E3: 4@ = car 3@ speed 0209: 6@ = random_int_in_ranges 1 11 if and 4@ > 25.0 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 30.9 30.9 in_car jf @1SPEED if or 00EE: actor $PLAYER_ACTOR 0 near_point -40.568 -1573.0104 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -34.5664 -1574.284 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -28.1351 -1577.505 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -50.1422 -1588.973 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -45.9694 -1591.463 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -40.8672 -1595.787 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -57.878 -1583.2549 radius 8.0 8.0 in_car then if actor.Defined(0@) then model.Load(334) 04ED: load_animation "MISC" 038B: load requested models 01B2: give_actor 0@ weapon 3 ammo 1 0638: AS_actor 0@ stay_put 0 0605: actor 0@ perform_animation_sequence "HIKER_POSE" IFP_file "MISC" 4.0 loop 1 0 0 0 time 7000 Model.Destroy(334) 03BC: 5@ = create_sphere_at -64.3976 -1594.6892 2.6759 radius 3.0 00BC: text_highpriority 'DPS_MARK' 7000 ms 1 wait 7100 04EF: release_animation "MISC" end end 0A93:
Сообщение отредактировал DK22Pac - Среда, 03.08.2011, 01:37 |
|
| |
ILYALION | Дата: Среда, 03.08.2011, 06:49 | Сообщение # 802 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| DK22Pac, можете объяснить, в чём я ошибся? Смысл вышеприведённого Вами скрипта в том, чтобы приближении к одному месту ближе, чем на 150м, создавались копы. Потом, если скорость моего авто больше 90 км/чCode if and 4@ > 25.0 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 30.9 30.9 in_car jf @1SPEED , то копы, если я проеду дорогу в определённых местах, Code if or 00EE: actor $PLAYER_ACTOR 0 near_point -40.568 -1573.0104 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -34.5664 -1574.284 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -28.1351 -1577.505 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -50.1422 -1588.973 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -45.9694 -1591.463 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -40.8672 -1595.787 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -57.878 -1583.2549 radius 8.0 8.0 in_car then останавливали меняCode model.Load(334) 04ED: load_animation "MISC" 038B: load requested models 01B2: give_actor 0@ weapon 3 ammo 1 0638: AS_actor 0@ stay_put 0 0605: actor 0@ perform_animation_sequence "HIKER_POSE" IFP_file "MISC" 4.0 loop 1 0 0 0 time 7000 Model.Destroy(334) 03BC: 5@ = create_sphere_at -64.3976 -1594.6892 2.6759 radius 3.0 00BC: text_highpriority 'DPS_MARK' 7000 ms 1 wait 7100 04EF: release_animation "MISC" Но ничего не происходит. Я даже переделал условие: не 90 км/ч, а брал случайное число из маленьк. интервала и делал проверку на равность одной из переменных этим числам, но меня не останавливали. Почему?
|
|
| |
ILYALION | Дата: Среда, 03.08.2011, 07:04 | Сообщение # 803 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| DK22Pac, вышеприведённый Вами первый код не работал. Я его переделал и всё работает.Code {$CLEO} #LAPD1.Load model.Load(334) 038B: load requested models :NET wait 0 if player.Defined(0) jf @NET if 00EC: actor $PLAYER_ACTOR 0 near_point 2491.6575 -1663.4751 radius 30.0 30.0 jf @NET 009A: 2@ = create_actor 6 #LAPD1 at 2491.5132 -1667.3541 13.3437 Actor.Angle(2@) = 358.4333 Object.Create(3@, 334,2491.5132, -1667.3541,-32.0) 070A: AS_actor 2@ attach_to_object 3@ offset 0.0 0.0 0.0 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1 0A93: Как изменить угол дубинки? (Как я хочу видно на прикреплённом скрине)
|
|
| |
DK22Pac | Дата: Среда, 03.08.2011, 13:05 | Сообщение # 804 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote (ILYALION) DK22Pac, можете объяснить, в чём я ошибся? Смысл вышеприведённого Вами скрипта в том, чтобы приближении к одному месту ближе, чем на 150м, создавались копы. Потом, если скорость моего авто больше 90 км/ч Возможно, ошибка здесь: Quote (ILYALION) if and 4@ > 25.0 00EE: actor $PLAYER_ACTOR 0 near_point -37.231 -1558.5866 radius 30.9 30.9 in_car После того, как эта проверка выполнится, будут произведены другие проверки: Quote (ILYALION) if or 00EE: actor $PLAYER_ACTOR 0 near_point -40.568 -1573.0104 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -34.5664 -1574.284 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -28.1351 -1577.505 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -50.1422 -1588.973 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -45.9694 -1591.463 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -40.8672 -1595.787 radius 6.5 6.5 in_car 00EE: actor $PLAYER_ACTOR 0 near_point -57.878 -1583.2549 radius 8.0 8.0 in_car А ведь игрок не успеет доехать в любые из этих точек. http://pastebin.com/vp8VGW0U
Сообщение отредактировал DK22Pac - Среда, 03.08.2011, 13:11 |
|
| |
ILYALION | Дата: Среда, 03.08.2011, 16:47 | Сообщение # 805 |
Группа: Проверенные
Сообщений: 325
Статус: Offline
| DK22Pac, а как изменить угол дубинки?
|
|
| |
DK22Pac | Дата: Среда, 03.08.2011, 17:33 | Сообщение # 806 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| ILYALION, в 3ds max'е можешь изменить пзицию и поворот pivot'а.
|
|
| |
d88 | Дата: Среда, 03.08.2011, 19:00 | Сообщение # 807 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| DK22Pac, a ты не знаешь, как увеличить силу удара актёра?
|
|
| |
Vital | Дата: Вторник, 16.08.2011, 17:23 | Сообщение # 808 |
Группа: Проверенные
Сообщений: 206
Статус: Offline
| У меня вот два вопроса возникло. Первый: как сделать, чтобы на одной территории была не одна банда, а несколько (как в одном из чит-кодов) Вот код, я пробовал, но попадаются только члены одной банды, а не двух. Code 0767: set_zone 'LA' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'VE' popcycle_group_for_peds_and_cars_to 7 0767: set_zone 'SF' popcycle_group_for_peds_and_cars_to 7 076C: set_zone 'LA' gang 0 density_to 75 076C: set_zone 'LA' gang 1 density_to 75 076C: set_zone 'VE' gang 0 density_to 75 076C: set_zone 'VE' gang 1 density_to 75 076C: set_zone 'SF' gang 0 density_to 75 076C: set_zone 'SF' gang 1 density_to 75 08EA: enable_gangs_spawn 1 0879: enable_gang_wars 0 0237: set_gang 0 weapons_to 29 31 16 0237: set_gang 1 weapons_to 24 30 16 И второе: я хотел бы узнать, есть ли хотя бы парочка свободных адресов структуры актеров (неиспользованные игрой). То есть, хотя бы два адреса, не занятых ничем, куда можно что-нибудь записать, и тогда актер бы хранил информацию до смерти. Причем тогда можно было бы обойтись без массивов из кучи актеров. Вот пример, который я хотел привести, и который хотел бы осуществить. Есть два массива с текстами: один - с именами, другой - с фамилиями. И индекс (в виде случайного числа) записывался бы каждому "пойманному" актеру в свободные адреса структуры (если есть и если не заняты). И тогда можно было бы сделать отображение имен и фамилий (случайных для каждого актера) как в STALKER'е. Можно ли так сделать? Без массивов.
SCRIPTER
|
|
| |
Den_spb | Дата: Вторник, 16.08.2011, 23:54 | Сообщение # 809 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (DK22Pac) 4) Чтобы не удалять референс, хендл авто лучше записывать опкодом 0811; Seemann рекомендовал использовать 03C0. Референс он не включает (делает машину "уникальной" только опкод 0327).
Quote (Vital) Первый: как сделать, чтобы на одной территории была не одна банда, а несколько (как в одном из чит-кодов) Вот код, я пробовал, но попадаются только члены одной банды, а не двух. Я бы попробовал использовать команды 076C по очереди:Code while true wait 0 if 32@ > 10000 then 32@ = 0 076C: set_zone 'LA' gang 1 density_to 75 else if 32@ > 5000 then 076C: set_zone 'LA' gang 0 density_to 75 end end end
Quote (Vital) И второе: я хотел бы узнать, есть ли хотя бы парочка свободных адресов структуры актеров (неиспользованные игрой). Можно попробовать поискать свободные смещения самому, но проще и надёжнее воспользоваться другим способом: создать в скрипте hex-буффер, в котором будут хранится нужные данные.
|
|
| |
DK22Pac | Дата: Среда, 17.08.2011, 00:37 | Сообщение # 810 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Этот опкод использовался в миссиях, и записывал хендл он в пременную $TEMPVAR_CAR. Он тоже не присваивает референс. Quote (Den_spb) Seemann рекомендовал использовать 03C0. Референс он не включает (делает машину "уникальной" только опкод 0327). Спасибо Quote (Vital) И второе: я хотел бы узнать, есть ли хотя бы парочка свободных адресов структуры актеров Надо смотреть конструктор CPed, узнать размер структуры, сверять, все ли смещения там заполняются...
Сообщение отредактировал DK22Pac - Среда, 17.08.2011, 00:37 |
|
| |