Вопросы по созданию КЛЕО-скриптов
|
|
Den_spb | Дата: Вторник, 04.01.2011, 04:21 | Сообщение # 436 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Ускорения будут всё время меняться, в зависимости от текущего положения объекта - иначе объект полетит по ломаной линии, а не напрямую. Или надо искать другие опкоды.
|
|
| |
walk | Дата: Вторник, 04.01.2011, 04:58 | Сообщение # 437 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Quote (DK22Pac) Пост Mar 3 2008, 02:04 Там нет такого поста Добавлено (04.01.2011, 04:58) --------------------------------------------- Den_spb, в нашем случае объект движется с большим смещением по всем осям, получается нечто подобное: http://savepic.org/1121350.jpg
|
|
| |
DK22Pac | Дата: Вторник, 04.01.2011, 05:02 | Сообщение # 438 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| walk, это дата поста. Посмотри внимательней.
|
|
| |
walk | Дата: Вторник, 04.01.2011, 05:07 | Сообщение # 439 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| DK22Pac, я понимаю, но там такого нет У меня идёт ZAZ Posted: Mar 2 2008, 22:47 Quote Post и следующий Posted: Mar 3 2008, 08:27 Quote Post
|
|
| |
DK22Pac | Дата: Вторник, 04.01.2011, 05:22 | Сообщение # 440 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Пишу код здесь. Code :Missile_00 03A4: name_thread 'JPR' :Missile_01 0001: wait 0 ms 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false @Missile_01 00D6: if 0 00E1: key_pressed 0 10 004D: jump_if_false @Missile_01 0247: request_model 3065 0247: request_model 3786 :Missile_02 0001: wait 0 ms 00D6: if 1 0248: model 3065 available 0248: model 3786 available 004D: jump_if_false @Missile_02 0172: 2@ = actor $PLAYER_ACTOR z_angle 04C4: create_coordinate 11@ 12@ 13@ from_actor $PLAYER_ACTOR offset 1.0 -0.5 1.3 0107: 1@ = create_object 3065 at 11@ 12@ 13@ 000B: 2@ += 270.0 // floating-point values 0177: set_object 1@ z_angle_to 2@ 0750: toggle_object 1@ visibility 0 0107: 19@ = create_object 3786 at 0.0 0.0 0.0 0177: set_object 19@ z_angle_to 2@ 04D9: object 1@ set_scripted_collision_check 1 0382: set_object 1@ collision_detection 1 0906: 1@ 30000.0//set_object mass 0908: 1@ 30000.0//set_object turn_mass 069A: attach_object 19@ to_object 1@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0 0382: set_object 19@ collision_detection 0 0001: wait 250 ms 0172: 2@ = actor $PLAYER_ACTOR z_angle 0819: 18@ = actor $PLAYER_ACTOR distance_from_ground 0007: 4@ = 80.1 // floating-point values 02F6: 5@ = cosine 2@ // sinus swapped with cosine 02F7: 6@ = sinus 2@ // cosine swapped with sinus 006B: 5@ *= 4@ // floating-point values 006B: 6@ *= 4@ // floating-point values 0013: 5@ *= -1.0 // floating-point values 000B: 18@ += 1.0 // floating-point values 0392: object 1@ toggle_in_moving_list 1 0381: throw_object 1@ distance 5@ 6@ 18@ 33@ = 0 // floating-point values :Missile_05 0001: wait 0 ms 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false @Missile_05 0400: create_coordinate 11@ 12@ 13@ from_object 1@ offset 0.0 0.0 0.0 095C: create_smoke_at 11@ 12@ 13@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 0.5 last_factor 0.1 00D6: if 21 04DA: has_object 1@ collided 0019: 33@ > 7000 // integer values 004D: jump_if_false @Missile_05 0400: create_coordinate 11@ 12@ 13@ from_object 1@ offset 0.0 0.0 0.0 020C: create_explosion_with_radius 3 at 11@ 12@ 13@ 0565: create_temporary_explosion_fire 11@ 12@ 13@ 5 0400: create_coordinate 11@ 12@ 13@ from_object 1@ offset 5.0 0.0 0.0 020C: create_explosion_with_radius 3 at 11@ 12@ 13@ 0565: create_temporary_explosion_fire 11@ 12@ 13@ 5 0400: create_coordinate 11@ 12@ 13@ from_object 1@ offset -5.0 0.0 0.0 020C: create_explosion_with_radius 3 at 11@ 12@ 13@ 0565: create_temporary_explosion_fire 11@ 12@ 13@ 5 0400: create_coordinate 11@ 12@ 13@ from_object 1@ offset 0.0 5.0 0.0 020C: create_explosion_with_radius 3 at 11@ 12@ 13@ 0565: create_temporary_explosion_fire 11@ 12@ 13@ 5 0400: create_coordinate 11@ 12@ 13@ from_object 1@ offset 0.0 -5.0 0.0 020C: create_explosion_with_radius 3 at 11@ 12@ 13@ 0565: create_temporary_explosion_fire 11@ 12@ 13@ 5 0249: release_model 3065 0249: release_model 3786 095C: create_smoke_at 11@ 12@ 13@ velocity 0.0 0.0 0.0 RGBA 0.0 0.0 0.0 0.2 size 3.0 last_factor 0.1 0001: wait 100 ms 0682: detach_object 19@ 0.0 0.0 0.0 collision_detection 1 0001: wait 100 ms Object.Destroy(1@) Object.Destroy(19@) 0002: jump @Missile_01
|
|
| |
walk | Дата: Вторник, 04.01.2011, 05:48 | Сообщение # 441 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| А как вывести на экран значение float, чтоб с точкой было
|
|
| |
Den_spb | Дата: Вторник, 04.01.2011, 06:40 | Сообщение # 442 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (walk) А как вывести на экран значение float, чтоб с точкой было На SB в теме Один вопрос есть код. На какой странице - не помню.
|
|
| |
d88 | Дата: Вторник, 04.01.2011, 11:54 | Сообщение # 443 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Den_spb, можешь подсказать решение такой проблемы: В мэйне создаю поток, в котором захватывается случайный пед и над ним производятся некие действия. При чём этот поток можно запустить снова, не дожидаясь когда он дойдёт до конца. Так вот как мне проверить, что он снова захватил того же педа, над которым уже производятся эти действия?
|
|
| |
DK22Pac | Дата: Вторник, 04.01.2011, 12:20 | Сообщение # 444 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Den_spb уже отвечал на подобный вопрос (за что ему большое спасибо). Узнаешь структуру педа, добавляешь нужное смещение к адрессу, где хранится значение макс. здоровья, пишешь туда число с потолка (например 231). И в код, перед выбором педа, добавляешь проверку Code 0@ == 231 // 0@ - max health for this ped (Естевственно, перед этой проверкой нужно записать в переменную значение макс. здоровья найденого педа).
|
|
| |
walk | Дата: Вторник, 04.01.2011, 16:16 | Сообщение # 445 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| DK22Pac, Quote 0@ = 5.27348568 0AD0: show_formatted_text_lowpriority "%.5g" time 5000 0@ Можно поподробнее о "%.5g" Что означает % и 5g, ну и желательно принцип действия
|
|
| |
d88 | Дата: Вторник, 04.01.2011, 16:24 | Сообщение # 446 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| DK22Pac, я не понимаю при чём тут здоровье? И ещё мне кажется что это не совсем то, что мне надо. Ведь я хочу чтоб поток не захватывал педа повторно только до тех пор, пока над ним производятся действия.
|
|
| |
Den_spb | Дата: Вторник, 04.01.2011, 16:36 | Сообщение # 447 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Ты не понял, о чём речь. Для того, чтобы поток не захватывал педа повторно, его нужно как-то "отметить". Для "отметки" не обязательно использовать максимальное здоровье - это может быть и другое подходящее смещение в структуре. А если нужно сделать так, чтобы поток вновь мог выбирать педа, нужно снять "отметку" (в данном случае снова изменить значение максимального здоровья этого педа).
|
|
| |
walk | Дата: Вторник, 04.01.2011, 17:01 | Сообщение # 448 |
Группа: Проверенные
Сообщений: 96
Статус: Offline
| Den_spb, где же ты был, когда я задавал этот вопрос на форуме билдера, у меня была такая же мысль, я даже пытался это реализовать, но на тот момент с .exe не работал и так и не смог найти способ проверить максимальное здоровье
|
|
| |
Den_spb | Дата: Вторник, 04.01.2011, 17:04 | Сообщение # 449 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Проверить его не сложно - надо получить указатель на структуру педа и прибавить к нему соответствующее смещение Code CPed +0x544 = [float] Максимальное здоровье
|
|
| |
d88 | Дата: Среда, 05.01.2011, 11:53 | Сообщение # 450 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Quote (Den_spb) Ты не понял, о чём речь. Для того, чтобы поток не захватывал педа повторно, его нужно как-то "отметить". Для "отметки" не обязательно использовать максимальное здоровье - это может быть и другое подходящее смещение в структуре. А если нужно сделать так, чтобы поток вновь мог выбирать педа, нужно снять "отметку" (в данном случае снова изменить значение максимального здоровья этого педа). Ну хорошо, структуру записываем так 0A96: $ActorStruct = actor $PLAYER_ACTOR struct И как отсюда узнать макс. Здоровье? И ещё такая проблема – актёров много – не прсотые прохожие, но и созданные скриптом, в миссии. У всех должно быть разное макс. здоровье. Как же его значение вернуть в конце потока?
|
|
| |