Русскоязычный форум поклонников игры «Они» от Bungie
elex написал(а):
подскажите как таймер заставить работать? и как его выключить?
вообще-то в оппосте пунктом 2.8 всё что нужно написано. +)
для тестов можно начать с более лаконичного варианта:func void main(void)
{
if (save_point eq 0) timer_start 10 lose
}
во-первых, для проверки загруженного сейвпоинта используется переменная save_point
(sic!). my_save_point - это просто традиционно используемое разработчиками название переменной для разных скриптовых целей.
во вторых, на всякий случай, start - это тоже просто традиционная функция для дефолтных скриптов. изначально таковой не существует. )
отключается таймер или по завершении отсчёта, или по timer_stop
, к примеру:func void main(void)
{
if (save_point eq 0)
{
timer_start 5 lose
fork waitforanim
}
sleep 360
win
}
func void waitforanim(void)
{
chr_wait_animation 0 KONCOMkick_heavy
timer_stop
}
Оффлайн
Мih@ , шикарно, работает именно так как нужно, отбрасывает в точку появления, огромное спасибо. А счётчик времени(просто считает затраченное время) можно сделать?
Добавлено спустя 1 минуту 33 секунды:
я уровень5 the airport part deux ковыряю, там нет ничерта кроме скайбокса, с существующими уровнями пока не могу запихать обратно сохранив координаты(руки кривые у меня)
Оффлайн
elex написал(а):
А счётчик времени(просто считает затраченное время) можно сделать?
чтобы он считал также, как таймер, но в обратную сторону - вряд ли. можно сделать просто счётчик и выводить циферки обычным dmsg. например:var bool count_stop = 0;
var int count_var = 0;
func void main(void)
{
fork counting(60);
sleep 1800
count_stop = 1
}
func void counting(int count_step)
{
sleep(count_step);
if (!count_stop)
{
count_var = count_var + 1
dmsg_int(count_var);
fork counting(count_step);
}
}
func void dmsg_int(int messaga)
{
if (messaga eq 0) dmsg "0"
if (messaga eq 1) dmsg "1"
if (messaga eq 2) dmsg "2"
if (messaga eq 3) dmsg "3"
if (messaga eq 4) dmsg "4"
if (messaga eq 5) dmsg "5"
if (messaga eq 6) dmsg "6"
if (messaga eq 7) dmsg "7"
if (messaga eq 8) dmsg "8"
if (messaga eq 9) dmsg "9"
if (messaga eq 10) dmsg "10"
if (messaga eq 11) dmsg "11"
if (messaga eq 12) dmsg "12"
if (messaga eq 13) dmsg "13"
if (messaga eq 14) dmsg "14"
if (messaga eq 15) dmsg "15"
if (messaga eq 16) dmsg "16"
if (messaga eq 17) dmsg "17"
if (messaga eq 18) dmsg "18"
if (messaga eq 19) dmsg "19"
if (messaga eq 20) dmsg "20"
if (messaga eq 21) dmsg "21"
if (messaga eq 22) dmsg "22"
if (messaga eq 23) dmsg "23"
if (messaga eq 24) dmsg "24"
if (messaga eq 25) dmsg "25"
if (messaga eq 26) dmsg "26"
if (messaga eq 27) dmsg "27"
if (messaga eq 28) dmsg "28"
if (messaga eq 29) dmsg "29"
if (messaga eq 30) dmsg "30"
if (messaga eq 31) dmsg "31"
if (messaga eq 32) dmsg "32"
if (messaga eq 33) dmsg "33"
if (messaga eq 34) dmsg "34"
if (messaga eq 35) dmsg "35"
if (messaga eq 36) dmsg "36"
if (messaga eq 37) dmsg "37"
if (messaga eq 38) dmsg "38"
if (messaga eq 39) dmsg "39"
if (messaga eq 40) dmsg "40"
if (messaga eq 41) dmsg "41"
if (messaga eq 42) dmsg "42"
if (messaga eq 43) dmsg "43"
if (messaga eq 44) dmsg "44"
if (messaga eq 45) dmsg "45"
if (messaga eq 46) dmsg "46"
if (messaga eq 47) dmsg "47"
if (messaga eq 48) dmsg "48"
if (messaga eq 49) dmsg "49"
if (messaga eq 50) dmsg "50"
if (messaga eq 51) dmsg "51"
if (messaga eq 52) dmsg "52"
if (messaga eq 53) dmsg "53"
if (messaga eq 54) dmsg "54"
if (messaga eq 55) dmsg "55"
if (messaga eq 56) dmsg "56"
if (messaga eq 57) dmsg "57"
if (messaga eq 58) dmsg "58"
if (messaga eq 59) dmsg "59"
if (messaga eq 60) dmsg "60"
if (messaga eq 61) dmsg "61"
if (messaga eq 62) dmsg "62"
if (messaga eq 63) dmsg "63"
if (messaga eq 64) dmsg "64"
if (messaga eq 65) dmsg "65"
if (messaga eq 66) dmsg "66"
if (messaga eq 67) dmsg "67"
if (messaga eq 68) dmsg "68"
if (messaga eq 69) dmsg "69"
if (messaga eq 70) dmsg "70"
if (messaga eq 71) dmsg "71"
if (messaga eq 72) dmsg "72"
if (messaga eq 73) dmsg "73"
if (messaga eq 74) dmsg "74"
if (messaga eq 75) dmsg "75"
if (messaga eq 76) dmsg "76"
if (messaga eq 77) dmsg "77"
if (messaga eq 78) dmsg "78"
if (messaga eq 79) dmsg "79"
if (messaga eq 80) dmsg "80"
if (messaga eq 81) dmsg "81"
if (messaga eq 82) dmsg "82"
if (messaga eq 83) dmsg "83"
if (messaga eq 84) dmsg "84"
if (messaga eq 85) dmsg "85"
if (messaga eq 86) dmsg "86"
if (messaga eq 87) dmsg "87"
if (messaga eq 88) dmsg "88"
if (messaga eq 89) dmsg "89"
if (messaga eq 90) dmsg "90"
if (messaga eq 91) dmsg "91"
if (messaga eq 92) dmsg "92"
if (messaga eq 93) dmsg "93"
if (messaga eq 94) dmsg "94"
if (messaga eq 95) dmsg "95"
if (messaga eq 96) dmsg "96"
if (messaga eq 97) dmsg "97"
if (messaga eq 98) dmsg "98"
if (messaga eq 99) dmsg "99"
if (messaga > 99) dmsg "IT'S OVER 9000"
}
Оффлайн
Скажите плиз имя мелодии для скрипта так называемых душераздирающих скрипочек из 12 уровня.
Оффлайн
Большое спасибо Может тогда расскажете как пользоваться командой man BINA/CHAR; man chr_wait_health
Оффлайн
Гордон Фриман написал(а):
Большое спасибо
а то, всегда рады помочь.
Гордон Фриман написал(а):
Может тогда расскажете как пользоваться командой man BINA/CHAR; man chr_wait_health
берёшь моск, читаешь вот это. желательно тщательно и несколько раз, но особенное внимание обратить вот эти строки:
0x0C8 script function called when character is spawned
0x0E8 script function called when character dies (health reaches 0); can work multiple times
0x108 script function called when character notices an enemy; works only once
0x128 alarm function; never used in Oni, it is called when character is alarmed
0x148 script function called when character is hurt for the first time; works only once
0x168 script function called when character is "defeated" (health reaches 1); works only once
0x188 script function called when character runs out of ammo (reloads a weapon with the last clip/cell); works only once, and the character must have the ammo at spawn-time
0x1A8 nopath function, some exotic script function call ("should" be called when a character has trouble pathfinding, but isn't)
если просветление не достигнуто - читаешь первый пост, особенно пункты 4.4 и 1.2.3. вслух, с выражением.
учишься задавать вопросы в положенном месте, а не где попало.
Оффлайн
Мih@ написал(а):
учишься задавать вопросы в положенном месте, а не где попало.
А мне казалось, что про скрипты нужно именно здесь вопросы задавать...
Оффлайн
Тогда где, в теме кто где живет?
Оффлайн
Оффлайн
Окей кэп
Оффлайн
Гордон Фриман написал(а):
Окей кэп
ГОРДАн ФРиМен ! кАК УБИТЬ В HL боследнего боса???
Оффлайн
Молча
Оффлайн
Несколько деталей про планировщик...fork dmsg "test"
– работает, но число аргументов не проверяетfork chr_wait_animation 0 boo
– валится: SLrSchedule_Function_Engine банально передаёт NULL вместо UUtBool * defer, вызывая функцию
перед форком (пытаясь его избежать)schedule chr_wait_animation(0, "boo") at 0
– валится по тому же поводу, что и предыдущая; а вот с ненулевой задержкой (at 1
) уже работаетschedule dmsg("test") at 100
– работает, как и должноschedule did_kill_griffen at 1
– валится, как и любая другая встроенная функция, возвращающая не void (fork did_kill_griffen, естественно, тоже).schedule dmsg("test") repeat 3 every 100
Несмотря на проблемы с at 0
выше, выражение every 0
работает, потому что движок не может избежать создания задачи из-за наличия repeat.
Кто помнит что-нибудь ещё, связанное с wait-функциями, fork, schedule, repeat и т. п.? Пока лимиты в расчёт не берём, и про игнор repeat
вне выражения schedule я знаю.
Оффлайн
Привет! слушай, как то пытался разобраться во всем этом, но терпения не хватило. не можешь подсказать, есть ли возможность просто закрепить эффект от кода carousel (замедленный режим) за нажатием какой нибудь одной кнопки?
Оффлайн
Worm написал(а):
Привет! слушай, как то пытался разобраться во всем этом, но терпения не хватило. не можешь подсказать, есть ли возможность просто закрепить эффект от кода carousel (замедленный режим) за нажатием какой нибудь одной кнопки?
Я точно знаю что можно забиндить приемы на отдельные кнопки. Только это не слишком просто и проще делать их самому (я это узнавал еще лет 5-6 назад, когда на старой убогой клавиатуре не мог сделать полумесяц). А вот закреплять коды... даже не знаю.
Отредактировал(а) Cfif (07-12-2013 17:11:07)
Оффлайн
Добавлю к основному списку эти команды. Помимо имеющихся, эти самые нужные из всех.
chr_freeze [персонаж] [1 или 0], где при 1 "отупляет" персонажа. 0 возвращает ум. Или chr_neutral [персонаж] [1 или 0]
chr_inv_reset [персонаж] - очищает инвентарь.(оружие, гипо, патроны и т.д.)
ai2_chump [персонаж] - создает персонажа для поиска пути.
ai2_chump_stop=1 - останавливает его
ai2_noncombatant [персонаж] [1 или 0] - при 0 персонаж умеет драться, а при 1 начинает вести себя как цивилы
ai2_reset - возвращает всем персонажам на уровне их базовые настройки
ai2_setalert [персонаж] [alert] - устанавливает уровень встревоженности. alert может быть:lull-спокойствие low-низкий medium-средний high-высокий combat-боевой
chr_disable_melee [1 или 0] - то же самое, что и чит canttouchthis, но броски/разоружения/захваты делать можно + при обычных ударах(не бросках и т.д. ) не наносится урон
chr_enable_collision [1 или 0] - при 0 все персонажи станут нематериальны
chr_full_health [персонаж] - повышает здоровье до планки. У каждого персонажа своя "планка"
chr_poison ([персонаж], [урон], [интервал], [начальный интервал]) - отнимает здоровье в зависимости от параметров
chr_weapon_immune [персонаж] - делает персонажа невосприимчивым к оружию
gs_show_corpses [1 или 0] - Показывает или скрывает трупы. При 1 показывает, при 0 нет. Но только те трупы, которые есть на уровне с самого начала
cutscene_sync [mark/on/of] - маркирует точку в катсцене
door_ignore_locks - разблокирует все двери
reset_mechanics - сбрасывает все на уровне (триггеры, туррели, консоли, и т д...) в исходное состояние
chr_draw_weapon [1 или 0] - при 1 показывает оружие, при 0 нет
ai2_report [персонаж] - показывает информацию о персонаже(job, current etc) или ai2_report_verbose [персонаж]
gs_show_particles [1 или 0] - при 1 показывает все частицы, при 0 скрывает
p3_startall - стартует все уровневые частицы
p3_stopall - останавливает все уровневые частицы
Отредактировал(а) Глебс (08-11-2014 11:36:48)
Оффлайн