Dennis_Chikin 3 660 Опубликовано 23 Ноября 2014 Ошибка в олспавне/скрипте. Назначается эксклюзив, не проходящий проверку по свойствам лагеря. Такая же фигня, кстати, случается при переодевании неписей - перестают подходить под условия, и сбегают, либо удаляются "антизависом". Либо править свойства непися (а потом переодевалка/amk_offline_alife их опять перекорежат), либо лагеря, либо smart_terrain.script - оторвать проверку нафиг. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 24 Ноября 2014 (изменено) Есть там детекторы. items.ltx:[detector_elite]:identity_immunities и дальше много страшных буковок про zone_class_что-то-там... Изменено 19 Января 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 26 Ноября 2014 Так полно ж примеров в оригинале. В логике непися что-то типа 10|что_делать, 20|что_делать и т.д. Ну вот наверно нагляднее всего будет так, как я исправил для сцены с Юриком на свалке: если актор попадает в заданный интервал - он там разговоры разговаривают, если подходит или отходит - 3 нейтрала переквалифицируются в бандиты, и начинают, естественно, стрелять. Но для более простого случая просто combat_ignore врагу прописываем, и тот или стреляет, или нет. [walker10@gar_dram_novice] path_walk = novice_walk path_look = novice_look on_info = %=gar_dm_bandit_demand% walker1@gar_dram_novice meet = no_meet ;combat_ignore_cond = { -gar_dm_fight_start } [walker1@gar_dram_novice] path_walk = novice_walk path_look = novice_look on_actor_dist_le_nvis = 15 | remark1@gar_dram_novice on_info = {+gar_dm_newbie_no_money} remark@no_money_gar_dram_novice %-gar_dm_newbie_no_money% on_info2 = {+gar_dm_bandit1_dead +gar_dm_bandit2_dead +gar_dm_bandit3_dead} remark@after_fight_gar_dram_novice on_info3 = {+gar_dm_end} %=gar_dm_bandits_fight% ;reactions = ignore danger = danger_condition@gar_dram_novice meet = no_meet combat_ignore_cond = { -gar_dm_fight_start } [remark@no_money_gar_dram_novice] target = 102 snd = gar_dm_newbie_no_money anim = refuse on_signal = action_end | walker1@gar_dram_novice %=gar_dm_bandit_demand% on_info2 = {+gar_dm_bandit1_dead +gar_dm_bandit2_dead +gar_dm_bandit3_dead} remark@after_fight_gar_dram_novice on_info3 = {+gar_dm_end} %=gar_dm_bandits_fight% on_actor_dist_le_nvis = 15 | remark1@gar_dram_novice ;reactions = ignore danger = danger_condition@gar_dram_novice meet = no_meet combat_ignore_cond = { -gar_dm_fight_start } [remark1@gar_dram_novice] anim = hello snd = gar_dm_newbie_help_me target = actor on_signal = sound_end | remark2@gar_dram_novice %+gar_dm_novice_asked_for_help =gar_dm_bandits_bandits% on_info2 = {+gar_dm_bandit1_dead +gar_dm_bandit2_dead +gar_dm_bandit3_dead} remark@after_fight_gar_dram_novice on_info3 = {+gar_dm_end} %=gar_dm_bandits_fight% ;reactions = ignore danger = danger_condition@gar_dram_novice meet = no_meet combat_ignore_cond = { -gar_dm_fight_start } [remark2@gar_dram_novice] target = actor anim = wait on_actor_dist_le_nvis = 10 | remark3@gar_dram_novice on_actor_dist_ge_nvis = 25 | %=gar_dm_bandits_fight% on_info2 = {+gar_dm_bandit1_dead +gar_dm_bandit2_dead +gar_dm_bandit3_dead} remark@after_fight_gar_dram_novice on_info3 = {+gar_dm_end} %=gar_dm_bandits_fight% on_timer = 20000 | %=gar_dm_bandits_fight% ;reactions = ignore danger = danger_condition@gar_dram_novice meet = no_meet combat_ignore_cond = { -gar_dm_fight_start } [remark3@gar_dram_novice] target = actor anim = wait snd = help arrival_timeout = 1500 on_signal = move_end | remark@after_fight_gar_dram_novice %=gar_dm_bandits_fight% on_info2 = {+gar_dm_bandit1_dead +gar_dm_bandit2_dead +gar_dm_bandit3_dead} remark@after_fight_gar_dram_novice on_timer = 5000 | %=gar_dm_bandits_fight% ;reactions = ignore danger = danger_condition@gar_dram_novice meet = no_meet combat_ignore_cond = { -gar_dm_fight_start } [remark@after_fight_gar_dram_novice] anim = guard target = actor snd = gar_dm_newbie_thank_you on_timer = 30000 | walker2@gar_dram_novice %=actor_friend% danger = danger_condition@gar_dram_novice meet = meet@gar_dram_novice [walker2@gar_dram_novice] path_walk = gar_dm_novice_walk meet = meet@gar_dram_novice on_signal = new_gulag| %+gar_dm_novice_change_st% [meet@gar_dram_novice] meet_state = 3|guard@wait meet_state_wpn = 3|guard@wait victim = 3|actor victim_wpn = 3|actor use = true use_wpn = true [danger_condition@gar_dram_novice] ignore_distance = 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 26 Ноября 2014 (изменено) Один уже освоил, блин. 8( Вопрос несколько расплывчат. ну вот например так: function on_level_change() -- Переход между локациями log("info", "on_level_change, current: %s, last: %s", lname, lv_last) if lname == "l04_darkvalley" then -- изменить отношения с кем надо при входе if lv_last == "l02_garbage" then gulag_dark_valley.dolg_start = true -- Монгол может появляться в Темной долине elseif lv_last == "l01_escape" then actor:set_actor_position( vector():set( -44.38, 0.43, -541.47 ) ) end xl_relations.dark_valley_in( true ) else ... - где lv_last сохраняется хоть во все том же pstor, а dark_valley_in() что-то делает, например - спавнит. Или можно через инфо, просто я их не захотел из-за количества. Или рестриктор в определенном месте, а из него опять же info или свою функцию. Как-то так. P.S. Да, а вообще тут последнее время пошли какие-то явно вредительские вопросы, и, главное, на них ведь отвечают. Ох ужо придет к нам Роскомнадзор... Изменено 26 Ноября 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 1 Декабря 2014 Хваталка - статика в соли. Амк про ее тем более не знает. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 6 Декабря 2014 "противогазы отдельно от брони" - вроде NLC, нет ? Заготовка - вполне универсальная есть: amk- / солянко- / nlc- худ. amk_mod.script. Так и искать: -- Dynamic HUD Gift from ATT, Arharа and Kolmogor -- Про мануалы и тотальную зачистку - надо бы. Вот как добровольцы найдутся - так и сразу. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 7 Декабря 2014 Как-то не совсем понятно, что в данном случае понимается под бесконечностью, и чем приведенный вариант "небесконечен". Вроде бы должно раз в секунду переключаться с одной секции на другую, если их ни кто не прооверрайдил. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 7 Декабря 2014 (изменено) Чтобы не извращаться - лучше все-таки добавить третью - полную копию первой, но уже без таймера. И переходить из второй на нее. В общем-то идея remark в этом и состоит изначально. Варианты с info и сложнонавороченной проверкой лично мне нравятся гораздо меньше. Изменено 7 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 7 Декабря 2014 (изменено) [walker@...1] ... on_timer = 1000| remark@... [remark@...] target = ... anim = ... snd = ... on_signal = sound_end| walker@...2 - вписать ненужное вместо ... Это в обобщенном виде, на примере многострадальных Шустрого, Петрухи, Лиса и и.д. Upd: _Val_, спасибо. Копипаста - это наше все. 8( Поправил. Upd2: Чтоб не пялились - это правка xr_meet.script - если в течение пары дней про нее не вспомню - пните меня, кто-нибудь. Перезалил, низведенное до древнемодов. Должно работать, только табличку оружия поправьте. https://dl.dropboxusercontent.com/u/27871782/xr_meet.script Смотрите комментарии внимательно. Изменено 19 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 7 Декабря 2014 (изменено) Тем, что оно его не умеет. Просто в xr_remark таких словей вообще нет. Оно-ж тупо работает: разворачивает непися на target, дергает проигрывание анимок/звуков, дергает за переключатель. Изменено 7 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 7 Декабря 2014 Я здесь на шрифты тоже ругаюсь. А если серьезно, то return db.actor:object("test1") ~= nil Так, и только так. Из непися предметы надо другим способом вытаскивать. Довольно сложным. 2 AndreySol: путь из актива нужен xr_gulag'у. То есть, как бы льзя, и даже нужно, если ремарк идет первым, но схема - либо я смотрел невнимательно, либо таки игнорируется. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 9 Декабря 2014 А собственно логика где ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 10 Декабря 2014 2 Хемуль36рус: а путь agro_naem_ohr_camp_center_task есть ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 11 Декабря 2014 2: Хемуль36рус, agro_naem_ohr_camp_center - у тебя просто ни где не используется, так что в нем может быть что угодно. Ну, будем смотреть... function log( s, ... ) get_console():execute( string.format( "load ~log~ %s", ( ... and string.format( s, ... )) or s ) ) end function list_tbl( v, name, t_level ) local name = name or "item" if type(v) == "table" then if t_level then for i = 1, t_level do name = string.format( "__%s", name ) end else t_level = 0 end local cnt = 0 for kk,vv in pairs(v) do cnt = cnt + 1 if vv and type(vv) == "table" then log( false, "info", "%s: %s, type: table", name, kk ) list_tbl( vv, kk, t_level + 1 ) else log( "%s: %s, type: %s, value: %s", name, kk, type(vv), tostring((type(vv)=="userdata" and "*") or vv) ) end end log( "------ %s records in table [%s] ------", cnt, name ) return true end log( "list_tbl: %s, invalid argument type: %s", name, type(v) ) end function list_gulag( list_info, list_g ) local strn, gulag, npc_info, npc, npc_name, job_n, t, prior local g_list = list_g or { "esc_lager" } local sim = alife() for dummy, g_name in pairs( g_list ) do strn = sim:object( g_name ) if strn then log( "list_gulag, %s", g_name ) npc_info = strn.npc_info if npc_info then for k, v in pairs( npc_info ) do obj = v.se_obj if obj then npc_name = obj:name() or "nil" gulag = strn.gulag job_n = gulag.ObjectJob job_n = job_n and job_n[k] prior = job_n and gulag.Job[ job_n ] prior = ( prior and prior.prior ) or "invalid" log( "npc: %s (id: %s), exclusive: %s, prior: %s, info: %s", npc_name, k, ( v and v.exclusive and "true" ) or "false", prior, tostring( v ) ) if list_info == "custom" then t = amk_netpk.read_stalker_params( obj ) log( "custom: %s", string_sub( t.custom, 1, 200 ) ) end if list_info == "info" then list_tbl( v, k ) end if list_info == "job" then job_n = gulag.ObjectJob job_n = job_n and job_n[k] if job_n then list_tbl( gulag.Job[job_n], "job" ) end end end end log( "--- end of list ---" ) else log( "list_gulag, gulag: %s is invalid !", g_name ) end else log( "list_gulag, gulag: %s not found !", g_name ) end end end -- вызвать откуда-нибудь из net_spawn() актора list_gulag( "info", { "agro_naem_ohr" } ), а потом list_gulag( "job", { "agro_naem_ohr" } ) 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 12 Декабря 2014 А что в них не так ? agro_naem_ohr_ и _task в начале и в конце прицепляются к camp_center из center_point. Если не найдено - цепляется просто agro_naem_ohr_, если и это не найдено - в зависимости от того, что у него в скриптах, подставляется "nil", "default_simulation_path" или непись выбрасывается из смарта, и получает опять же "default_simulation_path". И начинает просто тыкаться в рэндомном направлении. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 12 Декабря 2014 Хемуль36рус, кстати, да - стоит проверить доступность смарта и собственно уровня для тех наймов. Впрочем, уже обсуждалось. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 14 Декабря 2014 (изменено) use_wpn = true в [meet@что_там_у_него] ? Изменено 14 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 15 Декабря 2014 Довольно сложно ответить. Надо эту самую LA под рукой иметь, либо найти актуальный файл логики этого самого торговца, в оригинале это был \config\scripts\esc_trader.ltx, узнается из allspawn. Файл торговли, который указывается в этой самой логике, внезапно, trade_manager.script, xr_logic.script и биндер торговца (кто он там в LA - непись или монстр ?) Понятно, что все это есть под рукой того, кто непосредственно что-то делает именно с LA, и вряд-ли у тех, у кого другие интересы. 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 16 Декабря 2014 (изменено) По вопросу об LA: Ну, то есть, понятно, что либо config\scripts, либо config\scripts\escape, cordon_sidor.ltx, но вытаскивать конкретный вариант надо из allspawn. сам конфиг торговли - скорее всего trade_trader.ltx - если выше я с логикой угадал. В файле вроде правильно все. Скрипты они, конечно, тупо переписали "венгеркой", оставив все основные глюкобаги, но зато теперь кто попытается разобраться - конкретно затрахается. Добрые люди... А ведь могли и через обфускатор прогнать, чтоб невосстановимо было. И вообще db* банально триплдесом зашифровать, а в движке расшифровывать. Сеансовым ключом, получаемым по инету при запуске... Однако, вопрос к залу: там логи совсем отключены, что-ли ? Было б что не так в конфигах - должен был бы сругаться. Изменено 16 Декабря 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 660 Опубликовано 19 Декабря 2014 (изменено) amk_utils.script: --Callback на взятия предмета в инвентарь гг из ящика function actor_item_from_box(box, item) if item ~= nil then restriction_stock.restriction_of_stock(item) end end-- ограничение на количество предметов. Убрать if item ~= nil then restriction_stock.restriction_of_stock(item) end аналогично - для function actor_item_take(obj) amk_alcohol.script: function alcohol_drink(game_time) ... --если превысили порог в макс. кол-во бутылок, то смерть if ap.a >= alc_max_drink_bottles_to_death then reset_dream() reset_sober() reset_lose_hp() ap.a = 0 ap.b = 0 ap.f0 = 1 ap.f1 = game_time + 5 --minute amk.send_tip(game.translate_string("alc_too_much_die"),nil,nil,5) end -- убрать. Изменено 19 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение