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

[CoP] Ковыряемся в файлах


Halford

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

Clayman, если задавать вопросы сам того не понимая что спрашиваешь, то конечно понять ответ сложно ...

Прочти свой "бессмысленный" вопрос(!) в котором спрашиваешь о "точном значении параметра" (которого нет для всех в Зоне), а теперь переспрашиваешь о том, не что же влияет этот параметр. Это примерно, спросить каков точный вес у чего-то в Зоне, не уточняя у чего, и подразумевая "а на что вес влияет?" ...

Частично на твой второй вопрос ответ есть тут: #8367 (используй самостоятельно поиск по форуму!).

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Clayman, конечно это "кому-то", кто написал процитированное тобою нужно бы адресовать:"А головою кто будет думать?", но и тебе стОит более критично цитировать ...

Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать lev_ch.level_changer()
Это для того, чтобы один раз в самом начале игры поставить метки дается совет ставить проверку и выдачу каждые 20ms на потяжении все игры? :wub:

Ну посмтотите тот саму функцию 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() или даже саму функцию.

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

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

Поделиться этим сообщением


Ссылка на сообщение

SibireaStalker, а с чего ты решал, что если в распаковку all.spawn'а ты засунешь свои "новые" предметы, то компилятор должет с ними собрать all.spawn? Ты позаботился, чтобы скрипт компилятора знал что это за предметы (их класс) и как их прописывать?

Загляни в тему "Universal ACDC и другие perl-скрипты" и почитай что к чему ...

(или ручками правь acdccop.pl и stkutils или используй универсальный, не забывая пересканировать конфиги мода)

 

 

 

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

satanian

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

2. При правке/адаптации скриптов следует в первую очередь иметь навыки работы со скриптами и думать головою, и только во вторую - работать руками.

Тебе лог говорит, о возникшей ошибке с ключом/полем 'actor' - вот и разбирайся по имеющимся у тебя скриптам, почему у тебя отсутствует.

 

 

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

Buttmammal

В окне загрузки игры (ЗП) выводятся три строки: заголовок, номер "совета" и текст "совета".

Каждая строка обрабатывается парсером игры и не допускает кроме текста никаких иных тэгов. Исключение только для шаблонов типа $$ACTION_USE$$.

Переносы строк осуществляются только по достижению строки текста размера окна для вывода.

 

Следует учитывать, что ДО загрузки игры никакие скрипты еще не работают и вывод в окно осуществляется тем, что заложено в движек.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Clayman

Параметр max_population в конфиге смарта не задает жесткое ограничение на максимум.

При определенных ситуациях в: function se_smart_terrain:target_precondition(squad, need_to_dec_population) - происходит искусственное увеличение на единичку кол-ва допустимых сквадов.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Clayman, не ленись, за тебя изучать скрипты и растолковывать все подробно врядли кто-то будет.

Читая скрипты ты и навыков и знаний собственных а не "даденых" набираешься.

Условия могут быть самыми разными. Например, тебе захотелось принудительно приписать сквад какому-то гулагу, а там уже стоИт свой максимум - вот и дает флажек возможность добавить кол-во не вызывая особых коллизий/вылетов.

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Shredder

Сейчас не готов дать полный ответ, как раз взялся за этот вопрос в скриптах CoP.

В первичных изысканиях (пару лет назад) восстанавливал хиты от аномалий и сталкерам и монстрам. Сейчас ... именно на сталкеров не реагируют. Разбираюсь и по-мере ... дам инфу.

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

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

Поделиться этим сообщением


Ссылка на сообщение

altvet, вероятно из-за отсутствия достаточной для ответов (а не погадалок) информации модератором и был удален ответ.

Скорее всего и по повторному мосту можно опять только гадать ... Лог указывает на ошибку чтения сэйва и скорее всего нет-пакета некоего об'екта, которы был некорректно сохранен. В таких случаях обячно говорят: "Битый сэйв". Ну а что и почему - только по твоим кодам сборки можно что-то искать и определять. Откупоривай функции вывода а лог и смотри что к чему ...

 

 

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

STALKER_Dragon, можно и к "только некоторым", если ты имеешь ввиду интерактивные худы 'маски/противогаза'.

Необходимо ввести условия, например по секциям/названиям костюмов.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Дополню (поправлю) Clayman'а:

Применение метода db.actor:object("conserva") - возвращает об'ект (консервы, первой попавшейся в рюкзаке актора), а не кол-во банок (иль булево значение).

Т.о. сравнение об'екта с числом и приводит к фатальной ошибке.

 

Аномальный

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Аномальный, дальнейшие бездумные вопросы/утверждения будут удаляться, дабы не захламлять топик!

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

 

Вот это: return db.actor:object("conserva") ~= nil - вернет булево значение: есть ли у актора хотя бы одна банка консервы. О каком-то кол-ве банок в данном случае также не может идти речь.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Clayman, уточню:

Метки ставятся на любой об'ект имеющий игровой идентифиуатор (ID), те именно на ID и ставится метка.

В квестах для установки метки задаются story_id, по которым простенькой функцией id_by_sid (см. _g.script) получается текущий ID и уже на него ставится метка.

Так что метки ставить можно и не только по story_id, важно получить текущий идентификатор нужного об'екта ...

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

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

Поделиться этим сообщением


Ссылка на сообщение

ziStam, Akella-96 aka SvD

Вам обоим стОит почитать тему "Справочник пл функциям и классам" (и в частности #29) дабы не заниматься ерундою и советовать осознанно ...

 

Поправленные "пояснялки":

CAI_Trader - клиентский класс экспортированный в сталкеровский Lua из движка игры;

se_stalker.se_trader - ссылка на скрипт и класс, в котором реализован конструктор для серверных об'ектов;

AI_TRD_S - строковый идентификатор класса, прописывается в секции (конфиге) для об'ектов класса (параметр class);

script_trader - скриптовой идентификатор класса, обычно регистрируется в _g.script (ключ в таблице clsid).

 

Попытки заниматься регистрацией классов "методом тыка" практически бессмыслены. Любое непонимание и соответственно "тупое" использование любого из перечисленных выше параметров ведет в лучшем случае в никуда ... а обычно - фатальная ошибка и вылет.

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

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

Поделиться этим сообщением


Ссылка на сообщение

ziStam, бессмысленно создавать что-либо из ничего!

Класс(ы), в том числе и для монстров создавать (регистрировать) вполне можно, но ТОЛЬКО на базе уже имеющихся (экспортированный в Lua!).

Основной вопрос - а нафига?! :crazy: Если для "прикольно" и делать "в тупую" - действительно бессмысленно и только время тратится (свое и чужое).

 

И даже после пояснений ты тоже не понял, что clsid.cropper_s - и приводит к фатальной ошибке, если класс не зарегистрирован по какой либо-причине.

Ну а CCropper - это одна из причин, т.е. регистрация "класса" просто игнорируется и в результате никакой регистрации того, чего нет.

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

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

Поделиться этим сообщением


Ссылка на сообщение

ziStam (ответ тебе, а не "пасону")

Не ручаюсь за абсолютную правильность ответа, т.к. только предполагать возможно:

species - вид (разновидность). Смотрим в game_relations.ltx и в частности в секцию [monster_communities] - и видим, что заданы communities, напоминающие группировки для "человекоподобных", но все гуманоиды об'единены в один вид (human), а для монстров есть помимо "обычных" и другие (например, arena_monstr, bird) ...

Т.о. species - некое соответствие живого об'екта некоей группе: актор, гуманоид, птица, аренный монстр, ... и именно по этому параметру и выстраиваются взаимоотношения между видами.

Естественно, попытки использовать "кривую отсебятину" - чреваты (cкрипты просто не переваривают).

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

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

Поделиться этим сообщением


Ссылка на сообщение

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.

 

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

Поделиться этим сообщением


Ссылка на сообщение

Shredder, нужно не заставлять функцию работать нормально, а нормально ее использовать, т.е. понимая когда и как ее применять!

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

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

Поделиться этим сообщением


Ссылка на сообщение
Clayman, А зачем тебе вообще через скрипт визуал менять? Не проще создать сколько угодно нужных профилей с нужными визуалами и вводить (убирать) в игру?

Ну если тебе так "проще", то другим как раз проще и не мусорить в конфигах и именно нужному неписю в нужное время менять визуал, а не изгаляться с переспавнами по профилям. :crazy:

 

Shredder, ты, видно, не из любителей читать ... Про визуалы/броники только пару дней назад в топике по ковыряниям в файлах SoC упоминалось - почитал бы! И, визуал, это тебе не просто внешний вид непися, а как раз и его защита/иммунитеты - со всеми из этого вытекающими ...

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

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

Поделиться этим сообщением


Ссылка на сообщение

Shredder, это как же "про защиту" ты не говоришь(?), ежели уже дважды сетуешь на "неубиваемость" неписей после переодевания?! :crazy:

В чем же тогда вопрос с переодеванием визуала? Пока именно только о "неубиваемости" и о "выглядят как комок с тряпками" - вроде как вопрошаешь ...

Ну а по появлению (иль исчезновению) предметов в трупах - почитай-ка топики и ФАКи на предмет спавна лута в трупы менеджером death_manager.script. Не мешай разные вопросы в один.

 

И, прячь портянки кодов под спойлер, плз.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Shredder, к моему сожалению ... чаще замечаю то, о чем не подозревает сам спрашивающий, чем невнимателен к прочитанному ... ;-)

1. Ты так и не понял, что визуал для непися - это и есть защита! Смена визуала - как раз, в случае разных типов/классов визуалов, и есть изменение параметров защиты непися.

Что значит(?) всего лишь одна строка:

self.object:set_visual_name([[actors\stalker_neutral\stalker_neutral_nauchniy]])

Да всего лишь то, что непись теперь имеет костюм с высоким коэффициентом иммунитетов (high_resistance) и выше среднего параметры для bone_protection (body_damage_5,head_damage_3). Предполагаю, что проверял ты в игре на новичке иль начальном сталкере, которые появляются в начале новой игры и у которых защита как раз начального уровня.

А ты все гутаришь "не трогаю защиту" :crazy:

И не нужно голословить в топике о бессмертии после переодевания в любой костюм. Чудес не бывает и тем более в игре, где все цифры/параметры можно прочитать и сравнить. Тут уже недавно было и ты видно не прочитал .. о "в чем бессмертие меряешь - в попугаях?".

 

2. То, что сами разрабочики используют данную функцию (set_visual_name) именно в xr_motivator.script, т.е .в биндере сталкеров, а не в акторском биндере, как раз говорит, что применяется не к актору, а к неписям.

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

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

Поделиться этим сообщением


Ссылка на сообщение

Shredder, прочитай свой первичный вопрос(!) и теперешние сетования/пояснения ... Какова цель твоих постов?

За дурочка тут никого не считают, но ... нередкость когда спрашивают о том, о чем сами же не понимают иль рассуждают о том, что и близко не лежало.

В чем конечная цель вопросов? Как пользоваться функцией иль как сменить визуал?

О пользовании функцией уже ранее сказано, бессмертными не становятся как и "кучей трепья".

 

Ставим как в твоем примере в stalker_binder:net_spawn код со сменой визуала на "actors\\stalker_neutral\\stalker_neutral_1" первому же новичку который спавнится в начале новой игры. Кстати, именно этот визуал он изначально и имеет.

Записываем получившийся нет-пакет (пишем на 1-ом апдейте). Если интересно, могу выложить.

Берем обычный винторез (зачем нам гаусс?) и обычным для него патроном сносим бошку неписю первым же выстрелом - никакого бессмертия.

Однако то, что при онлайновой замене этой функцией визуала у неписей дополнительно повышается "пулестойкость" - есть такое дело. Почему именно так - вероятно только разработчики могут сказать, т.к. нет пакеты ничего криминального не говорят. Поисследую.

Ну а если нужно просто менять визуал - то уже годы как это делабт именно нет-пакетами и не жалуются ... ;-)

 

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

Поделиться этим сообщением


Ссылка на сообщение

Shredder, грубо говоря у себя в наработках я не использую эту функцию (set_visual_name), т.к. стараюсь писать по-возможности "кроссплатформенно", т.е. под все три версии игры.

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

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

Твой вопрос как раз вновь заставил вспомнить и, как выше уже сказал, попробую найти разницу в замене нет-пакетами и "штатной" для ЗП функцией.

Сейчас же проверял в точности как и ты, т.е. при появлении непися в он-лайне меняю ему визуал и смотрю ... Про "комок тряпок" наверное не стОит упоминать, ты скорее всего напутал с названием/путем визуала. Слабые визуалы вполне "убиваемые", о чем и написал уже. Более защищеные - дают бОльший прирост к иммунитетам, тут нужно поисследовать ... может дополнительно включаются какие флаги/режимы. Ведь не просто так разрабы применили у себя эту функцию для присвоения визуала актора кому-то другому (типа двойника).

 

Т.о. функция то работает правильно, если ей давать правильный визуа. ;-) Ну а особенности ее слишком "правильной" работы, которая именно тебе не подходит и как ее привести к "обычной" замене визуала - требует времени и анализа. Через день-два попробую дать информацию.

 

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

P.S. Кстати, я так и не понял из вопроса, тебе нужно менять визуалы для новых (тобою спавнящихся) неписей или уже имеющихся в игре. Все же это имеет свои особенности.

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

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

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...