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

Sweeper
Проверенные
23.06.14 13:48
Offline
У меня зависает игра, когда свою миссию пытаюсь запустить. Вот большой код:

название миссии, которое в стартере, выдаёт(правда в символах), а вот дальше зависает. И не знаю почему, вроде всё сделал.
Отредактировал Sweeper - Понедельник, 23.06.14, 13:49

wmysterio
Администраторы
Скриптер
23.06.14 14:25
Offline
Цитата Sweeper ()
У меня зависает игра, когда свою миссию пытаюсь запустить
Были незначительные ошибки. В основном в местах где нужно $PLAYER_ACTOR использовалось $PLAYER_CHAR. Вот примерный вариант:

Sweeper
Проверенные
23.06.14 14:42
Offline
Цитата wmysterio ()
Вот примерный вариант
У меня резко появились актеры, начали говорить, приехала машина и игра зависла happy И это было всё быстро wacko
Отредактировал Sweeper - Понедельник, 23.06.14, 16:36

wmysterio
Администраторы
Скриптер
23.06.14 16:48
Offline
Цитата Sweeper ()
И это было всё быстро
между диалогами нужно ставить задержку. Она должна быть равна тому же времени, что и диалоги:
Код
00BB: show_text_lowpriority GXT 'ZN_PT_1' time 4000 flag 1  //pit  
  0605: actor $PITER perform_animation "IDLE_CHAT" IFP "PED" framedelta 4.0 loop 1 lockX 0 lockY 0 lockF 0 time 4000  
  0967: actor $PITER move_mouth 4000 ms  
wait 4000 // ставим задержку и ждём окончания реплики
  0968: actor $PITER stop_mouth // заставляем актёра заткнутся после окончания реплики
// дальше тоже самое с остальными репликами
дальше в конце миссии
Код
actor.SetImmunities($PLAYER_CHAR, 1, 1, 1, 1, 1) // исправьте $PLAYER_CHAR на $PLAYER_ACTOR
в блоке выгрузки актёров и транспорта лучше поставить условия на существование:
Код
:FARM_01_END
wait 0   
if
056D:   actor $PITER defined
then
actor.RemoveReferences($PITER)
actor.DestroyInstantly($PITER)
end
if
056D:   actor $SHON defined
then
actor.RemoveReferences($SHON)
actor.DestroyInstantly($SHON)
end
if
056D:   actor $SHON defined
then
actor.RemoveReferences($WILLIAM)
actor.DestroyInstantly($WILLIAM)
end
if
056E:   car 0@ defined
then
car.RemoveReferences($MASHINKA)
car.Destroy($MASHINKA)
end
return

Sweeper
Проверенные
23.06.14 20:26
Offline
Цитата wmysterio ()
между диалогами нужно ставить задержку. Она должна быть равна тому же времени, что и диалоги
Задержку я делал, но всё равно не получалось.
Бывает, экран затемнится и всё, игра зависла. Я вечером ещё раз пересмотрю скрипт и добавлю, что ты написал.
там были лишние проверки на розыск, потому что в стартере есть и миссия не должна повторяться.

Добавлено (23.06.14, 19:26)
---------------------------------------------
Я переделал скрипт. Уже немного лучше. Но на 4 фразе игра зависает.

Я выделил жирным курсивом чтобы ты не искал её. Сначала Си Джей говорит, руками машет, но потом игра вылетает. Что здесь не так?
Отредактировал Sweeper - Понедельник, 23.06.14, 20:32

wmysterio
Администраторы
Скриптер
23.06.14 20:47
Offline
Цитата Sweeper ()
но потом игра вылетает
а это что?
Код
0968: actor $PLAYER_ACRTOR stop_mouth // $PLAYER_ACTOR
Будьте внимательными wink

Sweeper
Проверенные
24.06.14 13:29
Offline
Цитата wmysterio ()
а это что?
Спасибо happy , теперь скрипт работает дольше, но всё равно вылет в конце есть.

Добавлено (24.06.14, 12:29)
---------------------------------------------
Теперь у меня код выглядит так



теперь что-то не так на выделенном моменте. Радар появляется и худ тоже, а дальше вылет.

wmysterio
Администраторы
Скриптер
24.06.14 15:59
Offline
Цитата Sweeper ()
Теперь у меня код выглядит так
1) Вы используете неправильный шаблон миссий. Используйте этот:
Код
{$CLEO .CM}

:MISSION_NAME
thread 'MISSION_NAME'
gosub @MISSION_NAME_29_57
if
wasted_or_busted
jf @MISSION_NAME_29_46
gosub @MISSION_NAME_29_144

:MISSION_NAME_29_46
$ONMISSION = 0
mission_cleanup
end_thread

:MISSION_NAME_29_57
increment_mission_attempts
$ONMISSION = 1

// СЮДА ПИШЕМ ВЕСЬ КОД НАШЕЙ МИССИИ ! ОТ САМОГО НАЧАЛА И ДО ФИНАЛА

gosub @MISSION_NAME_END // ДАЛЬШЕ ВЫВОДИМ ИНФОРМАЦИЮ О ПРОХОЖДЕНИИ МИССИИ
01E3: show_text_1number_styled GXT 'M_PASS' number 20000 time 5000 style 1 // МИССИЯ ВЫПОЛНЕНА
Player.Money($PLAYER_CHAR) += 20000
0394: play_music 1
return

// ВЫПОЛНЯЕТСЯ АВТОМАТИЧЕСКИ, ЕСЛИ CJ УБИЛИ ИЛИ АРЕСТОВАЛИ ( СРАБАТЫВАЕТ ОТ УСЛОВИЯ wasted_or_busted )
:MISSION_NAME_29_144  
wait 0
gosub @MISSION_NAME_END
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // МИССИЯ ПРОВАЛЕНА
return

// БЛОК ДЛЯ ВЫГРУЗКИ ИЗ ПАМЯТИ СУБЪЕКТОВ И ИХ УДАЛЕНИЕ
:MISSION_NAME_END
wait 0
// УДАЛЯЕМ АКТЁРОВ, МАШИН, ОБЪЕКТОВ И.Т.П.
return
Вы же используете шаблон, который сразу никогда не будет очищать память под миссию, так как она была произведена в ещё до начала миссии. Ваш код не рассчитан на вариант проигрыша миссии.

2) Вы используете опкод
Код
0A93: end_custum_thread
который соответствует формату Cleo-потока, а не миссии. Для миссий всегда используется
Код
end_thread

Я указал возможные ошибки. Ваш код будет таков:
И, пожалуйста, редактируйте проверенный годами этот шаблон, а не дополняйте свой. Вам от этого больше пользы будет smile

Sweeper
Проверенные
24.06.14 16:35
Offline
Цитата wmysterio ()
Ваш код не рассчитан на вариант проигрыша миссии
Здесь невозможно проиграть, т.к. нужно просто поговорить со старым другом. smile
Да ещё я в gosub'ах плоховато разбираюсь.

Добавлено (24.06.14, 15:35)
---------------------------------------------
Ура! Заработало! wmysterio, спасибо) Только я не понял твоих объяснений happy


wmysterio
Администраторы
Скриптер
24.06.14 17:21
Offline
Цитата Sweeper ()
Да ещё я в gosub'ах плоховато разбираюсь.
Для этого я и писал уроки по скриптингу - чтобы разобраться :)
Цитата Sweeper ()
Здесь невозможно проиграть
В любом случаи, нужно всегда рассчитывать на такой исход. Вдруг на игрока в этот момент упадёт самолёт biggrin или другой скрипт как-то повлияет на текущий. В этом и отличие новичка от опытного скриптера. Опытные всегда стараются продумать возможные варианты вылета игры и их устраняют. Новичкам достаточно и того, что работает.

Sweeper
Проверенные
24.06.14 17:36
Offline
Цитата wmysterio ()
Для этого я и писал уроки по скриптингу
Мне придется повторить эту тему biggrin

Добавлено (24.06.14, 16:36)
---------------------------------------------
А если в стартере написано
 

Код
0A94: start_custom_mission "FARM_01"
То это должно быть название файла такое "FARM_01.cm"?

wmysterio
Администраторы
Скриптер
24.06.14 18:04
Offline
Цитата Sweeper ()
То это должно быть название файла такое "FARM_01.cm"?
Да, файл должен иметь такое название. Этот файл должен находится в папке "CLEO".

Sweeper
Проверенные
24.06.14 21:05
Offline
Ничего не понимаю: только что скрипт работал, теперь снова не работает.
Вот посмотри:




Вроде работал, потом вдруг перестал, после того как я подправил координаты и всякие мелочи. Ну что опять не так?

Добавлено (24.06.14, 20:05)
---------------------------------------------
Название миссии выводится, которое в стартере


wmysterio
Администраторы
Скриптер
24.06.14 22:15
Offline
Цитата Sweeper ()
Ничего не понимаю: только что скрипт работал, теперь снова не работает.
Ошибки:
1) нужно убрать символ _ в слове "not_actor":
Код
8741: not_actor $PLAYER_ACTOR busted
Варианты решения:
1) Файл FARM_01 не находится в папке Cleo или не имеет расширение *.cm
2) Судя по-коду, идёт затемнение в стартере, но в миссии обратного процесса нет. Нужно добавить в миссию:
actor.PutAt($PLAYER_ACTOR, -90.9006, -16.2871, 3.1094)     
actor.Angle($PLAYER_ACTOR) = 295.0139150     
camera.SetPosition(-86.9811, -22.5311, 3.1172, 0.0, 0.0, 0.0)    
camera.PointAt(-88.701, -14.8265, 3.1094, 2)    
fade 1 1000 // ЭТО
wait 1000 // И ЭТО

BoPoH
Друзья
24.06.14 23:47
Offline
Цитата wmysterio ()
1) нужно убрать символ _ в слове "not_actor":

Ну, нельзя назвать это ошибкой. Всё-таки SB учитывает сам опкод, а не его описание.

Sweeper
Проверенные
25.06.14 00:09
Offline
wmysterio, да ты чёртов гений, скрипт снова работает smile
У меня ещё буквы отображает неправильно. там какие-то крючки в диалоге.
Вот когда я написал "старый друг" через rus2gxtcoder, то мне выдало вот это "C¦apЁќ љpy™" в игре тоже так выдает, а когда сам написал "CTAPSN DPYF", то и в игре написало нормально. Что тут не так?
GxtHook.cleo у меня есть, я его кинул в папку в CLEO/CLEO_TEXT, туда вроде надо?
Отредактировал Sweeper - Среда, 25.06.14, 00:23

wmysterio
Администраторы
Скриптер
25.06.14 00:13
Offline
Цитата Sweeper ()
У меня ещё буквы отображает неправильно. там какие-то крючки в диалоге.
Смените шрифты от Smarte`s Localization. Или настройте кодировку в rus2gxtcoder(я не знаю точно как это делается, так как пользовался исключительно русификатором от SL )

Sweeper
Проверенные
25.06.14 12:45
Offline
Цитата wmysterio ()
настройте кодировку в rus2gxtcoder
Я читал справку - это дело сложное

Добавлено (24.06.14, 23:34)
---------------------------------------------

Цитата Sweeper ()
Смените шрифты от Smarte`s Localization.
Большущее спасибо  happy , чтобы только я делал без твоего сайта.

Добавлено (25.06.14, 11:33)
---------------------------------------------
Кстати, кто-нибудь использовал этот опкод?

Код
0823: AS_actor 1@ greet_actor $PLAYER_ACTOR 1.0 5
Последняя цифра 5 означает вариант приветствия.

Добавлено (25.06.14, 11:45)
---------------------------------------------
Как мне через стартер запустить миссию из папки под названием MIS_FARM?


wmysterio
Администраторы
Скриптер
25.06.14 13:25
Offline
Цитата Sweeper ()
Как мне через стартер запустить миссию из папки под названием MIS_FARM?
Код
0A94: start_custom_mission "MIS_FARM\Название Вашей миссии"
Но эта папка должна находится в Папке Cleo:
Прикрепления: 3409867.png(1.0 Kb)

Sweeper
Проверенные
25.06.14 13:50
Offline
Цитата wmysterio ()
Но эта папка должна находится в Папке Cleo:
Спасибо.

Ещё вопрос: я создаю актеров на складе. они там что-то делают, болтают и всё-такое. Как мне сделать, чтобы с 22-00 по 6-00 их там не было? Как бы рабочее время сделать хочу.

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