|
|
|
Канал X2: The Threat: «Добавляем новые команды в скрипт редактор» |
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) Репутация: 42 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.2006
 |
|
Скрипты OnSelect - это как события. Они запускаются, если игрок нажал кнопку. Если он нажал ESC, это всё равно, что он не нажал ничего, или, иными словами, что меню ещё не открылось. Или оно открылось и игрок час думает над тем, что ответить. Если время ожидания меню критично, то точно также будет критично и думанье игрока час над ответом.
В любом случае, ты всегда знаешь:
1. Открыто ли меню.
2. Если да, то какая вкладка.
Ты всегда можешь, зная это, замочить текущее меню и открыть новое.
Наличие ESC-выхода новых проблем не добавляет. И блокировать его я не буду.
|
|
|
akm
470 EGP
    Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.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 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.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 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.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 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.2006
 |
|
Есть хорошая новость. Удастся увеличить число доступных тегов для изменения цвета текста. Ну, и цвета кнопок и прочего тоже можно поменять.
|
|
|
SD
270 EGP
  Рейтинг канала: 2(21) Репутация: 30 Сообщения: 2544
Зарегистрирован: 05.03.2006
 |
|
Я смотрю Уликс вернулся из отпуска. Ну как, получил доступ к секретам Игософта? Мне было бы интересно какой комментарий написан в исходниках DoSaveGame рядом с кодом который ни с того ни с сего отнимает у игрока половину денег... Там такая чушь написана... Счастье что весь этот код обернут в "if(false)".
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) Репутация: 42 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.2006
 |
|
Может хотели наказывать часто сохраняющихся игроков с некоей малой вероятностью. Да передумали.
|
|
|
Gward
310 EGP
  Рейтинг канала: 2(21) Репутация: 75 Сообщения: 1307 Откуда: Ставрополь Зарегистрирован: 11.06.2004
 |
|
Мурзилка : |
После того как я переписал в папку scripts игры скрипт !ship.cmd.build.pl из архива патча ux2story13_dr1_12b.rar глюк с "голыми" ксенонами после установки нового x2story.obj из этого архива исчез.
|
И не только ксенами. Все репопящиеся на станциях НПЦ были бы голыми. Просто ксены чаще репопятся на своей станции.
Мурзилка : |
НА ВСЕХ СТАНЦИЯХ ВСЕХ ТИПОВ - ЦЕНЫ НА ВСЕ ТОВАРЫ И РЕСУРСЫ - ЛИБО 0 кр. либо 1 кр. !!!
|
К данному скрипту это никак не может иметь отношения. Ибо сам скрипт состоит только из инициации навешивания дефолтового оборудования.
|
|
|
SD
270 EGP
  Рейтинг канала: 2(21) Репутация: 30 Сообщения: 2544
Зарегистрирован: 05.03.2006
 |
|
Это к DR. Его глюк. Лично я DockGetWarePriceMod из его патча просто выкинул, но может он сможет пофиксить... А цены на станциях лечатся рестартом игры.
|
|
|
SD
270 EGP
  Рейтинг канала: 2(21) Репутация: 30 Сообщения: 2544
Зарегистрирован: 05.03.2006
 |
|
Лично я начал новую игру и больше не видел нулевых цен на станциях. Нулевые цены в доках исчезли после убирания из Дарт Ревановского патча вышенаписанного куска.
|
|
|
SD
270 EGP
  Рейтинг канала: 2(21) Репутация: 30 Сообщения: 2544
Зарегистрирован: 05.03.2006
 |
|
Понятия не имею. Для начала возьми свежий асм (25-ю версию). Если не поможет - комментируй инклуды пока не доберешься до проблемного.
|
|
|
ren
77 EGP
 Репутация: 3 Сообщения: 27 Откуда: Бокситогорск Зарегистрирован: 16.07.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
270 EGP
  Рейтинг канала: 2(21) Репутация: 30 Сообщения: 2544
Зарегистрирован: 05.03.2006
 |
|
ren : |
где можно взять sdx2story.asm? Или как выкинуть из DR патча DockGetWarePriceMod?
|
"Или"? Они не взаимозаменяемые. Брать можно здесь. Выкинуть можно любым текстовым редактором.
|
|
|
ren
77 EGP
 Репутация: 3 Сообщения: 27 Откуда: Бокситогорск Зарегистрирован: 16.07.2002
 |
|
SD : |
Выкинуть можно любым текстовым редактором.
|
Это понятно. Вопрос дилетанта: достаточно заремить строку
jump DockGetWarePriceMod или еще что-то надо сделать?
|
|
|
SD
270 EGP
  Рейтинг канала: 2(21) Репутация: 30 Сообщения: 2544
Зарегистрирован: 05.03.2006
 |
|
Теоретически достаточно, но я заремил все четыре строки с "$ = 000758C8h" по "DockGetWarePriceRet:". Можно еще заремить и сам кусок DockWarePriceMod...
|
|
|
Darth Revan
345 EGP
    Рейтинг канала: 5(153) Репутация: 42 Сообщения: 349 Откуда: Belarus Prime Зарегистрирован: 01.02.2006
 |
|
Посмотрю. Явно мой глюк.
|
|
|
Doc77
40 EGP
 Репутация: 0 Сообщения: 73 Заблокирован
Зарегистрирован: 13.11.2006
 |
|
Уважаемые пилоты не подскажите чем лучше пользоваться для открытия bod файлов.
Если не трудно еще дать сылочку
_________________ Doc это не скорая помощь
- а помощь к скорому уходу |
|
|
Tension MAN
1220 EGP
     Рейтинг канала: 4(56) Репутация: 383 Сообщения: 8350 Откуда: Москва, корпус Д&Ф Зарегистрирован: 30.11.2002
 |
|
фак читай
_________________ EVE-online - TensionMAN in game. |
|
|
Doc77
40 EGP
 Репутация: 0 Сообщения: 73 Заблокирован
Зарегистрирован: 13.11.2006
 |
|
Дайте мне пожайста 2 EGP? ато кто то у меня отобрал.
Потом когда у меня будет два EGP я верну
_________________ Doc это не скорая помощь
- а помощь к скорому уходу |
|
|
Tension MAN
1220 EGP
     Рейтинг канала: 4(56) Репутация: 383 Сообщения: 8350 Откуда: Москва, корпус Д&Ф Зарегистрирован: 30.11.2002
 |
|
2Doc77
Правила читать надо. Получаешь первое предупреждение за выпрашивание ЕГП, п2.9 правил.
_________________ EVE-online - TensionMAN in game. |
|
|
|
|
|
Канал X2: The Threat: «Добавляем новые команды в скрипт редактор» |
|