geyser » 19-07-2009 02:57:13

Эта лента - дополнение к Михиному справочнику: Oni Scripts: FAQ-пособие
Здесь вы можете по очереди задавать вопросы о BSL, желательно конкретные и серьёзные.
Мы - Миха, я, и другие - будем считать своей задачей исчерпывающе отвечать на вопросы.
За бестолковые вопросы больно бить не будем - но можем немножко изменить суть вопроса.

Что-то подобное было на старом Централе: http://konokoffin.bungie.org/forums/ind ... threadid=5

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

geyser » 19-07-2009 04:46:41

Отвечаю на вопрос Smith, касающийся нестабильного поведения ИИ.
Интелект
Интелект

Базовая идея у Smith такая: на первой сохранке главы 2 добавить в команду Коноки ещё одного бойца, с пулемётом. Чтоб исход битвы был пооднозначнее. Вот как это выглядит (добавки Smith - с двойной индентацией).

Код:

if (save_point eq 1) {
    my_save_point=1;    
    particle vent03 start
        ai2_spawn patrol_striker_3  
    ai2_spawn partner_cop_1
    ai2_spawn partner_cop_2
    ai2_spawn ambush_striker_1
    ai2_spawn ambush_striker_2
    ai2_spawn ambush_striker_3
        chr_location 1 156.666428 -1.000000 -39.771038
        chr_giveweapon patrol_striker_3 w2_sap
        chr_givepowerup patrol_striker_3 ammo 
        chr_changeteam patrol_striker_3 TCTF 
        chr_set_health patrol_striker_3 80
        chr_set_class 1 TCTF_lite_1
    chr_delete Recep
    door_lock 1
    door_lock 4
    restore_game
    ai2_attack partner_cop_1 ambush_striker_1
    ai2_attack partner_cop_2 ambush_striker_3
    music_script_start();
    sleep 30
    set_objective_1
}

Тупо и банально, но, во-первых - похвально, что освоена адресация челов по индексу. Действительно, тех челов, к которым придётся обращаться по индексу, имеет смысл споунить до того, как заполнение ячеек персами станет неоднозначным, т.е. как можно ближе к загрузке уровня.
(Однако важно помнить, что хоть ты ему и дал 80 хелсов, в конечном счёте у него останется не больше 69, а если играть на малом уровне сложности, то и того меньше.)
Во-вторых, дальше возникает интересный момент и собственно вопрос. После драки скрипт обыкновенно вызывает функцию all_music_counters, чтобы остановить музыку. Выглядит она так (добавки Smith - с двойной индентацией) :

Код:

func void all_music_counters(void)
{
    dprint ELVIS_HAS_LEFT_THE_BUILDING
                 fork three
    sound_music_stop mus_ambgrv1b
    sound_music_stop mus_fiteb_hd
    sound_music_stop atm_low_perc1
    sound_music_stop atm_cl12
    sound_music_stop atm_cl11
    sound_music_stop mus_sv
}

Заметим, что после победы над Страйкерами двое обыкновенных TCTF-овцев (partner_cop_1 и partner_cop_2) отправляются патрулировать первый этаж - поперёк холла, в комнату с рабочими и консолью, потом назад и так далее. Делают это они независимо от скриптов - просто у них такая работа (job), и прописана она в ихнем CHAR. Работа номер 3, т.е. "patrol", патрули (PATR) "partner_1" и "partner_1", номера 4 и 5, можете проверить.
Так вот, надо бы и нашему третьему бойцу (переодетому Страйкеру patrol_striker_3) придумать какое-нибудь полезное дело. Например, он может занять наблюдательскую позицию на галерее, которая идёт поперёк того же холла этажом выше. Smith так и решил - пусть он после битвы бежит к флагу 29, и остаётся там. Эти инструкции содержатся в отдельной функции с гордым названием three, которую целиком написал Smith:

Код:

func void three(void) {
    sleep 600
    ai2_movetoflag patrol_striker_3 0029
    ai2_setmovementmode patrol_striker_3 run
}

На первый взгляд всё нормально, да и на второй тоже, разве что номер флага 29 с нулями впереди странно смотрится. И довольно часто этот скрипт срабатывает. Но иногда - тоже довольно часто - переодетый Страйкер после битвы не слушается команды ai2_movetoflag, прописанной в этой функции three. Он как бы в неком ступоре - или остаётся стоять, где стоял в конце битвы, или перемещается к координатам (156.666428,-1.000000,-39.771038). После этого можно ему дать повторный приказ переместиться к флагу 29, и тогда он слушается, но первый приказ почему-то игнорирует. Иногда.

В чём состоит причина облома? Главным образом в том, что мы имеем дело с переодетым Страйкером, задача которого по сюжету - не холл сторожить, а патрулировать (PATR "patrol_3", номер 19) с плазменной винтовкой на другом конце карты, и между прочим первый флаг его патруля, номер 54, находится за запертой дверью номер 23. Это обломно, почему? Потому, что после битвы этот Страйкер сразу вспоминает о своей (невыполнимой) задаче и впадает в депрессию, ещё до того, как мы посылаем его на флаг 29. Депрессия проходит, например, если к нему настойчиво обращаться и снова послать куда следует. Или наоборот от него отвлечься - тоже может повезти. Но рано или поздно он всё равно вспомнит о своей работе по ту сторону запертой двери 23 - и закручинится. То есть ситуация так или иначе нештатная, и удивляться глюкам не следует. Надо ситуацию починить. Как?

Можно для проверки использовать вместо чела patrol_striker_3, например, чела nookleft_thug_1, у которого патруль в соседнем закуточке, дверь не заперта. Главной работой у него пусть по-прежнему будет медитация перед компьютерами в закуточке, и поскольку она осуществима, в депрессию наш чел никогда не впадёт, и сторожить холл с верхней галереи тоже согласится - на какое-то время, ведь в итоге он вспомнит про свои компьютеры и пойдёт медитировать дальше.

Можно - тоже для проверки - использовать того же patrol_striker_3, но отпереть дверь 23. Тогда депрессия нашему герою поначалу не грозит, и он беспрекословно согласится бежать к флагу 29 и немного там подежурит. Однако в конце концов он вспомнит про свою работу и смотается на другой конец карты, к флагу 54, и уже там впадёт в ступор, потому что остальные флаги его патруля, 52 и 55, в свою очередь находятся за запертыми дверями, 22 и 6 соответственно.

А теперь самый настоящий фикс. То есть не самый - самым настоящим было бы создание новых контейнеров PATR и CHAR для нашего героя, чтоб всё было по правилам. Скажем так - самый мудрый фикс в рамках данного урока.
Мы сделаем следующее - мы будем использовать всё того же patrol_striker_3, но дадим ему новую работу (job), причём выполнимую, без всяких патрулей за запертыми дверями, чтобы он не сомневался в смысле жизни и не впадал в депрессию.
Эта замечательная безмятежная деятельность называется "idle" (номер 1), её мы форсируем командой ai2_idle(patrol_striker_3) и сразу же назначаем её ему в качестве работы, командой ai2_setjobstate(patrol_striker_3). Сделать это надо пораньше, например ещё до того, как чела телепортировать из патрулируемой им зоны, но можно и попозже, уже в холле, сразу перед битвой - главное, чтобы до ступора успеть. Что мы имеем в результате? чела, который ничего патрулировать не собирается, и будет только рад бежать по первому зову к флагу 29.

Smith, я понятно объяснил?

P.S. Похожую проблему я решил 4 года назад, вот здесь:
http://konokoffin.bungie.org/forums/ind ... #post_1124
http://konokoffin.bungie.org/forums/ind ... #post_1392

Smith » 19-07-2009 07:00:26

Да! Исчерпывающий ответ:) Спасибо много узнал. Но не прочитав статью, днём раньше... я решил проблему, довольно тупым способом - просто прописал ему команду бежать к флагу, раз 20 наверное. При чём если напишешь 10 раз он тока половины пути пройдёт. Вот так!:) Короче я прописал флагов наверное 5, и в разное время в зависимости от условий заставляю бота бегать. Надо будет по умному попробовать.

Кстати, а анимации (бега, ходьбы , полуприседа, вскрикивание при виде врага) - на уровне BINA или чего там делаются??? Или скриптом можно заставить бота выполнять.
Просто эти анимации - человечность придают боту, а то встанет как статуя не оч. смотрится=)

Туговато у мя пока получается разобратся с BiNA, Char, пока вообще не врубаюсь, и ангилийский пока не тот, чтобы на ходу всё читать. :( А в каких файлах Они, хранятся персонажи (боты). Например в level3_Final.dat ???

vitya » 19-07-2009 09:10:18

Да ответ исчерпавующий вот тогда мои вопросы, я челу даю команду чтоб он бегал за мной, а он не бегает, чё дела?
Потом какой камандойможно узнать лакацию где ты находишся?
И последнее какой камандой можно зделать чтоб штатские не боялись пративников, а били их,и какой командойможно зделать чтоб штатские играли и за тебя и против тебя какими командами это можно зделать!;):):):):)

AWP_Mega » 19-07-2009 09:14:36

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

Потом какой камандойможно узнать лакацию где ты находишся?

where в консоле

Добавлено спустя 47 секунд:

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

И последнее какой камандой можно зделать чтоб штатские не боялись пративников, а били их,и какой командойможно зделать чтоб штатские играли и за тебя и против тебя какими командами это можно зделать!

Нууу командой на постановку команды персонажу

Добавлено спустя 3 минуты 32 секунды:
а мой вопрос:какими командами гейсер сделал так,чтоб при определенном убийстве противников(как в ОТА)срабатывала следующая функция,скажем(как в ОТА) набрал я 20 фрагов,и win,и т.д.Думаю многим интересно,лень самому искать в скриптах,не зря же тему создали

doktordulit » 19-07-2009 09:22:50

Я не помню но что-то вроде этого-

Код:

func who_win(void)
{
if(fragse eq 20);fork fwin
if(fragsf eq 20);fork ewin
}
doktordulit » 19-07-2009 09:34:40

И ещо мой вопрос.В скрипте есть функции-

Код:

func void simple_powerup(string x)
{
chr_teleport(x,14)
chr_set_health(x,80)
chr_givepowerup(x,shield,40)
chr_givepowerup(x,ammo,1)
}
и
func void spawn_outside_1
{
ai2_spawn tech_thug_1
ai2_spawn cruel_commguy_1
ai2_spawn brain_commguy_2
simple_powerup tech_thug_1
simple_powerup cruel_commguy_1
simple_powerup brain_commguy_2
}

Вызов spawn_outside_1 есть,проверял.
Однако никаких поверупов НЕТ!Спавны есть,поверупов нет...

AWP_Mega » 19-07-2009 09:44:35

с раздачей предметов и оружии часто замечаю такую фигню,у меня кстати у персов некоторые пушки идут(допустим плазма)а если ЕМУ же ставлю ртутник то оружие не появляется...

Мih@ » 19-07-2009 10:17:16

doktordulit, во-первых, в чём смысл таких функций? spawn_outside_1 имеет параметр, но никак его не использует. не логичнее ли будет, например, вынести спавн к поверапу и вызывать его по имени спавнуемого? или, если этот поверуп не одноразовый, spawn_outside должен просто перенаправлять своё "x" поверапу, а вызываться несколько раз.
во-вторых, я бы ставил точки с запятой после скобочных вызовов (хотя с наличием переносов это несущественно), и как раз вызовы simple_powerup оформил со скобками. если там будет перенаправление по аргументу, то тем более. мелочи...
что касается самих поверапов - есть разница, нету только щита и обоймы, или нету и ровно 80 хелсов, или нету и телепорта куда надо. на всякий случай можно проставить между строк dprint/dmsg и проверить, не стопорится ли выполнение на каком-то месте. если выполнение проходит, но функция не работает - перепроверяй консолью, в чём проблемы с данными чарами в данной ситуации.
не видя остального скрипта и контекста вызова этой функции (ну, может, эти чары умирали где-то, или с force спавнились, или какой-нибудь ещё катаклизм пережили), больше ничего сказать не могу. -_- сами по себе функции в таком виде прекрасно работают, и чары и щиты есть на месте.

geyser » 19-07-2009 13:39:47

Ребята, сразу говорю - по одному вопросу с человека за раз, и желательно по очереди.
Надо исходить из принципа, что каждый ответ должен быть выверен экспертом-гуру.
Так что половину из ваших сообщений я может быть даже удалю, а то порядка мало.

Smith » 19-07-2009 13:50:44

НУ вроде я первый! :)

geyser » 19-07-2009 23:38:18

Предупреждение всем тем, кто игнорировал очередь и сыпал вопросы в кучу - так у нас с вами дело не пойдёт.

Вообще-то исторически первым должен был быть vitya, потому что один из своих вопросов он мне задал в личку:

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

я челу даю команду чтоб он бегал за мной, а он не бегает, чё дела?

Но поскольку этот вопрос задан крайне бестолково, vitya пропускает ход, и я перехожу к новому вопросу Smith:

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

Есть команда chr_animate для "анимации на заказ", например chr_animate(chelovek, KONCOMsuper_kick) заставляет чела с именем chelovek сделать Колесо Дьявола.
"Бег" и "ходьба" обычно задаются челам не как анимации, а как способ передвижения, через команду ai2_setmovementmode. Ты ведь вроде сам её использовал и должен знать, с чем её едят: сначала ai2_setmovementmode(chelovek, run) или ai2_setmovementmode(chelovek, walk), а потом, например, ai2_movetoflag(chelovek, 42). Или ты чего-то другого хочешь? тогда объясни так, чтоб я понял =)
Что такое полуприсед, я не понял совсем. А вскрикивание при виде врага - это поведение происходит автоматически, и зачем тебе делать так, чтобы он шарахался "просто так"?

Manticore, предупреждение за гору вопросов вне очереди... doktordulit, предупреждение за ложную информацию про индексы...
Дайте экспертам время проверить ответы, ведь не факт, что они исчерпывающие и вообще верные... Я завтра по всему пройдусь.

doktordulit » 20-07-2009 04:46:12

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

doktordulit, предупреждение за ложную информацию про индексы

Нормально.Я думал что пишу все правильно а мне предупреждение что СПЕЦИАЛЬНО писал неправильно"
P.C.А что собсно неправильно?

EDIT (geyser): Я и не говорил, что ты "СПЕЦИАЛЬНО" дезинформировал Manticore, но имело смысл чуть-чуть поискать, подумать, проверить, или по прайней мере не выдавать ответ так авторитетно, как будто ты в нём на 100% уверен,
и после твоих слов вопрос можно считать закрытым. См. ниже.

Smith » 20-07-2009 09:40:09

Есть команда chr_animate для "анимации на заказ", например chr_animate(chelovek, KONCOMsuper_kick) заставляет чела с именем chelovek сделать Колесо Дьявола.

Попробовал очень забавно. А есть список анимаций? Ударов коноки, синдикатов, TCTF...?


"Что такое полуприсед, я не совсем понял. А вскрикивание при виде врага - это поведение происходит автоматически, и зачем тебе делать так, чтобы он шарахался "просто так"? "

Я неправильно выразился... Как заставить бота сесть или идти полуприсев, или выкинуть фразу типа (Может стоит попытаться), а вскрикивание например для роликов нужно, так как в этом режиме боты пассивны и автомитически они не чё не сделают.

geyser » 20-07-2009 10:39:01

Значит так, хотя это было и вне очереди, разбираюсь с вопросом Manticore об индексах и ответом doktordulit.

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

2) Существует список абсолютно всех функций и команд, существующих в Oni? Спасибо!

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

2)- http://ssg.oni2.net/commands.htm

Есть ещё соответствующие разделы на вики, от перечня переменных http://wiki.oni2.net/BSL:Variables до детального объяснения функций (например, http://wiki.oni2.net/BSL:Frustum_and_fog ), но если нужен более-менее полный справочник на одной странице - тогда да, пожалуй, на вики ещё нет аналога страницы с OniStuff. Можете поспособствовать, ведь вики-справочники - это очень важное и нужное дело.
Заодно скажу, что в данный момент буржуи добавляют в BSL много новых команд, так что некоторые ограничения, к которым мы привыкли, в скором времени могут исчезнуть: http://wiki.oni2.net/Daodan_DLL/Beta

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

1) "Каждый персонаж в игре имеет свой индекс (номер)" - где список этих номеров? Здесь его нет http://ssg.oni2.net/subfold/charas/charas.htm !

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

1)- Он определяется по ходу игры.К примеру,на уровне есть:чел1,чел2,чел3,коноко.
Коноко спавнится ВСЕГДА первой,у неё индекс 0.
спавним чела1,у него индекс 1.
спавним чела2,у него индекс 2.
спавним чела3,у него индекс 3.

Дальше!Убиваем чела1,и его индекс становится свободным,но на мгновение,ибо его занимает чел2!
И щас расклад такой-коноко 0,чел2 1,чел3 2.Убиваем чела3,его индекс освобождается,и его никто не занимает ибо больше никого с большим индексом нет!И так далее...понял?

doktordulit прав в том, что индексы раздаются в порядке появления персонажей в уровне, а порядок этот меняется в зависимости от сохранки и нелинейного прохождения. Именно поэтому, Manticore, этих индексов не может быть ни в каких постоянных таблицах. В остальном doktordulit заблуждается: индексы персонажей ПОСТОЯННЫ. В твоём примере, doktordulit, после того как умер человек с индексом 1 (и окончательно превратился в труп - это важно! ), память его освобождается, но ни в коем случае не занимается ни одним из живых челов. Поэтому в памяти образуется пустая ячейка между Конокой и вторым челом, и если в уровень добавить ЧЕТВЁРТОГО чела, то у НЕГО будет индекс 1, а у второго с третьим индексы НЕ изменятся.

То есть важно понимать три момента: во-первых, индекс чела забит - ПОСТОЯНЕН - с того самого момента, как чела добавили в уровень. Это номер ячейки в памяти, в которую он угодил, и никуда он из неё не денется, разве что умрёт и исчезнет из памяти вообще. То есть если вы заспоунили кучу челов, и один из них оказался седьмым, то он и ОСТАНЕТСЯ седьмым, пока не помрёт. А то, что сказал doktordulit - неправда.
Второе - свежедобавленный чел кладётся в ПЕРВУЮ СВОБОДНУЮ ячейку памяти. Если было занято семь ячеек (плюс Конокина - нулевая), и из них ни одна не опустела, то новый чел будет челом номер 8. Если же к тому времени, как его добавляют, опустела ячейка номер 3, то этот новый чел станет номером 3, а не 8. Такая вот перетасовка.
Третье - при каких обстоятельствах освобождаются индексы (ячейки)? Во-первых, индекс освобождается сразу, если чела грубо удалить через chr_delete. Во-вторых, индекс освобождается если чел умер - но НЕ СРАЗУ, а после того, как он благополучно стал ТРУПОМ - а это происходит, как правило, после того, как мёртвый чел "надолго" пропадает из поля зрения камеры (в случае камеры игрока - отвернуться мало, иногда приходится удалиться и/или попрыгать).

Чему нас это учит? тому, что если у нас было много челов, и мы кое-кого поубивали, то состояние памяти - и значение первого свободного индекса, который будет назначен новому челу - вещи весьма неопределённые. Всё зависит от того, смотрим ли мы на "ещё тёпленьких" поверженных челов или нет, а если не смотрим, то как далеко мы от этих ещё-не-трупов отошли, и прыгали ли мы при этом. Вот такая в этом деле тонкость, и я о ней неоднократно на этом форуме распостранялся во всех деталях, причём последний раз был буквально совершенно недавно, вот здесь: Интелект

Вот. Для полноты картины отвечаю ещё и на дополнительный вопрос Manticore.

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

Код:

func void level_start(string ai_name) {
    dprint func_void_start
    if (my_save_point eq 1) {
        dprint restore_game_1
        set_objective_1
        ai2_spawn Barabus
        chr_location Barabus 10 200 0

"chr_location Barabus 10 200 0" - вместо индекса я написал имя, но так не работает! Почему? Можно имя вписывать, а не индекс?

Говорят же тебе, что chr_location работает с индексом, а не с именем. Значит, имя не покатит, как бы ты этого не хотел. Тут всё очень строго, уж извини.

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

А если мне надо спавнить 20-ого страйкера и переместить его в точку x, мне что, отсчитывать какой у него номер?

Да, индекс надо угадывать, причём (см. выше) он будет зависеть от всей предыстории споунов и смертей (точнее, окончательных превращений в трупы), и за всем этим надо следить. Это довольно сложно. Гораздо проще - принять меры, чтобы индекс челов был известен заранее: например, можно предотвратить превращение чела в труп командой chr_death_lock(chelovek, 1), а потом в некий удобный момент сделать ему chr_full_health(chelovek) и сразу chr_delete(chelovek). Таким образом ты сам выбираешь, когда именно челы исчезают из памяти, и какие именно ячейки они освобождают для новых споунов.

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

Я посмотрел список команд и как я понял, нельзя назначить персу конкретный стиль боя, то есть указать "бить только руками или все время активировать дрожь земли" и т.д. Это действительно нельзя? Жаль...

А вот с этим, Manticore, ты пропускаешь ход. Сам видишь, сколько в этой ленте накопилось вопросов без ответа, или по крайней мере без ответа, выверенного авторитетом.

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

geyser » 20-07-2009 16:01:08

Smith, извини, я потом до-отвечу на твои вопросы, а пока могу сказать только следующее. Анимации хранятся под кодом "Трям! здравствуйте" ( http://wiki.oni2.net/TRAM ), поэтому их довольно легко опознать после распаковки через ОниСплит, или например взять Эдишнский level0_Animations.dat, открыть его для просмотра как бинарный текст, и искать в нём строку "TRAM" - таким образом узнаешь имена всех-всех анимаций, даже тех, которые нельзя использовать с вызовом (оверлейные и прицельные вообще). Кроме того, база данных всех боевых приёмов есть тут: http://wiki.oni2.net/Gameplay/Combat_moves  Имя колонки - это приставка, а полное имя анимации состоит из приставки и того хвоста, который фигурирует в клетках таблицы.
Информацию про полуприсед я добавлю в предыдущий пост, а с остальным тебе придётся подождать. Советую тебе чуть-чуть подумать и внести некоторую ясность в своё сообщение (можешь прямо его и редактировать): что такое "выкинуть фразу типа (Может стоит попытаться)", например? "Выкинуть" - это значит что её надо отменить и выкинуть из игры, или наоборот, изловчиться вызвать вне очереди? Кстати, "может, мне стоит попытаться" - это до ужаса кривой перевод фразы "maybe I should start trying", которая дословно означает "наверно, мне пора бы рвение прикласть". Смысл в том, что он якобы дерётся в полсилы, и дразнится, что вот-вот развяжет себе руки и размажет противника по стенке. Ну а русский перевод, ессессна, мимо, аж стыдно как.

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

мой вопрос:какими командами гейсер сделал так,чтоб при определенном убийстве противников(как в ОТА)срабатывала следующая функция,скажем(как в ОТА) набрал я 20 фрагов,и win,и т.д.Думаю многим интересно,лень самому искать в скриптах,не зря же тему создали

"Думаю многим интересно,лень самому искать в скриптах,не зря же тему создали"
Ну уж нет, тему я создавал для кого угодно, только не для ленивых. А совесть?
Я буду "сенсеем" только в меру того, что вы сами будете - хорошими учениками.

В OTA я функцию win не вызываю никогда: переход на следующую арену из цикла происходит непрерывно, без выхода из игры вообще.
Там по сути есть одна сложная функция Death, которая вызывается из циклов RespawnPlayer, каждый раз, когда какой-либо чел умирает:

Код:

func void Death(string ai_team, string ai_name, string ai_nick) {
    dmsg(" "); dmsg(ai_nick); RandDead(); chr_pain(ai_name, death);
    if(ai_team ne Konoko and ai_team ne Syndicate) {
        dmsg(" "); dmsg("WHO CARES?");
    } 
    if(ai_team eq Syndicate) {
        cinematic_stop(BOSS1talking, 16, 30)
        friend_sc= friend_sc + 1
        friend_lt= friend_lt - 1; if(friend_lt eq 0) dmsg " "
        friend_xl= friend_xl + 1; enemy_xl= 0
        friend_ld= enemy_lt - friend_lt
        dmsg "[b.FISH]"
        if(friend_lt < 6 and enemy_lt > friend_lt)
            LeftMess(Konoko, friend_lt)
        else if(friend_ld eq 0 or friend_ld eq 1)
            LeadMess(Konoko, friend_ld)
        else    ExcelMess(Konoko, friend_xl)
    }
    if(ai_team eq Konoko) {
        cinematic_stop(KONtransform, 15, 30)
        enemy_sc= enemy_sc + 1
        enemy_lt= enemy_lt - 1; if(enemy_lt eq 0) dmsg " "
        enemy_xl= enemy_xl + 1; friend_xl= 0
        enemy_ld= friend_lt - enemy_lt 
        dmsg "[y.FISH EATERS]"
        if(enemy_lt < 6 and friend_lt > enemy_lt)
            LeftMess(Syndicate, enemy_lt)
        else if(enemy_ld eq 0 or enemy_ld eq 1)
            LeadMess(Syndicate, enemy_ld)
        else    ExcelMess(Syndicate, enemy_xl)
    }
    if(chr_is_player(ai_name)) {
        dmsg " "
        dmsg "[b.FISH] :"
        PrintScore(friend_sc)
        dmsg "[y.FISH EATERS] :"
        PrintScore(enemy_sc)
    }
    ArenaWeaponModerator(enemy_sc + friend_sc);
}

из которой всё должно быть ясно. Неясно? тогда спрашивайте, но только чур строго и сердито, по существу.

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

Я не помню но что-то вроде этого-

Код:

func who_win(void)
{
if(fragse eq 20);fork fwin
if(fragsf eq 20);fork ewin
}

Не обижайся, doktordulit, но ведь это полная лажа. Во-первых, почему ты поставил точку с запятой между if и fork? и во-вторых, какой смысл имеет функция who_win? кто её вызывает и по какому поводу?

Smith » 21-07-2009 15:40:46

И так, вопросики:
1. Как сделать так, чтобы команда "ai2_movetoflag" при каких-то внешних факторов не отменялась а откладывалась (например бежит гриффин к флагу, увидел синдиката... прикончил его, и дальше побежал к флагу) а то я пропишу "ai2_movetoflag" и любой даже шум сбивает перса. :( ( например от выстрелов шум).

2. Программой OniUnPacker, я из 19 уровня вытащил файлы TRAM, и сохранил в отдельную папку, как глобализировать эти файлы или засунуть их например в 2 уровень???

3. В той же программе OniUnPacker я открыл ресурсы 19 уровня ONCC как я понял в ресурсах собрана инфармация о каждом персонаже. Вот например открыл код файла "TCTF_swat_blackops_1.ONCC". На сайте "http://wiki.oni2.net/ONCC" посмотрел какая строчка за что отвечает.
И мя интересует вот что! возьмём строчку: "0xC50:"

Отдельно в этой строке рассмотрим значение: "C8 00 00 00" - это значение отвечает за здоровье персонажа в конкретном случае оно равняется 200 единиц. (Базовая жизнь коноки). "C8" это 200, например FF получается должно быть наибольшим здоровьем, так если я меняю другие числа (соседние нули) то показатель жизни устанавливается повторно но жизнь не добавляется. Вопрос! за что они отвечают??? Больше 255 единиц мне неудаётся установить, так как жизнь устанавливается по паре чисел.
:( Как поставить например 600 ед. жизни??? На уровне кода ессна!

И кстати в описании персонажей у гриффина указано 200 ед. жизни. А  в коде ONCC написано 100 ед. Почему так?

4. Я хочу изменить характеристики Blackops SWAT, а именно такие:

A) например увеличить скорость выполнения комбы "comb_p_p_p" так, чтобы например фурия немогла эту комбу прервать! (аналогично и с comb_k_k_k)

B)  Ещё чтобы AI чёрного TCTF сооброжал побыстрее, например Blackops_swat начинает делать комбу ногой, а фурия уже увернулась от этой атаки, а балбес Blackops_swat,  продолжает комбу. Нужно чтобы он прерывал в нужный момент атаку.
После каждой атаки он тормозит, 1 - 1,5 сек. стоит. Нужно повысить реакцию на происходящие события в битве !!
Где эти параметры, я ищу но конкретно немогу найти, могбы Гейсер подсказать пожалуйста! :) :) Скорректировать меня так-сказать.
5. Каким образом открыть ресурсы "MELE", просто на страничке увидел описание - "http://wiki.oni2.net/OBD:BINA/OBJC/MELE" где эти ресурсы находятся????

6. В ONCC можно изменять характеристики моделей например: "TCTF_swat_blackops_1", "elite_hard_1", "thug_wh_1", "striker_hard_2" - а где менять характеристики конкретных персонажей????

geyser » 22-07-2009 16:37:30

0a. По-моему, Smith, до тебя очередь по второму кругу ещё не дошла.
0b. Надо, например, с doktordulit разобраться: что там у него такого в скриптах, что присвоение оружия и боеприпасов не работает.
0c. Ну и чуть-чуть развить те вопросы, которые задал vitya.

1. С простой командой "идти к флагу 42" это сделать нельзя. Можно сделать только с консолями или патрулями. Делаешь, например, самый простой патруль, из одного флага 29, без цикла вообще. Называешь этот патруль "flag_29".

Код:

<?xml version="1.0" encoding="utf-8"?>
<Oni Version="0.9.30.0">
   <ObjectCollection>
       <Object Id="8283" Type="PATR">
           <Header>
               <Flags>0</Flags>
               <Position>-408.598755 60.1162872 -1402.20361</Position>
               <Rotation>0 0 0</Rotation>
           </Header>
           <OSD>
               <Name>goto_flag_29</Name>
               <PatrolId>42</PatrolId>
               <ReturnToNearest>0</ReturnToNearest>
               <Points>
                   <MoveToFlag FlagId="29" />
                   <ScriptId ScriptId="42" />
               </Points>
           </OSD>
       </Object>
   </ObjectCollection>
</Oni>

Сохраняешь это в файл GdePopalo\BINACJBOPatrol Path.xml , потом делаешь onisplit -create GdePopalo GdePopalo\BINACJBOPatrol Path.xml и onisplit -import:nosep GdePopalo GdePopalo\level2_OBJC.dat
Кладёшь level2_OBJC.dat и level2_OBJC.raw в рабочую папку GameDataFolder(например, в Oni\Edition\GameDataFolder), а в скриптах Oni\Edition\GameDataFolder\IGMD\manplant пишешь следующее:

Код:

func main {
    ai2_spawn nookleft_thug_1
    ai2_dopath nookleft_thug_1 goto_flag_29
    ai2_setjobstate nookleft_thug_1
}
func patrolscript0042 {
    dmsg "What now?"
}

Кажется, что эта хреновина может сработать несколько раз, т.е. если чела отвлечь (или по пути, или после того, как он придёт к флагу 29 и спросит "What now?"), а потом уступить в бою или исчезнуть - то он в итоге снова направится к флагу 29 и снова спросит "What now?". Устойчивости этого поведения я не гарантирую, но на один раз должно хватить. Также замечу, что "movement mode" чела как правило меняется с форсированного бега на by-alert-level, а это значит, что если он вдруг успокоился (победил или потерял противника, например), то патруль он продолжит вразвалочку, а не бегом. Единственный способ это изменить - прописать ему в CHAR, чтобы он всегда суетился (либо он должен иметь привычку бегать, даже если не встревожен; либо его минимальный уровень встревоженности должен быть повышен).

1b. Бег к консоли ещё сложнее, т.к. для этого надо править CMBT. Я с этим совсем не экспериментировал, и о надёжности сказать ничего не могу. По идее эти настройки совсем не влияют на патрули и на бег к флагам, так что поле применения довольно ограничено. Однако рано или поздно надо продокументировать эту возможность и воспользоваться ей, например, в OTA.

2a. ПРИ ЧЁМ ТУТ СКРИПТЫ?
2b. OUP выдирает данные в довольно-таки немодулярном формате, поэтому вставить эти TRAM ты практически никуда не сможешь. Используй OniSplit. Сначала -export, потом -move, потом -import.

3a. ПРИ ЧЁМ ТУТ СКРИПТЫ?
3b. По адресу 0x12C хранится максимальная скорость вращения ИИ вокруг оси (его скорость мышки, так сказать). Наугад такие вещи менять нельзя, тем более, что это не целое число а "ай-яй-яй": http://ru.wikipedia.org/wiki/%D0%A7%D0% ... 1%82%D0%B8
В хексе менять значение таких вещей - противопоказано. Если уж на то пошло, OUP позволяет менять значение чисел через диалог "Value viewer", а вообще-то давно пора пересесть на OniSplit: -extract:xml для экспорта в текстовый формат XML, -create для импорта обратно в .oni
Я не понял, что такое "сделать TCTF очень быстрым (по анимации и AI) или тупым и очень медленным". Зато я понял, что к скриптам это вряд ли имеет какое-то отношение. Так что можешь не уточнять.

geyser » 22-07-2009 17:07:39

Smith, имей совесть и пропусти пару ходов, а то такое впечатление, что до чужих вопросов дело не дойдёт никогда...
И зачем ты так радикально поменял суть вопроса 3? Придётся мне теперь отвечать заодно и на новый вопрос номер 3.

НИ ОДИН ИЗ ЭТИХ ВОПРОСОВ НЕ ИМЕЕТ ОТНОШЕНИЯ К СКРИПТАМ!!! Smith, очередное и почти последнее предупреждение =)

3a. Что такое "показатель жизни устанавливается повторно"? Не люблю, когда человек говорит что-то значимое, но так говорит, что понятно только ему одному.
Если бы ты послушался меня и пересел на OniSplit и XML, то у тебя бы этих проблем вообще не было: в XML вообще нет хекса, и любые числа можно править в явном виде.
Кроме того, в OUP есть диалог Value Viewer, где опять-таки можно явно вбивать новые значения чисел. Заодно поймёшь, как целые числа выглядят в хексе (Little Endian).
600 = 512 + 88 = 256 x 2 + 64 + 16 + 8
Нижний байт имеет значение 88=0x58, а во втором разряде по 256 (т.е. во втором байте снизу) имеем- 0x02. В Little Endian нижний байт идёт первым, итого: 58 02 00 00

3b & 6. В ресурсе BINACJBOCharacter указаны дополнительные хелсы конкретных персонажей, они добавляются к тем, что прописаны в ONCC. Кроме того, хелсы зависят от уровня сложности и настроек в ONGS.

4. Это не ко мне и вообще не сюда. Поставь Эдишн, там уже много таких изменений (пока что только в TRAM и ONCC, но есть еще специальный MELE-мод "Brutal Striker"). Изучи всё это (желательно в XML, а не в хексе), а потом поговорим.

5. "BINACJBOMelee Profile" в уровне 0, советую изучать в XML, т.е. через OniSplit, а не через OUP.

Мih@ » 22-07-2009 17:09:56

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

Бег к консоли ещё сложнее, т.к. для этого надо править CMBT.

это в плане?.. вроде бы по ai2_doalarm name number чар бежит, пока не умрёт или не нажмёт, минуя все преграды. А нажав, ещё и вызывает соответствующую функцию, которая ещё и будет знать его имя. Или нужно было наоборот, научить чара отбиваться? +_+

Smith » 22-07-2009 17:37:27

А через что запускать онисплит??? Как пользоваться есть где описание??
И кстати где можно задавать вопросы о ресурсах игры (BINA, ONCC...)?

geyser » 22-07-2009 18:20:32

Smith, выделенной ленты про ресурсы пока нет (или уже нет, вроде бы когда-то она была, но канула в Лету и/или была зафлужена). С другой стороны, многие ресурсы существуют неотделимо от скриптов, например поуровневые коллекции OBJC. Так что вопросы про CHAR, например, можешь смело задавать прямо здесь.

OniSplit удобнее всего запускать через командное окно (хотя многие избалованные пользователи с этим не согласны). Инструкция есть здесь: http://wiki.oni2.net/OniSplit Она сама неполная, и на русский целиком не переведена (тем более, что функциональность постоянно меняется, так что "целиком" - это непонятно что такое). Однако, используй Поиск, и ты найдёшь на этом форуме кучу лент, где обсуждается функциональность ОниСплита. Ищи, например, "OniSplit", "ОниСплит", "Oni Split" или "Они Сплит".

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

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

Бег к консоли ещё сложнее, т.к. для этого надо править CMBT.

это в плане?.. вроде бы по ai2_doalarm namae number чар бежит, пока не умрёт или не нажмёт, минуя все преграды. А нажав, ещё и вызывает соответствующую функцию, которая ещё и будет знать его имя. Или нужно было наоборот, научить чара отбиваться? +_+

"Или нужно было наоборот, научить чара отбиваться?" Да. Движок "отбивание" поддерживает, но настройки существующих CMBT эту функциональность не используют, см. вики. Ну а мы это в Эдишн тоже включать не торопимся, потому как всё это надо тестировать, а рук мало.

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

я челу даю команду чтоб он бегал за мной, а он не бегает, чё дела?
Потом какой камандойможно узнать лакацию где ты находишся?
И последнее какой камандой можно зделать чтоб штатские не боялись пративников, а били их, и какой командойможно зделать чтоб штатские играли и за тебя и против тебя какими командами это можно зделать!;):):):):)

vitya, в следующий раз напишешь с таким количеством ошибок - пропустишь сразу два хода.

1. Есть как минимум два ответа, не считая тривиального "ответа вопросом на вопрос": какого хрена ты не предъявил вместе с вопросом ту команду, которую ты ему даёшь, "чтоб он бегал за мной"?
1a. Первый способ - регулярно говорить челу ai2_comehere(chelovek) или ai2_followme(chelovek). "Регулярно" - например, через рекурсивный цикл, повторяющийся раз в две секунды:

Код:

func FollowMe(string name) {
    ai2_comehere(name);
    sleep 120; fork FollowMe(name);
}

1b. Второй способ - изучить параметры профиля NEUT, и настроить его так, чтобы чел за тобой бегал сколь угодно далеко, но не разговаривал. Если такой профиль существует и называется, скажем, PerfectSidekick, то ты можешь его присвоить из скриптов, вот так: ai2_neutralbehavior(chelovek, PerfectSidekick)

2.
Можно включить окошко с информацией в правом верхнем углу, вот так: chr_debug_characters=1
А можно вбить с консоли команду where или who, и посмотреть, что она напечатает.

3. У тебя почему-то два вопроса в одном, и не совсем ясно, что такое "и за тебя и против тебя". Во-первых, учёные женского пола дерутся так же, как Шинатама (то есть никак). А в Эдишне ещё хуже - штатские женщины (вообще все, а не только учёные) не умеют драться (это ошибка, и мы её исправим, а ты пока не удивляйся). В остальном ответ простой - команда ai2_noncombatant(chelovek, 0) отменяет панику, а команда ai2_neutralbehavior(chelovek, none) отменяет у чела профиль NEUT (разговоры и подарки). Ну и конечно, команда у штатского должна быть подобающая, т.е. chr_changeteam(chelovek, Neutral). После этого штатский будет гасить сапогами всех тех, кто до него докопается.

vitya » 24-07-2009 19:25:45

У меня такой вопрос!
Я в финальной битве размножил муро, как зделать чтоб как токо всех мурзил замочиш будет мультик?;););)
Взарание спасибо!:):)

geyser » 24-07-2009 19:30:07

doktordulit, ты разобрался с присвоением оружия и боеприпасов? chr_giveweapon и chr_givepowerup должны срабатывать безотказно, если ты не использовал ai2spawn(chelovek, force), конечно. Если у тебя несколько челов с одним именем, тогда эти команды будут применяться к первому челу с этим именем. Для раздачи оружия и припасов по индексу используй функции chr_weapon и give_powerup.

Новый вопрос от vitya: в последней битве и Муро, и Мурзилла, при смерти вызывают функцию . В этой функции прописана концовка с даодановым экстазом, но хочет отсрочить концовку до того, как будут убиты все до одного Мурзиллы и Муры.

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

мне имено чтоб всех муренэско замочиш и мульт пойдёт мне так нужно пока у меня только это http://www.youtube.com/watch?v=kHcYx_MyG8g
Посмотри сам поймёш зачем мне это!;);););):)

Mih@ написал(а):

vitya, обратный отсчёт. выставляешь переменной значение, равное количеству муров. в функции про смерть муры сначала отнимаешь из этой переменной единичку, а затем проверяешь, равна ли она нулю. если равна, значит, все муры убиты и можно делать то что надо делать.

Миха прав, но я думаю, придётся объяснить понагляднее. Допустим, у тебя 42 босса, и ты хочешь, чтобы концовка началась только тогда, когда они все умрут. Все они вызывают при смерти функцию outro().
Во-первых, находишь func void Outro (void) в файле compound_cutscene.bsl и переименовываешь её, например в func outro или func konec.
Потом где-нибудь в начале файла, например, compound.bsl заводишь целочисленную переменную too_many_bosses и кладёшь туда 42. Это делается вот такой строчкой: var int too_many_bosses=42;
Наконец, пишешь новую функцию Outro, которая будет вызываться после смерти каждого босса (вместо концовки) и уменьшать счётчик на единицу, а по достижении нуля - вызывать переименованную концовку outro.

Код:

func Outro {
    too_many_bosses = too_many_bosses - 1
    if(too_many_bosses eq 0) outro
}

Вот. И ещё, vitya, очередное замечание за ошибки, пунктуацию, злоупотребление смайлами и бестолковость. Имей совесть излагать свои мысли складно. Иначе нам влом с тобой разговаривать, неужели непонятно?

vitya » 25-07-2009 07:10:50

Вот. И ещё, vitya, очередное замечание за ошибки, пунктуацию, злоупотребление смайлами и бестолковость. Имей совесть излагать свои мысли складно. Иначе нам влом с тобой разговаривать, неужели непонятно?

Предупреждение принето, но извините меня за грамотность она у меня очень страдает и не бесталковый ещё раз извините буду работать!

TESLA » 26-07-2009 08:24:07

Люди а можно в Они заменить основную музыку на свою? И как?

vitya » 26-07-2009 09:51:52

TESLA
Можно зделать заминив в ресурсах обычную музыку на свою и дав  каманду в скриптах!;)

geyser » 26-07-2009 15:08:26

@TESLA: Гм, это не совсем в тему, но советую прочитать вот эту ленту:
Насчёт своей музыки в Они (гм, не так уж она тебе поможет, пожалуй)

Была другая лента, где demos_kratos выложил свой результат (.dat).
Но эту ленту я сейчас не нахожу. Наверно, её удалила Злая Собака.

TESLA » 27-07-2009 22:05:04

Люди пожалуйста напишите мне скрипт на то чтобы в последнем уровне на битве с Муро было по 2 вида всех противников и союзников. То есть 2 сватовца, 2 элитных ниндзя, 2  фурии и тд. Если конечно это можно сделать. Я пока просто полный нубас в скриптовании и сам не умею ((

AWP_Mega » 27-07-2009 22:07:33

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

Люди пожалуйста напишите мне скрипт на то чтобы в последнем уровне на битве с Муро было по 2 вида всех противников и союзников. То есть 2 сватовца, 2 элитных ниндзя, 2  фурии и тд. Если конечно это можно сделать. Я пока просто полный нубас в скриптовании и сам не умею ((

Можно,если срочно надо пиши в асю(или иди в учебник)сделаем,а если время не важно-можешь подождать кого еще..

TESLA » 28-07-2009 13:30:54

Да времени примерно неделя. Так что пока подожду. Да и аськи у меня нету ))))

AWP_Mega » 29-07-2009 09:08:10

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

интересно, что вообще эти вопросы делали в теме, где раскрыты первым постом. =\

Ну ивиняйте,А ВОТ еще не понял работу lock_keys,часто команда вообще не работает,ввожу я допустим lock_keys keys_jump(надеюсь хоть это правильно)причем более чем на 100% уверен,что должна работать и что я ее прописал "там где надо",и нифига...

Мih@ » 29-07-2009 09:12:37

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

часто команда вообще не работает

контекст фстудию. и ожидаемый эффект.

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

более чем на 100% уверен

overflow.

AWP_Mega » 30-07-2009 08:34:20

Продолжу короче тут
Я так и не понял,че за фигня с лок кей,причем всегда.Ввожу я допустим ПРОСТО lock_keys,и все отлично,клавиши заблокированы,но стоит мне дописать любой тип(keys_walk, keys_inventory, keys_action, keys_pause, keys_attack и т.д.)как команда вообще не выполняется

Smith » 30-07-2009 12:20:21

Как мне сделать так, чтобы бот атаковал только меня (konoko)??. Например в последнем уровне!
"ai2_attack" - не помогает!
И как увеличить радиус обзора у бота??

Мih@ » 30-07-2009 13:08:25

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

Я так и не понял,че за фигня с лок кей

контекст где? например, такой ряд:
    lock_keys
    lock_keys keys_attack
    lock_keys keys_jump

блокирует всё, кроме keys_attack (удары руками и ногами, стрельба, fire3) и keys_jump (прыжок); учитывая отсутствие keys_movement, это всё делается на месте.
если нужно разблокировать что-нибудь ещё (например, keys_crouch), дописывается соответствующая разблокировка:
    lock_keys keys_crouch
если же надо заблокировать что-то из имеющегося (например, keys_jump), пишется всё вместе и заново:
    lock_keys
    lock_keys keys_attack
    lock_keys keys_crouch


для блокировки только F1 (keys_pause), например, примерно такое:
    lock_keys
    lock_keys keys_movement
    lock_keys keys_jump
    lock_keys keys_crouch
    lock_keys keys_walk
    lock_keys keys_inventory
    lock_keys keys_reload
    lock_keys keys_attack
    lock_keys keys_hypo
    lock_keys keys_action

но есть проблемка - специфичные вещи типа поворотов на месте (клавиатурой), lookmode, записи фильмов и проигрывания в них анимаций особых наименований не имеют и включаются только с keys_all.

AWP_Mega » 30-07-2009 14:01:04

Так,значит для заблокирования всего одной клавиши надо ввести дофига типов?
Мдо не айс, и не дано было придумать типа такого:
lock_keys f1 или lock_keys jump
А в учебнике смотрю,введите lock_keys и какой-нить тип,и заблокируется,я так и понял
Вообщем то ответ именно на то,что мне нужно было, спасибо
Ну и:ai2_comehere persona}!{
                ai2_followme persona}!{
Вообще рабочая?Кстати не разу не встречал этой команды в игре
З.Ы Чего по катсценам раздел не создашь?Не все же только в logic и main копаются

Мih@ » 30-07-2009 14:35:42

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

А в учебнике смотрю,введите lock_keys и какой-нить тип,и заблокируется,я так и понял

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

    lock_keys [клавиши]
Блокирует/разблокирует определённые клавиши, используемые игроком. Блокирует при отсутствии аргументов, разблокирует следующие типы: keys_reload, keys_hypo, keys_walk, keys_inventory, keys_action, keys_pause, keys_attack, keys_crouch, keys_jump, keys_movement. Для разблокирования всего сразу - keys_all.

имхо ясно. блок без аргументов, разблок поэлементно. уж как есть, зато всё в одной функции с 1 аргументом, а не в lock/unlock или 0/1. есть предложения, как это переформулировать, если неочевидно?

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

Ну и:ai2_comehere persona}!{
                ai2_followme persona}!{

"}!{" - это буква такая? ну дубль три:

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

ai2_comehere [персонаж]
    ai2_followme [персонаж]
Посылают персонажа идти к точке, где стоял игрок на момент вызова этой функции. ai2_followme должна была бы регулярно уточнять текущее расположение игрока, но не делает этого из-за небольшой скосяченности. Для не самых замороченных случаев можно воспользоваться аналогом типа:
var bool follow;
func followme(string ai_name, int step)
{
    ai2_comehere(ai_name);
    sleep(step);
    if(follow) fork followme(ai_name,step);
}
Где follow=1; followme [персонаж] [период обновления координат] позволяет включить следование, а follow=0; - выключить.

работают идентично и только когда вызвали.

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

Кстати не разу не встречал этой команды в игре

в оригинальных скриптах много чего не используется. особенно команды, предназначавшиеся для консольного дебага. )

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

З.Ы Чего по катсценам раздел не создашь?Не все же только в logic и main копаются

тематически - что такое "по катсценам"? оригинальные _cutscene файлы (как и другие) ввиду ни разу не имеются и по этому принципу разделения никогда не будет. сам вызов катсцен и практически все составляющие begin_cutscene есть. содержимое оригинальных катсценовых скриптов в большинстве своём состоит из очень локализованных вещей (проигрыш фильмов, пути камер, комбинации частиц, которые мало применимы без предварительного создания новых сцен на уровне ресурсов). то же самое касается и _particle_scripts. дополнения в пособия ведутся в порядке надобности и практической применимости, и я сразу писал, чтобы темы, требующие раскрытия там, назывались сразу. что было проигнорировано. поэтому добавления и шли в том порядке, который хорош в моём представлении. -_- следующими по планам были партикли и ещё пара мелочей.

TESLA » 07-08-2009 19:23:29

Люди так что там с моей просьбой? Неделя уже прошла... Даж больше....

geyser » 07-08-2009 22:08:27

Тааааааак...

Люди пожалуйста напишите мне скрипт на то чтобы в последнем уровне на битве с Муро было по 2 вида всех противников и союзников. То есть 2 сватовца, 2 элитных ниндзя, 2  фурии и тд.

Да времени примерно неделя.

Люди так что там с моей просьбой? Неделя уже прошла... Даж больше....

Вообще-то я, когда создавал тему, как-то не рассчитывал на то, что мне, Михе, и другим гуру придётся выполнять чужие заказы.
Мы готовы научить тебя скриптить, но требовать от нас "продукта" - это немного не то. И потом, что такое "и тд"? Я не врубаюсь.

Если бы ты имел некоторое уважение к своим учителям, то ты бы за эту неделю хотя бы подумал о своей "просьбе" и сформулировал её почётче. В последней битве с Муро участвуют 2 сватовца, 2 фурии и 2 элитных страйкера. Плюс одна Майка, один Муро, один Гриффин, и один нинзя. Так кого ты хочешь продублировать?

TESLA » 08-08-2009 20:05:46

Всех и многократно. А за скриптами у меня времени нету сидеть. Работа еще есть кроме компа...

Smith » 09-08-2009 10:05:35

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

Всех и многократно. А за скриптами у меня времени нету сидеть. Работа еще есть кроме компа...

А у других что, есть время??

Добавлено спустя 4 минуты 3 секунды:
Я знаю команду "ai2_makeignoreplayer" - игнорирует игрока (коноко)! Какая команда есть, чтобы бот игнорировал другого бота??
И как насчёт моего предыдущего вопроса??

demos_kratos » 09-08-2009 12:04:38

2Smith
2) поменяй другому боту "Team"

Код:

chr_changeteam [ai_name:string | script_id:int] team_name:string

имена "Team"ов: Konoko, TCTF, Syndicate, Neutral, SecurityGuard, RogueKonoko, Switzlerland, SyndicateAccessory

1) (а)

Код:

ai2_attack escho_odna_svoloch 0

сие должно работать если "Team" бота escho_odna_svoloch враждебна твоей. (если не менял свою "Team", то Syndicate - вполне универсальное решение.)

(б)

ты с напарниками, и ты хочешь чтобы бот атаковал только тебя и напарники его не трогали?

где-нибудь в начале файла:

Код:

func restoration
{
    chr_wait_health escho_odna_svoloch 0
    chr_changeteam naparnik1 Konoko
    chr_changeteam naparnik2 Konoko
}

и, собственно в месте, где должна происходить драка

Код:

......
    ai2_spawn escho_odna_svoloch
    chr_changeteam naparnik1 Neutral
    chr_changeteam naparnik2 Neutral
    ai2_attack escho_odna_svoloch 0
    fork restoration
......

должно работать, если я тебя правильно понял.

Smith » 09-08-2009 13:44:44

Это не совсем то что нужно, но всё равно спс! Синдикат в последн. битве должен атаковать только меня! Этого он не делает, как не прописываю.
Менять теам не вариант, получтся что и ТСТF меня колбасить будет! :(

Мih@ » 09-08-2009 16:09:49

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

сие должно работать если "Team" бота escho_odna_svoloch враждебна твоей.

ai2_attack не зависит от принадлежности чаров к командам. просто будет атака без коллизий (только броски). другое дело, что поведение бота может измениться по ситуации.

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

Менять теам не вариант, получтся что и ТСТF меня колбасить будет! :(

а если ещё раз вспомнить про ai2_makeignoreplayer?

demos_kratos » 09-08-2009 17:01:19

2Smith
а если убрать их нахек, TCTF'фовцев?

Smith » 09-08-2009 20:11:16

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

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

сие должно работать если "Team" бота escho_odna_svoloch враждебна твоей.

ai2_attack не зависит от принадлежности чаров к командам. просто будет атака без коллизий (только броски). другое дело, что поведение бота может измениться по ситуации.

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

Менять теам не вариант, получтся что и ТСТF меня колбасить будет! :(

а если ещё раз вспомнить про ai2_makeignoreplayer?

Тогда фурий перестанут бить TCTF !! Так как заставить конкретно бота атаковать только коноку, не кого не удаляя и неменяя теам, а то каша получится! например при режиме ai2_passive ... команды тоже не работают хотя всех игнор. и т. д.

Я изменил ситуацию в свою пользу, изменив функцию:

func void wait_to_help(void)
{
    chr_wait_health Muro 500

..............................................
Синдикат меня атакует, 2 Swat мочат фурии!) Правда гриффин всёравно не слушается) Желает набить морду Муро!
Но всё же хотелось сделать по нормальному, прописав для одного бота нужные команды!

geyser » 09-08-2009 23:29:09

Smith, посмотри, какая каша получилась из ленты только из-за того что ты неточно поставил задачу. Верх твоих мечтаний - чтобы TCTF-овцы метелили Синдикатовцев, а синдикатовцы всё это терпели? То есть чтобы враги сосредотачивались на тебе, в то время, как их лупят твои напарники? Так ведь?
В чём смысл? Я вижу некое искусственное разделение обязанностей, но не понимаю, что это меняет. Принципиально ли тебе, чтобы эта диковатая логика работала, как часы? Что она тебе вообще даёт? Почему врагам надо отсекать самозащиту? Допустим, это тебе чуть-чуть усложняет задачу, но не так, как если бы ты убрал TCTF-овцев "нахек"... То есть ты имеешь задачу промежуточной сложности и повышенной тупости (ведь враги, игнорируя твоих напарников, подвергаются броскам, подсечкам, добиваниям, и прочим гнусностям).

Я бы на твоём месте (да и на месте Михи и демоса_кратоса) разобрался со спецификой финальной битвы.
И вообще, по скольку я выбираю, как и на что отвечать, я именно эту тему и разовью, с вашего позволения.
Давайте разберёмся в том, как работает система выбора противников в финальной битве. Это поучительно.

Есть две фазы: сначала здоровье Муро вьше 200; потом оно становится меньше или равно 200 (wait_to_help).
Что имеем в первой фазе? В первой фазе включен многозначительный движковый флажок ai2_boss_battle.
А это значит три вещи.
Во-первых, боссы (челы с соответствующим флажком в CHAR,  в данном случае - Муро) сосредоточены на игроке.
Во-вторых остальные враги, т.е. не-боссы (без флажка в CHAR), наоборот, игрока игнорируют - если имеют выбор.
Т.е. если ai2_boss_battle так и останется true, то Муро будет лупить только Коноку, а TCTFовцам - ноль внимания.
А Муркина свита переключится на Коноку только тогда, когда не сможет выбрать себе противников из сватовцев.
Таким образом, пока флажок включен, не имеет смысла давать им приказ атаковать Коноку: приказ проигнорируют.
В третьих, нормальные персонажи игнорируют боссов (т.е. в данном случае Гриффин и сватовцы игнорируют Муро).
Поэтому в этой, первой фазе, бессмысленно давать Гриффину приказ атаковать Муро - приказ будет проигнорирован.

С другой стороны, что мы имеем во второй фазе? Флажок убирается, и все персонажи выбирают противников свободно.
Точнее, не совсем. Муро во второй фазе свободен драться с Гриффином или сватовцами, на что бывает забавно смотреть.
Но напарники Муро - если они живы - сразу после обретения полной свободы выбора получают приказ атаковать Коноку.

Код:

func void wait_to_help(void)
{
    chr_wait_health Muro 200
    
    dprint MURO_IN_DANGER
    ai2_boss_battle = 0;
    muro_in_danger = 1;
    ai2_attack GrifElite01 char_0
    ai2_attack GrifElite02 char_0
    ai2_attack GrifElite03 char_0
    ai2_attack GrifElite04 char_0
    ai2_attack GrifElite05 char_0
    ai2_attack GrifElite06 char_0
}

Таким образом напрашивается два решения твоей проблемы, Smith. Ведь вторая фаза - это то, что тебе надо, разве не так?
Первое решение. Дать приказ всем врагам атаковать игрока. Приказ можно для верности повторять через несколько секунд.
Главное, чтобы на момент этих приказов к атаке был выключен флажок ai2_boss_battle, иначе он аннулирует приказы.

Второе решение. Использовать, наоборот, первую фазу, т.е., включить ai2_boss_battle. Но - сделать всех врагов боссами.

Правда гриффин всёравно не слушается) Желает набить морду Муро!

А вот насчёт Гриффина - первый раз слышу... Чего тебе от него надобно? Чтобы он игнорировал Муро? а почему это важно?
Твоя интуиция насчёт func wait_to_help, в общем, правильная. Но я надеюсь, что я не зря вдался в подробности про боссов.
Ты хочешь, чтобы все враги лупили только тебя и игнориривали твоих напарников. Это-то сделать довольно просто.
Но нет простого способа сделать так, чтобы при этом твои напарники игнорировали Муро, а остальных врагов били.
Почему? Потому, что игнорирование боссов - это часть режима "boss battle", который либо включен, либо выключен.
И включение режима подразумевает, что босс дерётся с тобой один на один а все остальные челы вас игнорируют.

Вот, я тебе объяснил, как оно работает и почему, а уж если тебе это не нравится и хочется чего-то левого - удачи.

Smith » 10-08-2009 19:21:55

Но - сделать всех врагов боссами - как это сделать???
1. И напарников мне трогать не нужно! Я телепортировал синдиката на крышу к муро, и хочу чтобы он атаковал только меня, так как у TCTF и без того фурии!

Спасибо, как всегда за подробное, полное обяснение, гейсер! :)

2. И ещё, как всётаки повысить дальнозоркость ботам а то, в последней битве TCTF и Синдикаты за 30 шагов не видят друг друга, напрягает! В каких ресурсах копаться, чтобы отрыть код отвечающий за это характеристику (дальнозоркость)??! Ну или каким-нибуть другим путём пойти, ну незнаю, например: если бот (TCTF) неактивен, то заставить его атаковать всех синдикатов, которые есть на данной локации! Или что-то в этом роде)

3. А вот ещё: что нужно удалить чтобы игра после смерти муро не заканчивалась???
Пробовал удалить :

func void you_win(int char_index)
{
    outro
    win
}
не помогло...

geyser » 11-08-2009 02:28:35

сделать всех врагов боссами - как это сделать?

Пока что только через редактирование ресурса BINACJBOCharacter. В скором времени боссовый флажок можно будет менять из скриптов.

Спасибо, как всегда за подробное, полное обяснение, гейсер!

Гм, а ты-то когда научишься задавать вопросы так, чтобы мне не приходилось переспрашивать?

И напарников мне трогать не нужно! Я телепортировал синдиката на крышу к муро, и хочу чтобы он атаковал только меня, так как у TCTF и без того фурии!

Как ты считаешь, этот поток сознания кому-нибудь может быть  понятен, кроме тебя самого? Не знаю кому как, а мне влом сушить моги над тем, что ты мог бы иметь в виду. Изволь сформулировать, на языке предельной ясности, кто у тебя где находится, что делает и зачем.

В каких ресурсах копаться, чтобы отрыть код отвечающий за это характеристику (дальнозоркость)?

ONCC. Как правило челы видят не дальше 47,5 метров, боковым зрением - не дальше 15. Исключение - снайпер (видит до 120 метров). Плюс близорукие цивилы, охранники, и те TCTFовцы, которые не сватовцы: все эти классы видят не дальше 25 метров. В твоём случае вроде бы только сватовцы, так что поле зрение должно быть 47,5 метров, боковое - 15, как обычно.
Если хочешь, чтобы челы после битвы с большой вероятностью находили новых противников, надо позаботиться не только о их зрении, а ещё об их поведении по умолчанию. Надо, чтобы после победы над врагом они не успокаивались и не стояли как дундуки (уставившись, возможно, в ту сторону, где врагов нет и не будет), а оставались в боевой готовности и соответственно крутились вокруг осей, высматривая врагов. Все эти настройки хранятся опять же в ресурсе BINACJBOCharacter. Я в некотором смысле развил эту тему, когда отвечал тебе же, насчёт третьего напарника (переодетого Страйкера) во второй главе.

если бот (TCTF) неактивен, то заставить его атаковать всех синдикатов, которые есть на данной локации

"Атаковать всех" нельзя, но можно периодически напоминать челу о врагах, через команду ai2_makeaware. Детектировать "неактивность" - сложно, но можно - опять же через BINACJBOCharacter. Можно дать челу в качестве "работы" патруль, состоящий всего лишь из вызова скриптовой функции patrolscript0042. Таким образом, как только челу будет нечего делать, ты об этом сразу узнаешь.

что нужно удалить чтобы игра после смерти муро не заканчивалась?

Невнимательно относишься к чужим просьбам, а ведь лента не такая ещё и длинная. Аналогичный вопрос задал vitya, и получил исчерпывающий ответ: Задачник по скриптированию: вопросы и ответы.

Smith » 11-08-2009 14:20:39

А про "patrolscript0042" можно чуть по-подробнее?! 0042 это что? индекс скрипта? И как прописывать, и как он будет патрулировать, на чём опираясь, на каких флагах??

Так что даёт - "ai2_makeaware GrifOps03 GrifElite04" ?? Ничего не произошло! Вот написал:


func void opsi(void)
{

chr_wait_health GrifElite03 0
sleep 150
ai2_makeaware GrifOps03 GrifElite04
sleep 25
ai2_makeaware GrifOps02 GrifElite04
sleep 12
ai2_makeaware Griffin GrifElite04

}

Так, что конкретно команда даёт??! :)

"ai2_noncombatant" - что эта за команда??

"ai2_takecontrol" - а что это команда означает??

demos_kratos » 11-08-2009 17:10:05

хорошо сдружившись с английским (или на худой конец воспользовавшись гугл.транслейтом) за командами сюда - http://ssg.oni2.net/commands.htm

Smith » 11-08-2009 17:24:56

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

хорошо сдружившись с английским (или на худой конец воспользовавшись гугл.транслейтом) за командами сюда - http://ssg.oni2.net/commands.htm

Транслейт корявый, а по сдвум словам, смысл команды не оч. понятен! Есть команды в которых дословный смысл, и при переводи уже ясно например: follow me и.т.д. я конкретно спрашиваю!)

