Dennis_Chikin 3 663 Опубликовано 15 Ноября 2014 И до - тоже не нужны. Кроме одного единственного момента. Аналогично - та же деревня. Ну, на кордоне скриптовый спавн, кроме одного из оригинала, но тоже не нужны. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 17 Ноября 2014 alife():create() - или имя, или цифра. Если цифра - это - spawn_id. alife():object() - имя или id в игре. Удаляется всегда объект, если его удалось получить. по профилю ни получить ни удалить нельзя. 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 24 Ноября 2014 (изменено) 1. Не понял про "слитно". 2. m = npc:money() or 0 -- с собой были. Из профиля. 3. Сейчас проверил функцию компилятором - нормально собирается. Или вставлено не так, или где-то еще что-то неправильно. Скрипт в студию. Изменено 24 Ноября 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 24 Ноября 2014 (изменено) npc:money() or 0 if m ~= 0 then npc:give_money(-m) - деньги у непися забираются. А дальше сумма либо меняется, либо выдается игроку как есть. В зависимости от монорохоопций. elseif так и должно быть написано, если всунуть пробел - надо будет еще end каждый раз дописывать, и отдельную проверку для новичка добавлять. Нафига ж ? Изменено 24 Ноября 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 27 Ноября 2014 (изменено) Решение момента, когда в определенных местах артефакты превращаются в булыжники (Радар - около сетки, Болота - около водонапорной башни и т.д.). Пра артфы ффф булыжники, в Cоли было так:arhara_dialog.script, начиная с local tabl_art_v_buliz = { и т.д.Для конкретно лабы - ниже - function laba_dell_art().Вот все ненужное оттуда и убрать, как обычно:function bla-bla-bla() много строк end - оставить function bla-bla-bla() endКому заняться нечем - проверьте. Изменено 31 Марта 2016 пользователем Eugen81 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 27 Ноября 2014 (изменено) self.Job[jobN (Показать) .object = nil']Ну что я могу сказать... Освобождается возможно существующий( а возможно и нет) объект, от НЕСУЩЕСТВУЮЩЕЙ работы. Ну, бывает. На самом деле ситуаций таких тьма есть, с самого оригинала. Потом Камикадзе поправил связку смартовых скриптов, чтобы освобождать с работ кого попало, если в спавне этим работам прописан кривой путь. Правда, вылетать-то оно перестало, а виснуть - нет. Но модостроители обрадовались, и пути проверять на осмысленность вообще перестали. Потом Сапсан с Шэдоуменом переписывали их для отлова патронов, зачем-то назначенных на работы в артефактах. Потом я переписывал вылет, возникающий, когда такой вот патрон с несуществующим путем таки действительно пытались заставить бегать внутри артефакта. Потом переписал для отлова тех самых кривых путей. Потом Петр переписал это для тех, кто зачем-то ставил все предыдущие версии в рабочие сборки - чтобы все-таки не вылетало (поскольку по предыдущим замыслам оно именно что должно было вылететь, сругавшись, после чего правятся соответствующие пути и прочие бродячие елки внутри канистр. В данном же случае, мы имеем некий забавный гибрид всего вышеперечисленного, наложенный на оригинал. Не лечится. Пристрелить. По второму вопросу - гулаг-то может быть и есть, а вот функции вычисления стейтов для него - точно нет. И что там вместо них - я представить затрудняюсь. По крайней мере маску для поиска чего-то похожего придумать не смог. А глазами искать по всем простыням gulag_*.script - откровенно лень. Да, на счет "не лечится", можно, конечно, поробовать как-то так: Показать function gulag:free_obj( obj_id ) -- освободить объект от работы local npc_info = self.npc_info[obj_id] local obj = npc_info and npc_info.se_obj if obj then obj.job_online_condlist, obj.job_online = nil, nil if IAmAMonster[ npc_info.class_id ] then obj:smart_terrain_task_deactivate() end -- else log( "error", "(%s):free_obj, dbg: %s, here is no object: %s (id: %s)", self.name, get_name_by_id( obj_id ) ) end local n = self.ObjectJob[obj_id] if n and n ~= 0 then -- if log_level < 9 then log( "info", "(%s):free_obj [%s]", self.name, get_name_by_id( obj_id ) ) end self.ObjectJob[obj_id] = nil self.ObjectJobPathName[obj_id] = nil local job = self.Job[n] if job then job.object = nil -- else log( "warning", "(%s):free_obj, job not assigned ! job n: %s (%s), npc: %s (id: %s)", self.name, n, #self.Job, get_name_by_id( obj_id ) ) end if self.Object_begin_job[obj_id] then local npc = self.Object[obj_id] if npc and npc ~= true then self:set_restrictions( npc, "", "" ) end local pop = self.population_comed - 1 if pop >= 0 then self.population_comed = pop else -- log( "error", "(%s):free_obj, self.population_comed = %s !", self.name, pop ) self.population_comed = 0 end end -- else log( "error", "(%s):free_obj, npc: %s (id: %s) hasn't job", self.name, get_name_by_id( obj_id ) ) end endfunction gulag:free_obj( obj_id ) -- освободить объект от работы local npc_info = self.npc_info[obj_id] local obj = npc_info and npc_info.se_obj if obj then obj.job_online_condlist, obj.job_online = nil, nil if IAmAMonster[ npc_info.class_id ] then obj:smart_terrain_task_deactivate() end -- else log( "error", "(%s):free_obj, dbg: %s, here is no object: %s (id: %s)", self.name, get_name_by_id( obj_id ) ) end local n = self.ObjectJob[obj_id] if n and n ~= 0 then -- if log_level < 9 then log( "info", "(%s):free_obj [%s]", self.name, get_name_by_id( obj_id ) ) end self.ObjectJob[obj_id] = nil self.ObjectJobPathName[obj_id] = nil local job = self.Job[n] if job then job.object = nil -- else log( "warning", "(%s):free_obj, job not assigned ! job n: %s (%s), npc: %s (id: %s)", self.name, n, #self.Job, get_name_by_id( obj_id ) ) end if self.Object_begin_job[obj_id] then local npc = self.Object[obj_id] if npc and npc ~= true then self:set_restrictions( npc, "", "" ) end local pop = self.population_comed - 1 if pop >= 0 then self.population_comed = pop else -- log( "error", "(%s):free_obj, self.population_comed = %s !", self.name, pop ) self.population_comed = 0 end end -- else log( "error", "(%s):free_obj, npc: %s (id: %s) hasn't job", self.name, get_name_by_id( obj_id ) ) end end -- но так где-нибудь в другом месте вылетит. Аналогично, попробовать в gulag_tasks.script заменить abort("ERROR: unrecognized gulag's type '%s'", type) на return function() return 0 end Но тоже вылетит в другом месте. Can't open section 'щѓулфсъaэHюљ8§ (Показать) Гм. Правилами форума выражаться матом запрещено, поэтому я ничего не скажу, кроме того, что аналогичное в теме обсуждается не первый раз, и все предыдущие обсуждения были снесены. С чего бы это ? Наверное, с того, что у двух человек стоят полностью идентичные наборы, и сэйв либо грузится, либо нет. Обычно такие вещи выясняются через личку. Пожалуй, в шапку добавлю. Для начала - поставить игру согласно инструции, поставить патч, как у автора сборки правок, поставить по инструкции автора сборку правок, и обменяться сэйвами. А потом посмотрим, будет ли что читать. Кстати, о тестированиях: а кто вообще пробовал, чем отличается запуск игры с -noprefetch и без такового. В разных ситуациях. Первая загрузка после запуска, собственно игра, повторная загрузка сэйва ? Очень интересные тут с мест сообщения приходят... Изменено 29 Декабря 2014 пользователем BFG Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 28 Ноября 2014 Если сделано все, как написан в посте про пропадание чего-попало - пропадать не должно. Ни из рюкзаков, ни из неписей. Если к тому моменту оно было. Хотя, стоп... Есть еще одно место, но там не пропадает, а просто прячется. Это вот самое оружие. Как раз в случае, если у неписей патронов нет. Будут посмотреть, как и это тоже отключить. У меня-то давно, так что я и забыл уже. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 1 Декабря 2014 (изменено) "критично зависящие от наличия определенного ogg-комментария" Да. Все живое возбуждается прежде всего на звук. У возбудившихся рентгеновость зрения значительно возрастает. Кроме того, подбирать упавший предмет все неписи тоже ломятся прежде всего на звук. Кстати, о птичках: watcher_act.script, for o in npc:memory_sound_objects() do check_item(o) end - ~280 строка. Нафиг. Весьма и во многом полегчает сразу. Если уж нормальный, тоже 4-х летней давности, не поставить. P.S. Первое псто исправлять - вот все время руки не доходят. Ни кто, часом, списочка нужного не ведет ? Изменено 1 Декабря 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 8 Декабря 2014 (изменено) Читать - очевидно, здесь: http://www.amk-team.ru/forum/index.php?showforum=104 , http://www.amk-team.ru/forum/index.php?showtopic=11568 Проблем - 2: 1. Изменение олспавна, если что-то добавлялось/удалялось приводит к изменению как минимум номеров всего. Со всеми вытекающими. 2. Если номера не меняются, а меняются какие-то отдельные буковки/цифирки - чтобы они были восприняты - нужна НИ. Такое вот неукоснительное исполнение взаимоисключающих параграфов. Так что если в очередном патчефиксе в очередной раз сменился олспавн - идея продолжать что-то с тем, что было раньше - очень плохая идея. Как минимум, без принятия специальных мер тем, кто менял этот самый олспавн. "Это будет проблемой, если он по сюжету, например Ворон, и не должен погибнуть? Или он станет смертным?" - в этой игре - не станет. Засада может быть в следующем: например, поменяли story_id чего либо, или индекс, или имя, и затем где-то вызывается функция с новым параметром. Например, создание. Будет плохо. Например, могу представить себе одно очень хорошее западло именно против "левых правок". Все замучаются искать, но игра будет постоянно валиться, а сэйвы - биться. Я имею ввиду устройство всяческих "чудес" для тех, у кого установлено нечто "неправильное". Подробности обсуждать не будем. Просто, если при сравнении олспавна в "старом патче" с "новым" - они совпадают, то пойдет и "правленный", и НИ тоже не нужна. Если не совпадают - нужно изучать подробности изменений. Они - это файлы allspawn. Изменено 8 Декабря 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 11 Декабря 2014 (изменено) npc clear spawn - ну вот поиском по файлам этого самого. Где найдется - там и проблема. Вообще, если в логе есть что-то на тему watchdog и Reason, или sheduler tryes кого-то там - вот самое первое, которое в логе нашлось - это как раз то, что пыталось что-то делать, но не смогло. После этих строк, все, что идет дальше - посмертный бред игры. Изменено 11 Декабря 2014 пользователем Dennis_Chikin 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 12 Декабря 2014 (изменено) для нелюбопытных, ссылки из параллельной темы: http://www.amk-team.ru/forum/index.php?showtopic=8830&p=899670- -время загрузки, -немножко лагов. http://www.amk-team.ru/forum/index.php?showtopic=8830&p=896984- еще того же, для тех, кто умеет исправлять скрипты руками, ну или если кто сделает для остальных, и будет следить за патчефиксами, и под каждый переделывать. http://www.amk-team.ru/forum/index.php?showtopic=8830&p=898626- антислайдшоу на аномалиях. upd: кажется, я вчера погорячился с хардкором - про раз в 24 реальных часа. Поменял на час реального времени. Просто 24 * 3600000 - убрать это самое 24 *, ну или вообще по вкусу. p.s. И, кстати, да - результаты мне ведь интересны. Сколько секунд до, сколько после. Скажем, в том же баре... Ну или еще в какой толпе. Изменено 13 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 13 Декабря 2014 (изменено) Думаю, что это - про создание телепортатора - не совсем сюда, хотя бы по тому, что ОП с еженедельными патчефиксами - среда для разработки нового - малоблагодатная.1. Как и всего остального. obj.m_game_vertex_id, obj.m_level_vertex_id -- этого на самом деле более, чем достаточно.2. Очевидно, через меню.3. http://www.amk-team.ru/forum/index.php?showtopic=6458Основной вопрос: это декларация намерений, или поиск того, кто будет делать ? И в полной ли мере изучен раздел по ссылке ?2 BFG: "Посмотрим, что из этого получится)"При том, что полностью исправленный кусок выкладывался в 2011 году ! В паблик. Только подключить корректно. Ну а в скайпе - еще и когда сам Пропер там был - в 2010-ом. А совет отключать глючный код дан в одном из первых постов этой темы именно по тому что понятно было сразу, что подключать нормальный ни кто и не собирается, зато будут каждую неделю "патчи" и "фиксы". P.S. И, да, внезапно, нормальный телепорт от Shadowman ТОЖЕ есть. Тоже с 2010. Изменено 13 Декабря 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 5 Января 2015 (изменено) А что, до сегодняшнего дня ни кто не замечал, что в loot_money.script добавили проверку на какое-то and db.actor:has_info("haker_soft_pda"), убрали проверку опций и добавили, опять же, очередное идиотское archievements.acv_count_event("acv_mar", 50000, "Мародёр", deadmoney) ? Причем не в 6-ом, а как бы не в третьем ? Разумеется, с этой проверкой ни каких денег не будет. Кстати, да, отрадно видеть, что авторы сего творения меня даже иногда читают, и идотский многосекундный лаг на обыске первого трупа, с дальнейшим добавлением его же к времени загрузки, таки убрали. Не прошло и скольки там лет - 5-ти ? Глядишь, через пару-тройку патчей и остальные поуберут. Изменено 5 Января 2015 пользователем Dennis_Chikin 3 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 9 Января 2015 (изменено) сибиряк писал(а): Вопрос собственно такой, можно ли к рестрикторам прикрутить какой нибудь визуал, в идеале ко всем в раз. На счет визуалов для рестрикторов - гм, не знаю, банально, как их привязать к радиусам и вообще геометрии (могут быть разные, и вообще не радиусы).А пометить центр, например вот так: Показать function restrictor_binder:net_spawn( data ) if not object_binder.net_spawn( self, data ) then return false end local a = self.object db_add( a ) -- Не регистрироваться на апдейты, если у объекта в customdata нет секции logic вообще. local char_ini = get_ini( a, "<customdata>" ) if char_ini:section_exist( "logic" ) then t_rest[ a:id() ] = self self.particle = amk_particle.amk_particle( { ["particle"] = "anomaly2\\electra_damage_02_smoke", ["pos"] = a:position() } ) end return true end function restrictor_binder:net_destroy() if self.particle and not self.particle:is_finished() then self.particle:stop() end local a = self.object local id = a:id() local st = db.storage[ id ] if st.active_scheme then issue_event( a, st[st.active_scheme], "net_destroy" ) end db_del( a ) t_rest[id] = nil db.storage[id] = nil object_binder.net_destroy( self ) endfunction restrictor_binder:net_spawn( data ) if not object_binder.net_spawn( self, data ) then return false end local a = self.object db_add( a ) -- Не регистрироваться на апдейты, если у объекта в customdata нет секции logic вообще. local char_ini = get_ini( a, "<customdata>" ) if char_ini:section_exist( "logic" ) then t_rest[ a:id() ] = self self.particle = amk_particle.amk_particle( { ["particle"] = "anomaly2\\electra_damage_02_smoke", ["pos"] = a:position() } ) end return true end function restrictor_binder:net_destroy() if self.particle and not self.particle:is_finished() then self.particle:stop() end local a = self.object local id = a:id() local st = db.storage[ id ] if st.active_scheme then issue_event( a, st[st.active_scheme], "net_destroy" ) end db_del( a ) t_rest[id] = nil db.storage[id] = nil object_binder.net_destroy( self ) end - в bind_restrictor.script. Туда же можно и метки добавить, как раз сразу с радиусом и названием. Ну, то есть, добавления, собственно вот, такого типа, где все делать по вкусу. self.particle = amk_particle.amk_particle( { ["particle"] = "anomaly2\\electra_damage_02_smoke", ["pos"] = a:position() } ) if self.particle and not self.particle:is_finished() then self.particle:stop() end Под все 666 патчей и фиксов я, естественно, делать не собираюсь ничего. Кому надо - сами. Ну и что там вместо anomaly2\electra_damage_02_smoke и какие конкретно переменные - тоже сами разбирайтесь. Здесь дается для нормального кода. Выглядеть будет примерно так: архив с картинками Изменено 29 Апреля 2015 пользователем Eugen81 процитировал 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 9 Января 2015 (изменено) Ну, в общем, скрины варианта с партиклами как бы намекают. Но ТАКОГО я не ожидал. Изменено 9 Января 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 18 Января 2015 А пда потом солить что-ли ? dialogs_arhara.xml 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 4 Февраля 2015 (изменено) bind_monster.script: Показать -- ОП-2: Добавлен калбек на юзанье монстра, а также для всех монстров подключена схема on_use. -- Юзанье не подключено для класса script_trader (Василий и Сидорович) для обратной совместимости. function generic_object_binder:use_callback(obj, who) if self.object:clsid() == clsid.script_trader then return end if self.object:alive() then if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who) end else monster_parts.on_monster_use(obj, who) -- обыск трупа end end-- ОП-2: Добавлен калбек на юзанье монстра, а также для всех монстров подключена схема on_use. -- Юзанье не подключено для класса script_trader (Василий и Сидорович) для обратной совместимости. function generic_object_binder:use_callback(obj, who) if self.object:clsid() == clsid.script_trader then return end if self.object:alive() then if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who) end else monster_parts.on_monster_use(obj, who) -- обыск трупа end end собственно else monster_parts.on_monster_use(obj, who) -- обыск трупа + bind_stalker: monster_parts.on_part_take(obj) - делают то, что описано. Изменено 4 Февраля 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 8 Февраля 2015 (изменено) "Как снять лимит на Сон?" (скрытый пост): amk_mod.script: function test_for_need_sleep_matras(oid) ... if amk.load_variable("block_sleep_menu",0)==0 then if amk.load_variable("gg_need_sleep",0)>0 or (has_alife_info("snp_shadows_start") and not has_alife_info("snp_shadows_done")) or db.debug then ... else amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5) end else amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5) endfunction test_for_need_sleep_matras(oid) ... if amk.load_variable("block_sleep_menu",0)==0 then if amk.load_variable("gg_need_sleep",0)>0 or (has_alife_info("snp_shadows_start") and not has_alife_info("snp_shadows_done")) or db.debug then ... else amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5) end else amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5) endизменить на как больше нравится.Проверка на ЧУ - там же. 100500 раз обсуждалось. Изменено 8 Февраля 2015 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 10 Февраля 2015 (изменено) Гм, вот уже то-ли 3-й, то-ли четвертый раз встречаю утверждение, что с 7-го патча появилась какая-то очередная "защита", проверяющая распакованную gamedata. Кто этот патч смотрел - оно действительно так ? Да вон, хотя бы выше: http://www.amk-team.ru/forum/index.php?showtopic=12839&p=915957 Перед этим было про удаление xrs_utils.getStartTime(StartTime), которое типа больше не помогает. Изменено 10 Февраля 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 10 Февраля 2015 (изменено) То есть, на всех новых патчах по прежнему достаточно xrs_utils.getStartTime(StartTime) - для актора, а все остальные файлы кидаются в путь ярлыка\gamedata\, и ни каких проверок "при использовании перчаток" и т.д. не появилось, так ? То есть, все подобные посты просто сразу в мусор ? Посмотрел 2-6-4: обрезанные чтение/запись пакета патронов. Ну и еще древнюю лажу в записи патронов исправили. Проверки gamedata там не вижу. Изменено 7 Марта 2015 пользователем BFG Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение