|
|
|
Канал X2: The Threat: «Добавляем новые команды в скрипт редактор» |
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) : 42 Posts: 349 Location: Belarus Prime Joined: 01 Feb 2006
 |
|
Скрипты OnSelect - это как события. Они запускаются, если игрок нажал кнопку. Если он нажал ESC, это всё равно, что он не нажал ничего, или, иными словами, что меню ещё не открылось. Или оно открылось и игрок час думает над тем, что ответить. Если время ожидания меню критично, то точно также будет критично и думанье игрока час над ответом.
В любом случае, ты всегда знаешь:
1. Открыто ли меню.
2. Если да, то какая вкладка.
Ты всегда можешь, зная это, замочить текущее меню и открыть новое.
Наличие ESC-выхода новых проблем не добавляет. И блокировать его я не буду.
|
|
|
akm
470 EGP
    Рейтинг канала: 1(4) : 173 Posts: 1638 Location: Паразит Прайм Joined: 23 Oct 2002
 |
|
А мне нравится реализация Darth Revan'а
Единственное, пока сам не поробуешь пачку многоэтажных меню сделать в моде и дать этот мод потом на растерзание юзверям, на сколько хорош данный метод/команды не прочувствуешь.
Но писать/отлаживать кучу кода никому не хочется. Особенно, если делать поноценные диалоги в миссиях, а если еще делать ветвления в сюжете миссии (альтернативные способы прохождения)...
Есть такая идея. А не сделать ли программирование диалогов в ... xml? Все равно туда придется все тексты меню и кнопок загонять. Так не добавить ли туда еще несколько полей, например имя скрипта при нажатии кнопки, метку следующего окна меню, которое отображать при нажатии кнопки, и др.
В итоге, необходимо будет написать 1 скрипт-пак, который универсально обслуживал бы произвольный набор меню произвольной иерархии с произвольными ветвлениями. Отладить его 1 раз и юзать в любом моде без изменений. А мод-мейкеру лишь останется диалоги продумать, вписать их в xml вместе с ссылками и вызовами скриптов там, где после нажатия опред. кнопки должны выполниться опред. действия.
Кстати, из предыдущего опыта знаю, на ЕГе полно талантливых энтузиастов, готовых сочинять миссии с гибким сюжетом и кучей разветвленных диалогов. Но этим людям как правило крепко в падлу разбираться со скрипт-движком Х2. А вот если бы писать новые диалоги было бы не сложнее русификации игры, то можно было бы наклепать огромную кучу интересных миссий. И даже наделать всяких мини-игр в Х2/Х3
Darth Revan,
можно ли еще реализовать такую фичу?
Сейчас реализовано так, что при нажатии кнопки в сообщении запускается некий скрипт с параметрами (answer, offer).
Можно ли запустить этот скрипт так, чтобы он при своем запуске еще и выплюнул игроку список возможных значений для ввода, в таком виде как игрок его видит при запуске какого-то скрипта с 1 параметром?
Например, в нашем сообщении есть кнопка "Выбрать Станцию". Можно ли сделать так, что при ее нажатии игроком, ему выплевывалась бы карта галактики, в которой путем навигации он мог бы выбрать одну из станций, но только принадлежащих игроку? Т.е. чтобы игроку вывести тот же интерфейс, что ему выкидывает движек игры когда игрок дает в консоли корабля команду "Задать Homebase".
Затем, выбранное игроком значение (в нашем примере выбранную Homebase) передать скрипту-обработчику нажатия кнопки сообщения вместе с параметрами (answer, offer)?
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) : 42 Posts: 349 Location: Belarus Prime Joined: 01 Feb 2006
 |
|
1. Кода от самих меню немного. Если что-то реализовывать, то код всё-равно писать придётся, и много. И проблема будет не в реализации меню.
2. Задел для реализации многоярусных меню я сделал. Ковырять обработку xml я не буду. Но это и не надо. Никто не мешает нужную информацию разместить в том же xml, но с id, следующими за id сообщения. Так что скрипт пак для диалогов написать можно. И легко.
Например, пусть текст вопроса имеет некоторый id. Имеем:
id: текст вопроса.
id+1: максимальное число ответов.
id+2: 1-ый вариант ответа.
id+3: скрипт проверки условия наличия 1-ого варианта ответа. Или 0 - присутствует всегда.
id+4: скрипт, выполняющийся при выборе 1-ого варианта ответа. Или 0.
id+5: номер следующего вопроса. Или 0 - выход.
id+6: 2-ой вариант ответа.
id+7: скрипт проверки условия наличия 2-ого варианта ответа. Или 0 - присутствует всегда.
id+8: скрипт, выполняющийся при выборе 2-ого варианта ответа. Или 0.
id+9: номер следующего вопроса. Или 0 - выход.
...
Одно из назначений скриптов проверки условий - проверка глобальных переменных; а скриптов, выполняющийся при выборе - их установка. Поэтому можно улучшить структуру следующим образом.
После, скажем, id+3 добавить следующие.
- число скриптов проверки условий
- первый скрипт
- число аргументов
- первый аргумент - имя глобальной переменной или число
...
- n-ный аргумент - имя глобальной переменной или число
- AND или OR
- второй скрипт
- число аргументов
и т.д.
Здесь скрипты, как правило, заранее готовые. Например, cmp(a,b) - скрипт сравнения двух переменных и т.п.
Аналогично можно обойтись с установкой глобальных переменных при выборе.
- число скриптов
- имя первой
- первый скрипт
- число аргументов
- первый аргумент - имя глобальной переменной или число
и.т.д.
Опять же, и здесь скрипты, как правило, уже готовые.
3. Насчёт запуска менюшек с выбором не знаю. Теоретически, конечно, можно. Но может оказаться очень геморно. Так что приму во внимание, но ничего не обещаю.
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) : 42 Posts: 349 Location: Belarus Prime Joined: 01 Feb 2006
 |
|
Вот, более сформировавншиеся мысли.
id: информация о версии. Предполагается вида тип.номер версии, где тип определяет спрособ обработки. Пока два типа, скажем, 1 и 2.
Рассмотрим тип 1.
id+1: название скрипта препроцессора текста вопроса (т.е. обрабатывает в тексте вещи типа $CURRENT_SECTOR$). Или 0.
id+2: текст вопроса (не включает selectы).
id+3: максимальное число ответов.
далее
- Текст 1-ого варианта ответа (содержит что угодно, включая один select).
- чиcло скриптов (скажем, n) проверки условия наличия 1-ого варианта ответа. Или 0 - присутствует всегда.
- script1_name arg1,arg2,...,argm1
- ...
- scriptn_name arg1,arg2,...,argmn
- число скриптов (скажем, k), выполняющийся при выборе 1-ого варианта ответа.
- script1_name arg1,arg2,...,argl1
- ...
- scriptk_name arg1,arg2,...,arglk
И так для каждого варианта ответа.
- заключительный текст. Опционально.
Отметим, что если аргумент какого-нибудь скрипта- число, то он и будет воспринят в скрипте как число.
Тип 2.
Отличается от типа 1 тем, что количество ответов фиксировано (и, соответственно, отсутствует блок проверки условий), а тексты ответов входят в текст вопроса, что даёт дополнительные возможности по форматированию.
Реализовать такую схему очень легко.
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) : 42 Posts: 349 Location: Belarus Prime Joined: 01 Feb 2006
 |
|
Есть хорошая новость. Удастся увеличить число доступных тегов для изменения цвета текста. Ну, и цвета кнопок и прочего тоже можно поменять.
|
|
|
SD
272 EGP
  Рейтинг канала: 2(21) : 30 Posts: 2544
Joined: 05 Mar 2006
 |
|
Я смотрю Уликс вернулся из отпуска. Ну как, получил доступ к секретам Игософта? Мне было бы интересно какой комментарий написан в исходниках DoSaveGame рядом с кодом который ни с того ни с сего отнимает у игрока половину денег... Там такая чушь написана... Счастье что весь этот код обернут в "if(false)".
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) : 42 Posts: 349 Location: Belarus Prime Joined: 01 Feb 2006
 |
|
Может хотели наказывать часто сохраняющихся игроков с некоей малой вероятностью. Да передумали.
|
|
|
Gward
310 EGP
  Рейтинг канала: 2(21) : 75 Posts: 1307 Location: Ставрополь Joined: 11 Jun 2004
 |
|
Мурзилка wrote: |
После того как я переписал в папку scripts игры скрипт !ship.cmd.build.pl из архива патча ux2story13_dr1_12b.rar глюк с "голыми" ксенонами после установки нового x2story.obj из этого архива исчез.
|
И не только ксенами. Все репопящиеся на станциях НПЦ были бы голыми. Просто ксены чаще репопятся на своей станции.
Мурзилка wrote: |
НА ВСЕХ СТАНЦИЯХ ВСЕХ ТИПОВ - ЦЕНЫ НА ВСЕ ТОВАРЫ И РЕСУРСЫ - ЛИБО 0 кр. либо 1 кр. !!!
|
К данному скрипту это никак не может иметь отношения. Ибо сам скрипт состоит только из инициации навешивания дефолтового оборудования.
|
|
|
SD
272 EGP
  Рейтинг канала: 2(21) : 30 Posts: 2544
Joined: 05 Mar 2006
 |
|
Это к DR. Его глюк. Лично я DockGetWarePriceMod из его патча просто выкинул, но может он сможет пофиксить... А цены на станциях лечатся рестартом игры.
|
|
|
SD
272 EGP
  Рейтинг канала: 2(21) : 30 Posts: 2544
Joined: 05 Mar 2006
 |
|
Лично я начал новую игру и больше не видел нулевых цен на станциях. Нулевые цены в доках исчезли после убирания из Дарт Ревановского патча вышенаписанного куска.
|
|
|
SD
272 EGP
  Рейтинг канала: 2(21) : 30 Posts: 2544
Joined: 05 Mar 2006
 |
|
Понятия не имею. Для начала возьми свежий асм (25-ю версию). Если не поможет - комментируй инклуды пока не доберешься до проблемного.
|
|
|
ren
77 EGP
 : 3 Posts: 27 Location: Бокситогорск Joined: 16 Jul 2002
 |
|
У меня та же трабла с ценами в доках при начале новой игры. Асм 25 версии, ux2story.asm - 13-я от Shaddie + 1.12 beta от DR, obj - из оригинальной игры, не правленный. Сэйвы, сделаные на obj, пропатченном 11-й версией от Shaddie, не грузит, говорит "save my be corrupted" или что-то в этом роде.
To SD
где можно взять sdx2story.asm? Или как выкинуть из DR патча DockGetWarePriceMod?
|
|
|
SD
272 EGP
  Рейтинг канала: 2(21) : 30 Posts: 2544
Joined: 05 Mar 2006
 |
|
ren wrote: |
где можно взять sdx2story.asm? Или как выкинуть из DR патча DockGetWarePriceMod?
|
"Или"? Они не взаимозаменяемые. Брать можно здесь. Выкинуть можно любым текстовым редактором.
|
|
|
ren
77 EGP
 : 3 Posts: 27 Location: Бокситогорск Joined: 16 Jul 2002
 |
|
SD wrote: |
Выкинуть можно любым текстовым редактором.
|
Это понятно. Вопрос дилетанта: достаточно заремить строку
jump DockGetWarePriceMod или еще что-то надо сделать?
|
|
|
SD
272 EGP
  Рейтинг канала: 2(21) : 30 Posts: 2544
Joined: 05 Mar 2006
 |
|
Теоретически достаточно, но я заремил все четыре строки с "$ = 000758C8h" по "DockGetWarePriceRet:". Можно еще заремить и сам кусок DockWarePriceMod...
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) : 42 Posts: 349 Location: Belarus Prime Joined: 01 Feb 2006
 |
|
Посмотрю. Явно мой глюк.
|
|
|
Doc77
40 EGP
 : 0 Posts: 73 Заблокирован
Joined: 13 Nov 2006
 |
|
Уважаемые пилоты не подскажите чем лучше пользоваться для открытия bod файлов.
Если не трудно еще дать сылочку
_________________ Doc это не скорая помощь
- а помощь к скорому уходу |
|
|
Tension MAN
1220 EGP
     Рейтинг канала: 4(56) : 383 Posts: 8350 Location: Москва, корпус Д&Ф Joined: 30 Nov 2002
 |
|
фак читай
_________________ EVE-online - TensionMAN in game. |
|
|
Doc77
40 EGP
 : 0 Posts: 73 Заблокирован
Joined: 13 Nov 2006
 |
|
Дайте мне пожайста 2 EGP? ато кто то у меня отобрал.
Потом когда у меня будет два EGP я верну
_________________ Doc это не скорая помощь
- а помощь к скорому уходу |
|
|
Tension MAN
1220 EGP
     Рейтинг канала: 4(56) : 383 Posts: 8350 Location: Москва, корпус Д&Ф Joined: 30 Nov 2002
 |
|
2Doc77
Правила читать надо. Получаешь первое предупреждение за выпрашивание ЕГП, п2.9 правил.
_________________ EVE-online - TensionMAN in game. |
|
|
|
|
|
Канал X2: The Threat: «Добавляем новые команды в скрипт редактор» |
|