Artos 99 Опубликовано 27 Марта 2012 (изменено) Clayman, если задавать вопросы сам того не понимая что спрашиваешь, то конечно понять ответ сложно ... Прочти свой "бессмысленный" вопрос(!) в котором спрашиваешь о "точном значении параметра" (которого нет для всех в Зоне), а теперь переспрашиваешь о том, не что же влияет этот параметр. Это примерно, спросить каков точный вес у чего-то в Зоне, не уточняя у чего, и подразумевая "а на что вес влияет?" ... Частично на твой второй вопрос ответ есть тут: #8367 (используй самостоятельно поиск по форуму!). Ну и если названия переменных in_restrictor и out_restrictor в скриптах сопоставить с их аналогами в конфигах секций логики (несколько сокращены имена), то и получишь ответ на свой вопрос "на что же влияют" эти параметы. По-простому, значения этих параметров в активной логике прописываются в соответствующие параметры для неписей, что и определяет их поведение относительно разрешенных или запретных зон. Изменено 27 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 27 Марта 2012 (изменено) Clayman, конечно это "кому-то", кто написал процитированное тобою нужно бы адресовать:"А головою кто будет думать?", но и тебе стОит более критично цитировать ... Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать lev_ch.level_changer()Это для того, чтобы один раз в самом начале игры поставить метки дается совет ставить проверку и выдачу каждые 20ms на потяжении все игры? Ну посмтотите тот саму функцию actor_binder:update(delta)! Ведь все уже есть готовое: if self.bCheckStart then printf("SET DEFAULT INFOS") if not has_alife_info("global_dialogs") then self.object:give_info_portion("global_dialogs") end if not has_alife_info("level_changer_icons") then self.object:give_info_portion("level_changer_icons") end self.bCheckStart = false end - и инфопоршень ("level_changer_icons") именно для отображения иконок переходов и именно только один раз при первом апдейте ... Всего то нужно вставить сюда (при выдаче инфопоршня) вызов lev_ch.put_spots() или даже саму функцию. Изменено 27 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Апреля 2012 (изменено) SibireaStalker, а с чего ты решал, что если в распаковку all.spawn'а ты засунешь свои "новые" предметы, то компилятор должет с ними собрать all.spawn? Ты позаботился, чтобы скрипт компилятора знал что это за предметы (их класс) и как их прописывать? Загляни в тему "Universal ACDC и другие perl-скрипты" и почитай что к чему ... (или ручками правь acdccop.pl и stkutils или используй универсальный, не забывая пересканировать конфиги мода) Добавлено через 8 мин.: satanian 1. Если ты считаешь, что каждый, кто мог бы тебе ответить имет коды адаптируемого тобою мода - то ошибаешься. Если захотелось получить ответ - стОит озаботиться чтобы дать всю необходимую информацию, иначе ждать ответа можно очень долго ... и не дождаться. 2. При правке/адаптации скриптов следует в первую очередь иметь навыки работы со скриптами и думать головою, и только во вторую - работать руками. Тебе лог говорит, о возникшей ошибке с ключом/полем 'actor' - вот и разбирайся по имеющимся у тебя скриптам, почему у тебя отсутствует. Добавлено через 23 мин.: Buttmammal В окне загрузки игры (ЗП) выводятся три строки: заголовок, номер "совета" и текст "совета". Каждая строка обрабатывается парсером игры и не допускает кроме текста никаких иных тэгов. Исключение только для шаблонов типа $$ACTION_USE$$. Переносы строк осуществляются только по достижению строки текста размера окна для вывода. Следует учитывать, что ДО загрузки игры никакие скрипты еще не работают и вывод в окно осуществляется тем, что заложено в движек. Изменено 2 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 (изменено) Clayman Параметр max_population в конфиге смарта не задает жесткое ограничение на максимум. При определенных ситуациях в: function se_smart_terrain:target_precondition(squad, need_to_dec_population) - происходит искусственное увеличение на единичку кол-ва допустимых сквадов. Изменено 3 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 3 Апреля 2012 (изменено) Clayman, не ленись, за тебя изучать скрипты и растолковывать все подробно врядли кто-то будет. Читая скрипты ты и навыков и знаний собственных а не "даденых" набираешься. Условия могут быть самыми разными. Например, тебе захотелось принудительно приписать сквад какому-то гулагу, а там уже стоИт свой максимум - вот и дает флажек возможность добавить кол-во не вызывая особых коллизий/вылетов. Ну а работы, тут ты прав - их всегда должно быть не меньше чем имеющихся в Зоне неписей, иначе это или тупо стоящие истуканы или бесцельно слоняющиеся ... Геймплея это не добавляет, а наоборот. Изменено 3 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Апреля 2012 (изменено) Shredder Сейчас не готов дать полный ответ, как раз взялся за этот вопрос в скриптах CoP. В первичных изысканиях (пару лет назад) восстанавливал хиты от аномалий и сталкерам и монстрам. Сейчас ... именно на сталкеров не реагируют. Разбираюсь и по-мере ... дам инфу. Изменено 24 Апреля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 6 Мая 2012 altvet, вероятно из-за отсутствия достаточной для ответов (а не погадалок) информации модератором и был удален ответ. Скорее всего и по повторному мосту можно опять только гадать ... Лог указывает на ошибку чтения сэйва и скорее всего нет-пакета некоего об'екта, которы был некорректно сохранен. В таких случаях обячно говорят: "Битый сэйв". Ну а что и почему - только по твоим кодам сборки можно что-то искать и определять. Откупоривай функции вывода а лог и смотри что к чему ... Добавлено через 3 мин.: STALKER_Dragon, можно и к "только некоторым", если ты имеешь ввиду интерактивные худы 'маски/противогаза'. Необходимо ввести условия, например по секциям/названиям костюмов. Ну а где и что - зависит от конкретных скриптов, взятых тобою из какого-то мода, о которых можно только гадать. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 14 Мая 2012 (изменено) Дополню (поправлю) Clayman'а: Применение метода db.actor:object("conserva") - возвращает об'ект (консервы, первой попавшейся в рюкзаке актора), а не кол-во банок (иль булево значение). Т.о. сравнение об'екта с числом и приводит к фатальной ошибке. Аномальный Постарайся повнимательнее читать материалы по моддингу и побольше думать, прежде чем делать. Метод "тыка" в скриптах отнимает больше времени и у тебя и у других. Изменено 14 Мая 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 14 Мая 2012 (изменено) Аномальный, дальнейшие бездумные вопросы/утверждения будут удаляться, дабы не захламлять топик! Тебе было сказано, что применяемый тобою метод возвращает об'ект (юзердату) и попытка сравнения с числом однозначно приводит к фатальной ошибке. Ни о какой тут проверки на истинность не может быть и речи. Вот это: return db.actor:object("conserva") ~= nil - вернет булево значение: есть ли у актора хотя бы одна банка консервы. О каком-то кол-ве банок в данном случае также не может идти речь. Изменено 14 Мая 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 18 Мая 2012 (изменено) Clayman, уточню: Метки ставятся на любой об'ект имеющий игровой идентифиуатор (ID), те именно на ID и ставится метка. В квестах для установки метки задаются story_id, по которым простенькой функцией id_by_sid (см. _g.script) получается текущий ID и уже на него ставится метка. Так что метки ставить можно и не только по story_id, важно получить текущий идентификатор нужного об'екта ... Изменено 18 Мая 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 19 Мая 2012 (изменено) ziStam, Akella-96 aka SvD Вам обоим стОит почитать тему "Справочник пл функциям и классам" (и в частности #29) дабы не заниматься ерундою и советовать осознанно ... Поправленные "пояснялки": CAI_Trader - клиентский класс экспортированный в сталкеровский Lua из движка игры; se_stalker.se_trader - ссылка на скрипт и класс, в котором реализован конструктор для серверных об'ектов; AI_TRD_S - строковый идентификатор класса, прописывается в секции (конфиге) для об'ектов класса (параметр class); script_trader - скриптовой идентификатор класса, обычно регистрируется в _g.script (ключ в таблице clsid). Попытки заниматься регистрацией классов "методом тыка" практически бессмыслены. Любое непонимание и соответственно "тупое" использование любого из перечисленных выше параметров ведет в лучшем случае в никуда ... а обычно - фатальная ошибка и вылет. Изменено 19 Мая 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 19 Мая 2012 (изменено) ziStam, бессмысленно создавать что-либо из ничего! Класс(ы), в том числе и для монстров создавать (регистрировать) вполне можно, но ТОЛЬКО на базе уже имеющихся (экспортированный в Lua!). Основной вопрос - а нафига?! Если для "прикольно" и делать "в тупую" - действительно бессмысленно и только время тратится (свое и чужое). И даже после пояснений ты тоже не понял, что clsid.cropper_s - и приводит к фатальной ошибке, если класс не зарегистрирован по какой либо-причине. Ну а CCropper - это одна из причин, т.е. регистрация "класса" просто игнорируется и в результате никакой регистрации того, чего нет. Изменено 19 Мая 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 19 Мая 2012 (изменено) ziStam (ответ тебе, а не "пасону") Не ручаюсь за абсолютную правильность ответа, т.к. только предполагать возможно: species - вид (разновидность). Смотрим в game_relations.ltx и в частности в секцию [monster_communities] - и видим, что заданы communities, напоминающие группировки для "человекоподобных", но все гуманоиды об'единены в один вид (human), а для монстров есть помимо "обычных" и другие (например, arena_monstr, bird) ... Т.о. species - некое соответствие живого об'екта некоей группе: актор, гуманоид, птица, аренный монстр, ... и именно по этому параметру и выстраиваются взаимоотношения между видами. Естественно, попытки использовать "кривую отсебятину" - чреваты (cкрипты просто не переваривают). Изменено 19 Мая 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 2 Июня 2012 karavan, ну и в чем проблема? Неужели нужно обяснять довольно очевидное? ;-) 1. Изменение группировки для актора не изменилось со времен ТЧ. См. в xr_effects.script готовую функцию change_actor_community: function change_actor_community(actor, npc, p) if p[1] then db.actor:set_character_community(p[1], 0, 0) end end , где в качестве параметра p задается именно нужная группировка. Пишешь свою по аналогии, и, т.к. из диалога нельзя передать параметр, то нужная группировка должна уже быть заданой в самой функции. 2. Тут вообще все почти разжевано и сам же упоминаешь про функцию actor_enemy: function actor_enemy(actor, npc) npc:force_set_goodwill( -1000, actor) end - тут актор делается врагом для непися. Если же тебе нужно наоборот, т.е. чтобы непись стал врагом для актора, то просто напиши свою функцию по аналогии и в ней поменяй: actor:force_set_goodwill( -1000, npc) - и твой актор будет считать npc врагом. 3. Ну и ... возможно предвидя вопрос, а как именно из диалога: Тэг вида <action>my_script.my_function</action> вызывает из соответствующего файла (my_script) функцию my_function, передавая ей аргументы. Первые два аргумента: first_speaker и second_speaker - это и есть 'болтающие' actor и npc, вот только порядок кто из них 1-й, а кто 2-ой зависит от порядка фраз. Так что вызвав из диалога свои функции ты уже имеешь на входе нужные аргументы актора и непися, остается только не ошибиться в их порядке или 'ручками' определить who-is-who. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 4 Июня 2012 Shredder, нужно не заставлять функцию работать нормально, а нормально ее использовать, т.е. понимая когда и как ее применять! Приведи коды твоих "экспериментов" - тогда и можно показать, что ненормального у тебя иль у функции ... и дать рекомендации. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 5 Июня 2012 (изменено) Clayman, А зачем тебе вообще через скрипт визуал менять? Не проще создать сколько угодно нужных профилей с нужными визуалами и вводить (убирать) в игру? Ну если тебе так "проще", то другим как раз проще и не мусорить в конфигах и именно нужному неписю в нужное время менять визуал, а не изгаляться с переспавнами по профилям. Shredder, ты, видно, не из любителей читать ... Про визуалы/броники только пару дней назад в топике по ковыряниям в файлах SoC упоминалось - почитал бы! И, визуал, это тебе не просто внешний вид непися, а как раз и его защита/иммунитеты - со всеми из этого вытекающими ... Изменено 5 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 5 Июня 2012 (изменено) Shredder, это как же "про защиту" ты не говоришь(?), ежели уже дважды сетуешь на "неубиваемость" неписей после переодевания?! В чем же тогда вопрос с переодеванием визуала? Пока именно только о "неубиваемости" и о "выглядят как комок с тряпками" - вроде как вопрошаешь ... Ну а по появлению (иль исчезновению) предметов в трупах - почитай-ка топики и ФАКи на предмет спавна лута в трупы менеджером death_manager.script. Не мешай разные вопросы в один. И, прячь портянки кодов под спойлер, плз. Изменено 5 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 6 Июня 2012 (изменено) Shredder, к моему сожалению ... чаще замечаю то, о чем не подозревает сам спрашивающий, чем невнимателен к прочитанному ... ;-) 1. Ты так и не понял, что визуал для непися - это и есть защита! Смена визуала - как раз, в случае разных типов/классов визуалов, и есть изменение параметров защиты непися. Что значит(?) всего лишь одна строка: self.object:set_visual_name([[actors\stalker_neutral\stalker_neutral_nauchniy]]) Да всего лишь то, что непись теперь имеет костюм с высоким коэффициентом иммунитетов (high_resistance) и выше среднего параметры для bone_protection (body_damage_5,head_damage_3). Предполагаю, что проверял ты в игре на новичке иль начальном сталкере, которые появляются в начале новой игры и у которых защита как раз начального уровня. А ты все гутаришь "не трогаю защиту" И не нужно голословить в топике о бессмертии после переодевания в любой костюм. Чудес не бывает и тем более в игре, где все цифры/параметры можно прочитать и сравнить. Тут уже недавно было и ты видно не прочитал .. о "в чем бессмертие меряешь - в попугаях?". 2. То, что сами разрабочики используют данную функцию (set_visual_name) именно в xr_motivator.script, т.е .в биндере сталкеров, а не в акторском биндере, как раз говорит, что применяется не к актору, а к неписям. Изменено 6 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 6 Июня 2012 Shredder, прочитай свой первичный вопрос(!) и теперешние сетования/пояснения ... Какова цель твоих постов? За дурочка тут никого не считают, но ... нередкость когда спрашивают о том, о чем сами же не понимают иль рассуждают о том, что и близко не лежало. В чем конечная цель вопросов? Как пользоваться функцией иль как сменить визуал? О пользовании функцией уже ранее сказано, бессмертными не становятся как и "кучей трепья". Ставим как в твоем примере в stalker_binder:net_spawn код со сменой визуала на "actors\\stalker_neutral\\stalker_neutral_1" первому же новичку который спавнится в начале новой игры. Кстати, именно этот визуал он изначально и имеет. Записываем получившийся нет-пакет (пишем на 1-ом апдейте). Если интересно, могу выложить. Берем обычный винторез (зачем нам гаусс?) и обычным для него патроном сносим бошку неписю первым же выстрелом - никакого бессмертия. Однако то, что при онлайновой замене этой функцией визуала у неписей дополнительно повышается "пулестойкость" - есть такое дело. Почему именно так - вероятно только разработчики могут сказать, т.к. нет пакеты ничего криминального не говорят. Поисследую. Ну а если нужно просто менять визуал - то уже годы как это делабт именно нет-пакетами и не жалуются ... ;-) "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 6 Июня 2012 (изменено) Shredder, грубо говоря у себя в наработках я не использую эту функцию (set_visual_name), т.к. стараюсь писать по-возможности "кроссплатформенно", т.е. под все три версии игры. Был момент, когда повозился с нею, посмотрел на что способна и чем удобна. Минусов не меньше чем плюсов. Помимо уже затронутой некоторой непонятки с изменением иммунитетов, основной минус - то что применимо только для клиентских об'ектов. Но если ранее не было полного доступа к нет-пакетам сталкеров и нельзя было понять отчего есть особенности при смене - отложил ... Твой вопрос как раз вновь заставил вспомнить и, как выше уже сказал, попробую найти разницу в замене нет-пакетами и "штатной" для ЗП функцией. Сейчас же проверял в точности как и ты, т.е. при появлении непися в он-лайне меняю ему визуал и смотрю ... Про "комок тряпок" наверное не стОит упоминать, ты скорее всего напутал с названием/путем визуала. Слабые визуалы вполне "убиваемые", о чем и написал уже. Более защищеные - дают бОльший прирост к иммунитетам, тут нужно поисследовать ... может дополнительно включаются какие флаги/режимы. Ведь не просто так разрабы применили у себя эту функцию для присвоения визуала актора кому-то другому (типа двойника). Т.о. функция то работает правильно, если ей давать правильный визуа. ;-) Ну а особенности ее слишком "правильной" работы, которая именно тебе не подходит и как ее привести к "обычной" замене визуала - требует времени и анализа. Через день-два попробую дать информацию. Добавлено через 123 мин.: P.S. Кстати, я так и не понял из вопроса, тебе нужно менять визуалы для новых (тобою спавнящихся) неписей или уже имеющихся в игре. Все же это имеет свои особенности. Изменено 6 Июня 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение