[ Новые сообщения · Участники · Правила форума · Поиск · 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)

wmysterio
Администраторы
Скриптер
08.08.13 20:14
Offline
Цитата (SSS)
они отображаются если я к ним подойду, а как сделать так что бы даже если я далеко - то на карте видно будет.Пример: как в мисии: тебе дают задание приехать там например к определенной точке, и на карте ставиться квадратик, вот мне так же нужно(что бы квадратиками машины отображались даже если я далеко от них)
Игра подгружаем примерно 250.0-300.0 игровых шагов карты, всё что находится вне диапазона выгружается и "уловить" транспорт там анриал для стандартной игры, так что по всей карте пометить не получится.

Есть исключение - если субъект создан вручную в каком-то месте карты, то то место подгружается, по этому помеченные субъекты могут находится далеко от игрока.

Vital
Модераторы
Скриптер
08.08.13 21:00
Offline
wmysterio, тем не менее это не мешает созданным вручную машинам и актёрам падать с высоты, если подойти к тому месту, где они созданы. К примеру, я создал человека на кране строительном, всё хорошо, но когда подошёл туда, и локация прогрузилась, он лежал мёртвый рядом с краном, потому что грохнулся вниз... И от этого, судя по всему, нету никакого средства.
2109: create_special_actor $VITAL in_front_of_computer

SSS
Пользователи
08.08.13 22:02
Offline
Как по нажатию ПКМ и пробел заморозить актера, то есть чтобы он не смог ходить
P.S.
ПКМ:   00E1: player 0 pressed_key 6
Пробел:  00E1: player 0 pressed_key 14

DK22Pac
Модераторы
TOP Скриптер
08.08.13 22:26
Offline
Slivkin-Sergey, код надо писать так, чтобы в нём могли разобраться другие. Неужели тебе удобно работать с таким кодом? Пипец какой-то... 
Попробуй заново всё переделать. Разбей весь код на части, например:
Код
gosub @Begin   
if
     wasted_or_busted   
then   
     gosub @Failed
end   
gosub @Cleanup
end_thread

:Begin

:CreateStuff

:Part1_GoToCar

:Part2_DriveToPoint

:MissionComplete

:Failed

:Cleanup

Также, переменным можно "присвоить" имена (const).
Готов ответить на все вопросы, которые у тебя возникнут при такой организации кода.

wmysterio
Администраторы
Скриптер
08.08.13 23:06
Offline
Цитата (SSS)
Как по нажатию ПКМ и пробел заморозить актера, то есть чтобы он не смог ходить
Вариант 1:
Код
if AND
00E1: player 0 pressed_key 6
00E1: player 0 pressed_key 14
then
Player.CanMove(0, 0)
end
Вариант 2
Код
if AND
00E1: player 0 pressed_key 6
00E1: player 0 pressed_key 14
then
Actor.LockInCurrentPosition($PLAYER_ACTOR) = true
end

Slivkin-Sergey
Модераторы
09.08.13 06:40
Offline
Цитата (Vital)
И от этого, судя по всему, нету никакого средства.

Actor.LockInCurrentPosition($ARBUZ, 1)
Ну или 04E4 (хотя насчёт этого не уверен, что поможет)

К слову об 04Е4, почему этим опкодом загружаются одни лишь LOD'ы?!
Цитата (DK22Pac)
код надо писать так, чтобы в нём могли разобраться другие

Зачем? Его кроме меня и вас здесь никто и не увидит smile (наверное).

Код
:STEVEN1_FAILED_SD

Stevenson's 1st_failed_Stevenson died

Код
:STEVEN1_FAILED_CD

Stevenson's 1st_failed_car drowned

Лично мне понятно.

Цитата (DK22Pac)
Также, переменным можно "присвоить" имена (const).

Так их значения нельзя потом изменить вроде?..

Цитата (wmysterio)
// поставить 0.0, скорее всего игра понимает его как целое, а ты ведь используешь его как дробное

Дык у меня там и так $182 = 0.0. Или надо объявлять в var?
Отредактировал Slivkin-Sergey - Пятница, 09.08.13, 06:40

SSS
Пользователи
09.08.13 08:16
Offline
Если игрок не мертв и не водит транспорт, то по нажатию F5 актер садится в RC самолетик. Как это сделать? Спасибо!

Slivkin-Sergey
Модераторы
09.08.13 12:49
Offline
SSS, господи, чувак, пиши в тему "Заказ CLEO скриптов", здесь задают вопросы по использованию опкодов, о различных багах и т.д. Возьми опкоды для помещения/удаления игрока в/из режим Remote Control, о помещении в машину и о проверке нажатии клавиши. Всё это есть в справке SB.

Добавлено (09.08.13, 11:43)
---------------------------------------------
Почему, когда проваливаю миссию и начинаю проходить заново, синий маркер остаётся даже когда я в машине?

Код
:STEVEN1_4
wait 0
0701: end_scene_skip
00BE: text_clear_all  
fade 0 500
wait 500
repeat
0164: disable_marker 6@
until 875C: not marker 6@ enabled  
if
Car.Defined(5@)
then
Car.Destroy(5@)
end
5@ = Car.Create(#PEREN, 1772.7936, -1375.1516, 15.7578)
Car.Angle(5@) = 179.7363
Model.Load(#BALLAS1)
038B: load_requested_models
repeat
0001: wait 0 ms
until Model.Available(#BALLAS1)
Car.Health(5@) = 1000
0430: put_actor 1@ into_car 5@ passenger_seat 0
Camera.Restore_WithJumpCut()
Actor.PutAt($PLAYER_ACTOR, 1776.2982, -1369.6877, 15.7578)
Actor.Angle($PLAYER_ACTOR) = 168.4793
wait 1000
fade 1 1000
02A3: enable_widescreen 0             
Player.CanMove($PLAYER_CHAR) = True

:STEVEN1_5
wait 0  
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED_CW
if
82BF:   not car 5@ sunk
jf @STEVEN1_FAILED_CD
if
not Actor.Dead(1@)
jf @STEVEN1_FAILED_SD
if
not Actor.InCar($PLAYER_ACTOR, 5@)
then
gosub @STEVEN1_GETIN1
else
0164: disable_marker 6@
end
if and
Actor.InCar($PLAYER_ACTOR, 5@)
00EC:   actor $PLAYER_ACTOR 0 near_point 2002.6569 -1462.4677 13.3906 radius 4.0 4.0  
Actor.InCar(1@, 5@)
not Actor.Dead($PLAYER_ACTOR)
then
jump @STEVEN1_8
end
if
$181 > 0
then
jump @STEVEN1_5
end
if and
$181 == 0
$182 >= 0.0
then
00BB: show_text_lowpriority GXT 'M2S11' time 5000 flag 1
$181 += 1
$182 = 0.0
end
$182 += 0.25
jump @STEVEN1_5

:STEVEN1_8
wait 0
0164: disable_marker 7@
Marker.Disable(7@)
03BD: destroy_sphere 8@  
Player.CanMove(0, 0)
fade 0 500
wait 500
Car.LockInCurrentPosition(5@, 1)
022B: create_forbidden_for_peds_cube_cornerA 1996.7976 -1451.1376 13.5547 cornerB 2082.5613 -1355.6012 78.472
0395: clear_area 1 at 2025.6244 -1423.1025 16.9922 radius 10.0  
18@ = Car.Create(#AMBULAN, 2033.4674, -1427.9889, 16.9922)
Car.Angle(18@) = 182.6341
19@ = Actor.Create(Mission1, #LAEMT1, 2003.6526, -1438.0737, 13.7182)
20@ = Actor.Create(Mission1, #LAEMT1, 2005.8107, -1440.6849, 13.5635)
0A1D: AS_actor 20@ rotate_to_and_look_at_actor 19@
0A1D: AS_actor 19@ rotate_to_and_look_at_actor 20@
0605: actor 19@ perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 0 0 0 1 3000 ms  
02A3: enable_widescreen 1
Camera.SetPosition(1994.0697, -1453.6781, 13.5547, 0.0, 0.0, 0.0)
Camera.PointAt(2025.8408, -1420.2466, 30.4282, 2)   
wait 200  
0460: set_camera_transverse_delay 0.0 time 4500
Camera.SetPosition(2012.9207 -1434.9855 13.5547, 0.0, 0.0, 0.0)
Camera.PointAt(2025.8408, -1420.2466, 30.4282, 1)    
wait 100
45@ = 1
fade 1 500
wait 500
0707: start_scene_skip_to @STEVEN1_9
00BC: show_text_highpriority GXT 'M2S12' time 5000 flag 0
wait 3000
05B9: AS_actor 19@ stay_idle -1 ms   
0605: actor 20@ perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 0 0 0 1 2000 ms  
wait 2000

:STEVEN1_9
wait 0
0701: end_scene_skip
fade 0 500
wait 500
02A3: enable_widescreen 0
$181 = 0
$182 = 0
Marker.Disable(7@)
Camera.Restore_WithJumpCut()
fade 1 500
wait 500
Player.CanMove(0, 1)
Car.LockInCurrentPosition(5@, 0)
8@ = Actor.Create(Mission1, #BALLAS1, 2180.8892, -1338.4486, 23.9844)
Actor.Angle(8@) = 177.0174
0605: actor 8@ perform_animation_sequence "M_SMKLEAN_LOOP" from_file "SMOKING" 4.0 loop 0 0 0 1 -1 ms  
9@ = Actor.Create(Mission1, #BMYDRUG, 2180.9292, -1340.9161, 23.9844)
0A1D: AS_actor 9@ rotate_to_and_look_at_actor 8@
0605: actor 9@ perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 0 0 0 1 120000 ms  
wait 500
fade 1 500
wait 500

:STEVEN1_10
wait 0  
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED_CW
if
82BF:   not car 5@ sunk
jf @STEVEN1_FAILED_CD
if
not Actor.Dead(1@)
jf @STEVEN1_FAILED_SD
if
not Actor.InCar($PLAYER_ACTOR, 5@)
then
0164: disable_marker 10@
0164: disable_marker 11@
gosub @STEVEN1_GETIN1
else
0164: disable_marker 6@
end
if and
875C:   not marker 10@ enabled  
875C:   not marker 11@ enabled  
then
018A: 10@ = create_checkpoint_at 2171.583 -1343.8385 23.8281
03BC: 11@ = create_sphere_at 2171.583 -1343.8385 23.8281 radius 3.0  
end
if and
Actor.InCar($PLAYER_ACTOR, 5@)
00EC:   actor $PLAYER_ACTOR 0 near_point 1994.4166 -1463.0018 13.3906 radius 1.0 1.0  
Actor.InCar(1@, 5@)
not Actor.Dead($PLAYER_ACTOR)
then
jump @STEVEN1_11
end
if
$181 > 4
then
jump @STEVEN1_10
end
if and
$181 == 0
$182 >= 0.0
then
00BC: show_text_highpriority GXT 'M2S13' time 4000 flag 1
$181 += 1
$182 = 0.0
end
if and
$181 == 1
$182 >= 45.0
then
00BC: show_text_highpriority GXT 'M2S14' time 3000 flag 1
$181 += 1
$182 = 0.0
end
if and
$181 == 2
$182 >= 35.0                             
then
00BC: show_text_highpriority GXT 'M2R6' time 3000 flag 1
$181 += 1
$182 = 0.0
end
if and
$181 == 3
$182 >= 35.0
then
00BC: show_text_highpriority GXT 'M2S15' time 4500 flag 1
$181 += 1
$182 = 0.0
end
if and
$181 == 4
$182 >= 50.0
then
00BC: show_text_highpriority GXT 'M2R7' time 4500 flag 1
$181 += 1
$182 = 0.0
end
$182 += 0.25
jump @STEVEN1_10

:STEVEN1_11
wait 0
0164: disable_marker 10@
03BD: destroy_sphere 11@
00BC: show_text_highpriority GXT 'M2R7' time 4500 flag 1
wait 10000
return

:STEVEN1_GETIN1
wait 0
if
45@ == 0
then
0164: disable_marker 7@
03BD: destroy_sphere 8@  
end
if
45@ == 1
then
0164: disable_marker 10@
03BD: destroy_sphere 11@
end  
0186: 6@ = create_marker_above_car 5@
07E0: set_marker 6@ type_to 1
00BE: text_clear_all
00BB: show_text_lowpriority GXT 'M2T1' time 5000 flag 1

:STEVEN1_GETIN1_2
wait 0
if and
45@ == 0
Actor.InCar($PLAYER_ACTOR, 5@)
then
repeat
0164: disable_marker 6@
until 875C: not marker 6@ enabled  
if and
875C:   not marker 7@ enabled  
875C:   not marker 8@ enabled  
then
018A: 7@ = create_checkpoint_at 1995.0599 -1459.7649 13.3906  
03BC: 8@ = create_sphere_at 1995.0599 -1459.7649 13.3906 radius 8.0
00BE: text_clear_all  
return
end
end
if and
45@ == 1
Actor.InCar($PLAYER_ACTOR, 5@)
then
repeat
0164: disable_marker 6@
until 875C: not marker 6@ enabled  
if and
875C:   not marker 10@ enabled  
875C:   not marker 11@ enabled  
then
018A: 10@ = create_checkpoint_at 2171.583 -1343.8385 23.8281
03BC: 11@ = create_sphere_at 2171.583 -1343.8385 23.8281 radius 3.0  
00BE: text_clear_all  
return
end                    
end
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED_CW
if
82BF:   not car 5@ sunk
jf @STEVEN1_FAILED_CD
if
not Actor.Dead(1@)
jf @STEVEN1_FAILED_SD
wait 0
jump @STEVEN1_GETIN1_2

:STEVEN1_FAILED_CW
wait 0
0164: disable_marker 7@
03BD: destroy_sphere 8@  
0164: disable_marker 10@
03BD: destroy_sphere 11@
00BA: text_styled 'M_FAIL' 5000 ms 1
00BC: show_text_highpriority GXT 'M2F_CW' time 5000 flag 0
create_thread @STEVEN1_START
return

:STEVEN1_FAILED_CD
wait 0
0164: disable_marker 7@
03BD: destroy_sphere 8@  
0164: disable_marker 10@
03BD: destroy_sphere 11@
00BA: text_styled 'M_FAIL' 5000 ms 1
00BB: show_text_lowpriority GXT 'M2F_CD' time 5000 flag 1
create_thread @STEVEN1_START
return

:STEVEN1_FAILED_SD  
wait 0
0164: disable_marker 7@
03BD: destroy_sphere 8@  
0164: disable_marker 10@
03BD: destroy_sphere 11@
00BA: text_styled 'M_FAIL' 5000 ms 1
00BB: show_text_lowpriority GXT 'M2F_SD' time 5000 flag 1
create_thread @STEVEN1_START
return  

:STEVEN1_FAILED_PD
wait 0
0164: disable_marker 6@
03BD: destroy_sphere 7@  
0164: disable_marker 10@
03BD: destroy_sphere 11@
00BA: text_styled 'M_FAIL' 5000 ms 1
create_thread @STEVEN1_START
return  

:STEVEN1_CLEANUP
$ONMISSION = 0
Model.Destroy(#CELLPHONE)
Model.Destroy(#BALLAS1)
Model.Destroy(#LAEMT1)
Model.Destroy(#PEREN)
Car.Destroy(5@)
04EF: release_animation "SMOKING"  
mission_cleanup  
return

Добавлено (09.08.13, 11:49)
---------------------------------------------
Проблема решена.


wmysterio
Администраторы
Скриптер
09.08.13 13:24
Offline
Цитата (SSS)
Если игрок не мертв и не водит транспорт, то по нажатию F5 актер садится в RC самолетик. Как это сделать?
Посмотри этот урок.

Slivkin-Sergey
Модераторы
09.08.13 14:30
Offline
Почему вылетает?
Код
Model.Load(#FAM1)
038B: load_requested_models
repeat
wait 0
until Model.Available(#FAM1)
Model.Load(#FAM2)
038B: load_requested_models
repeat
wait 0
until Model.Available(#FAM2)
Model.Load(#FAM3)
038B: load_requested_models
repeat
wait 0
until Model.Available(#FAM3)
Model.Load(#BALLAS3)
038B: load_requested_models
repeat
wait 0
until Model.Available(#BALLAS3)
Model.Destroy(#BMYDRUG)
Model.Load(#AK47)
repeat
wait 0
until Model.Available(#AK47)
Model.Load(#MICRO_UZI)
repeat
wait 0
until Model.Available(#MICRO_UZI)
88@ = Actor.Create(8, #FAM1, 2145.9595, -1200.3522, 23.8902)
359.5543 = Actor.Angle(88@)
0223: set_actor 88@ health_to 500  
04EB: AS_actor 88@ crouch 1  
01B2: give_actor 88@ weapon 30 ammo 9999
89@ = Actor.Create(8, #FAM2, 2150.5044, -1200.3363, 23.8994)
359.5543 = Actor.Angle(89@)
0223: set_actor 89@ health_to 500  
04EB: AS_actor 89@ crouch 1  
01B2: give_actor 89@ weapon 30 ammo 9999
90@ = Actor.Create(8, #FAM3, 2154.7434, -1200.2214, 23.898)
359.5543 = Actor.Angle(90@)
0223: set_actor 90@ health_to 500  
04EB: AS_actor 90@ crouch 1  
01B2: give_actor 90@ weapon 30 ammo 9999
91@ = Actor.Create(7, #BALLAS3, 2152.6816, -1173.1128, 23.824)      
179.4093 = Actor.Angle(91@)
04EB: AS_actor 91@ crouch 1  
01B2: give_actor 91@ weapon 28 ammo 9999     
92@ = Actor.Create(7, #BALLAS1, 2156.675, -1176.55, 23.8191)
179.4093 = Actor.Angle(92@)
04EB: AS_actor 92@ crouch 1  
01B2: give_actor 92@ weapon 28 ammo 9999
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 7
0746: set_acquaintance 2 of_actors_pedtype 8 to_actors_pedtype 0

wmysterio
Администраторы
Скриптер
09.08.13 14:47
Offline
Slivkin-Sergey, ну и свойства у тебя:
Цитата (Slivkin-Sergey)
359.5543 = Actor.Angle(88@)
359.5543 = Actor.Angle(89@)
359.5543 = Actor.Angle(90@)
179.4093 = Actor.Angle(91@)
179.4093 = Actor.Angle(92@)
Вдумчиво прочитай справку.

Slivkin-Sergey
Модераторы
09.08.13 15:04
Offline
wmysterio, как мне заставить актёра стрелять сидя?

wmysterio
Администраторы
Скриптер
09.08.13 15:19
Offline
Цитата (Slivkin-Sergey)
как мне заставить актёра стрелять сидя?
Я делал так:
Код
04EB: AS_actor 1@ crouch 1  
074D: AS_actor 1@ turns_to_and_look_at_actor $PLAYER_ACTOR timelimit -2

Slivkin-Sergey
Модераторы
09.08.13 15:33
Offline
wmysterio, я вышенаписанным (хотя уже немного измененным) кодом заставляю Груовцев ненавидеть Балласов (и наоборот). Правда они все куда-то разбегаются, а если нет, то стреляются стоя... Сейчас попробую этот опкод.
Кстати, что значит 0638: AS_actor 88@ stay_put 1 ?

Добавлено (09.08.13, 14:30)
---------------------------------------------
Гроувцы вообще перестали появляться.

Добавлено (09.08.13, 14:33)
---------------------------------------------
Всё же нашёл гроувцев около соседних зданий. Они стреляли в стену wacko


wmysterio
Администраторы
Скриптер
09.08.13 16:40
Offline
Цитата (Slivkin-Sergey)
Кстати, что значит 0638
Заставляет актёра стоять на месте. Правда не всегда срабатывает.

Slivkin-Sergey
Модераторы
09.08.13 16:43
Offline
А чем он отличается от опкоднепомню: AS_actor $DUSYA stay_idle -1 ms?

И как заставить актёров перестреливаться сидя?

wmysterio
Администраторы
Скриптер
09.08.13 17:00
Offline
Цитата (Slivkin-Sergey)
А чем он отличается от опкоднепомню: AS_actor $DUSYA stay_idle -1 ms?
хз... я в скриптах ими не позьзовался
Цитата (Slivkin-Sergey)
И как заставить актёров перестреливаться сидя?
смотри мой пост выше

Slivkin-Sergey
Модераторы
09.08.13 17:11
Offline
wmysterio, а можно ли как-то хитроумно воспользоваться Actor.LockInCurrentPosition чтобы заморозить актёров, когда они начнут сидеть?
А то те опкоды которые ты дал не помогают им сидеть на месте.

Добавлено (09.08.13, 16:07)
---------------------------------------------
И для чего нужен 0А3С?

Добавлено (09.08.13, 16:11)
---------------------------------------------
и 0736?


wmysterio
Администраторы
Скриптер
09.08.13 17:25
Offline
Цитата (Slivkin-Sergey)
И для чего нужен 0А3С?
Это режим диалога "Да-Нет". Сделаю урок по-этому.
Цитата (Slivkin-Sergey)
0736
Я пока не в курсе. Его открыли недавно, ещё не разобрался.

Slivkin-Sergey
Модераторы
09.08.13 17:37
Offline
А что за опкод 0662?
И
Цитата (Slivkin-Sergey)
можно ли как-то хитроумно воспользоваться Actor.LockInCurrentPosition чтобы заморозить актёров, когда они начнут сидеть?

Добавлено (09.08.13, 16:37)
---------------------------------------------

Цитата (wmysterio)
Это режим диалога "Да-Нет". Сделаю урок по-этому.

А-а-а? Это как когда блудница пристаёт к Карлуше, когда тот в машине?

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