Форум Oni

Русскоязычный форум поклонников игры «Они» от Bungie

  • Здравствуйте, Гость

#201 24-08-2008 16:41:52

iljaos 
Полицейский TCTF
Откуда: Городишка под названием Асбест
Регистрация: 21-07-2008
Сообщений: 71
Профиль

Re: Вопросы по написанию игровых скриптов

А где такой файл найти и где нужно исправить?


Только не говорите, что у меня глаза на заднице, чего нет того нет

Оффлайн

 

#202 24-08-2008 16:44:28

demos_kratos (муж.)
Рядовой чатланин
Откуда: Волжский
Регистрация: 25-07-2008
Сообщений: 694
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

качай OniUnPacker и StructDefs к нему, всё есть на главной странице


I would put a tax... on all people... who stand... in water.
........
OOH!

Оффлайн

 

#203 24-08-2008 16:47:26

iljaos 
Полицейский TCTF
Откуда: Городишка под названием Асбест
Регистрация: 21-07-2008
Сообщений: 71
Профиль

Re: Вопросы по написанию игровых скриптов

Mersi


Только не говорите, что у меня глаза на заднице, чего нет того нет

Оффлайн

 

#204 24-08-2008 22:33:29

demos_kratos (муж.)
Рядовой чатланин
Откуда: Волжский
Регистрация: 25-07-2008
Сообщений: 694
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

RavenField написал(а):

З.Ы.Прочел весь форум,не нашел.Если туплю-не подскажите как ai2_create персонажа которого вроде как на уровне нет (Едишн,даодан и все-все-все включено,работает отлично)???Насчет location- где то читал,что 0-начальная точка уровня,проверил-не пашет...
Как вообще location узнать?если я правильно понял над этим вопросом парятся уже не один год,и ответа вроде как нет.
ОЧень хотелось бы объяснение на конкретном примере...Скажем,очень хоцца чтоб конкретного персонажа скажем...l4_t1(уровень TCTF) превратился  (как бабочка) в Мурло,облдал его боевыми хар-ками и т.п.В общем чтоб произошло ЧУДО.

приступим...

создать персонажа, которого на уровне нет можно только через хаканье CJBOCharacters.BINA (инструкции на вики)

0 - начальная точка уровня?  ересь.

location узнать можно с помощью команды where

максимум что я могу предложить через скрипты, это
1. войти в игру на уровень TCTF и ВКЛЮЧИТЬ ДЕВМОДУ
2. дождаться спауна l4_t1
3. прописать chr_who, найти char_ID (цифра после решётки) l4_t1 и записать его на бумажке
4. удостовериться чтоб больше в игре ничего ничего не случалось (чтоб всё как по плану)
5. в файле tctf_spawn_syndicate после строчки ai2_spawn l4_t1 вписать chr_set_class @char_ID_который_ты_записал@ muro_generic

и сразу несколько нюансов
1. Сработает не всегда (может случайно стать "мурлом" другой бот)
2. Драться он будет не так, как "мурло"

А чтоб работало всегда, надо в CJBOCharacter.BINA шестой главы найти строчку l4_t1, недалеко до этой строчки будет надпись TCTF_swat_1. Меняешь на muro_generic
Чтоб дрался как "мурло" надо сменить Melee ID. вообщем ищешь в том же CJBOCharacter.BINA шестой главы после строки l4_t1 такой участок -

Код:

00 00 00 00 00 00 00 00 05 00 2A 00 00 00 00 00
00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
00 00 00 00 01 00 00 00 64 00 00 00 01 00 00 00

и заменяешь 05 на 1Е и всё. и никаких скриптов не надо

разумеется всё это будет работать только с поставленной AE

Отредактировал(а) demos_kratos (28-08-2008 15:53:19)


I would put a tax... on all people... who stand... in water.
........
OOH!

Оффлайн

 

#205 25-08-2008 03:50:37

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

demos_kratos написал(а):

в ресурсах, в файле ONWC по адресу 0х21Е содержится задержка между выстрелами в 1/60-ых секунды

Кстати говоря, чем начисто портить пушку, имхо лучше чуть ниже заменить задержку по адресу 0х220, отвечающую за roughjustice.

demos_kratos написал(а):

неважно где понажимать F8 много раз, пока не станешь, эээ, "Мурлом" и записать номер класса muro_generic (у всех разный бывает)

demos_kratos написал(а):

@class_no_который_ты_записал_после_script_ID@

Да зачееем? О_о Зачем номер, когда есть культурное и статичное название? Не понимаю. >_<

Оффлайн

 

#206 25-08-2008 08:12:59

demos_kratos (муж.)
Рядовой чатланин
Откуда: Волжский
Регистрация: 25-07-2008
Сообщений: 694
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Мih@ написал(а):

Да зачееем? О_о Зачем номер, когда есть культурное и статичное название? Не понимаю. >_<

исправил, прошу простить

Мih@ написал(а):

Кстати говоря, чем начисто портить пушку, имхо лучше чуть ниже заменить задержку по адресу 0х220, отвечающую за roughjustice

возможно, но заменя числа по адресу 0х21Е не "начисто портит пушку", а сменяет основную задержку (спаси господи, зачем я это говорю человеку, который и так это знает...)

Отредактировал(а) demos_kratos (25-08-2008 08:23:32)


I would put a tax... on all people... who stand... in water.
........
OOH!

Оффлайн

 

#207 25-08-2008 10:36:21

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

demos_kratos написал(а):

возможно, но заменя числа по адресу 0х21Е не "начисто портит пушку", а сменяет основную задержку (спаси господи, зачем я это говорю человеку, который и так это знает...)

Ну? По моим представлениям, пушка с таким покорябанным параметром, как задержка между выстрелами - испорченная. Сам долгое время бегал со всем оружием с 0100 и соответствующими обоймами, знаю... ) Поначалу весело, а потом уже раздражает. Есть ведь специально придуманный для извращений roughjustice, который можно включать-выключать без консоли, даодана, скриптов, АЕ и всего-всего. Усилить его до опупения, и всё. Издалека даже не заметно.
Разумеется, речь не о реальном модифицировании вменяемых видов оружия с соответствующей правкой обойм, урона и прочая-прочая, а просто на будущее для тех, кому надо арбалет со скорострельностью в 3600 выстрелов в минуту.
И заодно на заметку для тех, кто писал об ONWC на OniStuff и вики и почему-то не понял сакрального смысла этой пары байт. -_-

Оффлайн

 

#208 25-08-2008 20:02:17

demos_kratos (муж.)
Рядовой чатланин
Откуда: Волжский
Регистрация: 25-07-2008
Сообщений: 694
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Мih@ написал(а):

И заодно на заметку для тех, кто писал об ONWC на OniStuff и вики и почему-то не понял сакрального смысла этой пары байт. -_-

на Galore я исправил, можно жить спокойно... =)


I would put a tax... on all people... who stand... in water.
........
OOH!

Оффлайн

 

#209 26-08-2008 21:31:17

geyser (муж.)
Учёный Синдиката
Откуда: угадайте
Регистрация: 24-06-2007
Сообщений: 1352
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

demos_kratos написал(а):

3. прописать chr_who, найти script_ID (цифра после решётки) l4_t1 и записать его на бумажке
4. удостовериться чтоб больше в игре ничего ничего не случалось (чтоб всё как по плану)
5. в файле tctf_spawn_syndicate после строчки ai2_spawn l4_t1 вписать chr_set_class @script_ID_который_ты_записал@ muro_generic

Протестую. "script ID" никакого отношения к делу не имеет. То, что выводится после знака # в ответ на вызов chr_who (и поступает аргументом в chr_set_class и много ещё куда) - это так называемый "char ID" или "spawn ID", соответствующий порядку заполнения таблицы челов по мере их добавления в уровень и удаления из оного (если совсем честно - такое определение работает везде, кроме главы 3, в которой индексы по неизвестной причине ведут себя совсем уж непредсказуемо). А "script ID" - это такой никому не нужный индекс, прописанный в AISA ( http://wiki.oni2.net/AISA ), позволяющий споунить тупых ботов для катсцен, и фигурирующий в аутпуте chr_who не после знака #, а после словечка "id".

Мih@ написал(а):

И заодно на заметку для тех, кто писал об ONWC на OniStuff и вики и почему-то не понял сакрального смысла этой пары байт. -_-

Сам дурак. Давно бы на вики залогинился и поправил, так ведь нет... А тебе, demos_kratos - спасибо, удивил и обрадовал.


Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану.

Оффлайн

 

#210 27-08-2008 02:04:46

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

geyser написал(а):

Сам дурак. Давно бы на вики залогинился и поправил, так ведь нет...

Влом. )

Оффлайн

 

#211 28-08-2008 20:26:00

Pathetique
Рабочий
Регистрация: 27-08-2008
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

Можно и мне со своим ламерским вопросиком потревожить гениев скриптования? =)

Суть такова: хочу воссоздать Мукадову телепортацию. У него-то, конечно, все по флагам расписано, но я придумал по-другому: забиндить на какие-нибудь клавиши функцию со скриптом chr_location 0 x x x... Вот эти "x x x" меня и волнуют.
В идеале, нужен скрипт, вычисляющий текущее положение игрока. Далее прибавляем к нему какое-то значение (хз даже примерно сколько, с координатами в они впервые столкнулся, метров 5 игровых будет достаточно). Ну и финал - локейшн к уже известным координатам... Телепортация за спину врага... должно быть интересно.

Господа скриптеры, реально ли такое осуществить?


Ну и менее глобальный замысел...

Подскажите, пожалуйста, имена фраз Мукада, "мухахаха" при телепортации и "девилстар")) И еще имя анимации, когда он накладывает на себя руки. Так-то инвиз я сделать смог, а анимации подходящей нет(

Отредактировал(а) Pathetique (28-08-2008 21:14:23)

Оффлайн

 

#212 29-08-2008 03:27:33

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

Pathetique написал(а):

Суть такова: хочу воссоздать Мукадову телепортацию.

Именно скриптами будет затруднительно...

Pathetique написал(а):

забиндить на какие-нибудь клавиши функцию со скриптом chr_location 0 x x x... Вот эти "x x x" меня и волнуют.

А вот меня больше волнует "забиндить". Скриптовую функцию на клавишу - пока что фантастика. Пока что разве что анимации на F2 и F3.

Pathetique написал(а):

В идеале, нужен скрипт, вычисляющий текущее положение игрока.

Вроде пока что такого нету. Может, например, с релизом daodan'а появятся соответствующие переменные/возвращающие_функции, наравне с такими вещами, как текущие хелсы персонажа, номер уровня, и т.п. Но пока что нету.

Pathetique написал(а):

Далее прибавляем к нему какое-то значение

Прибавляем мы не значение, а вектор - это раз. Помимо абсциссы, ординаты и аппликаты, есть такая штука, как направление, куда персонаж смотрит. Его тоже нужно переводить в соответствующий вид, и уже потом домножать и прибавлять.
Опять же, с арифметикой в скриптах плохо, и смешанного счёта и/или перевода между разными типами данных нету. Можно организовать складывалку, которая будет прибавлять чего-нибудь, пока счётчик не превышает значения координаты плюс координата вектора, "умноженная" всё сложением же. Проблема опять возникнет в том, что типы данных между собой практически совсем несовместимы, да и счёт у float затруднён...

Pathetique написал(а):

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

В случае телепортации врагов, лучше был бы полный рандом - и интереснее, и неожиданнее. Мукадовы телепортации тем и слабы, что он никогда не появится перед носом во время бега или не нападёт сбоку, а также никогда не догонит сзади. Всегда можно оторваться на достаточное расстояние, чтобы было легко развернуться и пнуть его с прыжка, а иногда и на интуитиве отбросить ударом назад. Это что касается того, что реально имеет смысл. +)
С телепортацией игрока всё гораздо проще, красивее и универсальнее. В даодановом режиме разработчиков можно телепортироваться с помощью клавиш "[" и "]": сначала во время движения нажимается [, и, через небольшой промежуток времени, ]. Если вместо wasd использовать ijkl, okl; или даже pl;', то вдвойне удобно и юзабельно. Кроме того, таким образом можно и летать. )
Что касается телепортаций с анимациями, то это можно сделать без скриптов вообще: достаточно сделать соответствующую анимацию, которая будет вызывать те синенькие партикли, по сути состоять из teleport_in и teleport_out, и перемещать анимируемого персонажа на достаточное расстояние. И привязать такие штуки, например, заместо стандартных кувырков. Будет вдвойне удобно, так как ещё и будет пресекаться особо наглое прохождение сквозь стены, которое ни к чему хорошему бы не привело.

