[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB)
Вопросы по скриптингу Sanny Builder
wmysterio
Администраторы
Скриптер
22.11.11 21:52
Offline
Если у вас возник вопрос по скриптингу Sanny Builder, обращайтесь! Мы постараемся решить вашу проблему wink Это ещё не значит, что все прям бросятся решать во чтобы то не стало, но ответ вы сможете вы получить как вариант решения или как невозможность или сложность решения.
УВАЖАЕМЫЕ ПОЛЬЗОВАТЕЛИ! ПРОСЬБА КОД СКРИПТОВ ПОМЕЩАТЬ В КОНСТРУКЦИЮ КОДА:

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.
Прикрепления: 0248203.png(0.9 Kb) · 9085525.png(0.2 Kb)

HYPERMUV
Проверенные
25.09.13 15:11
Offline
как вычислить координаты на экране где находится игрок, т.е. например вывести количество жизни над другим игроком

wmysterio
Администраторы
Скриптер
25.09.13 20:50
Offline
HYPERMUV, я лично не знаю как получить эти координаты, но в каком-то скрипте есть алгоритм, решающий данную задачу.

Slivkin-Sergey
Модераторы
26.09.13 11:59
Offline
То есть невозможно заставить актёра спринтовать?

HYPERMUV
Проверенные
26.09.13 19:40
Offline
wmysterio,  да я видел этот скрипт но сложный он, не понятно, там что то с памятью надо, вот если ты бы его разобрал

wmysterio
Администраторы
Скриптер
26.09.13 19:56
Offline
HYPERMUV, там с памятью ничего не делали. Там просто с пропорциями гемморой. Нужно учесть расстояние актёров к игроку и угол поворота камеры для определения точек рисования на экране.

Slivkin-Sergey
Модераторы
30.09.13 12:23
Offline
Понятно всё вообщем...

Добавлено (30.09.13, 11:23)
---------------------------------------------
Блин, в чём фикус? Перед этим в потоке создавался пикап с моделью #INFO, но потом я решил поменять модель на #BRIBE, но пикап всё равно создаётся ИНФО.

Код
:NONAME_1
wait 0
if  
   $ONMISSION == 0  
