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

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.

Внимание! От этого момента тема предназначена ещё и для заказов скриптов и миссий. Я это сделал по одной причине - пользователи постоянно путают/или не ищут темы и приводят заказ здесь. Теперь этой путаницы не будет. Здесь можно проводить заказы, но Вы должны указать в начале поста текст "НА ЗАКАЗ". Постарайтесь как можно детальнее объяснить суть скрипта.
Прикрепления: 0248203.png(1Kb) · 9085525.png(0Kb)

wmysterio
Администраторы
Скриптер
08.08.13 06:41
Offline
Цитата (Slivkin-Sergey)
для чего нужны массивы,
это уже решает скриптер для чего ему нужен тот или иной массив. В общем можно сказать, для быстрого получения/заполнения каких-то значений в массив/из массива
Цитата (Slivkin-Sergey)
Он экономит память для хранения переменных?
нет, не экономит. в sanny builder он просто присваивает индексы переменным, например так:
Код
$22 -> $22[0]
$23 -> $22[1]
$24 -> $22[2]
$25 -> $22[3]
$26 -> $22[4]
Цитата (Slivkin-Sergey)
что такое "default_jump" в таблице переходов?
прыжок на метку, если входящий параметр не соответствует ни одному номеру метки

Slivkin-Sergey
Модераторы
08.08.13 09:33
Offline
Цитата (wmysterio)
прыжок на метку, если входящий параметр не соответствует ни одному номеру метки
В смысле? То есть, если я ссылаюсь на номер перехода, которого в таблице нет?

И кстати: в видеоуроке №50 вроде было сказано про опкод 01FA... вроде так... в общем, он связан с режимом ярости, но у меня такого опкода нет. Это какая-то сторонняя библиотека, или?..

Добавлено (08.08.13, 08:10)
---------------------------------------------
Кстати, ещё пара вопросов: что такое Camera.SetAtPos? И почему вылетает на этом моменте (все переменные, массивы и т.д. объявлены и настроены):
Код
:STEVEN1_CARDAM
wait 0
0209: 198@ = random_int_in_ranges 0 4
var
199@ : string
end
199@ = $200[198@]
00BC: show_text_highpriority GXT 199@ time 3500 flag 0
return


Добавлено (08.08.13, 08:33)
---------------------------------------------
Нашёл альтернативу для вывода случайного текста. Теперь вот в чём вопрос: почему при такой конструкции, если я в машине, постоянно выводятся случайные тексты?
Код
:STEVEN1_5
wait 1000   
0186: 6@ = create_marker_above_car 5@
07E0: set_marker 6@ type_to 1
00BB: show_text_lowpriority GXT 'M2T1' time 5000 flag 1
Model.Load(#BALLAS1)
038B: load_requested_models

:STEVEN1_6
wait 1
if and
Model.Available(#BALLAS1)
Actor.InCar($PLAYER_ACTOR, 5@)
jf @STEVEN1_6
00BE: text_clear_all
0164: disable_marker 6@
018A: 7@ = create_checkpoint_at 1994.4166 -1463.0018 13.3906
                      
:STEVEN1_7
wait 0
0227: 28@ = car 5@ health
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 and
28@ < 100
15@ == 0
0AA0: gosub_if_false @STEVEN1_CARDAM
if and
001D: 136@ > 28@
15@ == 1
0AA0: gosub_if_false @STEVEN1_CARDAM
...
...
...
Код
:STEVEN1_CARDAM
wait 0
136@ = Car.Health(5@)
0209: 198@ = random_int_in_ranges 0 4
00BC: show_text_highpriority GXT $200[198@] time 3500 flag 0
if
45@ == 0
then
45@ += 1
end
return
Отредактировал Slivkin-Sergey - Четверг, 08.08.13, 09:34

SHooZ
Друзья
08.08.13 11:23
Offline
[offtop]wmysterio, сделай тему "ВОПРОСЫ ПО СКРИПТИНГУ SANNY BUILDER от Slivkin-Sergey" :3[/offtop]

Slivkin-Sergey
Модераторы
08.08.13 12:24
Offline
Опять проверка не работает:
Код
if and
Actor.InCar($PLAYER_ACTOR, 5@)
not Actor.Dead(1@)
82BF:   not car 5@ sunk
not Car.Wrecked(5@)
875C:   not marker 7@ enabled  
then
7@ = Marker.CreateIconWithoutSphere(0, 2002.6569, -1462.4677, 13.3906)
03A1: show_sphere_at 2002.6569 -1462.4677 13.3906 radius 4.0  
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
Не создаёт сферу и не прыгает на метку, если игрок в точке.

Добавлено (08.08.13, 11:24)
---------------------------------------------
Всё, уже работает.


wmysterio
Администраторы
Скриптер
08.08.13 12:45
Offline
SHooZ, Ахах ))  Можно и так поступить. Хоть кто-то поддерживает форум :)
Цитата (Slivkin-Sergey)
В смысле? То есть, если я ссылаюсь на номер перехода, которого в таблице нет?
совершенно верно
Цитата (Slivkin-Sergey)
Нашёл альтернативу для вывода случайного текста.
Сколько скриптеров, столько и альтернатив. smile

Slivkin-Sergey
Модераторы
08.08.13 12:51
Offline
wmysterio, но почему-то сфера всё равно не отображается.
И кстати, я уже много чего перепробовал, всё время какие-то глюки да баги: как сделать так, чтобы, если машина врезалась, то выводилась случайная надпись из массива?

Добавлено (08.08.13, 11:49)
---------------------------------------------
Я делаю крупный проект на main.scm, скоро будет тема (не заброшу 100%, так как весь сюжет есть).

Добавлено (08.08.13, 11:51)
---------------------------------------------

Цитата (wmysterio)
совершенно верно
Зачем это надо? Если я создаю таблицу переходов, то я, наверное, знаю, что мне от неё нужно?

Добавлено (08.08.13, 11:51)
---------------------------------------------

Цитата (SHooZ)
wmysterio, сделай тему "ВОПРОСЫ ПО СКРИПТИНГУ SANNY BUILDER от Slivkin-Sergey" :3
happy

wmysterio
Администраторы
Скриптер
08.08.13 13:34
Offline
Цитата (Slivkin-Sergey)
но почему-то сфера всё равно не отображается.
Вроде маркер с иконкой не создаётся, если указать тип 0:
Код
7@ = Marker.CreateIconWithoutSphere(0, 2002.6569, -1462.4677, 13.3906) // 0 поменяй на 15, например
Цитата
00EC:   actor $PLAYER_ACTOR 0 near_point 2002.6569 -1462.4677 13.3906 radius 4.0 4.0
Убери параметр 13.3906, так как опкод принимает только координаты X и Y.
Цитата (Slivkin-Sergey)
Зачем это надо? Если я создаю таблицу переходов, то я, наверное, знаю, что мне от неё нужно?
Это, как говорится, на всякий пожарный. Мало ли какие глюки могут случится smile
Цитата
03A1
опкод рисует сферу в цикле. Если нужно создать сферу и что-бы она постоянно висела без циклов, используй опкод 03BC

Slivkin-Sergey
Модераторы
08.08.13 13:40
Offline
wmysterio, тогда что такое Camera.SetAtPos? И ещё:
Цитата (Slivkin-Sergey)
я уже много чего перепробовал, всё время какие-то глюки да баги: как сделать так, чтобы, если машина врезалась, то выводилась случайная надпись из массива?

wmysterio
Администраторы
Скриптер
08.08.13 13:49
Offline
Цитата (Slivkin-Sergey)
тогда что такое Camera.SetAtPos?
-> сюда
Цитата (Slivkin-Sergey)
я уже много чего перепробовал, всё время какие-то глюки да баги: как сделать так, чтобы, если машина врезалась, то выводилась случайная надпись из массива?
Код
var
$ARRAY_STRING: array 10 of string
end

v$ARRAY_STRING[0] = "Text 1"
v$ARRAY_STRING[1] = "Text 2"
v$ARRAY_STRING[2] = "Text 3"
v$ARRAY_STRING[3] = "Text 4"
v$ARRAY_STRING[4] = "Text 5"
v$ARRAY_STRING[5] = "Text 6"
v$ARRAY_STRING[6] = "Text 7"
v$ARRAY_STRING[7] = "Text 8"
v$ARRAY_STRING[8] = "Text 9"
v$ARRAY_STRING[9] = "Text 10"

while true
      if OR
      actor.Dead($PLAYER_ACTOR)
      0741:   actor $PLAYER_ACTOR busted
      car.Wrecked(5@)
      02BF:   car 5@ sunk
      then
          break
      end

      if
      // Машина врезалась
      then
      0209: 0@ = random_int_in_ranges 0 9
      0AD0: show_formatted_text_lowpriority $ARRAY_STRING(0@,10v) time 4000
      end

wait 0
end

Slivkin-Sergey
Модераторы
08.08.13 14:03
Offline
Цитата (wmysterio)
// Машина врезалась
Вот эту проверку я и хочу узнать, потому что если я поставлю проверку car 5@ damaged то надписи выводятся бесконечно после повреждения. А мне надо чтобы при каждом повреждении была только одна надпись.

SSS
Пользователи
08.08.13 14:06
Offline
Как сделать так чтобы при вводе чита "SCAR" все машины у которого id 522 отображались на радаре синим цветом, выключить скрипт так же по вводе 'SCAR'
Пример: я ввожу SCAR и все машины у которого id 522 (NRG-500) будут отображаться на карте и радаре синем квадратиком

wmysterio
Администраторы
Скриптер
08.08.13 15:32
Offline
Цитата (Slivkin-Sergey)
Вот эту проверку я и хочу узнать, потому что если я поставлю проверку car 5@ damaged то надписи выводятся бесконечно после повреждения. А мне надо чтобы при каждом повреждении была только одна надпись.
Такой проверки я не знаю. Можно попробовать проверить на соприкасаемость машины с игровыми субъектами, но вряд-ли это подойдёт

Slivkin-Sergey
Модераторы
08.08.13 15:50
Offline
wmysterio, ладно, фиг с ними, с такими деталями. Но игра уже тупо издевается, так как
Код
:STEVEN1_8
wait 0
0164: disable_marker 7@
Marker.Disable(7@)
03BD: destroy_sphere 8@  
Player.CanMove(0, 0)
fade 0 500
wait 500
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)
Actor.Angle(19@) = 213.6544
20@ = Actor.Create(Mission1, #LAEMT1, 2005.8107, -1440.6849, 13.5635)
Actor.Angle(19@) = 40.4028
0A1D: AS_actor 20@ rotate_to_and_look_at_actor 19@
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(1998.7036, -1449.1287, 13.5597, 0.0, 0.0, 0.0)
Camera.PointAt(2025.8408, -1420.2466, 30.4282, 1)    
wait 100
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
Marker.Disable(7@)
fade 1 500
wait 500
Player.CanMove(0, 1)
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  
018A: 10@ = create_checkpoint_at 1994.4166 -1463.0018 13.3906
wait 500
fade 1 500
wait 500
return

после этого ролика машина игрока валится под землю без какой-либо причины... И там же игрок погибает (с полными жизнями)...

SSS
Пользователи
08.08.13 16:42
Offline
ответьте на мое сообщеие:

Как сделать так чтобы при вводе чита "SCAR" все машины у которого id 522 отображались на радаре синим цветом, выключить скрипт так же по вводе 'SCAR' 
Пример: я ввожу SCAR и все машины у которого id 522 (NRG-500) будут отображаться на карте и радаре синем квадратиком

(простите за флуд)

Slivkin-Sergey
Модераторы
08.08.13 17:33
Offline
SSS, сделай проверку на введение чита SCAR, и если он введён, записывай в переменные все машины с моделью NRG500 в сфере вокруг игрока с радиусом, например, 40. Чтобы были видны моцыки по всему штату - нельзя, игра выгружает территорию из памяти при отдалении.
Цитата (Slivkin-Sergey)
после этого ролика машина игрока валится под землю без какой-либо причины... И там же игрок погибает (с полными жизнями)...

Оказывется, это было из-за того, что после ролика был return на cleanup миссии, а в cleanup'е я удалял машину игрока smile

Добавлено (08.08.13, 16:33)
---------------------------------------------
wmysterio, подскажи, почему после ролика не появляется следующий маркер с чекпоинтом, а появляется предыдущая сфера (которая не хотела прорисовываться до ролика)?

Код
: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(1998.7036, -1449.1287, 13.5597, 0.0, 0.0, 0.0)
Camera.PointAt(2025.8408, -1420.2466, 30.4282, 1)    
wait 100
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
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 1000  
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@)
not Actor.Dead(1@)
82BF:   not car 5@ sunk
not Car.Wrecked(5@)
875C:   not marker 10@ enabled  
875C:   not marker 11@ enabled  
then
018A: 10@ = create_checkpoint_at 1994.4166 -1463.0018 13.3906  
03BC: 11@ = create_sphere_at 1994.4166 -1463.0018 13.3906 radius 1.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
Отредактировал Slivkin-Sergey - Четверг, 08.08.13, 17:00

SSS
Пользователи
08.08.13 17:46
Offline
Цитата (Slivkin-Sergey)
SSS, сделай проверку на введение чита SCAR, и если он введён, записывай в переменные все машины с моделью NRG500 в сфере вокруг игрока с радиусом, например, 40. Чтобы были видны моцыки по всему штату - нельзя, игра выгружает территорию из памяти при отдалении.
 
МОжно код готовый, а то я новичек, очень нужно

Slivkin-Sergey
Модераторы
08.08.13 17:58
Offline
SSS, готовый нельзя, в скриптинге нужен мозг, учись думать. Не научишься думать - не быть тебе скриптёром. Подскажу лишь нужные тебе опкоды:
Код
0ADC: test_cheat "ЧИТ"

Вместо "ЧИТ" вписываешь свой чит (обязательно на английском!).

Код
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)

Вписываешь координаты игрока в переменную.
Код
073E: get_car_in_sphere 1@ 2@ 3@ radius 100.0 model #NRG500 handle_as 284@

Ищешь в радиусе 100 от игрока NRG500 и заносишь в переменную 284@.
Код
0161: 341@ = create_marker_above_car 340@ unknown 0 radar_mode 1
Создаёшь маркер над мотиком и присваиваешь ему тип 1 (дружественный - синий).
Код
0164: disable_marker 341@
Убрать маркер.

Пользуйся этими опкодами чтобы написать скрипт.

SSS
Пользователи
08.08.13 18:06
Offline
Slivkin-Sergey, а если в радиусе будет много мотоциклов, он каждый помечен синем маркером будет?

wmysterio
Администраторы
Скриптер
08.08.13 18:14
Offline
Цитата (Slivkin-Sergey)
Не научишься думать - не быть тебе скриптёром.
Бред, ИМХО. Как раз нужно меньше думать, тогда всё получится. Когда не думаешь - значит уже делаешь всё на автомате.
Цитата (SSS)
а если в радиусе будет много мотоциклов, он каждый помечен синем маркером будет?
Максимально можно пометить ~175 мотоциклов - это скриптовый лимит на маркеры.

Slivkin-Sergey
Модераторы
08.08.13 18:22
Offline
Цитата (wmysterio)
Бред, ИМХО. Как раз нужно меньше думать, тогда всё получится. Когда не думаешь - значит уже делаешь всё на автомате.
Не спорю. Но а начале-то всё равно нужно думать, не так ли?

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