Pathetique написал(а):

Подскажите, пожалуйста

Анимации:
NINCOMteleport_in и NINCOMteleport_out - телепортация.
NINCOMinvisible - накладывание рук для невидимости.
NINCOMtaunt1 и NINCOMtaunt2 - верчение с хохотом (к телепортации хохот отношения не имеет =))
Звуки - c17_99_24superninja (смех) и c18_79_13superninja (ЛакиДевилстар).

Оффлайн

 

#213 29-08-2008 05:37:29

Pathetique
Рабочий
Регистрация: 27-08-2008
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

Mih@, большое спасибо!

"Именно скриптами будет затруднительно..."
Значит, я сделал как-то по-другому О_о Я использовал скрипт, который облегчает выполнение ударов (вашего, кстати, авторства :) ). На данный момент вот чего я наворотить успел:

*На обычный удар ногой забиндена вертушка Муро.
*На удар рукой назад - вертушка рукой Муро))
*На удар ногой назад как раз

chr_animate 0 NINCOMteleport_in
    chr_givepowerup 0 invis 350

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

"...состоять из teleport_in и teleport_out, и перемещать анимируемого персонажа на достаточное расстояние."

Эээ.. немного недопонял) При простой анимации телепорта никто никуда не перемещается, так может все-таки есть какая-то волшебная строчка, впихнув которую, скажем, в кувырок, можно перемещаться метров на 5 вперед?

Оффлайн

 

#214 29-08-2008 06:27:32

Pathetique
Рабочий
Регистрация: 27-08-2008
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

И кстати, как устроить чтобы при нажатии, допустим, удара рукой вперед появлялся шарег Мукада? Как приделать звук я уже знаю :)

Оффлайн

 

#215 29-08-2008 07:16:17

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

Pathetique написал(а):

Значит, я сделал как-то по-другому О_о

В облегчении ударов и практически всём интерфейсе используются chr_wait_. Именно на них я и предлагал привязать то, что нужно, взяв в качестве замещаемых приёмов кувырки. В скрипте "облегчения" используется то же самое, просто анимацию заменяет другая анимация, хотя могла быть функция любого содержания, и необязательно прерывающая старую анимацию.
Универсальный скрипт на вплоть до 1000 удобно редактируемых замещений с комментариями, кстати, я тоже писал, но неожиданно столкнулся с лимитом на объём скрипта, хотя некоторые тамошние наработки можно где-нибудь и использовать, если отыщу...

Pathetique написал(а):

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

Н-да? Приведи не получившийся код. К тому же, вовсе необязаельно анимацию изменять, можно сделать, например, такую функцию (на всякий случай универсализированную):
func void gibmirinv (string anim_name, int invis_time)
{
    chr_wait_animation(0, anim_name);
    chr_givepowerup(0, invis, invis_time);
    sleep(invis_time);
    fork gibmirinv(anim_name, invis_time);
}

Вызвается строкой fork gibmirinv([название_анимации], [время]). Звуки, новую анимацию или ещё чего-то добавить по желанию. Можно ещё сделать поддержку бесконечной невидимости (т.е. на анимации будет висеть вкл/выкл).

Pathetique написал(а):

Сейчас буду пытаться фпихнуть туда звук.

А с ним-то какие вообще проблемы могут возникнуть? О_о

Pathetique написал(а):

Эээ.. немного недопонял) При простой анимации телепорта никто никуда не перемещается

Мih@ написал(а):

Что касается телепортаций с анимациями, то это можно сделать без скриптов вообще: достаточно сделать соответствующую анимацию, которая будет вызывать те синенькие партикли, по сути состоять из teleport_in и teleport_out, и перемещать анимируемого персонажа на достаточное расстояние.

=)

Pathetique написал(а):

так может все-таки есть какая-то волшебная строчка, впихнув которую, скажем, в кувырок, можно перемещаться метров на 5 вперед?

Волшебных строчек не существует, только crash. Скриптами такое не сделать, надо менять саму TRAM. У меня есть пара извращённых идей по этому поводу, но это на 73% не сработает, заимеет очень существенное ограничение в скорости и вообще будет очень неудобно и совсем некрасиво. Лучше используй [].

Pathetique написал(а):

И кстати, как устроить чтобы при нажатии, допустим, удара рукой вперед появлялся шарег Мукада?

Скриптами, опять же, очень затруднительно: можно приделать к удару chr_giveweapon 0 w10_sni или хотя бы chr_forceholster 0 0 (можно со счётчиком - в первый раз выдаём оружие, а дальше просто вынимаем), дать человеку время выстрелить, и почти сразу спрятать оружие обратно - chr_forceholster 0 1. =) Заставить персонажа выстрелить при помощи скриптов вроде бы можно только плейбеками, но это очень неприятное и неудобное дело, ни разу не подходящее для битвы. Опять же - если надо, не стесняемся редактировать ресурсы. +)

Оффлайн

 

#216 29-08-2008 11:31:30

Pathetique
Рабочий
Регистрация: 27-08-2008
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

Еще раз спасибо, теперь все понятно.

Сейчас он просто крутится и исчезает на секунду со смехом аля "аццкоесатана") Этой секунды достаточно, например, чтобы увернуться от хэви кика, панча и еще от всего что можно))

Добавлено спустя 7 минут 47 секунд:
Кстати, насечет w10_sni... В AE оно заменено полностью на большую пушку-крикуна, или есть возможность получить маленькую черную точку, как в оригинальной Они?

Оффлайн

 

#217 29-08-2008 11:39:43

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

Pathetique написал(а):

Сейчас он просто крутится и исчезает на секунду со смехом аля "аццкоесатана")

Такие штуки, кстати, лучше всего привязывать на taunt (который по Ctrl). +)

Pathetique написал(а):

Кстати, насечет w10_sni...

Насчёт w10_sni забудь. ) Всё оказалось (вернее, было так изначально уже много лет, но для меня это новость О_о) также просто, как и с МутантомМуро, достаточно обыкновенного:
    chr_animate 0 NINCOMfireball
Чтобы был и выкрик "девилстар", и анимация, и светлячок. )

Оффлайн

 

#218 29-08-2008 11:51:51

Pathetique
Рабочий
Регистрация: 27-08-2008
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

"Такие штуки, кстати, лучше всего привязывать на taunt (который по Ctrl). +)"

Тоже верно. Ты не мог бы обьяснить мне побольше про []? Имхо ими пользоваться неудобно, то камера едет со скоростью черепашки, то летит очень быстро за пределы карты... Это вообще скриптовая штука, или в йадро зашыто? Если там какой-то скрипт, то почему бы не попытаться его модифицировать на мгновенный перенос вперед)

Оффлайн

 

#219 29-08-2008 12:18:14

demos_kratos (муж.)
Рядовой чатланин
Откуда: Волжский
Регистрация: 25-07-2008
Сообщений: 694
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Pathetique написал(а):

И кстати, как устроить чтобы при нажатии, допустим, удара рукой вперед появлялся шарег Мукада?

http://www.rapidshare.ru/766955 - качаешь это (выложил на рапиду, ибо почта.ру нагнулась) засовываешь в GameDataFolder (необходим daodan)
далее в папке GameDataFolder/IGMD/global/ создаёшь любой файл с расширением bsl (допустим fireball.bsl) и прописываешь в нём

Код:

func void firebl(void)
{
   chr_wait_animation 0 KONCOMpunch_fw
   chr_animate 0 NINCOMfireball
   fork firebl
}

а в _main.bsl файле желаемого уровня прописать

Код:

chr_set_class 0 konoko_par
fork firebl

I would put a tax... on all people... who stand... in water.
........
OOH!

Оффлайн

 

#220 29-08-2008 12:20:23

Pathetique
Рабочий
Регистрация: 27-08-2008
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

Хм, я и сам немного разобрался. Если во время движения 2 раза быстро нажать ], то получается как раз то, что я задумывал! По сути. А на деле хорошо бы это в анимацию приделать) Эффект этой штуки (]) реально вызвать с помощью скриптов?

Добавлено спустя 55 секунд:
demos_kratos, огромное спасибо! Иду тестить)

Добавлено спустя 9 минут 11 секунд:
Все работает. demos_kratos, ты волшебник! :)

Оффлайн

 

Board footer

© 2006-2024 Амэ & Mih@
ОНИмия – фан-сайт игры Oni
Движок форума - модифицированный PunBB