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

Slivkin-Sergey
Модераторы
25.08.13 21:08
Offline
Troy, вот, держи.
Прикрепления: circle.cs(17.3 Kb)

Yurko_UA
Друзья
25.08.13 21:34
Offline
SSS, Здесь вопросы по скриптингу, а не заказ скриптов

Добавлено (25.08.13, 20:34)
---------------------------------------------
Здрасте! Вот хочу запилить троллейбусный скрипт. Порасставлять на карте столбы и написать миссии. Вот только не знаю как одно сделать.

Поскольку прикрепить рога троллейбуса до проводов в игре - это что-то в областе фантастики. Я подумал, что, может как-то создать множество точек(линию), и проверять, находится ли гг в области этих точек(линии).

Я сам не очень представляю, как это лучше сделать. Может, кто-то что-то подскажет?


wmysterio
Администраторы
Скриптер
26.08.13 10:52
Offline
Yurko_UA, это тяжело реализовать, но всё-же призрачный шанс есть.

Yurko_UA
Друзья
26.08.13 11:47
Offline
wmysterio, Шанс создать множество точек(линию) и проверять на нахождение?

wmysterio
Администраторы
Скриптер
26.08.13 13:30
Offline
Yurko_UA, сложно сделать, именно проверить саму стыковку рог с проводами.

Slivkin-Sergey
Модераторы
26.08.13 15:05
Offline
wmysterio, у меня вот такой вопрос: если использоваться continue в цикле for, то это засчитается как полное прохождение цикла?

Yurko_UA
Друзья
26.08.13 15:10
Offline
Цитата (wmysterio)
Yurko_UA, сложно сделать, именно проверить саму стыковку рог с проводами.
А можно как-то создать множесто точек самой линии маршрута, и проверять на нахождение на линии?

Slivkin-Sergey
Модераторы
26.08.13 15:16
Offline
Yurko_UA, а тебе самому не влом будет их проставлять? Просчитывать каждый миллиметр (просто интересно)?

Yurko_UA
Друзья
26.08.13 16:50
Offline
Цитата (Slivkin-Sergey)
Yurko_UA, а тебе самому не влом будет их проставлять? Просчитывать каждый миллиметр (просто интересно)?
Не влом. Буду каждый шаг проставлять

Slivkin-Sergey
Модераторы
28.08.13 15:38
Offline
Если отключить в настройках SB проверку на превышение лимита локальных переменных, можно их использовать больше, чем 33?

Добавлено (28.08.13, 13:47)
---------------------------------------------

Код
0819: 24@ = actor $PLAYER_ACTOR distance_from_ground
0209: 15@ 200 600  
while 802D: not 15@ >= 24@
wait 0
end

Почему-то даже после выполнения условия из цикла не выходит.

Добавлено (28.08.13, 14:38)
---------------------------------------------
Нашёл ошибку, подправил опкоды (там были для типа integer), теперь всё, что после проверки выполняется сразу, даже если условие не выполняется:

Код
0819: 24@ = actor $PLAYER_ACTOR distance_from_ground
0208: 15@ 100.0 301.0  

:LAY_SLEEPS_PARA_2
wait 0
0819: 24@ = actor $PLAYER_ACTOR distance_from_ground
if
0035: 24@ >= 15@
jf @LAY_SLEEPS_PARA_2
0209: 16@ = random_int_in_ranges 0 51

wmysterio
Администраторы
Скриптер
28.08.13 16:03
Offline
Slivkin-Sergey, а что тебе точно нужно (напиши словами)? скорее всего проверку не так написал, либо она не выполняется

Slivkin-Sergey
Модераторы
28.08.13 18:25
Offline
wmysterio. Игрок падает с парашютом. Если расстояние до земли меньше или равно 100, то выполняются следующие действия.

Добавлено (28.08.13, 15:24)
---------------------------------------------
Всё заработало после того как поменял цифры в проверке местами и изменил знаки wacko

Добавлено (28.08.13, 15:57)
---------------------------------------------
Теперь этот уродец в машину не телепортируется:

Добавлено (28.08.13, 17:25)
---------------------------------------------
А, всё нормально, это потому, что актёр в воздухе.
Отредактировал Slivkin-Sergey - Среда, 28.08.13, 18:25

blackful
Пользователи
29.08.13 14:58
Offline
знаю как вставить звук на карту, но только одна проблема, звук проигрывает где-то секунд 7-10 можно ли как нибудь продлить?  чтобы по кругу крутил звук, а то дорожку растягивать через сони вегас как то тупо, тем более и память повышается.
Евгений_Сергеевич

Vital
Модераторы
Скриптер
29.08.13 17:44
Offline
blackful, попробуй проигрывать звук в цикле. Если нужно одно условие завершения, то лучше взять repeat, если несколько условий - while true (не забудь break). И не забудь в циклах wait 0. Если хочешь зацикливание, то в цикле ещё создавай цикл repeat, где в until будет проверка на завершение проигрывания звука.
2109: create_special_actor $VITAL in_front_of_computer

blackful
Пользователи
29.08.13 21:12
Offline
Vital, вообщем не понял тебя, у меня такой код:
{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0AAC: 1@ = load_mp3 "AUDIO\SFX\SOUND_001.MP3" 
038B: load_requested_models 
wait 0 

:NONAME_36
wait 0 
if and
   Player.Defined($PLAYER_CHAR)
00FE:   actor $PLAYER_ACTOR sphere 0 in_sphere -2197.62 2399.594 4.969 radius 300.0 300.0 300.0 
else_jump @NONAME_36 
0AAD: set_mp3 1@ perform_action 1 
wait 5000 

:NONAME_105
wait 0 
if 
80FE:   not actor $PLAYER_ACTOR sphere 0 in_sphere 2288.123 -1286.566 24.1094 radius 300.0 300.0 300.0 
else_jump @NONAME_105 
0AAD: set_mp3 1@ perform_action 0 
jump @NONAME_36 

 и куда что вставлять я не знаю ashamed (впервые такое сталкиваюсь)
Евгений_Сергеевич

Vital
Модераторы
Скриптер
29.08.13 21:41
Offline
blackful, должно сработать:

Код
{$CLEO}
0000:
while true //1
wait 0
      if //2
      player.Defined(0)
      then
          if
          00FE:   actor $PLAYER_ACTOR sphere 0 in_sphere -2197.62 2399.594 4.969 radius 300.0 300.0 300.0
          then
          1@ = audiostream.Load("AUDIO\SFX\SOUND_001.MP3")
              while 00FE:   actor $PLAYER_ACTOR sphere 0 in_sphere -2197.62 2399.594 4.969 radius 300.0 300.0 300.0
              audiostream.PerformAction(1@,PLAY)
                  repeat
                  wait 0
                  2@ = audiostream.State(1@)
                  until 2@ <> 1
              end
          audiostream.PerformAction(1@,STOP)
          audiostream.Release(1@)               
          end
      end //2
end //1
Отредактировал Vital - Четверг, 29.08.13, 21:42
2109: create_special_actor $VITAL in_front_of_computer

blackful
Пользователи
30.08.13 16:16
Offline
Vital, спасибо, вечерком попробую.
Евгений_Сергеевич

Slivkin-Sergey
Модераторы
30.08.13 22:26
Offline
Как при помощи массивов можно сделать появление актёра в случайных координатах из пресловутого массива?

Vital
Модераторы
Скриптер
30.08.13 23:07
Offline
Slivkin-Sergey, очень просто, если надо именно из конкретных точек массива, то делай так:
var
$X : Array 10 of Float
$Y : Array 10 of Float
$Z : Array 10 of Float
end
$X[0] = 1250.5
$Y[0] = 1700.9
$Z[0] = 12.7 // К примеру, такие координаты, для каждого индекса от 0 до 10 ( [0;10) ), а потом
0209: 0@ = random_int 0 9
actor.putat($PLAYER_ACTOR,$X[0@],$Y[0@],$Z[0@])

Но лучше именно PutAt, а не создание в самом начале, а то может быть вылет, я пробовал делать gosub из начала .scm, перед созданием игрока, но был вылет. И не забывай прогружать местность опкодами 04E4 и 03CB.
2109: create_special_actor $VITAL in_front_of_computer

alfazlo
Пользователи
30.08.13 23:40
Offline
Нужна помощь опытных скриптеров, DK22Pac в особенности, т.к. он в графике больше всех смыслит. У меня уже неоднократно проваливаются попытки рендеринга текста, использую, хочу реализовать все через directx. Знаю, что реализация уже есть от D22kpac. Но хотелось бы без asi плагина.
Вообщем сама идея из библиотеки d3dx9_43.dll, которая по умолчанию вроде как есть в корне gta, вызывать функции и сделать рендер текста. Создать объект шрифта получидось, тепрь нужно вызвать метод beginScene? И еще как из виртуальной таблицы методов для объекта шрифта узнать точный аддрес.

Код
if 0AA2: 1@ = load_library "d3dx9.dll"
then
if 0AA4: 2@ = get_proc_address "D3DXCreateFontA" library 1@
then
0AA7: call_function 0x7F9D50 num_params 0 pop 0 3@
0A8D: 3@ = read_memory 0xC97C28 size 4 virtual_protect 0
0AC7: 5@ = var 4@ offset
0AA7: call_function 2@ num_params 12 pop 0 5@ "Arial" 0 0 0 0 0 0 0 0 20 3@ 6@ //CreateFont
end
end
Отредактировал alfazlo - Суббота, 31.08.13, 16:03

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