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

soldato
Пользователи
12.08.13 16:07
Offline
Это удаляются все актеры которых я создал?

wmysterio
Администраторы
Скриптер
12.08.13 16:24
Offline
soldato, нет, только конкретно объявленные.

soldato
Пользователи
12.08.13 16:41
Offline
wmysterio, все понял как. Спасибо.

Vital
Модераторы
Скриптер
12.08.13 17:05
Offline
wmysterio, всё же странно, у меня они либо расходятся (если в цикле дать команду каждому гулять), либо не идут за лидером...

Код
for 0@ = 0 to 1
     if
     $FLAG[0@] == 0
     then
     062F: $GANG[0@] = create_group_type 0
     $FLAG[0@] = 1
         if
         0@ == 0
         then
         2@ = 0
         3@ = 4
         else
         2@ = 5
         3@ = 9
         end
         0209: 4@ = random_int_in_ranges 0 9
             if
             4@ < 3
             then
             5@ = 7 //Pedtype 8
             6@ = 0 //0,1,2
             7@ = 3 //Bandits
             else
                 if and
                 4@ > 3
                 4@ < 6
                 then
                 5@ = 9 //Pedtype 9
                 6@ = 3 //3,4,5
                 7@ = 6 //Special Forces
                 else
                 5@ = 8 //Pedtype 7
                 6@ = 6 //6,7,8
                 7@ = 9 //Stalkers
                 end                 
             end
         gosub @FreeCoord             
         for 1@ = 2@ to 3@
         0209: 4@ = random_int_in_ranges 6@ 7@
         model.Load($MODELS[4@])
         038B: load_requested_models
         actor.Create($MEMBERS[1@],5@,$MODELS[4@],8@,9@,-100.0)
         model.Destroy($MODELS[4@])
         gosub @Weapon
         actor.WeaponAccuracy($MEMBERS[1@]) = 80
         07DD: set_actor $MEMBERS[1@] attack_rate 75
         09B5: set_actor $MEMBERS[1@] signal_after_kill 0         
         0631: put_actor $MEMBERS[1@] in_group $GANG[0@]         
         087F: set_actor $MEMBERS[1@] never_leave_group 1       
         end  
     0630: put_actor $MEMBERS[2@] in_group $GANG[0@] as_leader
     05DE: AS_actor $MEMBERS[2@] walk_around_ped_path
     07B3: set_group $GANG[0@] give_command 1
     end
end
2109: create_special_actor $VITAL in_front_of_computer

soldato
Пользователи
12.08.13 17:08
Offline
Как сделать анимацию разговора ?
Я узнал что она находиться в PED.ifp файле название IDLE_chat
Но когда пытаюсь её воспроизвести (в игре), у меня вылетает GTA.

Vital
Модераторы
Скриптер
12.08.13 17:38
Offline
soldato, покажи код скрипта, посмотрим, что может быть причиной.
2109: create_special_actor $VITAL in_front_of_computer

soldato
Пользователи
12.08.13 18:02
Offline
:TEST_1
wait 0
04ED: load_animation "IDLE_chat"
04EE: animation "IDLE_chat" loaded

:TEST_2
wait 0
00BB: show_text_lowpriority GXT 'HELLO1' time 3000 flag 1
0605: actor 1@ perform_animation_sequence "IDLE_chat" IFP_file "PED" 4.0 loop 0 0 0 0 time 670

Vital
Модераторы
Скриптер
12.08.13 18:19
Offline
soldato, ты неверно загружаешь анимацию. Если ты смотришь через Anim Manager, то, наверное, заметил, что есть (слева) список файлов, в каждом из которых свои анимации. К примеру, файл Ped.ifp (в папке anim) или Bar.ifp (в gta3.img), при нажатии на каждый из таких файлов появляется список анимаций. Каждый файл содержит свои анимации. Но опкоды написаны немного неправильно, так как 04ED, 04EE и 04EF работают именно с IFP файлом, а не с конкретной анимацией из него. Причём в 0605: ты сделал всё верно, написав, что нужно выполнить анимацию "IDLE_chat" из файла с именем "PED". Есть некоторые различия между разными видами проигрыша анимации, но тебе это пока необязательно знать. К тому же ты допустил некоторые ошибки с условием. Код должен быть примерно такой:

Код
:TEST_1
wait 0  
if  
04EE:   animation "PED" loaded
jf @TEST_1
0605: actor 1@ perform_animation "IDLE_chat" IFP "PED" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time -1
Или, если будешь переходить к высокоуровневому коду, то такой:

Код
repeat
wait 0
until 04EE:   animation "PED" loaded
0605: actor 1@ perform_animation "IDLE_chat" IFP "PED" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time -1
2109: create_special_actor $VITAL in_front_of_computer

soldato
Пользователи
12.08.13 18:40
Offline
Vital, спасибо, помогло. Много нового узнал.

Slivkin-Sergey
Модераторы
13.08.13 11:27
Offline
Что-то я не пойму.
Код
Car.SetDriverBehaviour(1@, IgnoreRoadPaths)

Эта команда заставляет водителя ехать, игнорируя дорогу. Хотя, когда я приказываю ему ехать через переулок на другую сторону улицы, он объезжает все дома и едет уже с другой стороны переулка. А надо, чтоб он ехал именно по переулку.

wmysterio
Администраторы
Скриптер
13.08.13 15:15
Offline
Slivkin-Sergey, в подобных случаях я использую:
Код
Car.SetAnimation(0@, 9, 4000)
Машина всегда будет ехать прямо в течении 4000 мсек.

Slivkin-Sergey
Модераторы
13.08.13 16:00
Offline
wmysterio, а если поставить третий параметр на -1, то машина будет ехать прямо, пока я ей не переназначу "анимацию"?

wmysterio
Администраторы
Скриптер
13.08.13 16:45
Offline
Slivkin-Sergey, насчёт -1, то я не знаю как будет себя вести транспорт. Обычно я назначал столько, сколько нужно.

Slivkin-Sergey
Модераторы
13.08.13 17:57
Offline
Блин, ну это никак, кроме издевательства не назовёшь:
Код
Camera.Restore_WithJumpCut
082A: set_player $PLAYER_CHAR able_to_use_crouch_button 0
00AE: set_car 1@ traffic_behaviour_to 2
06D0: enable_emergency_traffic 0
Car.Health(1@) = 6000
01EC: make_car 1@ very_heavy 1  
053F: set_car 1@ tires_vulnerability 0  
Car.SetToPsychoDriver(1@)
Car.SetAnimation(1@, 9, 99999999999)
00AE: set_car 1@ traffic_behaviour_to 2  
Car.SetDriverBehaviour(1@, IgnoreRoadPaths)
Car.SetMaxSpeed(1@, 30.0)
Car.SetSpeedInstantly(1@, 27.0)
0464: put_actor $PLAYER_ACTOR into_turret_on_car 1@ at_car_offset 0.0 -1.0 0.5 position 0 shooting_angle_limit 360.0 with_weapon 30  
041E: set_radio_station 12  
010D: set_player $PLAYER_CHAR wanted_level_to 3
wait 50  
4@ = Car.Create(#COPCARLA, 1433.118, -1740.843, 13.5469)
Car.Health(4@) = 1000
5@ = Actor.CreateAsDriver(Mission2, #LAPD1, 4@)
Actor.Health(5@) = 500
6@ = Actor.CreateAsPassenger(Mission2, #LAPD1, 4@, 0)
Actor.Health(6@) = 400
Actor.GiveWeaponAndAmmo(6@, Pistol, 99999)
07BC: set_actor 5@ decision_maker_to 207@
07BC: set_actor 6@ decision_maker_to 207@
01B9: set_actor 6@ armed_weapon_to 22  
0446: set_actor 6@ dismemberment_possible 0
0446: set_actor 5@ dismemberment_possible 0
0713: actor 6@ driveby_actor -1 car 1@ point 0.0 0.0 0.0 radius 300.0 8 1 firing_rate 100  
fade 1 500  
Car.DriveTo(1@, 1431.385, -1732.698, 13.3828)

:CHASE_1051
wait 5
if  
01AD:   car 1@ sphere 0 near_point 1431.385 -1732.698 13.3828 radius 0.5 0.5
jf @CHASE_1051  
07F8: car 4@ follow_car 1@ radius 5.0  
Car.SetMaxSpeed(4@, 27.0)
Car.SetSpeedInstantly(1@, 10.0)
00BC: show_text_highpriority GXT 'ARMAN2' time 5000 flag 1
Car.DriveTo(1@, 1821.589, -1733.502, 13.3828)

:CHASE_1201
wait 0
Car.SetDriverBehaviour(1@, IgnoreRoadPaths)
Car.SetMaxSpeed(1@, 30.0)
Car.SetSpeedInstantly(1@, 27.0)
Car.DriveTo(1@, 1683.7006 -1731.1631 13.3994)
Car.DriveTo(1@, 1822.8976 -1840.5895 13.4141)
repeat
wait 0
until 01AD: car 1@ sphere 0 near_point 1822.8976 -1840.5895 13.4141 radius 1.0 1.0
00BC: show_text_highpriority GXT 'CARLOS2' time 5000 flag 1
Car.DriveTo(1@, 1821.0536 -1854.072 13.4141)
Car.DriveTo(1@, 1821.8544 -1912.1161 13.3889)
Car.DriveTo(1@, 1933.611, -1934.164, 13.3828)
Car.DriveTo(1@, 1961.522, -2048.313, 13.3828)
Car.DriveTo(1@, 1961.9539, -2045.5363, 13.3952)
repeat
wait 0
until 01AD: car 1@ sphere 0 near_point 1961.9539 -2045.5363 13.3952 radius 1.0 1.0
Car.DriveTo(1@, 1880.6429, -2102.1284, 13.5528)
Car.DriveTo(1@, 1826.4332 -2055.738 13.3828)
Car.DriveTo(1@, 1824.9827 -2163.134 13.3828)
Car.DriveTo(1@, 2064.082, -2167.715, 13.3828)
Car.DriveTo(1@, 2100.252, -2183.346, 13.3828)
Car.DriveTo(1@, 2139.274, -2219.321, 13.3828)
Car.DriveTo(1@, 2102.632, -2264.352, 13.3828)
Car.DriveTo(1@, 2100.819, -2313.875, 13.3819)
Car.DriveTo(1@, 2147.337, -2335.153, 13.3516)
Car.DriveTo(1@, 2187.63, -2367.056, 13.375)
Car.DriveTo(1@, 2287.644, -2265.757, 13.375)
Car.DriveTo(1@, 2249.883, -2215.907, 13.3446)
Car.DriveTo(1@, 2233.029, -2217.358, 13.5469)
Car.DriveTo(1@, 2179.662, -2274.944, 13.494)                 
wait 0

:CHASE_1640
wait 0
if
01AD: car 1@ sphere 0 near_point 2179.662 -2274.944 13.494 radius 2.0 2.0
jf @CHASE_1640
wait 0
jump @CHASE_1643

:CHASE_1643
wait 0
0465: remove_actor $PLAYER_ACTOR from_turret_mode  
return

Уровень розыска не увеличивается, и машина, вместо того, чтобы ехать Car.DriveTo(1@, 1822.8976 -1840.5895 13.4141), сразу поворачивает на последнюю точку маршрута. Scmpath вообще аномально себя ведёт здесь.

Добавлено (13.08.13, 16:57)
---------------------------------------------
Ну как сказать... в общем, машина до сих пор пытается ехать по точкам, используя дорожные пути.


SSS
Пользователи
13.08.13 22:42
Offline
Всем Привет, как сделать оружию Deagle Большой урон, то есть, если я в соперника стреляю из Deagle, то ему(сопернику) будет отбавляться больше хп(жизни). Спасибо!

Slivkin-Sergey
Модераторы
15.08.13 04:55
Offline
wmysterio, может мне тогда GTAшку переустановить, раз простые команды ведут себя столь неадекватно?

SanKing
Друзья
15.08.13 10:43
Offline
SSS, нужно редактировать weapon.dat (можно и через скрипт, но это гораздо сложнее). Вот название программы для изменения свойств оружия: GTA San Andreas Weapon Editor by Sadler. Поищи в Яндексе или Гугле, ссылки не даю, так как это могут сочти за спам.

wmysterio
Администраторы
Скриптер
15.08.13 14:00
Offline
SSS, Можно сменить уровень повреждения Desert'а путём лазейки в память, без редактирования каких-либо файлов, но такой урон будет у всех орудий, а не в конкретного персонажа.

Slivkin-Sergey, вряд-ли переустановка решит проблему. Я лично не могу ничего посоветовать по этому вопросу

Slivkin-Sergey
Модераторы
15.08.13 19:06
Offline
Цитата (wmysterio)
вряд-ли переустановка решит проблему

Почему нет?
Кстати, на ноутбуке с седьмой виндой всё работает как часы (ну почти smile ), на виртуалке с семёркой тоже сейчас попробую. Может это всё-таки зависит от операционки (код написан на XP)?
Отредактировал Slivkin-Sergey - Четверг, 15.08.13, 19:07

wmysterio
Администраторы
Скриптер
15.08.13 19:39
Offline
Цитата (Slivkin-Sergey)
Почему нет?
Потому, что код есть код.
Цитата (Slivkin-Sergey)
Может это всё-таки зависит от операционки (код написан на XP)?
если брать ОС Windows, то вряд-ли есть какая-то зависимость. Во всяком случаи скрипты и игра у меня пахали на XP, VISTA,7 и 8. Как на 32-хрозрядных ОС, так и на 64-х.

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