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

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

(Различия между версиями)
Перейти к: навигация, поиск
Версия 21:56, 16 декабря 2009 (править)
Cjayho (Обсуждение | вклад)
(Новая: ==Предыстория== При создании своего мода я обнаружил что если в Бармена стрелять, либо если монстр тро...)
← К предыдущему изменению
Текущая версия (15:54, 12 мая 2011) (править) (отменить)
ILdarKOrotkov (Обсуждение | вклад)
(Решение)
 
(6 промежуточных версий не показаны.)
Строка 5: Строка 5:
==Причина вылета== ==Причина вылета==
-Вылет происходит при переключении Бармена в режим ведения боя, точнее не в сам момент, а в момент когда он прячет оружие за спину.+Вылет происходит при переключении Бармена из режима ведения боя в обычный, точнее не в сам момент, а в момент окончания анимации когда он прячет оружие за спину.
==Решение== ==Решение==
-Открываем файл gamegata\config\scripts\bar_barman.ltx и в его содержимое добавляем строки, которые в листинге выше отмечены комментарием <i>;добавляем строку</i>.+Наиболее простым решением было отключить вообще любую реакцию на боевые раздражители. В принципе, также как и Сидоровичу, ему эта реакция ни к чему - он все равно бессмертный. Поэтому открываем файл
-<pre>+gamegata\config\scripts\[[bar_barman.ltx]]
 + 
 +и в его содержимое добавляем строки, которые в листинге ниже отмечены комментарием <u>;добавляем строку</u>.
 + 
 + 
 + 
 +<source lang="ini">
[logic] [logic]
Строка 44: Строка 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
Строка 68: Строка 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
Строка 92: Строка 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
Строка 116: Строка 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
Строка 155: Строка 169:
combat_ignore_cond = always combat_ignore_cond = always
-</pre>+</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

Авторы

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

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