jf @NONAME_1
Model.Load(#BRIBE)
repeat
wait 0
until Model.Available(#BRIBE)
1@ = Pickup.Create(#BRIBE, 15, 1753.51, -1930.894, 13.5769)

:NONAME_1_45
wait 0
if
$ONMISSION == 1
jf @NONAME_1_80
Pickup.Destroy(1@)
jump @NONAME_1  

:NONAME_1_80
wait 0  
if and
Pickup.Picked_up(1@)
   $ONMISSION == 0  
jf @NONAME_1_46  
Pickup.Destroy(1@)
start_mission 0  // Initial 1
end_thread

mc_qwert
Пользователи
01.10.13 10:54
Offline
Slivkin-Sergey, скорее всего #BRIBE не существует, так как насколько я знаю если не сущетсвует модель, игра выводиит сама ИНФО

Slivkin-Sergey
Модераторы
01.10.13 16:33
Offline
mc_qwert, #BRIBЕ - модель звезды для сброса розыска.
Отредактировал Slivkin-Sergey - Вторник, 01.10.13, 16:34

wmysterio
Администраторы
Скриптер
01.10.13 18:17
Offline
Slivkin-Sergey, попробуй использовать ID объекта

Slivkin-Sergey
Модераторы
01.10.13 20:58
Offline
Я провёл эксперимент, который заключался в отключении потока:
Код
:NONAME_1
wait 0
end_thread

Но всё равно появляется ИНФО, и вообще выполняется весь код, что был до этого...

Добавлено (01.10.13, 19:38)
---------------------------------------------
Путём некоторых экспериментов удалось выяснить, что данный майн не реагирует вообще ни на какие изменения... С чем это может быть связано?

Добавлено (01.10.13, 19:58)
---------------------------------------------
Может ли это быть связано с переходом на СБ 3.11?


Vital
Модераторы
Скриптер
01.10.13 21:01
Offline
Slivkin-Sergey, проверь, куда сохраняется файл, вдруг он сохраняется в неправильное место. У меня пару раз была такая ошибка: я делал скрипт, потом сохранял его в другое место, пробовал редактировать, но ничего не выходило из-за неправильного места сохранения.
2109: create_special_actor $VITAL in_front_of_computer

Slivkin-Sergey
Модераторы
02.10.13 18:38
Offline
Хмм, я декомпилировал майн.скм, который по идее изменял компиляцией файла майн.ткст, но там обнаружилась какая-то фигня:
Код
DEFINE MISSION 3 AT @STEVEN2\"         // Video Game: They Crawled From Uranus
DEFINE MISSION 4 AT @STEVEN3'          // Video Game: Dualuty

...

:STEVEN2\" _2073
wait 0  
0701: end_scene_skip  
fade 0 500  
wait 500  
if  
84EE:   not animation "GANGS" loaded  
jf @STEVEN2\" _2140  
04ED: load_animation "GANGS"  

:STEVEN2\" _2120
wait 0  
04EE:   animation "GANGS" loaded  
jf @STEVEN2\" _2120  

:STEVEN2\" _2140
Model.Load(#PEREN)

:STEVEN2\" _2145
wait 0  
    Model.Available(#PEREN)

wacko

Добавлено (01.10.13, 20:11)
---------------------------------------------
Рамс с именами потоков и нежелание принимать любые изменения...

Добавлено (01.10.13, 20:21)
---------------------------------------------
Ура-а-а-а-а! Блин, капец, я уже танцевать хочу! Суть была в том, что из-за ошибки перехода на пока несуществующую метку (этот переход во время игры я даже не вызывал) СБ себя совершенно неадекватно вёл. Стоило убрать мешающий поток - всё работает как часы!
Бицуха *мцуа*! ©

Добавлено (02.10.13, 17:38)
---------------------------------------------
Vital, кстати, к тебе небольшой вопрос: как ты с помощью скриптов изменил походку игрока?


Vital
Модераторы
Скриптер
02.10.13 19:41
Offline
Slivkin-Sergey, я разве менял походку? Никогда этого не делал вообще-то.
2109: create_special_actor $VITAL in_front_of_computer

Slivkin-Sergey
Модераторы
02.10.13 20:02
Offline
Vital, это было как минимум в 16 выпуске "моих примеров", а также здесь:

Vital
Модераторы
Скриптер
02.10.13 20:33
Offline
Slivkin-Sergey, это не скрипты, а изменённый .ifp, причём не мой, мне его давал один человек, когда мы были заняты вместе модом с прыжками как в Max Payne, со стрельбой, конечно, и он предоставил мне свои новые анимации.
2109: create_special_actor $VITAL in_front_of_computer

Slivkin-Sergey
Модераторы
02.10.13 20:47
Offline
Vital, а такого эффекта можно добиться, переименовав, к примеру, анимацию walk_gang1 в walk_player в файле ped.ifp?

Vital
Модераторы
Скриптер
02.10.13 21:00
Offline
Slivkin-Sergey, не пробовал, но может сработать, если игрок может проиграть эту анимацию, то кости сделаны одинаково, и проблем быть не должно. Только надо тогда обратно переименовать анимации, а не только одну. Попробуй, только не забудь резервную копию файла сделать, потом расскажешь, как всё прошло, самому интересно.
2109: create_special_actor $VITAL in_front_of_computer

Slivkin-Sergey
Модераторы
02.10.13 21:17
Offline
Переименовал walk_player и run_player в walk_useless и run_useless, а run_gang1 и walk_gang1 - в run_player и walk_player соответственно. Результат - вылет ближе к концу загрузки.

blackful
Пользователи
02.10.13 21:20
Offline
народ, подскажите кто может, добавил оружие (гранатомёт) , и пример взял один скрипт (чтобы стрелял гранатами) но как начинаю новую игру, то это оружие (т.е гранатомёт) появляется у меня в руках, а кулака нет, а если выберу другое оружие то он так и останется этот гранатомёт, но при этом оружие можно будет выбирать, а кулака нет, так вот, как сделать чтобы он в начале гранатомёт не появлялся? ну чтобы можно его в другом месте найти, и чтобы не был в руках в начале игры. вот:

Код
{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
thread 'GRENFLW'
wait 2000
Model.Load(#SKATEBOARD)

:GRENFLW_21
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @GRENFLW_21
if
Model.Available(#SKATEBOARD)
else_jump @GRENFLW_21
01B2: give_actor $PLAYER_ACTOR weapon 14 ammo 12 // Load the weapon model before using this
Model.Destroy(#SKATEBOARD)

:GRENFLW_71
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @GRENFLW_71
if
8965:   not actor $PLAYER_ACTOR swimming
else_jump @GRENFLW_71
if and
0AB0:   key_pressed 87
0AB0:   key_pressed 80
else_jump @GRENFLW_133
jump @GRENFLW_2862

:GRENFLW_133
if
02D8:   actor $PLAYER_ACTOR current_weapon == 14
else_jump @GRENFLW_71
Model.Load(3065)
Model.Load(#GRENADE)

:GRENFLW_161
wait 0
if and
Model.Available(3065)
Model.Available(#GRENADE)
else_jump @GRENFLW_161
17@ = 0
9@ = 1.0

:GRENFLW_203
wait 0
if
3 > 17@
else_jump @GRENFLW_373
0@(17@,3i) = Object.Create(3065, 0.0, 9@, 500.0)
0750: set_object 0@(17@,3i) visibility 0
04D9: object 0@(17@,3i) set_scripted_collision_check 1
Object.CollisionDetection(0@(17@,3i)) = True
0906: set_object 0@(17@,3i) mass_to 30000.0 // float
0908: set_object 0@(17@,3i) turn_mass_to 30000.0 // float
20@(17@,3i) = Object.Create(#GRENADE, 0.0, 0.0, 600.0)
Object.CollisionDetection(20@(17@,3i)) = False
17@ += 1
9@ += 1.0
jump @GRENFLW_203

:GRENFLW_373
17@ = 0
0085: 8@ = 17@ // (int)
24@ = 0
33@ = 0
32@ = 0
01BD: 28@ = current_time_in_ms

:GRENFLW_414
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @GRENFLW_2661
if
8965:   not actor $PLAYER_ACTOR swimming
else_jump @GRENFLW_2661
if and
0AB0:   key_pressed 87
0AB0:   key_pressed 80
else_jump @GRENFLW_476
jump @GRENFLW_2760

:GRENFLW_476
if
02D8:   actor $PLAYER_ACTOR current_weapon == 14
else_jump @GRENFLW_2661
if
3 > 8@
else_jump @GRENFLW_1640
if
Actor.Animation($PLAYER_ACTOR) == "BUDDY_FIRE"
else_jump @GRENFLW_588
0613: 31@ = actor $PLAYER_ACTOR animation "BUDDY_FIRE" time
if
0.5 >= 31@
else_jump @GRENFLW_588
jump @GRENFLW_755

:GRENFLW_588
if
Actor.Animation($PLAYER_ACTOR) == "BUDDY_CROUCHFIRE"
else_jump @GRENFLW_676
0613: 31@ = actor $PLAYER_ACTOR animation "BUDDY_CROUCHFIRE" time
if
0.5 >= 31@
else_jump @GRENFLW_676
jump @GRENFLW_755

:GRENFLW_676
if
Actor.Animation($PLAYER_ACTOR) == "BUDDY_FIRE_POOR"
else_jump @GRENFLW_1640
0613: 31@ = actor $PLAYER_ACTOR animation "BUDDY_FIRE_POOR" time
if
0.5 >= 31@
else_jump @GRENFLW_1640

:GRENFLW_755
if
00E1:   player 0 pressed_key 17
else_jump @GRENFLW_1640
if
8@ == 0
else_jump @GRENFLW_797
jump @GRENFLW_863

:GRENFLW_797
if and
8@ == 1
33@ > 1000
else_jump @GRENFLW_830
jump @GRENFLW_863

:GRENFLW_830
if and
8@ == 2
32@ > 1000
else_jump @GRENFLW_1640
jump @GRENFLW_863

:GRENFLW_863
04C4: store_coords_to 3@ 4@ 23@ from_actor $PLAYER_ACTOR with_offset 0.15 1.0 0.3
0085: 17@ = 8@ // (int)
8@ += 1
19@ = Actor.Angle($PLAYER_ACTOR)
068D: get_camera_position_to 30@ 31@ 14@
0087: 10@ = 14@ // (float)
0063: 10@ -= 23@ // (float)
10@ *= -2.0
005B: 14@ += 10@ // (float)
0063: 14@ -= 23@ // (float)
0087: 30@ = 14@ // (float)
if
0.0 > 14@
else_jump @GRENFLW_1038
005B: 10@ += 14@ // (float)
30@ = 1.0
005B: 30@ += 14@ // (float)
0087: 14@ = 30@ // (float)
jump @GRENFLW_1192

:GRENFLW_1038
14@ += 1.5
if
14@ > 2.3
else_jump @GRENFLW_1096
14@ *= 1.25
10@ *= -3.0
jump @GRENFLW_1192

:GRENFLW_1096
if
14@ > 2.2
else_jump @GRENFLW_1144
14@ *= 1.15
10@ *= -2.2
jump @GRENFLW_1192

:GRENFLW_1144
if
14@ > 1.9
else_jump @GRENFLW_1192
14@ *= 1.1
10@ *= -2.0
jump @GRENFLW_1192

:GRENFLW_1192
005B: 23@ += 30@ // (float)
0087: 30@ = 14@ // (float)
30@ *= 10.0
0092: 30@ = float 30@ to_integer
14@ *= 10.0
Object.PutAt(0@(17@,3i), 3@, 4@, 23@)
23@ -= 0.5
0453: set_object 0@(17@,3i) XY_rotation 0.0 14@ angle 19@
Object.Angle(20@(17@,3i)) = 19@
069A: attach_object 20@(17@,3i) to_object 0@(17@,3i) with_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0
19@ = Actor.Angle($PLAYER_ACTOR)
0819: 18@ = actor $PLAYER_ACTOR distance_from_ground
10@ *= 10.0
10@ += 70.0
if
-0.5 > 10@
else_jump @GRENFLW_1416
10@ *= -0.2
jump @GRENFLW_1447

:GRENFLW_1416
if
0.0 > 10@
else_jump @GRENFLW_1447
10@ *= -0.1

:GRENFLW_1447
02F6: 15@ = cosine 19@ // (float)
02F7: 16@ = sine 19@ // (float)
006B: 15@ *= 10@ // (float)
006B: 16@ *= 10@ // (float)
15@ *= -1.0
018C: play_sound 1131 at 0.0 0.0 0.0
005B: 18@ += 14@ // (float)
Object.ToggleInMovingList(0@(17@,3i)) = True
Object.Throw(0@(17@,3i), 15@, 16@, 18@)
if
8@ == 1
else_jump @GRENFLW_1578
33@ = 0
jump @GRENFLW_1640

:GRENFLW_1578
if
8@ == 2
else_jump @GRENFLW_1610
32@ = 0
jump @GRENFLW_1640

:GRENFLW_1610
if
8@ == 3
else_jump @GRENFLW_1640
01BD: 28@ = current_time_in_ms
jump @GRENFLW_1640

:GRENFLW_1640
if
8@ > 0
else_jump @GRENFLW_1970
17@ = 0
0400: store_coords_to 11@ 12@ 13@ from_object 0@(17@,3i) with_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.2 last_factor 0.1
if or
04DA:   has_object 0@(17@,3i) collided
8474:   not actor $PLAYER_ACTOR near_object_in_cube 0@(17@,3i) radius 200.0 200.0 200.0 flag 0
33@ > 5000
else_jump @GRENFLW_1970
0400: store_coords_to 11@ 12@ 13@ from_object 0@(17@,3i) with_offset 0.0 0.0 0.0
020C: create_explosion_with_radius 2 at 11@ 12@ 13@
0565: create_soundless_explosion_at 11@ 12@ 13@ type 2
0682: detach_object 20@(17@,3i) 0.0 0.0 0.0 collision_detection 1
9@ += 1.0
Object.PutAt(0@(17@,3i), 0.0, 9@, 700.0)
Object.PutAt(20@(17@,3i), 0.0, 0.0, 600.0)
Object.CollisionDetection(20@(17@,3i)) = False
24@ += 1

:GRENFLW_1970
if
8@ > 1
else_jump @GRENFLW_2300
17@ = 1
0400: store_coords_to 5@ 6@ 7@ from_object 0@(17@,3i) with_offset 0.0 0.0 0.0
095C: create_smoke_at 5@ 6@ 7@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 0.2 last_factor 0.1
if or
04DA:   has_object 0@(17@,3i) collided
8474:   not actor $PLAYER_ACTOR near_object_in_cube 0@(17@,3i) radius 200.0 200.0 200.0 flag 0
32@ > 5000
else_jump @GRENFLW_2300
0400: store_coords_to 5@ 6@ 7@ from_object 0@(17@,3i) with_offset 0.0 0.0 0.0
020C: create_explosion_with_radius 2 at 5@ 6@ 7@
0565: create_soundless_explosion_at 11@ 12@ 13@ type 2
0682: detach_object 20@(17@,3i) 0.0 0.0 0.0 collision_detection 1
9@ += 1.0
Object.PutAt(0@(17@,3i), 0.0, 9@, 700.0)
Object.PutAt(20@(17@,3i), 0.0, 0.0, 600.0)
Object.CollisionDetection(20@(17@,3i)) = False
24@ += 1

:GRENFLW_2300
if
8@ > 2
else_jump @GRENFLW_2643
17@ = 2
0400: store_coords_to 25@ 26@ 27@ from_object 0@(17@,3i) with_offset 0.0 0.0 0.0
095C: create_smoke_at 25@ 26@ 27@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 0.2 last_factor 0.1
01BD: 29@ = current_time_in_ms
0062: 29@ -= 28@ // (int)
if or
04DA:   has_object 0@(17@,3i) collided
8474:   not actor $PLAYER_ACTOR near_object_in_cube 0@(17@,3i) radius 200.0 200.0 200.0 flag 0
29@ > 5000
else_jump @GRENFLW_2643
0400: store_coords_to 25@ 26@ 27@ from_object 0@(17@,3i) with_offset 0.0 0.0 0.0
020C: create_explosion_with_radius 2 at 25@ 26@ 27@
0565: create_soundless_explosion_at 11@ 12@ 13@ type 2
0682: detach_object 20@(17@,3i) 0.0 0.0 0.0 collision_detection 1
9@ += 1.0
Object.PutAt(0@(17@,3i), 0.0, 9@, 700.0)
Object.PutAt(20@(17@,3i), 0.0, 0.0, 600.0)
Object.CollisionDetection(20@(17@,3i)) = False
24@ += 1

:GRENFLW_2643
if
24@ > 2
else_jump @GRENFLW_414

:GRENFLW_2661
17@ = 0
Model.Destroy(3065)
Model.Destroy(#GRENADE)

:GRENFLW_2678
wait 0
if
3 > 17@
else_jump @GRENFLW_2742
Object.Destroy(0@(17@,3i))
Object.Destroy(20@(17@,3i))
17@ += 1
9@ += 1.0
jump @GRENFLW_2678

:GRENFLW_2742
17@ = 0
wait 50
jump @GRENFLW_71

:GRENFLW_2760
17@ = 0
Model.Destroy(3065)
Model.Destroy(#GRENADE)

:GRENFLW_2777
wait 0
if
3 > 17@
else_jump @GRENFLW_2841
Object.Destroy(0@(17@,3i))
Object.Destroy(20@(17@,3i))
17@ += 1
9@ += 1.0
jump @GRENFLW_2777

:GRENFLW_2841
17@ = 0
0555: remove_weapon 14 from_actor $PLAYER_ACTOR
jump @GRENFLW_3004

:GRENFLW_2862
31@ = 1
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @GRENFLW_71
if and
044B:   actor $PLAYER_ACTOR on_foot
8965:   not actor $PLAYER_ACTOR swimming
else_jump @GRENFLW_71
if
Actor.HasWeapon($PLAYER_ACTOR, 14)
else_jump @GRENFLW_2942
0555: remove_weapon 14 from_actor $PLAYER_ACTOR
jump @GRENFLW_3004

:GRENFLW_2942
if
Actor.HasWeapon($PLAYER_ACTOR, 1)
else_jump @GRENFLW_2982
31@ = 14
30@ = 325
jump @GRENFLW_3176

:GRENFLW_2982
31@ = 1
30@ = 331
jump @GRENFLW_3176

:GRENFLW_3004
31@ = 1

:GRENFLW_3011
wait 0
if
Player.Defined($PLAYER_CHAR)
else_jump @GRENFLW_3011
if
Actor.HasWeapon($PLAYER_ACTOR, 31@)
else_jump @GRENFLW_3065
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 31@
jump @GRENFLW_3216

:GRENFLW_3065
31@ += 1
if
44 > 31@
else_jump @GRENFLW_3161
if or
31@ == 20
31@ == 21
else_jump @GRENFLW_3129
31@ += 2
jump @GRENFLW_3011

:GRENFLW_3129
if
31@ == 14
else_jump @GRENFLW_3011
31@ += 1
jump @GRENFLW_3011

:GRENFLW_3161
31@ = 24
30@ = 348

:GRENFLW_3176
Model.Load(30@)

:GRENFLW_3181
wait 0
if
Model.Available(30@)
else_jump @GRENFLW_3181
01B2: give_actor $PLAYER_ACTOR weapon 31@ ammo 1 // Load the weapon model before using this
Model.Destroy(30@)

:GRENFLW_3216
wait 250
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0

:GRENFLW_3228
wait 0
if
if and
0AB0:   key_pressed 87
0AB0:   key_pressed 80
else_jump @GRENFLW_3262
jump @GRENFLW_3228

:GRENFLW_3262
wait 250
jump @GRENFLW_71
Прикрепления: skateboard.txd(52.0 Kb)
Евгений_Сергеевич

blackful
Пользователи
02.10.13 21:22
Offline
вот сама модель и скрипт:
Прикрепления: 1943252.rar(94.7 Kb)
Евгений_Сергеевич

Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB)
Поиск: