Исправление вылета при стрельбе в Бармена
Материал из Mod Wiki.
Версия 22:00, 16 декабря 2009 (править) Cjayho (Обсуждение | вклад) ← К предыдущему изменению |
Текущая версия (15:54, 12 мая 2011) (править) (отменить) ILdarKOrotkov (Обсуждение | вклад) (→Решение) |
||
(5 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | [[Участник:Cjayho|Cjayho]] 21:00, 16 декабря 2009 (EET) | ||
- | |||
==Предыстория== | ==Предыстория== | ||
Строка 7: | Строка 5: | ||
==Причина вылета== | ==Причина вылета== | ||
- | Вылет происходит при переключении Бармена | + | Вылет происходит при переключении Бармена из режима ведения боя в обычный, точнее не в сам момент, а в момент окончания анимации когда он прячет оружие за спину. |
==Решение== | ==Решение== | ||
- | + | Наиболее простым решением было отключить вообще любую реакцию на боевые раздражители. В принципе, также как и Сидоровичу, ему эта реакция ни к чему - он все равно бессмертный. Поэтому открываем файл | |
+ | |||
+ | gamegata\config\scripts\[[bar_barman.ltx]] | ||
+ | |||
+ | и в его содержимое добавляем строки, которые в листинге ниже отмечены комментарием <u>;добавляем строку</u>. | ||
+ | |||
+ | |||
- | < | + | <source lang="ini"> |
[logic] | [logic] | ||
Строка 46: | Строка 50: | ||
danger = danger_condition@barman | danger = danger_condition@barman | ||
- | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | + | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, |
+ | |||
+ | {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | ||
Строка 70: | Строка 76: | ||
danger = danger_condition@barman | danger = danger_condition@barman | ||
- | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | + | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, |
+ | |||
+ | {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | ||
Строка 94: | Строка 102: | ||
danger = danger_condition@barman | danger = danger_condition@barman | ||
- | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | + | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, |
+ | |||
+ | {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | ||
Строка 118: | Строка 128: | ||
danger = danger_condition@barman | danger = danger_condition@barman | ||
- | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | + | on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, |
+ | |||
+ | {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole | ||
Строка 157: | Строка 169: | ||
combat_ignore_cond = always | combat_ignore_cond = always | ||
- | </ | + | </source> |
+ | |||
+ | =Авторы= | ||
+ | |||
+ | Статья создана: | ||
+ | |||
+ | *[[Участник:Cjayho|Cjayho]] | ||
+ | |||
+ | [[Категория:Статьи участников]] |
Текущая версия
Содержание |
Предыстория
При создании своего мода я обнаружил что если в Бармена стрелять, либо если монстр тронет его, то через некоторое время происходит вылет без лога. Проверено на патче 1.004, который является весьма популярным у модостроителей. Довольно долгое гугление результатов не дало, потому пришлось проблему решать самому. Сами понимаете, что вылеты без лога - вещь вообще трудноисправимая, и на решение у меня ушло довольно много времени. Посему, чтобы остальным мододелам, если они столкнутся с этой проблемой, не изобретать велосипед заново, я и хочу описать решение здесь.
Причина вылета
Вылет происходит при переключении Бармена из режима ведения боя в обычный, точнее не в сам момент, а в момент окончания анимации когда он прячет оружие за спину.
Решение
Наиболее простым решением было отключить вообще любую реакцию на боевые раздражители. В принципе, также как и Сидоровичу, ему эта реакция ни к чему - он все равно бессмертный. Поэтому открываем файл
gamegata\config\scripts\bar_barman.ltx
и в его содержимое добавляем строки, которые в листинге ниже отмечены комментарием ;добавляем строку.
[logic] active = walker@at_hole combat_ignore = combat_ignore trade = misc\trade_barman.ltx inv_max_weight = 10000 [walker@at_hole] path_walk = bar_barman_hole_walk path_look = bar_barman_hole_look def_state_standing = barman_wait_free def_state_moving1 = barman_walk_free def_state_moving2 = barman_walk_free def_state_moving3 = barman_walk_free combat_ignore_cond = always ; добавляем строку meet = meet@at_hole danger = danger_condition@barman on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole [walker@zone_1] path_walk = barman_zone_1_walk path_look = barman_zone_1_look def_state_standing = barman_wait_free def_state_moving1 = barman_walk_free def_state_moving2 = barman_walk_free def_state_moving3 = barman_walk_free combat_ignore_cond = always ; добавляем строку meet = meet@at_hole danger = danger_condition@barman on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole [walker@zone_2] path_walk = barman_zone_2_walk path_look = barman_zone_2_look def_state_standing = barman_wait_free def_state_moving1 = barman_walk_free def_state_moving2 = barman_walk_free def_state_moving3 = barman_walk_free combat_ignore_cond = always ; добавляем строку meet = meet@at_hole danger = danger_condition@barman on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole [walker@zone_3] path_walk = barman_zone_3_walk path_look = barman_zone_3_look def_state_standing = barman_wait_free def_state_moving1 = barman_walk_free def_state_moving2 = barman_walk_free def_state_moving3 = barman_walk_free combat_ignore_cond = always ; добавляем строку meet = meet@at_hole danger = danger_condition@barman on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2, {=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole [meet@at_hole] meet_state = 2|barman_talk_free@bar_bar_barmen_hello meet_state_wpn = 2|barman_talk_free@bar_bar_barmen_hello danger = danger_condition@barman victim = 2|actor victim_wpn = 2|actor use = true use_wpn = true meet_dialog = bar_bar_barmen_start combat_ignore_cond = always ; добавляем строку [danger_condition@barman] ignore_distance = 0 [combat_ignore] combat_ignore_cond = always
Авторы
Статья создана: