[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 68 из 128«126667686970127128»
Форум » Игры серии 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)

Slivkin-Sergey
Модераторы
07.08.13 14:42
Offline
SHooZ, я телепортирую игрока.

Добавлено (07.08.13, 13:42)
---------------------------------------------
Отлично, проблема с телефоном решена. Но теперь по "воле судьбы" всплывает старый вопрос: есть миссия, где игрок должен ездить в машине с актёром, который не должен умереть; во время поездки происходит диалог; и нужно, чтобы когда актёр был мёртв, миссия была провалена, а если игрок вышел из машины, то его бы позвали назад...


wmysterio
Администраторы
Скриптер
07.08.13 14:50
Offline
Slivkin-Sergey
Код
if
actor.Dead($ACTOR)
then
jump @FAILED
else
0AD0: show_formatted_text_lowpriority "Bla-Bla-Bla" time 4000
end
Делай это в цикле, заведи переменную-счётчик, которая будет считать время от начала диалога. Если её значение превысило допустимое, то выводить следующее сообщение а переменную сбивать на ноль. Сделаю наверное урок по этому.

Slivkin-Sergey
Модераторы
07.08.13 14:54
Offline
wmysterio, а как это делалось в оригинальных миссиях? Там всё попроще было, если не ошибаюсь...

wmysterio
Администраторы
Скриптер
07.08.13 14:56
Offline
Slivkin-Sergey, там делалось всё через dialog-режим или что-то в этом роде. Я предложил один из возможных вариантов.

Slivkin-Sergey
Модераторы
07.08.13 14:59
Offline
Цитата (wmysterio)
Делай это в цикле, заведи переменную-счётчик, которая будет считать время от начала диалога. Если её значение превысило допустимое, то выводить следующее сообщение а переменную сбивать на ноль. Сделаю наверное урок по этому.
Эмм... отсюда можно немного поподробней? Что за цикл? Когда его начинать? Вся поездка должна быть внутри цикла?
Цитата (wmysterio)
там делалось всё через dialog-режим
Так почему нельзя его использовать?

wmysterio
Администраторы
Скриптер
07.08.13 15:03
Offline
Цитата (Slivkin-Sergey)
Вся поездка должна быть внутри цикла?
Да, иначе каким макаром мы узнаем когда выводить следующий текст? :)
Цитата (Slivkin-Sergey)
Так почему нельзя его использовать?
Где ты видел в моей реплике слово "нельзя"? smile Можно, я разбираюсь как в оригинале это использовали

Slivkin-Sergey
Модераторы
07.08.13 15:12
Offline
wmysterio, можешь рассказать, как его использовать? Может, он полегче способа с циклами.

И да: зачем нужен 060A: create_decision_maker_type 0 store_to 207@ // decision\allowed\m_.ped files ,

wmysterio
Администраторы
Скриптер
07.08.13 15:19
Offline
Цитата (Slivkin-Sergey)
зачем нужен 060A: create_decision_maker_type 0 store_to 207@ // decision\allowed\m_.ped files
Читай этот урок.
Цитата (Slivkin-Sergey)
можешь рассказать, как его использовать?
Я разбираюсь (сам пока не в курсе, но мне кажется, что загвоздка где-то там, или похожее что-то)
Так, режим диалога здесь не причём. Там всё в цикле делалось, моя теория подтвердилась.

Slivkin-Sergey
Модераторы
07.08.13 15:30
Offline
Цитата (wmysterio)
Я разбираюсь (сам пока не в курсе
Это как?

Блин, весь день пишу один долбаный ролик, столько проблем с ним... можешь написать небольшой цикл с двумя-тремя фразами?

Добавлено (07.08.13, 14:30)
---------------------------------------------

Цитата (wmysterio)
Там всё в цикле делалось, моя теория подтвердилась.
Я посмотрел код миссии "Девочка Свита", никакого цикла не обнаружил.

wmysterio
Администраторы
Скриптер
07.08.13 15:44
Offline
Цитата (Slivkin-Sergey)
Я посмотрел код миссии "Девочка Свита", никакого цикла не обнаружил.
Чего тебя так не нравятся циклы? happy Даже безобидный
Код
:Label
wait 0
jump @Label
является циклом. Возможно он не использовался в диалогах(не смотрел код той миссии), но в большинстве случаев это так.
Цитата (Slivkin-Sergey)
Можешь написать небольшой цикл с двумя-тремя фразами?
Вот примерно так:
Код
0@ = 0      // for while
1@ = 0      // index dialog
2@ = 0.0    // mini-timer

while 0@ == 0
     if OR
     actor.Dead($PLAYER_ACTOR)
     0741:   actor $PLAYER_ACTOR busted
     then
     0@ = -1
         break
     end
      
     if AND
     1@ == 0
     2@ > 3.0
     then
     0AD0: show_formatted_text_lowpriority "This Text 1" time 6000
     1@ += 1
     2@ = 0.0
     end
      
     if AND
     1@ == 1
     2@ > 6.0
     then
     0AD0: show_formatted_text_lowpriority "This Text 2" time 6000
     1@ += 1
     2@ = 0.0
     end     
      
     if AND
     1@ == 2
     2@ > 6.0
     then
     0AD0: show_formatted_text_lowpriority "This Text 3" time 6000
     1@ += 1
     2@ = 0.0
     end      
      
     if AND
     1@ == 3
     2@ > 6.0
     then
     0AD0: show_formatted_text_lowpriority "This Text 4" time 6000
     1@ += 1
     2@ = 0.0
     end      
      
     // ...
      
      
     2@ += 0.25
wait 0
end

00BE: text_clear_all
if
0@ == -1
then
jump @LABEL_FAILED
end

0394: play_music 1
// ...

Slivkin-Sergey
Модераторы
07.08.13 15:51
Offline
У меня получилась вот такая здоровенная хрень, но после посадки в машину игра виснет sad .
Код
:STEVEN1_5
wait 1000
6@ = Marker.CreateAboveCar(5@)
00BB: show_text_lowpriority GXT 'M2T1' time 5000 flag 1
0001: wait 5000

:STEVEN1_6
wait 1
if
Actor.InCar($PLAYER_ACTOR, 5@)
jf @STEVEN1_6
00BE: text_clear_all     
Marker.Disable(6@)    
repeat
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)
jf @STEVEN1_CLEANUP
Actor.InCar($PLAYER_ACTOR, 5@)
0AA0: gosub_if_false @STEVEN1_7
00BB: show_text_lowpriority GXT 'M2S8' time 1 flag 1
$181 += 1
until $181 == 4000
$181 = 0
repeat
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)
jf @STEVEN1_CLEANUP
if
Actor.InCar($PLAYER_ACTOR, 5@)
0AA0: gosub_if_false @STEVEN1_7
00BB: show_text_lowpriority GXT 'M2S9' time 1 flag 1
$181 += 1
until $181 == 4000

:STEVEN1_7
wait 0
6@ = Marker.CreateAboveCar(5@)
repeat
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)                    
jf @STEVEN1_CLEANUP
00BB: show_text_lowpriority GXT 'M2S9' time 1 flag 1
$181 += 1
until $181 == 4000
return

:STEVEN1_8
wait 1
if
not Actor.InCar($PLAYER_ACTOR, 5@)
then
if
not Actor.Dead(5@)
jf @STEVEN1_FAILED
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
else
return
end

:STEVEN1_FAILED  
00BA: text_styled 'M_FAIL' 5000 ms 1
create_thread @STEVEN1_START
return

Добавлено (07.08.13, 14:51)
---------------------------------------------
Переменная $181 была объявлена.


wmysterio
Администраторы
Скриптер
07.08.13 15:57
Offline
Slivkin-Sergey, естественно виснет. Как минимум нет wait 0 в циклах repaet. Где он?
Код
repeat
wait 0
// Опкоды
// Опкоды
until ~~~~~~~
И вообще кидай исходный код, а не декомпилированный - скорее ошибки обнаружить можно

Slivkin-Sergey
Модераторы
07.08.13 15:59
Offline
wmysterio, это исходный.

Так что там с циклами из оригинальных миссий?

wmysterio
Администраторы
Скриптер
07.08.13 16:04
Offline
Цитата (Slivkin-Sergey)
это исходный.
какой-то он странный, как на исходный, но ничё, проехали.
Цитата (Slivkin-Sergey)
Так что там с циклами из оригинальных миссий?
Я ответил на этот вопрос выше.

Hit
Пользователи
07.08.13 16:21
Offline
1 1. Hit
2 2. Счетчик убийств + Растояние

3 3. Счетчик убийств - тоесть количество человек убивший ты
       Расстояние - например: Ты убил игрока с 2 метров и т.д

4 -

Slivkin-Sergey
Модераторы
07.08.13 16:38
Offline
Цитата (wmysterio)
Я ответил на этот вопрос выше.
Я имею ввиду, что мой вопрос до банальности прост - как это происходит (имею ввиду в ориг. миссиях)? С помощью циклов? Каких?

Кстати, я немного модифицировал код:
Код
:STEVEN1_5
wait 1000
6@ = Marker.CreateAboveCar(5@)
00BB: show_text_lowpriority GXT 'M2T1' time 5000 flag 1
0001: wait 5000

