Пятница, 26.04.2024, 11:08
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Вопросы по созданию КЛЕО-скриптов
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

Там нет такого поста tongue

Добавлено (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, чтоб с точкой было smile
 
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 не работал и так и не смог найти способ проверить максимальное здоровье sad
 
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

И как отсюда узнать макс. Здоровье?
И ещё такая проблема – актёров много – не прсотые прохожие, но и созданные скриптом, в миссии. У всех должно быть разное макс. здоровье. Как же его значение вернуть в конце потока?

 
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Поиск: