Перейти к контенту

Рекомендуемые сообщения

Так ведь есть же в ТЧ в оригинале:

--' Функция вызывается для каждого предмета, если вернет false то предмет удалится.

function keep_item(npc, item)

...

local item_id = item:id()

local item_in_slot = npc:item_in_slot(1)

if item_in_slot ~= nil and

item_in_slot:id() == item_id

then

item:unload_magazine()

--' Тут надо уменьшить кондишн оружия

item:set_condition((math.random(15)+75)/100)

return true

end

item_in_slot = npc:item_in_slot(2)

if item_in_slot ~= nil and

item_in_slot:id() == item_id

then

item:unload_magazine()

--' Тут надо уменьшить кондишн оружия

item:set_condition((math.random(15)+75)/100)

return true

end

...

end

 

А, если дело касается раненных, то тут по умолчанию нету функции.

Без извращений не получится, т.к выкидывание оружия скорее всего происходит через анимацию и state_mgr.

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

 

Можешь глянуть xr_wounded.

Изменено пользователем Cyclone

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

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

Ссылка на комментарий

Ulman, вот так должна выглядеть таблица в файле xrs_medic.script (чистая версия, с добавлением одного "больного"):

local excluded_npcs={
    esc_fox=true,
    esc_vagon_wounded=true,
    gar_bandit_stroyka3=true,
    gar_wounded_bandit=true,
    val_sos_wounded=true,
    val_escort_bandit_halfdead=true,
    vasya_pupkin = true
}

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

Ссылка на комментарий

Ulman, в спавне, когда спавнишь :) Смотри:

section_name = stalker_sakharov
name = yan_stalker_sakharov
position = 29.4788303375244,-11.6650133132935,-272.279113769531
direction = 0,-1.57079637050629,0

name - это и есть имя.

Ссылка на комментарий

Ну вот я так и думал, только это не помогает, его весь бар сбегается лечить. Может в его "свойствах" что то не так?

Вот его секция спавна:

[13050]
; cse_abstract properties
section_name = stalker
name = bar_bar_psih
position = 115.516822814941,-5.1480016708374,11.9383907318115
direction = 0,0,0

; cse_alife_trader_abstract properties
money = 5000
character_profile = bar_psih

; cse_alife_object properties
game_vertex_id = 1239
distance = 4.19999980926514
level_vertex_id = 33756
object_flags = 0xfffffff7
custom_data = <<END
[smart_terrains]
none = true


[logic]
cfg = scripts\bar_psih.ltx
END
story_id = 517

; cse_visual properties
visual_name = actors\stalker_zombi\stalker_zombie4

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 5
g_group = 27
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 115.516822814941,-5.1480016708374,11.9383907318115
upd:o_model = 0
upd:o_torso = 0,0,0
upd:g_team = 0
upd:g_squad = 5
upd:g_group = 27

; cse_alife_monster_abstract properties
base_out_restrictors = bar_restrictor

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 2,1,1,0,2
predicate4 = 1,2,2,2

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties

 

И вот его логика:

[logic]
active = walker@start

[walker@start]
path_walk = bar_bar_psih_walk
path_look = bar_bar_psih_look
wounded = wounded@pre_medkit
meet = meet@pre_medkit
on_info = {+bar_psih_nopain} walker@nopain

[meet@pre_medkit]
use = true
use_wpn = true

[wounded@pre_medkit]
hp_state = 100|psycho_pain@bar_psycho_pain
hp_state_see = 100|psycho_pain@bar_psycho_pain
psy_state = 0|psycho_pain@bar_psycho_pain
hp_victim = 100|nil
hp_cover = 100|false
hp_fight = 100|false
help_dialog = nil


[walker@nopain]
path_walk = bar_bar_psih_walk
path_look = bar_bar_psih_look
wounded = wounded@nopain
meet = meet@nopain
on_info = {+bar_psih_suicide} walker@suicide

[wounded@nopain]
hp_state = 100|psycho_pain@nil
hp_state_see = 100|psycho_pain@nil
psy_state = 0|psycho_pain@nil
hp_victim = 100|nil
hp_cover = 100|false
hp_fight = 100|false
help_dialog = nil

[meet@nopain]
use = true
use_wpn = true
meet_dialog = bar_bar_psih_start_gorbun


[walker@suicide]
path_walk = bar_bar_psih_walk
path_look = bar_bar_psih_look
wounded = wounded@suicide

[wounded@suicide]
hp_state = 100|psycho_shoot@bar_psycho_goodluck
hp_state_see = 100|psycho_shoot@bar_psycho_goodluck
psy_state = 0|psycho_shoot@bar_psycho_goodluck
hp_victim = 100|nil
hp_cover = 100|false
hp_fight = 100|false
synsound = psycho_shoot@bar_psycho_goodluck
help_dialog = nil

 

Может тут что то намудрил?

 

Ничего там не намудрили. Просто он у тебя и правда псих. Дело в том, что его логика целиком опирается на схему wounded, а это схема раненого, только написанная под определенный сценарий, если тебе нужны его анимации суицида и т.д. переписывай логику, если нет - просто убери эту схему от туда. ColR_iT

 

Добавлено через 251 мин.:

А на что тогда можно заменить, а то wounded можно допустим заменить на анимки, а вот что с суицидом делать?

 

Добавлено через 325 мин.:

Ребята, полный ахтунг, все мои предыдущие вопросы могут подождать, но этот нет, короче, поймал я безлоговый вылет, вот последние строки в логе:

! Unknown command:  *INFO:TRADE [bar_dolg_ivancov]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_dolg_ivancov]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_4]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_4]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_bar_psih]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_bar_psih]: sell condition = generic_sell

Помогите пожалуйста, заранее бесконечно-огромное спасибо.

Изменено пользователем ColR_iT
Ссылка на комментарий

Торговлю трогал? Попробуй на всякий пожарный снести все trade_ файлы временно.

В частности что то возможно связанное с психом, т.к он почему то последний.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

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

Ссылка на комментарий

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

! Unknown command:  *INFO:TRADE [bar_bar_psih]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_bar_psih]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_3]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_3]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:_bp: enable_scripts: object 'inventory_box4458' has NO external configuration file, using '<customdata>'
* Log file has been saved successfully!
! Unknown command:  *INFO:HIT SECTION [nil]
* Log file has been saved successfully!
! Unknown command:  *INFO:DEBUG: object 'inventory_box4458': activate_by_section: looking for section 'nil'
* Log file has been saved successfully!
! Unknown command:  *INFO:_bp: reset_generic_schemes_on_scheme_switch: npc:name()='inventory_box4458'

И ещё, что то я этого тоже не пойму, это последние строки в логе, или ещё может какая то есть, просто во время вылета она не успела сохраниться?

Ссылка на комментарий

Ulman

При вылете без лога теряются все сообщения, которые были туда выведены после последнего выполнения flush. Но вполне может быть и такой вариант, что в лог из того места (черт знает откуда - вариантов море) просто не выводится вообще ничего. В таком случае лог - просто пыль в глаза.

В твоем случае, возможно, так и есть. Вспоминай, что менял в последнее время. Кстати, про ситуацию, в которой поймался вылет, у тебя ни полслова. Если совсем рандомный - плохо дело.

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Лог был небольшой, когда файл лога весит ~7mb, тогда информация не выводится уже, и просто вылетает(проверено на себе). А у меня в данных случаях оно не превышает 1mb. И ещё, вылет очень рандомный и что я заметил либо при переходе на локацию вылетает в момент когда даже не загорелась надпись "старт сервера". Либо как в последнем случае я перехожу на локацию и где то через секунд 5 игры вылет. НО если такой сейв загрузить 2 раза(вроде так, может совпадение), то он абсолютно нормально загружается, но после нескольких загрузок этого же сейва может опять начать вылетать и тогда опять надо загружать его 2 раза. Я вот думаю, может есть надежда на то что вылет не из-за скриптов? И ещё, я вот сейчас, пока ходил на море, оставил игру включённой, где то часа 2 меня не было, вернулся, игра абсолютно нормально себя вела ничего не вылетело никаких "слётов" апдейта и т.д. И я так делал уже несколько раз, игра не вылетала. Я вот думаю,наверно если бы это были виноваты скрипты, то оно бы вылетело давным давно? Кстати, всё время я пользуюсь услугами проводника(New guiders mod), то есть только через него хожу может ли он в этом быть виновен?

Kirag, а на счёт апдейта, попробовать только в bind_stalker или вообще по всем пройтись? Просто во втором случае это очень трудно, так как я не уверен, что где то ещё, что то добавлял от себя, кроме как в bind_stalker.

 

P.S. Извините за такое количество вопросов в одном посте, но просто такое дело, что я один и не справлюсь.

Ссылка на комментарий

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

 

Возможно имеет смысл, чтобы убедится, что ошибка в скриптах, убрать как можно больше скриптов (чем меньше останется, тем лучше) и убирая их, тестировать игру. Может придётся начать новую игру (уже когда все возможные скрипты уберёшь, а вылет будет продолжаться) и занаво плести до места вылета и ловить его там. Если повторится - возможно в конфиге дело, если нет, то скорее всего скрипты. Впрочем не исключены моменты, когда одно связанно с другим, так что опять таки... это уже на удачу считай задача.

 

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

 

Хороший пример - Simbion Mod от Artos'а

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

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

Ссылка на комментарий

Не имея общей картины, могу посоветовать только то, как поступаю сам. Как только довожу "до ума" какую-либо новую фишку (а зачастую даже и в процессе разработки) я всегда делаю резервное копирование данных. Как только начинается очередной геморрой, распаковываю работоспособную версию, и легко и просто нахожу, в чём... нет, не собака, а где сам порылся, и как именно всё испортил :). Частенько помогает.

Скрипт хStream'а просмотрел, ничего кривого не обнаружил. А к остальным "зарезервированным" персонажам медики тоже сбегаются, или нет?

Ссылка на комментарий

Ulman

Должен тебя расстроить - именно по всем биндерам. Только апдейтом и только актора дело не обойдется.

Нужны еще как минимум net_spawn и net_destroy - а вдруг вылет происходит в момент перехода чего-то неизвестного в онлайн/оффлайн? Кстати, и эффект будет рандомного вылета - неизвестно, что это и где, когда ему взбредет в голову перейти в онлайн, да и от актора это не зависит.

Также не помешают функции save и load - возможно, при загрузке объекта ему прописывается какая-нибудь ахинея, со всеми вылетающими.

Другие объекты, кроме актора, тоже надо проверять - скажем, у сталкера есть логика, а она обрабатывается в скриптах, данные из конфигов тоже могут там обрабатываться - ну, ты понял, к чему я.

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

 

Кстати, насчет переиграть с более раннего сейва и/или с НИ - идея толковая. Это технически проще (можно бессмертие поставить, чтоб сильно долго не было), и вероятность конкретного битого сейва ты исключаешь.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий
Kirag, да вроде всё обошлось, похоже всё таки виноват проводник, я оббегал весь бар, там где вылетало, потом на склады бегал, вернулся, ещё побегал по бару, посейвился позагружал его так что вроде всё в порядке, по крайней мере очень надеюсь. А вот что всё же делать с Психом моим не подскажете?
Ссылка на комментарий

Уважаемые гуру подскажите.

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

 

Нпс нужны для участия в квесте. Они будут спавнятся скриптом.

Идея такая заспавнить в квесте из диалога несколько нпс чтоб жизнь медом не казалась.

 

Так вот до места идти далеко. И нпс со стандартной логикой разбегаются кто куда.

Можно ли сделать логику чтоб они стояли вместе спавна а при приблеженнии ГГ среагировали и дали ему бой. Без использования алл спавн. Если не трудно пример дайте пожалуста.

 

[esc_kanibal3]:stalker_sakharov

$spawn = "respawn\esc_kanibal3_spawn"

character_profile = esc_kanibal5

spec_rank = master

community = stranger

custom_data = scripts\new\esc_kanibal_mono.ltx --логика

Ссылка на комментарий

И ещё вот такая неувязко-проблема появилась, у меня стоит AI additions - Rulix (Bak), когда НПС меняет винтовку на пистолет, то как я понял винтовка пропадает навсегда, потому что у них в продаже появляются магазины с патронами. Чего я так думаю, что это связанно, потому что когда у НПС есть оружие и патроны к нему, то патроны он не продаёт. Да и когда враг находится от НПС на большом расстоянии, он должен достать винтовку, но такое не происходит, он продолжает стрелять из пистолета. Чего с этим делать? И вопрос с Психом меня так же волнует. Заранее огромное спасибо :)

Ссылка на комментарий

Stalkersof

Со стандартными схемами такого не сделаешь. Либо распаковывай как можешь спавн, либо учи Lua и редактируй схемы поведения...

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

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

Ссылка на комментарий

Ulman

Оружие, которое не использует НПС в схеме менеджера оружия (AI additions - Rulix (Bak)) не пропадает навсегда. По крайней мере так при штатной работе схемы. Это оружие перемещается в 'хитрый' ящик-хранилище и лежит там. В зависимости от ситуации НПС может менять оружие 'в руках' на более подходящее оружие из ящика. Все это для игрока (тебя) незаметно.

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

Если твой НПС не достает из ящика более подходящее оружие, то возможны вариации - НПС (точнее менеджер оружия) не считает его более подходящим, или в оружии нет патронов, или оно действительно исчезло при сохранении.

Но твой вопрос интересен! Действительно, при разговоре/торговле НПС не меняет оружия и вполне может продать 'последний патрон' к оружия в ящике (ведь для него этого оружия не существует) и в последующем и патроны в магазине возвращенного оружия запросто могут кончиться.

Нужно будет доработать ... :-)

 

Ну а с твоим Психом, которого лечат - тебе дали дельный совет с внесением его в табличку схемы:

local excluded_npcs={
    esc_fox=true,
    esc_vagon_wounded=true,
    gar_bandit_stroyka3=true,
    gar_wounded_bandit=true,
    val_sos_wounded=true,
    val_escort_bandit_halfdead=true,
    bar_bar_psih = true --/ это твой Псих!
}

- если его имя именно таково ('bar_bar_psih') - его никак не могут лечить этой схемой. Ищи тогда или ошибку с внесением в табличку или дублера схемы лечения.

Чтобы его не обирали - требуется аналогично запретить в схеме собирательства (обычно это watcher_act.script). Однако там в кодах придется создавать такую аналогичную табличку исключений самому и добавлять в условия.

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
Stalkersof

Со стандартными схемами такого не сделаешь. Либо распаковывай как можешь спавн, либо учи Lua и редактируй схемы поведения...

Да все бы ничего. Но точки привязки в аллспавн. по идее достаточно взять подходящую схему(логику нпс их достаточно в моде) Но вот привязка может есть какие нибуть способы обойти или не использовать

path_walk = graf_walk

path_look = graf_look

Или может есть какие специальные флаги стандартные.

 

Извените если глупость но не понимаю пока логику надо разбираться.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   2 пользователя

×
×
  • Создать...