Исправление вылета при стрельбе в Бармена

Материал из Mod Wiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 22:14, 16 декабря 2009 (править)
Cjayho (Обсуждение | вклад)

← К предыдущему изменению
Версия 22:17, 16 декабря 2009 (править) (отменить)
Cjayho (Обсуждение | вклад)

К следующему изменению →
Строка 162: Строка 162:
</pre> </pre>
 +
 +
=Авторы= =Авторы=

Версия 22:17, 16 декабря 2009

Содержание

Предыстория

При создании своего мода я обнаружил что если в Бармена стрелять, либо если монстр тронет его, то через некоторое время происходит вылет без лога. Проверено на патче 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


Авторы

Статья создана:

Личные инструменты