:STEVEN1_6
wait 1
if
Actor.InCar($PLAYER_ACTOR, 5@)
jf @STEVEN1_6
00BE: text_clear_all     
Marker.Disable(6@)    
repeat
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)
jf @STEVEN1_CLEANUP
Actor.InCar($PLAYER_ACTOR, 5@)
0AA0: gosub_if_false @STEVEN1_7
00BB: show_text_lowpriority GXT 'M2S8' time 1 flag 1
$181 += 1
until $181 == 4000
$181 = 0
repeat
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)
jf @STEVEN1_CLEANUP
if
Actor.InCar($PLAYER_ACTOR, 5@)
0AA0: gosub_if_false @STEVEN1_7
00BB: show_text_lowpriority GXT 'M2S9' time 1 flag 1
$181 += 1
until $181 == 4000

:STEVEN1_7
wait 0
6@ = Marker.CreateAboveCar(5@)
repeat
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)                    
jf @STEVEN1_CLEANUP
00BB: show_text_lowpriority GXT 'M2S9' time 1 flag 1
$181 += 1
until $181 == 4000
return

:STEVEN1_8
wait 1
if
not Actor.InCar($PLAYER_ACTOR, 5@)
then
if
not Actor.Dead(5@)
jf @STEVEN1_FAILED
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
else
return
end

:STEVEN1_FAILED  
00BA: text_styled 'M_FAIL' 5000 ms 1
create_thread @STEVEN1_START
return

Но теперь дело обстоит так: после первого захода в машину маркер исчезает через секуну, начинается первая фраза. Выхожу из машины, маркер появляется, обратно не зовут, диалог продолжается. Убивать актёра бесполезно - миссия не будет провалена. В чём проблема? Это связано с тем, что я использую break перед gosub в цикле?

Кстати: чем мой код не похож на исходник? Просто из интереса...

Добавлено (07.08.13, 15:12)
---------------------------------------------
Блин, это не то, вот правильный:

Код
:STEVEN1_6
wait 1
if
Actor.InCar($PLAYER_ACTOR, 5@)
jf @STEVEN1_6
00BE: text_clear_all     
Marker.Disable(6@)    
repeat
wait 0
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)
jf @STEVEN1_FAILED
if
Actor.InCar($PLAYER_ACTOR, 5@)
then
00BB: show_text_lowpriority GXT 'M2S8' time 1 flag 1
$181 += 1
else
break
gosub @STEVEN1_7
end
until $181 == 4000
$181 = 0
repeat
wait 0
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)
jf @STEVEN1_CLEANUP
if
Actor.InCar($PLAYER_ACTOR, 5@)
then
00BB: show_text_lowpriority GXT 'M2S9' time 1 flag 1
$181 += 1
else
break
gosub @STEVEN1_7
end
until $181 == 4000

:STEVEN1_7
wait 0
6@ = Marker.CreateAboveCar(5@)
repeat
wait 0
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
if
not Actor.Dead(1@)                    
jf @STEVEN1_CLEANUP
00BB: show_text_lowpriority GXT 'M2S9' time 1 flag 1
$181 += 1
until $181 == 4000
return

:STEVEN1_8
wait 0
if
not Actor.InCar($PLAYER_ACTOR, 5@)
then
if
not Actor.Dead(5@)
jf @STEVEN1_FAILED
if
not Car.Wrecked(5@)
jf @STEVEN1_FAILED
else
return
end

:STEVEN1_FAILED  
00BA: text_styled 'M_FAIL' 5000 ms 1
create_thread @STEVEN1_START
return

Добавлено (07.08.13, 15:38)
---------------------------------------------
UP


wmysterio
Администраторы
Скриптер
07.08.13 17:48
Offline
Slivkin-Sergey, Я сделал урок, сейчас загружаю видео. Переделаешь его под себя и не нужно будет над чем-то мудрить -> Вот.

Slivkin-Sergey
Модераторы
07.08.13 18:19
Offline
wmysterio, классный урок! Только один вопрос: как проверка на то, что одна из переменных = 40 выдала положительный результат, если ты давал им значения 0?

wmysterio
Администраторы
Скриптер
07.08.13 18:30
Offline
Цитата (Slivkin-Sergey)
Только один вопрос: как проверка на то, что одна из переменных = 40 выдала положительный результат, если ты давал им значения 0?
Она менялась в цикле, в самом низу, возле
Код
1@ += 0.25
jump @MISSION_AA_LOOP

Slivkin-Sergey
Модераторы
08.08.13 06:10
Offline
У меня вопрос, может, не совсем по теме, но всё же: для чего нужны массивы, помимо того, что из них можно случайно "извлекать" его части? Он экономит память для хранения переменных?

Кстати, я не очень понял: что такое "default_jump" в таблице переходов? И что такое вход и выход из этой таблицы?

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