AWP_Mega » 11-08-2009 17:29:13

ai2_takecontrol вообще то тоже понятно что игра берет под контроль игрока,например используется в катсценах

geyser » 11-08-2009 19:13:19

Smith, имей совесть, юзай Поиск. ai2_noncombatant уже неоднократно освещалась на форуме, в том числе в данной ленте:
Задачник по скриптированию: вопросы и ответы.
Вопросы по написанию игровых скриптов

ai2_takecontrol кое-как освещён в Михином пособии, давно пора привыкнуть туда заглядывать:
Oni Scripts: FAQ-пособие

ai2_makeaware chelovek1 chelovek2 сообщает челу chelovek1 о том, что есть такой chelovek2, и где он находится.
Не факт, что после этого чел 1 побежит бить морду челу 2. Если враг далеко либо за углом, то враг может быть забыт.
Но вообще-то твоя функция opsi должна работать (если ты не забыл её вызвать, конечно - этот факт надо проверить).
Если "ничего не произошло", то у меня нет достаточной информации о проблеме. Важен контекст и ожидаемый эффект.

С GrifElite03 кто дерётся? по идее GrifOps02. На момент смерти GrifElite03 Гриффин и GrifOps03 могут быть слишком заняты с GrifElite02, чтобы переключаться на GrifElite04. И даже GrifOps02, если GrifElite02 ещё жива, может побежать к ней, а не к GrifElite04 - просто потому, что она ближе.
В любом случае, после того, как GrifOps02 победил GrifElite03, он какое-то минимальное время будет над ней стоять (типа чтобы удостовериться, что она не встанет). Возможно, это время можно как-нибудь отрегулировать, но я этим вопросом пока не интересовался.

про "patrolscript0042" можно чуть по-подробнее?! 0042 это что? индекс скрипта? И как прописывать, и как он будет патрулировать, на чём опираясь, на каких флагах?

Патруль может быть и без флагов, например он может состоять из одного-единственного "уэйпойнта" - вызова скриптовой функции patrolscript0343. Для этого уэйпойнт должен быть типа 21, с параметром 343. Далее, если индекс этого патруля есть, например, 49, то и в CHAR челу тоже надо поставить номер патруля 49, и заодно сделать так, чтобы типом "работы" чела (после победы над очередным врагом, например) был "patrol", т.е. 3.
http://wiki.oni2.net/PATR
http://wiki.oni2.net/OBD_talk:BINA/OBJC/PATR
http://wiki.oni2.net/CHAR
http://wiki.oni2.net/OBD_talk:BINA/OBJC/CHAR

Smith » 12-08-2009 13:14:00

1. Неподскажете как называется анимация отвечающая за кувырки (вперёд, назад, влево, вправо...)
Прыжки (обычные, и с ударом) а то найти немогу, например у GrifOps????

2. И как правильно набирать команду "ai2_panic" - а то я набрал так, что из игры вылетел!=)

3. И как сделать так чтобы бот к флагам бегал последовательно!, тоесть когда добежит до первого флага, останавливался и бежал к другому флагу, а то когда пропишешь флаги он одновременно всё выполняет, ставить паузы sleep тоже не вариант, как поступить??!

4. И как сделать так, чтобы один бот бегал за другим типо follow me только применимо для бота?

5. Как заставить бота повернуться на определённый угол?? Скажем смотрит он вперёд, и заставить его развернуться на 90 градусов?! (Что б бот в ту или иную сторону бот посмотрел)

AWP_Mega » 18-08-2009 12:06:33

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

1. Неподскажете как называется анимация отвечающая за кувырки (вперёд, назад, влево, вправо...)
Прыжки (обычные, и с ударом) а то найти немогу, например у GrifOps????

Тебе нужно расширение анимации или ее точное название?TRAC спасет мир

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

Как заставить бота повернуться на определённый угол?? Скажем смотрит он вперёд, и заставить его развернуться на 90 градусов?! (Что б бот в ту или иную сторону бот посмотрел)

chr_facetoflag [кто] [на какой флаг смотрит] команда поворачивающая бота или игрока к определенному флагу,или заспавни тело и скомандуй ai2_lookatchar [кто смотрит] [на кого],главное не забудь тело телепортировать и удалить

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

4. И как сделать так, чтобы один бот бегал за другим типо follow me только применимо для бота?

follow me типа не для бота???Если хочешь чтобы 0 шел за кем то,то пусти по ближлежащим флагам обоих персов

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

3. И как сделать так чтобы бот к флагам бегал последовательно!, тоесть когда добежит до первого флага, останавливался и бежал к другому флагу, а то когда пропишешь флаги он одновременно всё выполняет, ставить паузы sleep тоже не вариант, как поступить??!

Чем собственно слип не устраивает?Как мне известно только он и спасает,можно вилочки пристроить

Smith » 18-08-2009 15:01:42

Спасибо! Но вот я ещё столкнулся с такой проблемой. Я написал скрипт, и вот какой должен быть сценарий:

После смерти Муро (левл 19) в комнате появляется GrifOps01 (незадействованный персонах в игре), соответственно он выбегает из комнаты и бежит к флагу! Впринципе всё! (Ну ещё пару нюансов).
Но я его телепортирую не на флаг, а по осям x,z,y (так как в комнате флага нет). Поятому приходится пользоватся командой chr_location index (X Z Y). Вот в "телепорте" и проблема, так как телепортируешь не конкретного персонажа а его номер!! А номер то меняется в зависимости от остальных персонажей, если до появления GrifOps01 было 3 чела, то индекс 4 будет у GrifOps01, если 1 чел, то соответственно 2-ой индекс и. т. д.  В конкретном случае, можно рассмотреть три случая:

Первый: Griffin + GrifOps02 + GrifOps03 - живы!! (То есть все)
Второй: Griffin + GrifOps02 - живы!! (мертв только один TCTF)
Третий: Griffin - жив!! (два мертвых TCTF)

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

Как это сделать????!

doktordulit » 18-08-2009 15:43:56

Муро ведь полюбому сдохнет,да?
Так сделай его индекс 1,чтоб когда он умер,ты спавниш Опса,и его индекс будет 1.Все

Smith » 18-08-2009 16:00:24

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

Муро ведь полюбому сдохнет,да?
Так сделай его индекс 1,чтоб когда он умер,ты спавниш Опса,и его индекс будет 1.Все

Неполучится, его место занимают живые челы - гриффин, опсы другие...

И кстати почему у мя не работает вот этот скрипт??
на первый телепорт смотрит а на второй нет(((

ai2_spawn C_Sb75
chr_location 2 -297.720428 1485.000000 -2700.470215
ai2_lookatchar GrifOps03 C_Sb75
chr_delete C_Sb75 

sleep 80

ai2_spawn C_Sb75
chr_location 2 -302.004272 1485.000000 -2647.752441
ai2_lookatchar GrifOps03 C_Sb75
chr_delete C_Sb75

demos_kratos » 18-08-2009 16:24:08

попробуй форсануть C_Sb75 при втором вызове.

Smith » 18-08-2009 16:30:37

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

попробуй форсануть C_Sb75 при втором вызове.

Вылетел из игры!! ((( Оппа Они навернулась=)

demos_kratos » 18-08-2009 16:41:07

попробуй перед каждой строчкой второго этапа поставить конструкцию вида

Код:

dprint WTF1
sleep 300

для следующей строки WTF2 и т. д. соответсвенно. при выполнении скрипта смотри на консольный вывод. после какого либо из WTF-ов вылетит блам. после какого именно запостишь сюда.


как альтернативный вариант - можешь расковырять OniSplit'ом BINACJBOCharacters.oni и допихать туда дополнительных "Dummy" ботов.

Smith » 18-08-2009 17:06:41

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

попробуй перед каждой строчкой второго этапа поставить конструкцию вида

Код:

dprint WTF1
sleep 300

для следующей строки WTF2 и т. д. соответсвенно. при выполнении скрипта смотри на консольный вывод. после какого либо из WTF-ов вылетит блам. после какого именно запостишь сюда.


как альтернативный вариант - можешь расковырять OniSplit'ом BINACJBOCharacters.oni и допихать туда дополнительных "Dummy" ботов.

Странно я всё логично и правильно прописал, почему не срабатывает?? А главное только первый телепорт срабатывает почемуто, индекс пробовал менять, персонажей, бестолку...
Но в BINACJBOCharacters.oni не хочу слишком простая процедура, что б вдаваться в ресурсы они)...

demos_kratos » 18-08-2009 17:19:20

так после какой команды вылетает? ты пробовал других ботов вместо C_Sb75 пихать?

Smith » 18-08-2009 17:25:15

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

так после какой команды вылетает? ты пробовал других ботов вместо C_Sb75 пихать?

Короче странно как-то я телепортнул просто 2 ботов, в два разных места, всё норм.
Решил процедуру эту сделать тока с добавлением каманды ai2_lookatchar .
Бот вообще как то разворачивается вокруг своей оси и потом смотрит вниз!!
Непонятно! Попробовал телепортир. на флаги, та же фигня:

ai2_spawn C_Sb75
sleep 80
chr_teleport C_Sb75 0560
ai2_lookatchar GrifOps03 C_Sb75
chr_delete C_Sb75 

sleep 80

ai2_spawn C_Sb26
chr_teleport C_Sb26 0517
ai2_lookatchar GrifOps03 C_Sb26 
chr_delete C_Sb26

demos_kratos » 18-08-2009 19:28:29

а chr_facetoflag пробовал? она работает с именами ботов. (chr_facetoflacg C_Sb26 0517)

Мih@ » 18-08-2009 19:58:00

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

ai2_panic

"паникующий" характер задаётся персонажу в ресурсах (.BINA). анимация задаётся анимацией. или какой эффект нужен?

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

chr_facetoflag [кто] [на какой флаг смотрит] команда поворачивающая бота или игрока к определенному флагу

не поворачивает к флагу, а ориентирует сонаправленно данному флагу.

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

Вот в "телепорте" и проблема, так как телепортируешь не конкретного персонажа а его номер!!

в зависимости от ситуации. можно заспавнить персонажа заранее и засунуть его куда-нибудь подальше. можно использовать chr_death_lock для могущих умереть до его спавна персонажей. можно сделать переменные, контролирующие, какие персонажи живы/мертвы, количество живых в данный момент, или даже отражающие текущую занятость индексов. ну, или ждать chr_name. -_-

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

Неполучится, его место занимают живые челы - гриффин, опсы другие...

да ну.

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

И кстати почему у мя не работает вот этот скрипт??

когда выполнение нужного куска кода проходит, а эффекта не видно - смотрим в консоль. и видим там bad parameters on chr_location. возникающее, когда в chr_location кидается несуществующий индекс. а всё потому, что для удаления использовано только chr_delete, и игра не обрабатывает смерть персонажа (ставим перед удалением ai2_kill и всё хорошо) как таковую, в т.ч. освобождая индекс для возрождённого чара. а на индексе 2 уже никого нету.

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

Непонятно! Попробовал телепортир. на флаги, та же фигня:

что такое "та же фигня"? для поворота это то же самое что:
    ai2_spawn C_Sb75
    chr_teleport C_Sb75 560
    ai2_spawn C_Sb26
    chr_teleport C_Sb26 517
    sleep 80
    ai2_lookatchar GrifOps03 C_Sb75
    sleep 80
    ai2_lookatchar GrifOps03 C_Sb26

так тоже "та же фигня"?

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

а chr_facetoflag пробовал?

нужен ведь поворот персонажа к флагу (т.е. для разных местоположений GrifOps03 это разные углы поворота).

Smith » 19-08-2009 08:19:41

Хорошо но как удалить трупы??? Вот скрипт:


func void partin(void)
{
sleep 80
ai2_spawn C_Sb75
chr_location 2 -297.720428 1485.000000 -2700.470215
ai2_lookatchar GrifOps03 C_Sb75
ai2_kill C_Sb75
chr_delete C_Sb75

sleep 120
ai2_spawn C_Sb26
chr_location 3 -302.004272 1485.000000 -2647.752442
ai2_lookatchar GrifOps03 C_Sb26
ai2_kill C_Sb26
chr_delete C_Sb26
}

Я думал перс совсем исчезает, но нефига((( Мне не нужны трупы, боты должы после смерти моментально исчезнуть, команда chr_delete C_Sb26 не работает((

Добавлено спустя 4 минуты 15 секунд:
ai2_panic эффект?? А какие эффекты есть? я просто не очень понимаю...
Где мне их найти? Именно? Насчёт эффектов - что бы бегал покругу и стрелял во все стороны=))))

Кстати как заставить бота просто стрелять, так сказать нажать спусковой крючок! Ну стоит бот с оружием смотрит дулом в стену, и просто так начал в неё стрелять, просто туда куда направленно оружие??

Мih@ » 19-08-2009 09:13:15

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

Хорошо но как удалить трупы???

залежавшиеся трупы - corpse_reset. в данном случае удалить следует сразу чара, оставив за ним индекс.
    ai2_spawn C_Sb75
    chr_death_lock C_Sb75 1
    chr_location 2 -297 1485 -2700
    ai2_lookatchar GrifOps03 C_Sb75
    chr_delete C_Sb75
    sleep 120
    ai2_spawn C_Sb26
    chr_death_lock C_Sb26 1
    chr_location 3 -302 1485 -2647
    ai2_lookatchar GrifOps03 C_Sb26
    chr_delete C_Sb26


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

ai2_panic эффект?? А какие эффекты есть? я просто не очень понимаю...

у ai2_panic на кого попало должен быть ожидаемый (например, после прочтения о нём на Oni Galore) эффект в виде блама. если нужен был он, то цель достигнута.

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

Насчёт эффектов - что бы бегал покругу и стрелял во все стороны=))))

понятно...

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

Кстати как заставить бота просто стрелять, так сказать нажать спусковой крючок!

это уже давным-давно обсуждалось. точно также, как это делали, например, блекопс, убивший Керра, и Гриффин, застреливший Шинатаму. через соответствующий playback. в .FILM есть аж int64 битсет, отвечающий за "нажатые клавиши", среди которых и стрельба, и всё что угодно. однако угол обзора (в обеих плоскостях) и даже начальное местоположение (в отличие от записываемых во время игры фильмов) задаётся там же.

Smith » 19-08-2009 12:21:58

Мне нужно, чтобы запуск одного скрипта, осуществлялся только после того, когда бот бодойдёт к флагу! Как это сделать?? Веди есть такие команды как "chr_wait_animstate" , "chr_wait_health" - а для флагов есть что нитть подобное??

Мih@ » 19-08-2009 12:53:47

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

а для флагов есть что нитть подобное??

sleep есть. либо можно засунуть этот флаг в trigger volume (BINA/TRGV).

vitya » 20-08-2009 18:19:13

Вы конечно извините, влазию без очериди, но ответти пожалуйста на вопросы после того как разберётесь с другими!
Короче я уже задовал этот вопрос, а как тогда зделать чтобы катсцена начиналась после того как убьёшь просто челов?
Извиняюсь за настарность, но всётки как зделать чтоб штатские дрались и твои играли против тебя?
И помогите плизз, набираю команду для определение кординат (where), всёбы было ок, но только кординаты не где не показываются, такаеже фигня с классами игроков тоже не отображаются, но честно меня больше волнует, то что кординаты не отображаются!
Ещё раз извиняюсь и пожалуйста помогите посаветуйте что делать, взарания всем спасибо!;)

demos_kratos » 20-08-2009 18:48:24

1. перед вызовом функции катсцены поставь условие, проверяющее счётчик на ноль. сам счётчик должен уменьшаться на один как только один враг помер (делается с помощью описания сторонней функции). изначально счётчик должен быть равен количеству врагов.
2. поменяй себе Team
3. поставь английкий движок и C-Daodan. на русском консольного вывода нет вообще.

и, собственно, мораль. ТЕЛЕПАТЫ В ОТПУСКЕ! уточняй что именно ты хочешь. я ни хрена не понял, что именно ты имел ввиду и привёл самые вероятные результаты. на будущее - всегда правильно и полностью описывай, что тебе надо.

Шнайдер » 20-08-2009 18:51:43

А,вопрос возник,как сделать,чтобы при смене скина персонажи относились а игроку со стороны его текущего скина(напр солдат страйкер-его боятся цивилы и не любят ТСТФ,но свои не нападают, или в уровне с Рег управлением скин охранника поставить и охранники не прыгают на тебя)?

vitya » 20-08-2009 18:52:27

C-Daodan где его дастать?

demos_kratos » 20-08-2009 18:56:06

2Шнайдер

а никак. только вручную менять команду вместе со сменой класса.

2vitya

http://daodan.rossy.oni2.net

Smith » 11-09-2009 13:43:07

Вот у меня вопрос появился! Когда в игре мы нажимаем "F1", то у нас игровой процесс преостанавливается (всё замирает). Вопрос такой:
Как зделать так, чтобы при этой паузе игрок (т.е. конока) мог передвигатся в пространстве безпрепятственно!????

demos_kratos » 11-09-2009 17:27:15

2Smith
Загнул =) Интересная идея. Но увы нереальная. Поищи в теме про девмоду описывалась функция передвижения камеры при полной паузе игры. Но чтоб игрок в этой паузе двигался - это увы неисполнимо.

Smith » 11-09-2009 18:58:50

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

2Smith
Загнул =) Интересная идея. Но увы нереальная. Поищи в теме про девмоду описывалась функция передвижения камеры при полной паузе игры. Но чтоб игрок в этой паузе двигался - это увы неисполнимо.

Как не исполнимо??=(( Я всего лишь хочу что б я мог бегать при этой паузе? Может быть на уровне кода можно изменить, или глубже капнуть?? Потому как клёвый эффект был бы!)
И почему невозможно? Откуда такая уверенность??

demos_kratos » 12-09-2009 18:34:12

если Была такая возможность, я Бы рассказал, как ее осуществить. С времени релиза игры прошло почти 9 лет. С времени появления каммьюнити на год меньше. За 7 лет все возможности движка раскрыты. Отсюда и такая уверенность. Ты можешь задать подобный вопрос на ОЦФ, но я думаю ты получишь идентичный ответ. И потом, если бы такая вкусная функция была, то черта с два я о ней бы не знал =)

Smith » 12-09-2009 19:51:38

Слушай а можешь скинуть мне глобализированный файл Они, то у мя не получается((
Мне нужны боты, диалоги и анимации общие!! Если не трудно конечно=)

vitya » 13-09-2009 08:27:03

Smith
Попробуй установить новейший денничёк, там все ресурсы глобализованы!!!!!!!!!;)

Smith » 13-09-2009 17:46:28

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

Smith
Попробуй установить новейший денничёк, там все ресурсы глобализованы!!!!!!!!!;)

Чего? Можно по-подробнее? Где качать?? =)

demos_kratos » 13-09-2009 18:20:37

не надо никаких нонешних денёчков. если стоит последний Edition, то качаем файл globalize.bat, кидаем его в папку Oni\Edition и запускаем, через минуту в папке Oni\Edition\GlobalDataFolder будут лежать все глобализационные файлы игры.

Smith » 15-09-2009 13:44:33

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

не надо никаких нонешних денёчков. если стоит последний Edition, то качаем файл globalize.bat, кидаем его в папку Oni\Edition и запускаем, через минуту в папке Oni\Edition\GlobalDataFolder будут лежать все глобализационные файлы игры.

Хорошо! А как файлы oni. запихнуть в dat. ??

demos_kratos » 15-09-2009 18:42:49

Используй мой GUI.

Smith » 15-09-2009 20:07:51

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

Используй мой GUI.

Команда "скрепить" ?? Там где ещё plug-in...

demos_kratos » 16-09-2009 10:36:11

да, она самая.

Smith » 16-09-2009 17:26:35

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

да, она самая.

А с чем соединять oni. файлы??? А то я чё-то не то делаю...(

NiKiT@ » 17-09-2009 13:15:49

Люди помогите как сделать такие штуки

demos_kratos » 17-09-2009 14:50:10

Это не скриптирование, а редактирование ресурсов.
коноко мутант - у geyser'а. достать не представляется возможным.
2-е - ты имел ввиду прыжок с пушкой барабаса или смену текстур?
3-е - что именно хотелось бы увидеть? смену геометрии тела? (модели тела) или опять же ретекстурирование?

NiKiT@ » 17-09-2009 17:22:37

2-е-Я имел ввиду прыжок с пушкой барабаса,бег с пушкой барабаса и смену текстур

3-е я имел ввиду всё!!!

demos_kratos » 17-09-2009 18:48:52

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

смена текстур - просто поменяй ссылку на TRMA в ONCC. или создай свои ONCC и TRMA. так даже удобнее. как это сделать? спрашивай в личку или намного лучше в Yahoo Mesenger. там пошагово объясню.

смена геометрий - дело посложнее. тебе придётся скачать XSI Mod Tools, перевести 2 модели с одинаковым скелетом (коноко и фурия) в формат Collada DAE, запихнуть их обе в XSI, там уже удалить голову фурии и тело коноки, запарентовать шею фурии с головой Коноко, переместить голову на место, поставить модель по центру, сохранить в формате Collada DAE через Crosswalk, далее создать ONCC и TRMA для персонажа, запихнуть всё это в package для AEInstaller и установить. хотя всё намного, повторяю, намного легче чем это кажется. =)

NiKiT@ » 18-09-2009 11:50:47

а где находится ONCC???

NiKiT@ » 18-09-2009 12:36:29

вот я скачал

vitya » 18-09-2009 13:29:59

Люди потом когда очеридь дойдёт до меня, скажите мне пожалуйста как зделать в скриптах чтоб игра начиналась за другого игрока, потом как приминить анимации к другим игрокам и как вобще узнать названия анимаций+как зделоть чтоб муро или ещё ктонибудь быле как в ступоре, ну тоесть как на сортире сидели и как запритить определённые анимации!!!!!!!! Скажите пожалуйста!
Извиняюсь что всё время только спрашиваю просто решил некоторые вещи поподробней изучить!!!!!:)

demos_kratos » 18-09-2009 14:53:37

NiKiT@ написал(а):

а где находится ONCC???

я тебе что сказал, на счёт того, как это сделать?

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

как это сделать? спрашивай в личку или намного лучше в Yahoo Mesenger. там пошагово объясню.

NiKiT@ » 18-09-2009 17:57:34

Vitya.Чтобы начинать игру за другого игрока напиши в файле bsl с суффиксом level_logic вот это:
chr_set_class 0 и после нуля класс игрока за которого хочешь играть.Классы игроков можешь взять с http://ssg.oni2.net/subfold/charas/charas.htm
Это должно выглядеть примерно так:if (save_point eq 1)
        {
        my_save_point=1;   
        particle vent03 start
        ai2_spawn partner_cop_1
        ai2_spawn partner_cop_2
        ai2_spawn ambush_striker_1
        ai2_spawn ambush_striker_2
        ai2_spawn ambush_striker_3
        chr_delete Recep
        door_lock 1
        door_lock 4
        restore_game
        ai2_attack partner_cop_1 ambush_striker_1
        ai2_attack partner_cop_2 ambush_striker_3
        music_script_start();
        sleep 30
        set_objective_1
        chr_set_class 0 6
        }

vitya » 18-09-2009 18:13:43

NiKiT@ написал(а):

Vitya.Чтобы начинать игру за другого игрока напиши в файле bsl с суффиксом level_logic вот это:
chr_set_class 0 и после нуля класс игрока за которого хочешь играть.Классы игроков можешь взять с http://ssg.oni2.net/subfold/charas/charas.htm
Это должно выглядеть примерно так:if (save_point eq 1)
        {
        my_save_point=1;   
        particle vent03 start
        ai2_spawn partner_cop_1
        ai2_spawn partner_cop_2
        ai2_spawn ambush_striker_1
        ai2_spawn ambush_striker_2
        ai2_spawn ambush_striker_3
        chr_delete Recep
        door_lock 1
        door_lock 4
        restore_game
        ai2_attack partner_cop_1 ambush_striker_1
        ai2_attack partner_cop_2 ambush_striker_3
        music_script_start();
        sleep 30
        set_objective_1
        chr_set_class 0 6
        }

Спасибо выручил!

NiKiT@ » 18-09-2009 18:16:43

Так ты мне поможешь???Как Научить Май бегать с пухой Барабаса ?????

Шнайдер » 18-09-2009 18:17:23

Друг мой, АЕ ж есть

doktordulit » 18-09-2009 18:17:44

NiKiT@ написал(а):

Так ты мне поможешь???Как Научить Май бегать с пухой Барабаса ?????

Скачай последний эдишн.Там есть такая пушка.

NiKiT@ » 18-09-2009 18:19:14

Дайте мне ссылку ПЛИЗ!!!!И напишите как установить!!!!

Шнайдер » 18-09-2009 18:21:09

NiKiT@ написал(а):

Дайте мне ссылку ПЛИЗ!!!!И напишите как установить!!!!

http://mods.oni2.net/system/files/Edition-PC.zip

Установить очень легко,скачай, расскажу

doktordulit » 18-09-2009 18:21:49

Anniversary Edition - новый релиз, с графическим интерфейсом установки
Вот.Там все(инструкции) есть.

NiKiT@ » 18-09-2009 18:22:39

СПАСИБАААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=))))))))))))))))))))):D

Шнайдер » 18-09-2009 18:23:34

NiKiT@ написал(а):

СПАСИБАААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=))))))))))))))))))))):D

Э, не кричи так сильно, сначала установи без косяков

doktordulit » 18-09-2009 18:23:59

NiKiT@ написал(а):

СПАСИБАААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=))))))))))))))))))))):D

Все большие спасибы создателям эдишна.

NiKiT@ » 18-09-2009 18:26:06

БЛИИИИИН РЕБЯТ!!!!!НИ ЧЁ НЕ ПОЛУЧАЕТСЯ!!!!!А ВЫ МОЖЕТЕ ДАТЬ ГОТОВЫЙ ФАЙЛ?????

Шнайдер » 18-09-2009 18:27:41

NiKiT@ написал(а):

БЛИИИИИН РЕБЯТ!!!!!НИ ЧЁ НЕ ПОЛУЧАЕТСЯ!!!!!А ВЫ МОЖЕТЕ ДАТЬ ГОТОВЫЙ ФАЙЛ?????

ЧТо за проблема? в чем именно она выражается

Freestyler » 18-09-2009 18:31:09

NiKiT@ написал(а):

НИ ЧЁ НЕ ПОЛУЧАЕТСЯ!!!!!

Для начала - действуй без CapsLock. Некрасиво это.
И далее - распиши подробно, по пунктам свои действия, начиная от того, как ты зашёл по ссылке, до собственно, самой проблемы.
Только тогда мы, может быть, и поймём, в чём твой промах. =)

NiKiT@ » 18-09-2009 18:31:32

ДА БЛИН Я ВАЩЕ НИ ЧЁ НЕ ПОНИМАЮ!!!!
ВОТ ПЕРЕВЁЛ,НО ВСЁРАВНО НИ ЧЁ НЕ ПОЛУЧАЕТСЯ!!!!=(

Седьмой Anniversary Edition
Релиз июля 2009 года

О А.Е.
Седьмой Anniversary Edition ( "Edition" или "AE" для краткости) представляет собой моддинг рамки и набор модов для игры Они действий, выпущенный в 2001 году. Вам необходимо розничной версии Они играть Edition (пока еще). Полный комплект документации для данной версии можно найти на http://wiki.oni2.net/AE.

Вам также понадобится. NET установлен, если вы используете Windows, или моно установлен, если вы используете Mac, для того, чтобы установка А.Е. к работе. Нажмите здесь, если вам нужно. NET, или здесь (OS X 10.4) или здесь (OS X 10.3) Если Вам нужна моно.


Установка
Издание не заменить существующую установку игры. Чтобы установить, просто место "издание" папки внутри папки "Они", а затем запустите программу установки. Вам придется глобализации перед установкой модов в первый раз, что может занять до получаса. Примечание: На данном этапе, А. Е. Они не воспроизводиться. Вы должны установить хотя бы один моделирование прежде чем вы сможете сыграть копия Они внутри "Edition". Просто установите флажки из моды вы хотите, и нажать кнопку "Установить". Этот процесс может занять до 5 минут, но будет работать быстрее на большинстве компьютеров.

Для воспроизведения А.Е., вы открываете приложение Они внутри "издание" папки и играть в "Ваниль" (unmodded) Они, вы открываете первоначальной заявке Они в папке "Они" *. Если вы не видите Изменения Главное меню, который говорит: "Anniversary Edition", вы не играете Edition. Удачи! Для получения поддержки посетите http://oni.bungie.org/community/forum.

* Вот как это работает и для пользователей Windows. Примечание для пользователей Mac: применение Они помнят последнюю активную установку Они. Это означает, что открытие Oni.app в одном месте может загрузить установку Они в другую папку. Установщик автоматически изменяет предпочтений Они на использование Edition установки при глобализации. Это означает, что открытие Oni.app в ванили установки, будет также загрузить Edition. Для переключения между активным установок, просто изменить название GameDataFolder в активную установку Они и запускать любые копии Oni.app. Он будет просить для розничной установке Они, после чего вы переходите к установке Они по своему выбору (в папку, содержащую GameDataFolder) и нажмите кнопку "OK". Не забудьте посмотреть на модифицированный экран главного меню скажите ли вы играете или оригинальные Они Они А.Е.. Инструмент должен быть скоро сделать этот процесс легче!


Кредиты Anniversary Edition
EDT: BGI войска, дополнительно ONIrules оружия: Дополнительное оружие
Гейзер: создатель Издания Парадокс: Документирование Они
Gumby: инсталлятор и Рамочная RossyMiles: Daodan DLL порта C
Iritscen: Installer (Mac) SFeLi: Оригинал Daodan DLL
Проигравший: улучшена анимация и А. И. SSG: Документирование Они
Нео: OniSplit, документирование Они, техническая поддержка

И благодаря Bungie для принятия Они!

Шнайдер » 18-09-2009 18:32:49

Только не здесь, а в теме помогите (((

demos_kratos » 18-09-2009 18:33:21

"Сказать 'не работает' значит ничего не сказать" ?Сергей Geyser Мешков.

Назови симптомы. Что именно ты делал прежде чем придти к выводу, что "НИ ЧЁ НЕ ПОЛУЧАЕТСЯ!!!!!"?
Скинь файлы %Oni%\Edition\install\install.log и %Oni%\Edition\startup.txt.

Делаю замечание, сделанное мной когда-то Вите. Я понимаю, что ты трепетен к игре. Но не надо из-за этого наполнять форум лишними знаками препинания. Не стоит кидать экскременты на вентилятор. =) (не в обиду сказано, просто прими к сведению)

EDIT: вот это бум =\
EDIT2: надмозгом пользоваться не стоит

Шнайдер » 18-09-2009 18:37:10

Приходи на тему Помогите и там ВСЕ напиши подробно, у нас есть опыт помощи(хотя б в проблеме разберемся)

NiKiT@ » 18-09-2009 18:37:18

Скинул что дальше???

demos_kratos » 18-09-2009 18:45:55

У меня появился вопрос, которому позавидует даже Капитан Очевидность: Куда?

NiKiT@ » 18-09-2009 18:50:31

в папку с игрой

Шнайдер » 18-09-2009 18:51:20

NiKiT@ написал(а):

в папку с игрой

Геноссе, на форум скинуть надо

Гордон Фриман » 19-09-2010 14:03:13

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

Народ пожалуйста подскажите:

1. Как создать свой уровень? Т.е. скажем взять 2-ой уровень и включить его в список уровней как новый (другой), скажем например levle20. Чтоб после 19 уровня загрузился 2-ой уровень, названный 20-ым=)

2. У каждого персонажа есть в уровнях свои имена и их можно телепортировать в разные места, а с объектами такое можно делать? Скажем взять тачку из штаба TCTF и перетащить её на улицу и.т.д.

3. Создал коноку (бот) с АИ в 3-ем уровне все норм.... Бегает, стреляет, лупит всех... Создал по такому-же принципу в 19-уровне коноку; но бот стоит и ничего не делает, как-будто АИ обделён.... В чём проблема или что мне нужно прописать в характеристиках при создании бота??

Всё всё всё есть на форуме! А с этими задачами надо повозиться... Здесь и скрипты и пакер... Короче исследуй форум в поиске ответов!

demos_kratos » 08-10-2010 21:09:44

Smith

1. Подобные вещи еще не во власти простых смертных, как вы. Не заморачивайся, это слишком много сложной и нудной работы.

2. Нет нельзя. По крайней мере в процессе игры это невозможно.

3. Здесь все очевидно. У тебя скорее всего по какой-то причине профиль ИИ, который ты выбрал для бота не глобализован. В 14 главе движок не видит ИИ и прописывает боту болезнь Альцгеймера. Глобализуй ресурсы и будет тебе счастие.

Smith » 09-10-2010 08:38:28

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

Smith

1. Подобные вещи еще не во власти простых смертных, как вы. Не заморачивайся, это слишком много сложной и нудной работы.

2. Нет нельзя. По крайней мере в процессе игры это невозможно.

3. Здесь все очевидно. У тебя скорее всего по какой-то причине профиль ИИ, который ты выбрал для бота не глобализован. В 14 главе движок не видит ИИ и прописывает боту болезнь Альцгеймера. Глобализуй ресурсы и будет тебе счастие.

Спасобо за ответы! :) Вот ещё, в ресурсах BINACJBOFurniture прописаны объекты, как я понял (компы, мебель, декорации...) как ими панипулировать, как добавить или удалить эти объекты??

не во власти простых смертных

а ты простой смертный или же избранный?))

P.S. Кстати демонс, ты не знаешь где Гейсер тусит? Что-то он на форуме не появляется...

demos_kratos » 09-10-2010 21:15:59

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

как ими панипулировать, как добавить или удалить эти объекты??

Файлы FURN - это архаизмы, остатки разработки. Все объекты впаяны в AKEV файл, который является моделью уровня, а его редактировать - это не для смертных, как я уже говорил.

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

а ты простой смертный или же избранный?))

Да я вообще богоравный =)

NiKiT@ » 10-10-2010 05:23:32

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

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

как ими панипулировать, как добавить или удалить эти объекты??

Файлы FURN - это архаизмы, остатки разработки. Все объекты впаяны в AKEV файл, который является моделью уровня, а его редактировать - это не для смертных, как я уже говорил.

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

а ты простой смертный или же избранный?))

Да я вообще богоравный =)

Ооо)) Я FURN вообще не понял как и чё) Зато всё просто в файлах ONLV*.oni

Smith » 10-10-2010 11:51:21

Ооо)) Я FURN вообще не понял как и чё) Зато всё просто в файлах ONLV*.oni

А эт чё за файлы?

NiKiT@ » 10-10-2010 14:20:32

это файлы ммм...так сказать с 3д моделями) они вызываются коммандой : obj_create [index] [more index]

Elenka » 03-02-2011 05:19:04

Здрасте)) У меня вопрос: Как победить Муро? :mad:Он уже превратился в монстра.
И ещё один вопрос:D: Какой самый последний уровень?=|

Гордон Фриман » 03-02-2011 07:49:28

Как победить муро????????)))))))))))))
Хах, ждешь пока исчезнет его поле и бьешь... что ещё сказать...
А самый последний эт 14-ый.

Добавлено спустя 50 секунд:
И помоему это не совсем скриптовый вопрос...

Гордон Фриман » 05-02-2011 16:38:55

Не подскажите, как сделать, что бы девушка Recep в начале 2-го уровня не садилась наколени и тряслась от страха, а при назначении ей команды синдиката все-таки дралась?

demos_kratos » 05-02-2011 20:07:28

Поменяй в ее файле BINA/OBJC/CHAR MeleeID, CombatID, NeutralID и Team на желаемые.

Гордон Фриман » 06-02-2011 15:14:13

Попробую, но у меня получилось это обойти)

NiKiT@ » 07-02-2011 11:08:13

Гордон Фриман написал(а):

Попробую, но у меня получилось это обойти)

Ну тогда если чё сделай скр коммандами -

Код:

 ai2_noncombatant(Recep, 0);
 ai2_changeteam(Recep,Konoko);
Гордон Фриман » 08-02-2011 13:20:55

Ещё вопрос: вот в 5 главе в самом начале выбегает страйкер. Я присвоил ему другой класс, и по правильной номерации все остальным. Но поскольку он и остальные спавнятся не одновременно, то класс меняется только у него. Как сделать что бы все его изменили?

Гордон Фриман » 09-02-2011 05:57:39

Сделал это  командой ai2_spawnall

MrConnery » 01-03-2011 11:15:29

Добрый день

все наверняка помнят забавное видео, где бойцы TCTF устраивают для Гриффина рождественский танец.
(на всякий случай http://www.youtube.com/watch?v=XoE3cBDOAhQ)

автор утверждает, что демонстрирует "pure scripting". меня интересует их последнее движение. чтобы заставить таких персонажей выполнять анимацию BARABpowerup (это же она, я не ошибаюсь?), мне пришлось сменить им CombatID на 9 и в ONCC переписать название TRAC на Барабаса . Это входит в понятие "pure scripting" или есть какое-то простое решение, до которого я не могу додуматься ?

Мih@ » 01-03-2011 11:27:10

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

есть какое-то простое решение

chr_animate [ai_name:string | script_id:int] anim_name:string [num_frames:int | ] [interp_frames:int | ]
для анимаций, скажем так, состояний (переменного времени) нужно прямо указывать длительность. например,
chr_animate Griffin BARABpowerup 600

MrConnery » 01-03-2011 11:47:30

ах ок, как всё просто-то оказалось..
большое спасибо.
п.с. хороший у Вас учебник.

Мih@ » 01-03-2011 11:59:16

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

п.с. хороший у Вас учебник.

ога, как раз сейчас вот этот нюанс с chr_animate туда вписал. +) если б не катастрофическое количество неточностей, неполнот и просто белых пятен, было бы лучше, почаще б такие актуальные вопросы возникали.